Face Manager : Add Entire Face (folder of images) deletion at once
parent
59bf04c5d5
commit
1eef597159
|
|
@ -42,6 +42,30 @@ module.exports = function(s,config,lang,app,io){
|
|||
callback(faces)
|
||||
})
|
||||
}
|
||||
const getFaceImagesByName = (name,callback) => {
|
||||
var stats = fs.statSync(config.facesFolder + name)
|
||||
if(stats.isDirectory()){
|
||||
var images
|
||||
try{
|
||||
images = fs.readdirSync(config.facesFolder + name)
|
||||
}catch(err){
|
||||
images = []
|
||||
}
|
||||
callback(images)
|
||||
}else{
|
||||
callback([])
|
||||
}
|
||||
}
|
||||
const deletePath = (deletionPath,callback) => {
|
||||
if(fs.existsSync(deletionPath)){
|
||||
fs.unlink(deletionPath,() => {
|
||||
s.file('delete',deletionPath)
|
||||
if(callback)callback()
|
||||
})
|
||||
}else{
|
||||
if(callback)callback(true)
|
||||
}
|
||||
}
|
||||
app.get(config.webPaths.superApiPrefix+':auth/faceManager/names', function (req,res){
|
||||
s.superAuth(req.params,function(resp){
|
||||
getFaceFolderNames((faces)=>{
|
||||
|
|
@ -83,22 +107,40 @@ module.exports = function(s,config,lang,app,io){
|
|||
s.superAuth(req.params,function(resp){
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
const imagePath = config.facesFolder + req.params.name + '/' + req.params.image
|
||||
if(fs.existsSync(imagePath)){
|
||||
fs.unlink(imagePath,() => {
|
||||
s.file('delete',imagePath)
|
||||
sendDataToConnectedSuperUsers({
|
||||
f:'faceManagerImageDeleted',
|
||||
faceName: req.params.name,
|
||||
fileName: req.params.image,
|
||||
})
|
||||
getFaceFolderNames((faces) => {
|
||||
s.sendToAllDetectors({
|
||||
f: 'recompileFaceDescriptors',
|
||||
faces: faces
|
||||
})
|
||||
deletePath(imagePath,() => {
|
||||
sendDataToConnectedSuperUsers({
|
||||
f:'faceManagerImageDeleted',
|
||||
faceName: req.params.name,
|
||||
fileName: req.params.image,
|
||||
})
|
||||
getFaceFolderNames((faces) => {
|
||||
s.sendToAllDetectors({
|
||||
f: 'recompileFaceDescriptors',
|
||||
faces: faces
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
res.end(s.prettyPrint({
|
||||
ok: true,
|
||||
}))
|
||||
},res,req)
|
||||
})
|
||||
app.get(config.webPaths.superApiPrefix+':auth/faceManager/delete/:name', function (req,res){
|
||||
s.superAuth(req.params,function(resp){
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
const facePath = config.facesFolder + req.params.name
|
||||
deletePath(facePath,() => {
|
||||
getFaceFolderNames((faces) => {
|
||||
s.sendToAllDetectors({
|
||||
f: 'recompileFaceDescriptors',
|
||||
faces: faces
|
||||
})
|
||||
})
|
||||
})
|
||||
sendDataToConnectedSuperUsers({
|
||||
f:'faceManagerFolderDeleted',
|
||||
faceName: req.params.name,
|
||||
})
|
||||
res.end(s.prettyPrint({
|
||||
ok: true,
|
||||
}))
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
"Click to Upload Images": "Click to Upload Images",
|
||||
"Face Name": "Face Name",
|
||||
"faceManager": "Face Manager",
|
||||
"deleteFace": "Delete Face",
|
||||
"deleteFaceText": "Are you sure you want to delete ALL the images for this face? they will not be recoverable.",
|
||||
"deleteImage": "Delete Image",
|
||||
"deleteImageText": "Are you sure you want to delete this image? it will not be recoverable."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,11 @@ $(document).ready(function(){
|
|||
callback(response)
|
||||
})
|
||||
}
|
||||
var deleteFaceFolder = function(name,callback){
|
||||
$.get(superApiPrefix + $user.sessionKey + '/faceManager/delete/' + name,function(response){
|
||||
callback(response)
|
||||
})
|
||||
}
|
||||
var moveFaceImage = function(name,image,newFaceName,callback){
|
||||
$.get(superApiPrefix + $user.sessionKey + '/faceManager/image/' + name + '/' + image + '/move/' + newFaceName + '/' + image + '?websocketResponse=1' ,function(response){
|
||||
callback(response)
|
||||
|
|
@ -36,14 +41,14 @@ $(document).ready(function(){
|
|||
</div>`
|
||||
}
|
||||
var createFaceHeader = function(name){
|
||||
return `<span class="mt-4 mb-2 badge bg-dark badge-lg face-title">${name}</span>`
|
||||
return `<div face="${name}" class="mt-4 mb-2 face-title"><span class="badge bg-dark badge-lg">${name}</span> <a class="badge badge-danger badge-lg deleteFolder" face="${name}"><i class="fa fa-times text-danger"></i></a></div>`
|
||||
}
|
||||
var drawFaceImages = function(){
|
||||
getFaceImages(function(faces){
|
||||
var html = ''
|
||||
$.each(faces,function(name,images){
|
||||
// if(images.length === 0)return
|
||||
html += `${createFaceHeader(name)}<div class="row" face="${name}">`
|
||||
html += `${createFaceHeader(name)}<div class="row face-container" face="${name}">`
|
||||
$.each(images,function(n,image){
|
||||
html += getFaceImageHtml(name,image)
|
||||
})
|
||||
|
|
@ -139,6 +144,24 @@ $(document).ready(function(){
|
|||
})
|
||||
return false;
|
||||
})
|
||||
faceManagerImages.on('click','.deleteFolder',function(e){
|
||||
e.preventDefault()
|
||||
var faceName = $(this).attr('face')
|
||||
$.confirm.create({
|
||||
title: lang.deleteFace,
|
||||
body: lang.deleteFaceText,
|
||||
clickOptions: {
|
||||
class: 'btn-danger',
|
||||
title: lang.Delete,
|
||||
},
|
||||
clickCallback: function(){
|
||||
deleteFaceFolder(faceName,function(response){
|
||||
console.log(response)
|
||||
})
|
||||
}
|
||||
})
|
||||
return false;
|
||||
})
|
||||
$('#fileinput').change(function(){
|
||||
var name = faceNameField.val()
|
||||
$.ajax({
|
||||
|
|
@ -160,7 +183,7 @@ $(document).ready(function(){
|
|||
case'faceManagerImageUploaded':
|
||||
var row = faceManagerImages.find(`.row[face="${d.faceName}"]`)
|
||||
if(row.length === 0){
|
||||
faceManagerImages.append(`${createFaceHeader(d.faceName)}<div class="row" face="${d.faceName}"></div>`)
|
||||
faceManagerImages.append(`${createFaceHeader(d.faceName)}<div class="row face-container" face="${d.faceName}"></div>`)
|
||||
row = faceManagerImages.find(`.row[face="${d.faceName}"]`)
|
||||
activateDroppableContainer(d.faceName)
|
||||
}
|
||||
|
|
@ -171,6 +194,9 @@ $(document).ready(function(){
|
|||
case'faceManagerImageDeleted':
|
||||
$(`.face-image[face="${d.faceName}"][image="${d.fileName}"]`).remove()
|
||||
break;
|
||||
case'faceManagerFolderDeleted':
|
||||
$(`[face="${d.faceName}"]`).remove()
|
||||
break;
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue