diff --git a/front/js/common.js b/front/js/common.js index 5eae5fe9..f3b05ca7 100755 --- a/front/js/common.js +++ b/front/js/common.js @@ -1009,7 +1009,7 @@ function showSpinner(stringKey = "Loading", target = null) { console.log(resolvedTarget); - console.log(`spinnerTarget=${resolvedTarget.attr("id")} class=${resolvedTarget.attr("class")} size=${resolvedTarget.outerWidth()}x${resolvedTarget.outerHeight()} parent=${resolvedTarget.parent().outerWidth()}x${resolvedTarget.parent().outerHeight()}`) + // console.log(`spinnerTarget=${resolvedTarget.attr("id")} class=${resolvedTarget.attr("class")} size=${resolvedTarget.outerWidth()}x${resolvedTarget.outerHeight()} parent=${resolvedTarget.parent().outerWidth()}x${resolvedTarget.parent().outerHeight()}`) $("#loadingSpinnerText").text(text); diff --git a/front/js/settings_utils.js b/front/js/settings_utils.js index b1ce57a0..752ebb7f 100755 --- a/front/js/settings_utils.js +++ b/front/js/settings_utils.js @@ -1059,6 +1059,16 @@ function collectSetting(prefix, setCodeName, setType, settingsArray) { // Map of handlers const handlers = { + textarea: () => { + let value = $(`#${setCodeName}`).val(); + + // Only escape multiline plain text values + if (dataType === "string") { + value = JSON.stringify(value).slice(1, -1); + } + + return applyTransformers(value, transformers); + }, datatableString: () => { const value = collectTableData(`#${setCodeName}_table`); return btoa(JSON.stringify(value)); @@ -1091,9 +1101,26 @@ function collectSetting(prefix, setCodeName, setType, settingsArray) { }, none: () => "", json: () => { - let value = $(`#${setCodeName}`).val(); - value = applyTransformers(value, transformers); - return JSON.stringify(value, null, 2); + let value = $(`#${setCodeName}`).val(); + + value = applyTransformers(value, transformers); + + try { + value = JSON.parse(value); + } catch (e) { + console.error(`[collectSetting] Invalid JSON for ${setCodeName}`, e); + return value; + } + + value = JSON.stringify(value, null, 2) + .replace(/\btrue\b/g, "True") + .replace(/\bfalse\b/g, "False") + .replace(/\bnull\b/g, "None"); + + console.log("---------------") + console.log(value) + + return value; }, fallback: () => { console.error(`[collectSetting] Couldn't determine how to handle (${setCodeName}|${dataType}|${opts.inputType})`); @@ -1106,17 +1133,20 @@ function collectSetting(prefix, setCodeName, setType, settingsArray) { let handlerKey; if (dataType === "string" && elementType === "datatable") { handlerKey = "datatableString"; + } else if (dataType === "json") { + handlerKey = "json"; + } + else if (elementType === "textarea") { + handlerKey = "textarea"; } else if (dataType === "string" || (dataType === "integer" && (opts.inputType === "number" || opts.inputType === "text"))) { - handlerKey = "simpleValue"; + handlerKey = "simpleValue"; } else if (opts.inputType === "checkbox") { handlerKey = "checkbox"; } else if (dataType === "array") { handlerKey = "array"; } else if (dataType === "none") { handlerKey = "none"; - } else if (dataType === "json") { - handlerKey = "json"; } else { handlerKey = "fallback"; } @@ -1162,16 +1192,19 @@ function generateFormHtml(settingsData, set, overrideValue, overrideOptions, ori const setKey = set['setKey']; const setType = set['setType']; - // if (setKey == 'UNIFIAPI_site_name') { + // if (setKey == 'NTFPRCS_TEXT_TEMPLATE_down_devices') { - // console.log("==== DEBUG OUTPUT BELOW 1 ===="); - // console.log("populateFromOverrides: " + populateFromOverrides); - // console.log(setType); - // console.log(setKey); - // console.log("overrideValue:" + overrideValue); - // console.log("inVal:" + inVal); - // console.log("set['setValue']:" + set['setValue']); - // } + // console.log("==== DEBUG OUTPUT BELOW 1 ===="); + // console.log("populateFromOverrides: " + populateFromOverrides); + // console.log(setType); + // console.log(setKey); + // console.log("overrideValue:" + overrideValue); + // console.log("inVal:" + inVal); + // console.log("set['setValue']:" + set['setValue']); + // console.log("overrideValue stringify:", JSON.stringify(overrideValue)); + // console.log("inVal stringify:", JSON.stringify(inVal)); + // console.log("set['setValue'] stringify:", JSON.stringify(set['setValue'])); + // } // Parse the setType JSON string // console.log(processQuotes(setType)); @@ -1212,7 +1245,7 @@ function generateFormHtml(settingsData, set, overrideValue, overrideOptions, ori // Override value let val = valRes; - // if (setKey == 'UNIFIAPI_site_name') { + // if (setKey == 'NTFPRCS_TEXT_TEMPLATE_down_devices') { // console.log("==== DEBUG OUTPUT BELOW 2 ===="); // console.log(setType); diff --git a/front/plugins/notification_processing/config.json b/front/plugins/notification_processing/config.json index fbdee993..d3f82bbd 100755 --- a/front/plugins/notification_processing/config.json +++ b/front/plugins/notification_processing/config.json @@ -210,7 +210,7 @@ "type": { "dataType": "string", "elements": [ - { "elementType": "input", "elementOptions": [], "transformers": [] } + { "elementType": "textarea", "elementOptions": [], "transformers": [] } ] }, "default_value": "", @@ -234,7 +234,7 @@ "type": { "dataType": "string", "elements": [ - { "elementType": "input", "elementOptions": [], "transformers": [] } + { "elementType": "textarea", "elementOptions": [], "transformers": [] } ] }, "default_value": "", @@ -258,7 +258,7 @@ "type": { "dataType": "string", "elements": [ - { "elementType": "input", "elementOptions": [], "transformers": [] } + { "elementType": "textarea", "elementOptions": [], "transformers": [] } ] }, "default_value": "", @@ -282,7 +282,7 @@ "type": { "dataType": "string", "elements": [ - { "elementType": "input", "elementOptions": [], "transformers": [] } + { "elementType": "textarea", "elementOptions": [], "transformers": [] } ] }, "default_value": "", @@ -306,7 +306,7 @@ "type": { "dataType": "string", "elements": [ - { "elementType": "input", "elementOptions": [], "transformers": [] } + { "elementType": "textarea", "elementOptions": [], "transformers": [] } ] }, "default_value": "", diff --git a/front/settings.php b/front/settings.php index d8d971ab..f3f83f89 100755 --- a/front/settings.php +++ b/front/settings.php @@ -439,7 +439,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX // constructing final HTML for the setting setHtml = "" - if(set["setGroup"] == prefix) + if(set["setGroup"] == prefix ) { // hide metadata by default by assigning it a special class isMetadata ? metadataClass = 'metadata' : metadataClass = ''; diff --git a/server/models/device_instance.py b/server/models/device_instance.py index 83777d3c..cc772352 100755 --- a/server/models/device_instance.py +++ b/server/models/device_instance.py @@ -446,7 +446,7 @@ class DeviceInstance: # Join all sub-selects with commas query = "SELECT\n " + ",\n ".join(sub_queries) - mylog('none', [f'[getNamedTotals] query {query}']) + mylog('trace', [f'[getNamedTotals] query {query}']) json_obj = get_table_json(sql, query, parameters=None) return json_obj