Allow Editing configureMonitor with Partial Config Posted

pipelines^2
Moe 2025-01-18 19:51:22 -08:00
parent 6ad351ecbe
commit 75828f4e38
3 changed files with 73 additions and 21 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -817,12 +817,17 @@ 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
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(monitorConfig)},function(d){
$.post(getApiPrefix()+'/configureMonitor/'+$user.ke+'/'+monitorConfig.mid,{data:JSON.stringify(postFormVals)},function(d){
if(d.ok === false){
new PNotify({
title: lang['Action Failed'],
@ -844,7 +849,7 @@ editorForm.submit(function(e){
if(copySettingsSelector.val() === '1'){
copyMonitorSettingsToSelected(monitorConfig)
}
monitorEditorWindow.modal('hide')
}
return false;
});
//////////////////