BE+FE: NOTI TEXT template -> textarea

This commit is contained in:
jokob-sk
2026-07-25 09:58:15 +10:00
parent 2396bb610a
commit 02987fa558
5 changed files with 57 additions and 24 deletions

View File

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

View File

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

View File

@@ -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": "",

View File

@@ -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 = '';

View File

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