Allow Editing configureMonitor with Partial Config Posted
parent
6ad351ecbe
commit
75828f4e38
|
@ -4,6 +4,9 @@ var moment = require('moment')
|
|||
var exec = require('child_process').exec;
|
||||
var spawn = require('child_process').spawn;
|
||||
var execSync = require('child_process').execSync;
|
||||
const {
|
||||
mergeDeep
|
||||
} = require('./common.js')
|
||||
module.exports = function(s,config,lang,app){
|
||||
const {
|
||||
deleteMonitor,
|
||||
|
@ -334,10 +337,12 @@ module.exports = function(s,config,lang,app){
|
|||
return
|
||||
}
|
||||
form.mid = req.params.id.replace(/[^\w\s]/gi,'').replace(/ /g,'')
|
||||
const alreadyExisting = s.group[groupKey].rawMonitorConfigurations[monitorId];
|
||||
if(form && form.name){
|
||||
s.checkDetails(form)
|
||||
form.ke = req.params.ke
|
||||
endData = await s.addOrEditMonitor(form,null,user)
|
||||
const postForm = mergeDeep({}, alreadyExisting || {}, form);
|
||||
form.ke = groupKey;
|
||||
endData = await s.addOrEditMonitor(postForm,null,user)
|
||||
}else{
|
||||
endData.msg = user.lang.monitorEditText1;
|
||||
}
|
||||
|
|
|
@ -1124,3 +1124,45 @@ function getQueryString(){
|
|||
})
|
||||
return theObject
|
||||
}
|
||||
function getChangedObjectValues(obj1, obj2) {
|
||||
if (Object.keys(obj1).length === 0) {
|
||||
return obj2;
|
||||
}
|
||||
|
||||
const changes = {};
|
||||
|
||||
function compare(obj1, obj2, changes) {
|
||||
for (const key in obj1) {
|
||||
if (obj1.hasOwnProperty(key)) {
|
||||
if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) {
|
||||
if (!arraysEqual(obj1[key], obj2[key])) {
|
||||
changes[key] = obj2[key];
|
||||
}
|
||||
} else if (typeof obj1[key] === 'object' && obj1[key] !== null) {
|
||||
if (typeof obj2[key] === 'object' && obj2[key] !== null) {
|
||||
const nestedChanges = {};
|
||||
compare(obj1[key], obj2[key], nestedChanges);
|
||||
if (Object.keys(nestedChanges).length > 0) {
|
||||
changes[key] = nestedChanges;
|
||||
}
|
||||
} else {
|
||||
changes[key] = obj2[key];
|
||||
}
|
||||
} else if (obj1[key] !== obj2[key]) {
|
||||
changes[key] = obj2[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function arraysEqual(arr1, arr2) {
|
||||
if (arr1.length !== arr2.length) return false;
|
||||
for (let i = 0; i < arr1.length; i++) {
|
||||
if (arr1[i] !== arr2[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
compare(obj1, obj2, changes);
|
||||
return changes;
|
||||
}
|
||||
|
|
|
@ -817,34 +817,39 @@ editorForm.submit(function(e){
|
|||
var validation = getMonitorEditFormFields()
|
||||
if(!validation.ok){
|
||||
var errorsFound = validation.errors
|
||||
$.sM.e.find('.msg').html(errorsFound.join('<br>'));
|
||||
new PNotify({title:'Configuration Invalid',text:errorsFound.join('<br>'),type:'error'});
|
||||
return;
|
||||
}
|
||||
var monitorConfig = validation.monitorConfig
|
||||
setSubmitButton(editorForm, lang[`Please Wait...`], `spinner fa-pulse`, true)
|
||||
$.post(getApiPrefix()+'/configureMonitor/'+$user.ke+'/'+monitorConfig.mid,{data:JSON.stringify(monitorConfig)},function(d){
|
||||
if(d.ok === false){
|
||||
monitorConfig.ke = $user.ke;
|
||||
var alreadyExisting = getDbColumnsForMonitor(loadedMonitors[monitorConfig.mid] || {});
|
||||
var postFormVals = getChangedObjectValues(alreadyExisting, monitorConfig);
|
||||
postFormVals.name = monitorConfig.name || alreadyExisting.name;
|
||||
if(Object.keys(postFormVals).length > 0){
|
||||
setSubmitButton(editorForm, lang[`Please Wait...`], `spinner fa-pulse`, true)
|
||||
$.post(getApiPrefix()+'/configureMonitor/'+$user.ke+'/'+monitorConfig.mid,{data:JSON.stringify(postFormVals)},function(d){
|
||||
if(d.ok === false){
|
||||
new PNotify({
|
||||
title: lang['Action Failed'],
|
||||
text: d.msg,
|
||||
type: 'danger'
|
||||
})
|
||||
}
|
||||
debugLog(d)
|
||||
setSubmitButton(editorForm, lang.Save, `check`, false)
|
||||
}).fail((err) => {
|
||||
new PNotify({
|
||||
title: lang['Action Failed'],
|
||||
text: d.msg,
|
||||
text: JSON.stringify(err, null, 3),
|
||||
type: 'danger'
|
||||
})
|
||||
}
|
||||
debugLog(d)
|
||||
setSubmitButton(editorForm, lang.Save, `check`, false)
|
||||
}).fail((err) => {
|
||||
new PNotify({
|
||||
title: lang['Action Failed'],
|
||||
text: JSON.stringify(err, null, 3),
|
||||
type: 'danger'
|
||||
setSubmitButton(editorForm, lang.Save, `check`, false)
|
||||
})
|
||||
setSubmitButton(editorForm, lang.Save, `check`, false)
|
||||
})
|
||||
//
|
||||
if(copySettingsSelector.val() === '1'){
|
||||
copyMonitorSettingsToSelected(monitorConfig)
|
||||
//
|
||||
if(copySettingsSelector.val() === '1'){
|
||||
copyMonitorSettingsToSelected(monitorConfig)
|
||||
}
|
||||
}
|
||||
monitorEditorWindow.modal('hide')
|
||||
return false;
|
||||
});
|
||||
//////////////////
|
||||
|
|
Loading…
Reference in New Issue