mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-06 17:15:38 -08:00
UNIFIAPI v0.3
This commit is contained in:
2
.github/workflows/docker_rewrite.yml
vendored
2
.github/workflows/docker_rewrite.yml
vendored
@@ -11,7 +11,7 @@ on:
|
||||
- rewrite
|
||||
|
||||
jobs:
|
||||
docker_dev:
|
||||
docker_rewrite:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
permissions:
|
||||
|
||||
@@ -182,10 +182,6 @@ function showModalPopupForm(
|
||||
$(`#${prefix}-cancel`).html(btnCancel);
|
||||
$(`#${prefix}-OK`).html(btnOK);
|
||||
|
||||
if (callbackFunction != null) {
|
||||
modalCallbackFunction = callbackFunction;
|
||||
}
|
||||
|
||||
if (triggeredBy != null) {
|
||||
$('#'+prefix).attr("data-myparam-triggered-by", triggeredBy)
|
||||
}
|
||||
@@ -242,6 +238,31 @@ function showModalPopupForm(
|
||||
// $(`#${prefix}-field`).focus();
|
||||
// }, 500);
|
||||
|
||||
// Bind OK button click event
|
||||
$(`#${prefix}-OK`).off("click").on("click", function() {
|
||||
let settingsArray = [];
|
||||
if (Array.isArray(popupFormJson)) {
|
||||
popupFormJson.forEach(field => {
|
||||
collectSetting(
|
||||
`${parentSettingKey}_popupform`, // prefix
|
||||
field.function + '_in', // setCodeName + sourceSuffixes
|
||||
field.type, // setType (object)
|
||||
settingsArray
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
console.log("Collected popup form settings:", settingsArray);
|
||||
|
||||
if (typeof modalCallbackFunction === "function") {
|
||||
modalCallbackFunction(settingsArray);
|
||||
}
|
||||
|
||||
$(`#${prefix}`).modal("hide");
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Show modal
|
||||
$(`#${prefix}`).modal("show");
|
||||
}
|
||||
|
||||
@@ -993,6 +993,96 @@ function genListWithInputSet(options, valuesArray, targetField, transformers, pl
|
||||
$("#" + placeholder).replaceWith(listHtml);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// Collects a setting based on code name
|
||||
function collectSetting(prefix, setCodeName, setType, settingsArray) {
|
||||
// Parse setType if it's a JSON string
|
||||
const setTypeObject = (typeof setType === "string")
|
||||
? JSON.parse(processQuotes(setType))
|
||||
: setType;
|
||||
|
||||
const dataType = setTypeObject.dataType;
|
||||
|
||||
// Pick element with input value
|
||||
let elements = setTypeObject.elements.filter(el => el.elementHasInputValue === 1);
|
||||
let elementWithInputValue = elements.length === 0
|
||||
? setTypeObject.elements[setTypeObject.elements.length - 1]
|
||||
: elements[0];
|
||||
|
||||
const { elementType, elementOptions = [], transformers = [] } = elementWithInputValue;
|
||||
|
||||
const opts = handleElementOptions('none', elementOptions, transformers, val = "");
|
||||
|
||||
// Map of handlers
|
||||
const handlers = {
|
||||
datatableString: () => {
|
||||
const value = collectTableData(`#${setCodeName}_table`);
|
||||
return btoa(JSON.stringify(value));
|
||||
},
|
||||
simpleValue: () => {
|
||||
let value = $(`#${setCodeName}`).val();
|
||||
return applyTransformers(value, transformers);
|
||||
},
|
||||
checkbox: () => {
|
||||
let value = $(`#${setCodeName}`).is(':checked') ? 1 : 0;
|
||||
if (dataType === "boolean") {
|
||||
value = value === 1 ? "True" : "False";
|
||||
}
|
||||
return applyTransformers(value, transformers);
|
||||
},
|
||||
array: () => {
|
||||
let temps = [];
|
||||
if (opts.isOrdeable) {
|
||||
temps = $(`#${setCodeName}`).val();
|
||||
} else {
|
||||
const sel = $(`#${setCodeName}`).attr("my-editable") === "true" ? "" : ":selected";
|
||||
$(`#${setCodeName} option${sel}`).each(function() {
|
||||
const vl = $(this).val();
|
||||
if (vl !== '') {
|
||||
temps.push(applyTransformers(vl, transformers));
|
||||
}
|
||||
});
|
||||
}
|
||||
return JSON.stringify(temps);
|
||||
},
|
||||
none: () => "",
|
||||
json: () => {
|
||||
let value = $(`#${setCodeName}`).val();
|
||||
value = applyTransformers(value, transformers);
|
||||
return JSON.stringify(value, null, 2);
|
||||
},
|
||||
fallback: () => {
|
||||
console.error(`[collectSetting] Couldn't determine how to handle (${setCodeName}|${dataType}|${opts.inputType})`);
|
||||
let value = $(`#${setCodeName}`).val();
|
||||
return applyTransformers(value, transformers);
|
||||
}
|
||||
};
|
||||
|
||||
// Select handler key
|
||||
let handlerKey;
|
||||
if (dataType === "string" && elementType === "datatable") {
|
||||
handlerKey = "datatableString";
|
||||
} else if (dataType === "string" ||
|
||||
(dataType === "integer" && (opts.inputType === "number" || opts.inputType === "text"))) {
|
||||
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";
|
||||
}
|
||||
|
||||
const value = handlers[handlerKey]();
|
||||
settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
|
||||
return settingsArray;
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Generate the form control for setting
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
|
||||
<div class="modal-footer">
|
||||
<button id="modal-form-cancel" type="button" class="btn btn-outline pull-left" style="min-width: 80px;" data-dismiss="modal"> Cancel </button>
|
||||
<button id="modal-form-OK" type="button" class="btn btn-outline btn-modal-submit" style="min-width: 80px;" onclick="modalDefaultForm()"> OK </button>
|
||||
<button id="modal-form-OK" type="button" class="btn btn-outline btn-modal-submit" style="min-width: 80px;" > OK </button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -553,7 +553,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
||||
}, 1500);
|
||||
|
||||
} else {
|
||||
var settingsArray = [];
|
||||
let settingsArray = [];
|
||||
|
||||
// collect values for each of the different input form controls
|
||||
// get settings to determine setting type to store values appropriately
|
||||
@@ -565,121 +565,123 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
||||
setType = set["setType"]
|
||||
setCodeName = set["setKey"]
|
||||
|
||||
// console.log(prefix);
|
||||
settingsArray = collectSetting(prefix, setCodeName, setType, settingsArray)
|
||||
|
||||
const setTypeObject = JSON.parse(processQuotes(setType))
|
||||
// console.log(setTypeObject);
|
||||
// // console.log(prefix);
|
||||
|
||||
const dataType = setTypeObject.dataType;
|
||||
// const setTypeObject = JSON.parse(processQuotes(setType))
|
||||
// // console.log(setTypeObject);
|
||||
|
||||
// get the element with the input value(s)
|
||||
let elements = setTypeObject.elements.filter(element => element.elementHasInputValue === 1);
|
||||
// const dataType = setTypeObject.dataType;
|
||||
|
||||
// if none found, take last
|
||||
if(elements.length == 0)
|
||||
{
|
||||
elementWithInputValue = setTypeObject.elements[setTypeObject.elements.length - 1]
|
||||
} else
|
||||
{
|
||||
elementWithInputValue = elements[0]
|
||||
}
|
||||
// // get the element with the input value(s)
|
||||
// let elements = setTypeObject.elements.filter(element => element.elementHasInputValue === 1);
|
||||
|
||||
const { elementType, elementOptions = [], transformers = [] } = elementWithInputValue;
|
||||
const {
|
||||
inputType,
|
||||
readOnly,
|
||||
isMultiSelect,
|
||||
isOrdeable,
|
||||
cssClasses,
|
||||
placeholder,
|
||||
suffix,
|
||||
sourceIds,
|
||||
separator,
|
||||
editable,
|
||||
valRes,
|
||||
getStringKey,
|
||||
onClick,
|
||||
onChange,
|
||||
customParams,
|
||||
customId,
|
||||
columns,
|
||||
base64Regex,
|
||||
elementOptionsBase64
|
||||
} = handleElementOptions('none', elementOptions, transformers, val = "");
|
||||
// // if none found, take last
|
||||
// if(elements.length == 0)
|
||||
// {
|
||||
// elementWithInputValue = setTypeObject.elements[setTypeObject.elements.length - 1]
|
||||
// } else
|
||||
// {
|
||||
// elementWithInputValue = elements[0]
|
||||
// }
|
||||
|
||||
let value;
|
||||
// const { elementType, elementOptions = [], transformers = [] } = elementWithInputValue;
|
||||
// const {
|
||||
// inputType,
|
||||
// readOnly,
|
||||
// isMultiSelect,
|
||||
// isOrdeable,
|
||||
// cssClasses,
|
||||
// placeholder,
|
||||
// suffix,
|
||||
// sourceIds,
|
||||
// separator,
|
||||
// editable,
|
||||
// valRes,
|
||||
// getStringKey,
|
||||
// onClick,
|
||||
// onChange,
|
||||
// customParams,
|
||||
// customId,
|
||||
// columns,
|
||||
// base64Regex,
|
||||
// elementOptionsBase64
|
||||
// } = handleElementOptions('none', elementOptions, transformers, val = "");
|
||||
|
||||
if (dataType === "string" && elementWithInputValue.elementType === "datatable" ) {
|
||||
// let value;
|
||||
|
||||
value = collectTableData(`#${setCodeName}_table`)
|
||||
settingsArray.push([prefix, setCodeName, dataType, btoa(JSON.stringify(value))]);
|
||||
// if (dataType === "string" && elementWithInputValue.elementType === "datatable" ) {
|
||||
|
||||
} else if (dataType === "string" ||
|
||||
(dataType === "integer" && (inputType === "number" || inputType === "text"))) {
|
||||
// value = collectTableData(`#${setCodeName}_table`)
|
||||
// settingsArray.push([prefix, setCodeName, dataType, btoa(JSON.stringify(value))]);
|
||||
|
||||
// } else if (dataType === "string" ||
|
||||
// (dataType === "integer" && (inputType === "number" || inputType === "text"))) {
|
||||
|
||||
value = $('#' + setCodeName).val();
|
||||
value = applyTransformers(value, transformers);
|
||||
// value = $('#' + setCodeName).val();
|
||||
// value = applyTransformers(value, transformers);
|
||||
|
||||
settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
// settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
|
||||
} else if (inputType === 'checkbox') {
|
||||
// } else if (inputType === 'checkbox') {
|
||||
|
||||
value = $(`#${setCodeName}`).is(':checked') ? 1 : 0;
|
||||
// value = $(`#${setCodeName}`).is(':checked') ? 1 : 0;
|
||||
|
||||
if(dataType === "boolean")
|
||||
{
|
||||
value = value == 1 ? "True" : "False";
|
||||
}
|
||||
// if(dataType === "boolean")
|
||||
// {
|
||||
// value = value == 1 ? "True" : "False";
|
||||
// }
|
||||
|
||||
value = applyTransformers(value, transformers);
|
||||
settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
// value = applyTransformers(value, transformers);
|
||||
// settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
|
||||
} else if (dataType === "array" ) {
|
||||
// } else if (dataType === "array" ) {
|
||||
|
||||
let temps = [];
|
||||
// let temps = [];
|
||||
|
||||
if(isOrdeable)
|
||||
{
|
||||
temps = $(`#${setCodeName}`).val()
|
||||
} else
|
||||
{
|
||||
// make sure to collect all if set as "editable" or selected only otherwise
|
||||
$(`#${setCodeName}`).attr("my-editable") == "true" ? additionalSelector = "" : additionalSelector = ":selected";
|
||||
// if(isOrdeable)
|
||||
// {
|
||||
// temps = $(`#${setCodeName}`).val()
|
||||
// } else
|
||||
// {
|
||||
// // make sure to collect all if set as "editable" or selected only otherwise
|
||||
// $(`#${setCodeName}`).attr("my-editable") == "true" ? additionalSelector = "" : additionalSelector = ":selected";
|
||||
|
||||
$(`#${setCodeName} option${additionalSelector}`).each(function() {
|
||||
const vl = $(this).val();
|
||||
if (vl !== '') {
|
||||
temps.push(applyTransformers(vl, transformers));
|
||||
}
|
||||
});
|
||||
}
|
||||
// $(`#${setCodeName} option${additionalSelector}`).each(function() {
|
||||
// const vl = $(this).val();
|
||||
// if (vl !== '') {
|
||||
// temps.push(applyTransformers(vl, transformers));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
value = JSON.stringify(temps);
|
||||
// value = JSON.stringify(temps);
|
||||
|
||||
settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
// settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
|
||||
|
||||
} else if (dataType === "none") {
|
||||
// no value to save
|
||||
value = ""
|
||||
settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
// } else if (dataType === "none") {
|
||||
// // no value to save
|
||||
// value = ""
|
||||
// settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
|
||||
} else if (dataType === "json") {
|
||||
// } else if (dataType === "json") {
|
||||
|
||||
value = $('#' + setCodeName).val();
|
||||
value = applyTransformers(value, transformers);
|
||||
value = JSON.stringify(value, null, 2)
|
||||
settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
// value = $('#' + setCodeName).val();
|
||||
// value = applyTransformers(value, transformers);
|
||||
// value = JSON.stringify(value, null, 2)
|
||||
// settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
|
||||
} else {
|
||||
// } else {
|
||||
|
||||
console.error(`[saveSettings] Couldn't determine how to handle (setCodeName|dataType|inputType):(${setCodeName}|${dataType}|${inputType})`);
|
||||
// console.error(`[saveSettings] Couldn't determine how to handle (setCodeName|dataType|inputType):(${setCodeName}|${dataType}|${inputType})`);
|
||||
|
||||
value = $('#' + setCodeName).val();
|
||||
value = applyTransformers(value, transformers);
|
||||
console.error(`[saveSettings] Saving value "${value}"`);
|
||||
settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
}
|
||||
// value = $('#' + setCodeName).val();
|
||||
// value = applyTransformers(value, transformers);
|
||||
// console.error(`[saveSettings] Saving value "${value}"`);
|
||||
// settingsArray.push([prefix, setCodeName, dataType, value]);
|
||||
// }
|
||||
});
|
||||
|
||||
// sanity check to make sure settings were loaded & collected correctly
|
||||
|
||||
Reference in New Issue
Block a user