diff --git a/src/modules/index.js b/src/modules/index.js index d302280..ac116ff 100644 --- a/src/modules/index.js +++ b/src/modules/index.js @@ -54,7 +54,7 @@ function projectDeleteButtons(){ function userProjectButtons(){ $(".settingsbuttons").click((value) => { - userjs.setProject(value); + userjs.updateProject(value); loadPage("project/project.html", ()=>{ projectjs.init(); projectDeleteButtons(); diff --git a/src/modules/project/project.html b/src/modules/project/project.html index 35d34cb..f3dcffb 100644 --- a/src/modules/project/project.html +++ b/src/modules/project/project.html @@ -13,20 +13,26 @@
- +

- +
+ + diff --git a/src/modules/project/project.js b/src/modules/project/project.js index 84c7d8e..b3d74a1 100644 --- a/src/modules/project/project.js +++ b/src/modules/project/project.js @@ -2,8 +2,15 @@ function init(){ $("#project-name").val(globaljs.projectDetails.name); $("#project-description").val(globaljs.projectDetails.details); + $(".savebuttons").hide(); + $(".cancelbuttons").hide(); $(".updatebuttons").click((value) => { + $("#project-name").removeClass("form-control-plaintext").addClass("form-control").attr("readonly", false); + $("#project-description").removeClass("form-control-plaintext").addClass("form-control").attr("readonly", false); + $(".updatebuttons").hide(); + $(".savebuttons").show(); + $(".cancelbuttons").show(); // swal({ // text: "Project Name", // title: "Update Project Details", @@ -57,7 +64,88 @@ function init(){ // } // } // }); - swal("Info","This feature is currently in development. Stay tune for updates.","info"); + // swal("Info","This feature is currently in development. Stay tune for updates.","info"); + }); + + $(".savebuttons").click((value) => { + let project_name = $("#project-name").val(); + let project_description = $("#project-description").val(); + if(project_name == "") { + swal("Error", "Project name can't be empty.", "error"); + return; + } + if(project_description == "") { + swal("Error", "Project description can't be empty.", "error"); + return; + } + if(project_name === globaljs.projectDetails.name && project_description === globaljs.projectDetails.details) { + swal("Error", "You have made no changes.", "error"); + return; + } + let dir = project_name.replace(/[^a-z0-9]/gi, '_').toLowerCase(); + let old_dir = globaljs.projectDetails.name.replace(/[^a-z0-9]/gi, '_').toLowerCase();; + let projects_path = path.join(process.cwd(), "/../testing/Projects/"); + if(fs.existsSync(projects_path + dir)) { + swal("Error", "A Project with this name already exists.", "error"); + return; + } + + swal({ + title: "Save?", + text: "Are you sure you want to save your changes?", + icon: "warning", + buttons: true, + dangerMode: true + }).then((willSave) => { + if(willSave) { + try { + let data = JSON.parse(fs.readFileSync(projects_path + old_dir + "/info.json", "utf-8")); + data.name = dir; + data.details = project_description; + + fs.writeFileSync(projects_path + old_dir + "/info.json", JSON.stringify(data), "utf-8"); + + fs.renameSync(projects_path + old_dir, projects_path + dir); + swal("Success", "Project details have been successfully updated.", "success").then(value => { + globaljs.projectDetails.name = project_name; + globaljs.projectDetails.details = project_description; + + $("#project-name").val(globaljs.projectDetails.name).removeClass("form-control") + .addClass("form-control-plaintext").attr("readonly", true); + $("#project-description").val(globaljs.projectDetails.details).removeClass("form-control") + .addClass("form-control-plaintext").attr("readonly", true); + $(".updatebuttons").show(); + $(".savebuttons").hide(); + $(".cancelbuttons").hide(); + }); + } + catch(err) { + swal("Error", "Error writing to files", "error"); + print(err); + return; + } + } + }); + }); + + $(".cancelbuttons").click((value) => { + swal({ + title: "Discard changes?", + text: "Are you sure you want to discard changes?", + icon: "warning", + buttons: true, + dangerMode: true + }).then((willCancel) => { + if(willCancel) { + $("#project-name").val(globaljs.projectDetails.name).removeClass("form-control") + .addClass("form-control-plaintext").attr("readonly", true); + $("#project-description").val(globaljs.projectDetails.details).removeClass("form-control") + .addClass("form-control-plaintext").attr("readonly", true); + $(".updatebuttons").show(); + $(".savebuttons").hide(); + $(".cancelbuttons").hide(); + } + }); }); } diff --git a/src/modules/user/user.js b/src/modules/user/user.js index 0650a70..171e9b7 100644 --- a/src/modules/user/user.js +++ b/src/modules/user/user.js @@ -141,6 +141,12 @@ function setProject(value) { globaljs.projectDetails.details = pdosi[1].innerText; } +function updateProject(value) { + let pdosi = $(value.target).parent()[0].children; + globaljs.projectDetails.name = pdosi[0].innerText; + globaljs.projectDetails.details = pdosi[1].innerText; +} + function loadProjects() { let dirlist = getDirectories(projects_path) if (dirlist.length != 0) { @@ -186,7 +192,8 @@ module.exports = { init: init, killTensorboard: killTensorboard, startTensorboard: startTensorboard, - setProject: setProject + setProject: setProject, + updateProject: updateProject } // $(document).ready(() => { diff --git a/src/package.json b/src/package.json index 821c4bc..3d3b8cf 100644 --- a/src/package.json +++ b/src/package.json @@ -20,7 +20,7 @@ "electron": "^4.2.3" }, "dependencies": { - "jquery": "^3.5.0", + "jquery": "^3.5.1", "jquery-ui-dist": "^1.12.1", "monaco-editor": "^0.19.2", "rimraf": "^2.6.3",