diff --git a/src/js/control-view.js b/src/js/control-view.js index c41a447..9e154dc 100644 --- a/src/js/control-view.js +++ b/src/js/control-view.js @@ -404,6 +404,13 @@ module.exports = { } }, + update_config: function () { + this.config.gcode_list = [...this.state.gcode_list]; + this.config.non_macros_list = [...this.state.non_macros_list]; + this.config.macros_list = [...this.state.macros_list]; + this.config.macros = [...this.state.macros]; + }, + reset_gcode: function () { this.state.selected = ""; this.last_file = ""; @@ -431,13 +438,13 @@ module.exports = { return; } + this.update_config(); + const isAlreadyPresent = this.state.non_macros_list.find(element => element.file_name == file.name); if (!isAlreadyPresent) { - this.config.non_macros_list = [...this.state.non_macros_list]; this.config.non_macros_list.push({ file_name: file.name }); } - this.config.gcode_list = [...this.state.gcode_list]; var folder_to_add = this.config.gcode_list.find(item => item.type == "folder" && item.name == this.state.folder); if (!folder_to_add) { folder_to_add = this.config.gcode_list.unshift({ @@ -498,7 +505,7 @@ module.exports = { alert("Folder with the same name already exists!"); return; } else { - this.config.gcode_list = [...this.state.gcode_list]; + this.update_config(); this.config.gcode_list.push({ name: folder_name, type: "folder", @@ -529,8 +536,7 @@ module.exports = { this.totalFiles = files.length; const folderName = files[0].webkitRelativePath.split("/")[0]; - this.config.non_macros_list = [...this.state.non_macros_list]; - this.config.gcode_list = [...this.state.gcode_list]; + this.update_config(); for (let file of files) { const reader = new FileReader(); @@ -597,10 +603,9 @@ module.exports = { return; } - this.config.non_macros_list = [...this.state.non_macros_list]; - this.config.non_macros_list = this.config.non_macros_list.filter(item => item.file_name != this.state.selected); + this.update_config(); - this.config.gcode_list = [...this.state.gcode_list]; + this.config.non_macros_list = this.config.non_macros_list.filter(item => item.file_name != this.state.selected); // if (this.state.folder == "default") { // this.config.gcode_list = this.config.gcode_list.filter( // item => (item.type == "file" || item.type == "folder") && item.name != this.state.selected, @@ -640,8 +645,8 @@ module.exports = { }, delete_folder: async function () { + this.update_config(); if (this.state.folder && this.state.folder != "default") { - this.config.gcode_list = [...this.state.gcode_list]; const files_to_move = this.config.gcode_list.find( item => item.type == "folder" && item.name == this.state.folder, ); @@ -661,8 +666,7 @@ module.exports = { return; } - this.config.gcode_list = [...this.state.gcode_list]; - this.config.non_macros_list = [...this.state.non_macros_list]; + this.update_config(); const selected_folder = this.config.gcode_list.find( item => item.type == "folder" && item.name == this.state.folder, diff --git a/src/js/macros.js b/src/js/macros.js index 91ec347..6e48c81 100644 --- a/src/js/macros.js +++ b/src/js/macros.js @@ -94,6 +94,14 @@ module.exports = { }); }); }, + + update_config: function () { + this.config.gcode_list = [...this.state.gcode_list]; + this.config.non_macros_list = [...this.state.non_macros_list]; + this.config.macros_list = [...this.state.macros_list]; + this.config.macros = [...this.state.macros]; + }, + load: async function () { if (this.tab == 0) { return; @@ -121,9 +129,8 @@ module.exports = { } }, removeFromList: async function () { - this.config.macros_list = [...this.state.macros_list]; + this.update_config(); this.config.macros_list = this.config.macros_list.filter(item => item.file_name != this.fileName); - this.config.macros = [...this.state.macros]; this.config.macros .filter(item => item.file_name == this.fileName) .forEach(item => { @@ -162,7 +169,7 @@ module.exports = { const gcodeData = { file_name: file.name, }; - this.config.macros_list = [...this.state.macros_list]; + this.update_config(); if (!this.state.macros_list.some(item => item.file_name == file.name)) { this.fileName = file.name; this.config.macros_list.push(gcodeData); @@ -210,7 +217,7 @@ module.exports = { const gcodeData = { file_name: filename, }; - this.config.macros_list = [...this.state.macros_list]; + this.update_config(); if (!this.state.macros_list.some(item => item.file_name == filename)) { this.config.macros_list.push(gcodeData); } @@ -230,7 +237,8 @@ module.exports = { this.newGcode = ""; } - const macros = [...this.state.macros]; + this.update_config(); + macros.splice(this.tab - 1, 1); const macros_list = macros.map(item => item.name); const formattedFilename = macrosName @@ -247,12 +255,11 @@ module.exports = { var file = this.newGcode; var file_name = - this.fileName == "default" ? (file.trim() != "" ? formattedFilename + ".ngc" : "default") : this.fileName; + this.fileName == "default" ? (file.trim() ? formattedFilename + ".ngc" : "default") : this.fileName; - if (file.trim() != "") { + if (file.trim()) { this.upload_gcode(file_name, file); } - this.config.macros = [...this.state.macros]; this.config.macros[this.tab - 1].name = macrosName; this.config.macros[this.tab - 1].color = macrosColor; this.config.macros[this.tab - 1].file_name = file_name; @@ -282,11 +289,11 @@ module.exports = { } }, delete_current: async function () { + this.update_config(); const filename = this.fileName; if (filename == "default") { this.newGcode = ""; } else { - this.config.macros = [...this.state.macros]; const macro_with_filename = this.config.macros.filter( item => item.file_name != "default" && item.file_name == filename, ); @@ -300,7 +307,6 @@ module.exports = { } api.delete(`file/${filename}`); this.newGcode = ""; - this.config.macros_list = [...this.state.macros_list]; this.config.macros_list = this.config.macros_list.filter(item => item.file_name !== filename); this.fileName = "default"; try { @@ -396,6 +402,8 @@ module.exports = { this.load_macro(); }, add_new_macro: async function () { + this.update_config(); + let length = this.state.macros.length; if (length >= 20) { this.maxLimitReached = true; @@ -410,7 +418,6 @@ module.exports = { file_name: "default", alert: true, }; - this.config.macros = [...this.state.macros]; this.config.macros.push(newMacros); this.tab = this.state.macros.length; this.load_macro(); @@ -429,7 +436,8 @@ module.exports = { this.deleteSelected = false; return; } - this.config.macros = [...this.state.macros]; + this.update_config(); + this.config.macros.splice(this.tab - 1, 1); this.tab--; this.load_macro();