/*jshint esversion: 6 */ /*********** MessageBox ****************/ // simply show info. Only close button function infoMessageBox(message, title){ $("#info-body").html(message); $("#info-title").html(title); $("#info-popup").modal('show'); } // like info, but for errors. function errorMessageBox(message) { var msg = "Operation failed: " + message + ". " + "Please see error log for details."; infoMessageBox(msg, "Error"); } // modal with full control function messageBox(body, title, ok_text, close_text, callback){ $("#modal-body").html(body); $("#modal-title").html(title); if (ok_text) $("#modal-button").html(ok_text); if(close_text) $("#modal-close-button").html(close_text); $("#modal-button").unbind("click"); // remove existing events attached to this $("#modal-button").click(callback); $("#popup").modal("show"); } /*********** crontab actions ****************/ // TODO get rid of global variables var schedule = ""; var job_command = ""; function deleteJob(_id){ // TODO fix this. pass callback properly messageBox("
Do you want to delete this Job?
", "Confirm delete", null, null, function(){ $.post(routes.remove, {_id: _id}, function(){ location.reload(); }); }); } function stopJob(_id){ messageBox("Do you want to stop this Job?
", "Confirm stop job", null, null, function(){ $.post(routes.stop, {_id: _id}, function(){ location.reload(); }); }); } function startJob(_id){ messageBox("Do you want to start this Job?
", "Confirm start job", null, null, function(){ $.post(routes.start, {_id: _id}, function(){ location.reload(); }); }); } function setCrontab(){ messageBox("Do you want to set the crontab file?
", "Confirm crontab setup", null, null, function(){ $.get(routes.crontab, { "env_vars": $("#env_vars").val() }, function(){ // TODO show only if success infoMessageBox("Successfuly set crontab file!","Information"); }).fail(function(response) { errorMessageBox(response.statusText,"Error"); }); }); } function getCrontab(){ messageBox("Do you want to get the crontab file?
", "Confirm crontab retrieval", null, null, function(){ $.get(routes.import_crontab, { "env_vars": $("#env_vars").val() }, function(){ // TODO show only if success infoMessageBox("Successfuly got the crontab file!","Information"); location.reload(); }); }); } function editJob(_id){ var job = null; crontabs.forEach(function(crontab){ if(crontab._id == _id) job = crontab; }); if(job){ $("#job").modal("show"); $("#job-name").val(job.name); $("#job-command").val(job.command); // if macro not used if(job.schedule.indexOf("@") !== 0){ var components = job.schedule.split(" "); $("#job-minute").val(components[0]); $("#job-hour").val(components[1]); $("#job-day").val(components[2]); $("#job-month").val(components[3]); $("#job-week").val(components[4]); } if (job.mailing) { $("#job-mailing").attr("data-json", JSON.stringify(job.mailing)); } schedule = job.schedule; job_command = job.command; if (job.logging && job.logging != "false") $("#job-logging").prop("checked", true); job_string(); } $("#job-save").unbind("click"); // remove existing events attached to this $("#job-save").click(function(){ // TODO good old boring validations if (!schedule) { schedule = "* * * * *"; } let name = $("#job-name").val(); let mailing = JSON.parse($("#job-mailing").attr("data-json")); let logging = $("#job-logging").prop("checked"); $.post(routes.save, {name: name, command: job_command , schedule: schedule, _id: _id, logging: logging, mailing: mailing}, function(){ location.reload(); }); }); } function newJob(){ schedule = ""; job_command = ""; $("#job-minute").val("*"); $("#job-hour").val("*"); $("#job-day").val("*"); $("#job-month").val("*"); $("#job-week").val("*"); $("#job").modal("show"); $("#job-name").val(""); $("#job-command").val(""); $("#job-mailing").attr("data-json", "{}"); job_string(); $("#job-save").unbind("click"); // remove existing events attached to this $("#job-save").click(function(){ // TODO good old boring validations if (!schedule) { schedule = "* * * * *"; } let name = $("#job-name").val(); let mailing = JSON.parse($("#job-mailing").attr("data-json")); let logging = $("#job-logging").prop("checked"); $.post(routes.save, {name: name, command: job_command , schedule: schedule, _id: -1, logging: logging, mailing: mailing}, function(){ location.reload(); }); }); } function doBackup(){ messageBox("Do you want to take backup?
", "Confirm backup", null, null, function(){ $.get(routes.backup, {}, function(){ location.reload(); }); }); } function delete_backup(db_name){ messageBox("Do you want to delete this backup?
", "Confirm delete", null, null, function(){ $.get(routes.delete_backup, {db: db_name}, function(){ location = routes.root; }); }); } function restore_backup(db_name){ messageBox("Do you want to restore this backup?
", "Confirm restore", null, null, function(){ $.get(routes.restore_backup, {db: db_name}, function(){ location = routes.root; }); }); } function import_db(){ messageBox(" Do you want to import crontab?
NOTE: It is recommended to take a backup before this.
This is based on nodemailer. Refer this for more details.
"; container.innerHTML += message; let transporterLabel = document.createElement("label"); transporterLabel.innerHTML = "Transporter"; let transporterInput = document.createElement("input"); transporterInput.type = "text"; transporterInput.id = "transporterInput"; transporterInput.setAttribute("placeholder", config.transporterStr); transporterInput.className = "form-control"; if (data.transporterStr){ transporterInput.setAttribute("value", data.transporterStr); } container.appendChild(transporterLabel); container.appendChild(transporterInput); container.innerHTML += "Coming Soon
", "Hooks", null, null, null); } // script corresponding to job popup management function job_string(){ $("#job-string").val(schedule + " " + job_command); return schedule + " " + job_command; } function set_schedule(){ schedule = $("#job-minute").val() + " " +$("#job-hour").val() + " " +$("#job-day").val() + " " +$("#job-month").val() + " " +$("#job-week").val(); job_string(); } // popup management ends