bugfix: update notify_filelist_changed

Signed-off-by: Stefan Dej <meteyou@gmail.com>
This commit is contained in:
Stefan Dej 2020-08-01 01:07:37 +02:00
parent 6766a266e8
commit 8494a35adf
3 changed files with 103 additions and 59 deletions

View File

@ -55,7 +55,7 @@
<v-btn color="primary ml-4 " :loading="loadingGcodeUpload" @click="clickUploadButton"><v-icon>mdi-upload</v-icon>Upload</v-btn>
</v-card-title>
<v-card-subtitle>
Current path: {{ this.currentPath }}
Current path: {{ this.currentPath !== 'gcodes' ? "/"+this.currentPath.substring(7) : "/" }}
</v-card-subtitle>
<v-card-text>
<v-text-field
@ -231,7 +231,7 @@
import { mapState, mapGetters } from 'vuex';
import axios from 'axios';
import { findDirectory } from "../plugins/helpers";
import Vue from "vue";
/*import Vue from "vue";*/
export default {
data () {
@ -335,12 +335,6 @@
).then((result) => {
this.$store.commit('removeLoading', { name: 'loadingGcodeUpload' });
toast.success("Upload of "+result.data.result+" successful!");
this.$socket.sendObj('get_directory', { path: this.currentPath }, 'getDirectory');
let filename = (this.currentPath+"/"+file.name).substring(7);
setTimeout(function() {
Vue.prototype.$socket.sendObj("get_file_metadata", { filename: filename }, "getMetadata");
}, 1000);
})
.catch(() => {
this.$store.commit('removeLoading', { name: 'loadingGcodeUpload' });
@ -435,7 +429,6 @@
'http://'+ this.hostname + ':' + this.port +'/server/files/'+filename
).then((result) => {
this.$toast.success(result.data.result+" successfully deleted.");
this.$socket.sendObj('get_directory', { path: this.currentPath }, 'getDirectory');
}).catch(() => {
this.$toast.error("Error! Cannot delete file.");
});
@ -538,9 +531,14 @@
e.preventDefault();
e.target.parentElement.style.backgroundColor = 'transparent';
let dest = "";
if (row.filename === '..') {
dest = this.currentPath.substring(0, this.currentPath.lastIndexOf("/") + 1)+this.draggingFile.item.filename;
} else dest = this.currentPath+"/"+row.filename+"/"+this.draggingFile.item.filename;
this.$socket.sendObj('post_file_move', {
source: this.currentPath+"/"+this.draggingFile.item.filename,
dest: this.currentPath+"/"+row.filename+"/"+this.draggingFile.item.filename,
dest: dest
}, 'getPostFileMove');
}
},

View File

@ -36,7 +36,31 @@ export default {
break;
case 'notify_filelist_changed':
commit('setFileList', data.params[0].filelist);
switch(data.params[0].action) {
case 'added':
commit('setFileChangeAdded', data.params[0]);
break;
case 'removed':
commit('setFileChangeRemoved', data.params[0]);
break;
case 'file_move':
commit('setFileChangeFileMove', data.params[0]);
break;
case 'add_directory':
commit('setFileChangeAddDirectory', data.params[0]);
break;
case 'delete_directory':
commit('setFileChangeDeleteDirectory', data.params[0]);
break;
default:
window.console.error("Unknown filelist_changed action: "+data.params[0].action);
break;
}
break;
default:
@ -96,7 +120,6 @@ export default {
idle_timeout: [],
display_status: [],
});
Vue.prototype.$socket.sendObj('get_file_list', {}, 'getFileList');
Vue.prototype.$socket.sendObj('get_directory', { path: 'gcodes' }, 'getDirectory');
Vue.prototype.$socket.sendObj('get_printer_gcode_help', {}, 'getHelpList');
} else if (data !== undefined && !data.is_ready) commit('setKlippyStatus', 'disconnect');
@ -157,11 +180,6 @@ export default {
commit('setPrinterConfig', data);
},
getFileList({ commit }, data) {
commit('setFileList', data);
commit('removeLoading', 'loadingGcodeRefresh');
},
getDirectory({ commit }, data) {
commit('setDirectory', data);
commit('removeLoading', { name: 'loadingGcodeRefresh' });
@ -179,11 +197,9 @@ export default {
if (data.error) {
Vue.$toast.error(data.error.message);
} else if (data.result === "ok") {
let currentPath = data.requestParams.path.substr(0, data.requestParams.path.lastIndexOf("/"));
let newPath = data.requestParams.path.substr(data.requestParams.path.lastIndexOf("/")+1);
Vue.$toast.success("Successfully created "+newPath);
Vue.prototype.$socket.sendObj('get_directory', { path: currentPath }, 'getDirectory');
commit('voidMutation');
}
},
@ -192,15 +208,10 @@ export default {
if (data.error) {
Vue.$toast.error(data.error.message);
} else if (data.result === "ok") {
let currentPath = data.requestParams.path.substr(0, data.requestParams.path.lastIndexOf("/"));
let delPath = data.requestParams.path.substr(data.requestParams.path.lastIndexOf("/")+1);
Vue.$toast.success("Successfully deleted "+delPath);
//Vue.prototype.$socket.sendObj('get_directory', { path: currentPath }, 'getDirectory');
commit('removeDirFromFiletree', {
currentPath: currentPath,
delPathName: delPath
});
commit('voidMutation');
}
},
@ -214,11 +225,7 @@ export default {
if (sourceDir === destDir) Vue.$toast.success("Successfully renamed "+filename);
else Vue.$toast.success("Successfully moved "+filename);
commit('renameMetadataFilename', {
source: data.requestParams.source,
dest: data.requestParams.dest
});
commit('voidMutation');
}
},

View File

@ -215,29 +215,74 @@ export default {
if (data.configfile) Vue.set(state, 'config', data.configfile.config);
},
setFileList(state, data) {
state.files = [];
//window.console.log(data);
let array = Object.entries(data);
setFileChangeAdded(state, data) {
let filename = data.filename.substr(data.filename.lastIndexOf("/")).replace("/", "");
let path = data.filename.substr(0, data.filename.lastIndexOf("/"));
let parent = findDirectory(state.filetree, (data.root+"/"+path).split("/"));
for (let [key, file] of array) {
if (file.filename !== "gui.json") {
state.files.push({
number: key,
filename: file.filename,
modified: Date.parse(file.modified),
size: file.size,
slicer: file.slicer,
filament_total: file.filament_total,
estimated_time: file.estimated_time,
layer_height: file.layer_height,
first_layer_height: file.first_layer_height,
object_height: file.object_height,
thumbnails : file.thumbnails ? file.thumbnails : [],
});
}
if (parent) {
parent.push({
isDirectory: false,
filename: filename,
modified: new Date(),
size: 0,
metadataPulled: false,
});
setTimeout(function() {
Vue.prototype.$socket.sendObj("get_file_metadata", { filename: data.filename }, "getMetadata");
}, 500);
}
//state.files = data;
},
setFileChangeRemoved(state, data) {
let currentPath = data.filename.substr(0, data.filename.lastIndexOf("/"));
let delPath = data.filename.substr(data.filename.lastIndexOf("/")+1);
currentPath = findDirectory(state.filetree, (data.root+"/"+currentPath).split("/"));
let index = currentPath.findIndex(element => element.filename === delPath);
if (index >= 0 && currentPath[index]) currentPath.splice(index, 1);
},
setFileChangeFileMove(state, data) {
let oldPath = data.prev_file.substr(0, data.prev_file.lastIndexOf("/") + 1);
let newPath = data.filename.substr(0, data.filename.lastIndexOf("/") + 1);
let filenameOld = data.prev_file.substr(data.prev_file.lastIndexOf("/")+1);
let filenameNew = data.filename.substr(data.filename.lastIndexOf("/")+1);
oldPath = findDirectory(state.filetree, (data.root+"/"+oldPath).split("/"));
let indexFile = oldPath.findIndex(element => element.filename === filenameOld);
if (indexFile >= 0 && oldPath[indexFile]) {
let file = oldPath.splice(indexFile, 1)[0];
file.filename = filenameNew;
newPath = findDirectory(state.filetree, (data.root+"/"+newPath).split("/"));
newPath.push(file);
}
},
setFileChangeAddDirectory(state, data) {
let filename = data.filename.substr(data.filename.lastIndexOf("/") + 1);
let path = data.filename.substr(0, data.filename.lastIndexOf("/"));
let parent = findDirectory(state.filetree, (data.root+"/"+path).split("/"));
if (parent) {
parent.push({
isDirectory: true,
filename: filename,
modified: new Date(),
childrens: [],
});
}
},
setFileChangeDeleteDirectory(state, data) {
let currentPath = data.filename.substr(0, data.filename.lastIndexOf("/"));
let delPath = data.filename.substr(data.filename.lastIndexOf("/")+1);
currentPath = findDirectory(state.filetree, (data.root+"/"+currentPath).split("/"));
let index = currentPath.findIndex(element => element.filename === delPath);
if (index >= 0 && currentPath[index]) currentPath.splice(index, 1);
},
setDirectory(state, data) {
@ -311,6 +356,8 @@ export default {
slicer: data.slicer ? data.slicer : undefined,
thumbnails: data.thumbnails ? data.thumbnails : undefined,
metadataPulled: true,
modified: Date.parse(data.modified),
size: parseInt(data.size),
};
let newObject = Object.assign(path[index], newData);
@ -351,14 +398,6 @@ export default {
}
},
removeDirFromFiletree(state, data) {
let currentPathArray = data.currentPath.split("/");
let currentPath = findDirectory(state.filetree, currentPathArray);
let index = currentPath.findIndex(element => element.filename === data.delPathName);
if (index >= 0 && currentPath[index]) currentPath.splice(index, 1);
},
setHelpList(state, data) {
state.helplist = [];