diff --git a/.vs/launch.vs.json b/.vs/launch.vs.json index 37627ab1..895d6f98 100644 --- a/.vs/launch.vs.json +++ b/.vs/launch.vs.json @@ -9,7 +9,8 @@ "name": "Run hyperion with debug option and external console", "args": [ "-d", - "-c" + "-c", + "-u test" ], "externalConsole": true } diff --git a/assets/webconfig/js/20210820_LoadInstanceConfig.zip b/assets/webconfig/js/20210820_LoadInstanceConfig.zip new file mode 100644 index 00000000..e77752d0 Binary files /dev/null and b/assets/webconfig/js/20210820_LoadInstanceConfig.zip differ diff --git a/assets/webconfig/js/content_index.js b/assets/webconfig/js/content_index.js index 26fd19d9..728c3f55 100755 --- a/assets/webconfig/js/content_index.js +++ b/assets/webconfig/js/content_index.js @@ -1,5 +1,3 @@ -var instNameInit = false - $(document).ready(function () { var darkModeOverwrite = getStorage("darkModeOverwrite", true); @@ -27,8 +25,6 @@ $(document).ready(function () { // comps window.comps = event.response.info.components - $(window.hyperion).trigger("ready"); - window.comps.forEach(function (obj) { if (obj.name == "ALL") { if (obj.enabled) @@ -44,12 +40,6 @@ $(document).ready(function () { $('#btn_hypinstanceswitch').toggle(true) else $('#btn_hypinstanceswitch').toggle(false) - // update listing at button - updateHyperionInstanceListing() - if (!instNameInit) { - window.currentHyperionInstanceName = getInstanceNameByIndex(0); - instNameInit = true; - } updateSessions(); }); // end cmd-serverinfo @@ -112,11 +102,9 @@ $(document).ready(function () { $(window.hyperion).one("cmd-authorize-getTokenList", function (event) { tokenList = event.response.info; - requestServerInfo(); }); $(window.hyperion).on("cmd-sysinfo", function (event) { - requestServerInfo(); window.sysInfo = event.response.info; window.currentVersion = window.sysInfo.hyperion.version; @@ -126,16 +114,22 @@ $(document).ready(function () { $(window.hyperion).one("cmd-config-getschema", function (event) { window.serverSchema = event.response.info; - requestServerConfig(); + window.schema = window.serverSchema.properties; + requestTokenInfo(); requestGetPendingTokenRequests(); - window.schema = window.serverSchema.properties; + //Switch to last selected instance and load related config + var lastSelectedInstance = getStorage('lastSelectedInstance', false); + if (!window.serverInfo.instance[lastSelectedInstance]) { + lastSelectedInstance = 0; + } + instanceSwitch(lastSelectedInstance); + }); $(window.hyperion).on("cmd-config-getconfig", function (event) { window.serverConfig = event.response.info; - requestSysInfo(); window.showOptHelp = window.serverConfig.general.showOptHelp; }); @@ -163,6 +157,8 @@ $(document).ready(function () { if (event.response.hasOwnProperty('info')) setStorage("loginToken", event.response.info.token, true); + requestSysInfo(); + requestServerInfo(); requestServerConfigSchema(); }); diff --git a/assets/webconfig/js/content_leds.js b/assets/webconfig/js/content_leds.js index a99b68af..678e9e72 100755 --- a/assets/webconfig/js/content_leds.js +++ b/assets/webconfig/js/content_leds.js @@ -383,22 +383,24 @@ function blackListLeds(nonBlacklistLedArray, blackList) { } function getLedConfig() { - var ledConfig = { classic: {}, matrix: {} }; - var slConfig = window.serverConfig.ledConfig; - for (var key in slConfig.classic) { - if (typeof (slConfig.classic[key]) === "boolean") + var ledConfig = { classic: {}, matrix: {} }; + + var classicSchema = window.serverSchema.properties.ledConfig.properties.classic.properties; + for (var key in classicSchema) { + if (classicSchema[key].type === "boolean") ledConfig.classic[key] = $('#ip_cl_' + key).is(':checked'); - else if (Number.isInteger(slConfig.classic[key])) + else if (classicSchema[key].type === "integer") ledConfig.classic[key] = parseInt($('#ip_cl_' + key).val()); else ledConfig.classic[key] = $('#ip_cl_' + key).val(); } - for (var key in slConfig.matrix) { - if (typeof (slConfig.matrix[key]) === "boolean") + var matrixSchema = window.serverSchema.properties.ledConfig.properties.matrix.properties; + for (var key in matrixSchema) { + if (matrixSchema[key].type === "boolean") ledConfig.matrix[key] = $('#ip_ma_' + key).is(':checked'); - else if (Number.isInteger(slConfig.matrix[key])) + else if (matrixSchema[key].type === "integer") ledConfig.matrix[key] = parseInt($('#ip_ma_' + key).val()); else ledConfig.matrix[key] = $('#ip_ma_' + key).val(); @@ -876,6 +878,8 @@ $(document).ready(function () { break; case 'NONE': conf_editor.getEditor(specOptPath + "host").enable(); + //Trigger getProperties via host value + conf_editor.notifyWatchers(specOptPath + "host"); break; case 'SELECT': conf_editor.getEditor(specOptPath + "host").setValue(""); @@ -884,9 +888,8 @@ $(document).ready(function () { break; default: conf_editor.getEditor(specOptPath + "host").disable(); - //Reset host value, to trigger getProperties via host value - conf_editor.getEditor(specOptPath + "host").setValue(""); - conf_editor.getEditor(specOptPath + "host").setValue(val); + //Trigger getProperties via host value + conf_editor.notifyWatchers(specOptPath + "host"); break; } @@ -1510,10 +1513,10 @@ async function getProperties_device(ledType, key, params) { if (!devicesProperties[ledType][key]) { const res = await requestLedDeviceProperties(ledType, params); if (res && !res.error) { - var deviceProperties = res.info.properties; + var ledDeviceProperties = res.info.properties; - if (!jQuery.isEmptyObject(deviceProperties)) { - devicesProperties[ledType][key] = deviceProperties; + if (!jQuery.isEmptyObject(ledDeviceProperties)) { + devicesProperties[ledType][key] = ledDeviceProperties; if (!window.readOnlyMode) { $('#btn_submit_controller').attr('disabled', false); diff --git a/assets/webconfig/js/ui_utils.js b/assets/webconfig/js/ui_utils.js index 76a0d160..c1542af4 100644 --- a/assets/webconfig/js/ui_utils.js +++ b/assets/webconfig/js/ui_utils.js @@ -88,7 +88,7 @@ function loadContent(event, forceRefresh) { var tag; var lastSelectedInstance = getStorage('lastSelectedInstance', false); - + if (lastSelectedInstance && (lastSelectedInstance != window.currentHyperionInstance)) { if (window.serverInfo.instance[lastSelectedInstance] && window.serverInfo.instance[lastSelectedInstance].running) { instanceSwitch(lastSelectedInstance); @@ -128,12 +128,13 @@ function getInstanceNameByIndex(index) { } function updateHyperionInstanceListing() { - var data = window.serverInfo.instance.filter(entry => entry.running); - $('#hyp_inst_listing').html(""); - for (var key in data) { - var currInstMarker = (data[key].instance == window.currentHyperionInstance) ? "component-on" : ""; + if (window.serverInfo.instance) { + var data = window.serverInfo.instance.filter(entry => entry.running); + $('#hyp_inst_listing').html(""); + for (var key in data) { + var currInstMarker = (data[key].instance == window.currentHyperionInstance) ? "component-on" : ""; - var html = '
  • \ + var html = '
  • \ \
    \ \ @@ -142,15 +143,16 @@ function updateHyperionInstanceListing() { \
  • ' - if (data.length - 1 > key) - html += '
  • ' + if (data.length - 1 > key) + html += '
  • ' - $('#hyp_inst_listing').append(html); + $('#hyp_inst_listing').append(html); - $('#hyperioninstance_' + data[key].instance).off().on("click", function (e) { - var inst = e.currentTarget.id.split("_")[1] - instanceSwitch(inst) - }); + $('#hyperioninstance_' + data[key].instance).off().on("click", function (e) { + var inst = e.currentTarget.id.split("_")[1] + instanceSwitch(inst) + }); + } } } @@ -290,9 +292,9 @@ function showInfoDialog(type, header, message) { $('#id_body_rename').append('

    ' + header + '


    '); $('#id_body_rename').append('

    ' + $.i18n('infoDialog_username_text') + '


    '); - $('#id_body_rename').append('

    ' + $.i18n('infoDialog_password_current_text') + - '


    '); - $('#id_body_rename').append('

    ' + $.i18n('infoDialog_password_new_text')+ + $('#id_body_rename').append('

    ' + $.i18n('infoDialog_password_current_text') + + '


    '); + $('#id_body_rename').append('

    ' + $.i18n('infoDialog_password_new_text') + '

    '); $('#id_body_rename').append('
    ' + $.i18n('infoDialog_password_minimum_length') + '
    '); $('#id_footer_rename').html('
    '); @@ -469,6 +471,9 @@ function updateJsonEditorSelection(rootEditor, path, key, addElements, newEnumVa var editor = rootEditor.getEditor(path); var orginalProperties = editor.schema.properties[key]; + var orginalWatchFunctions = rootEditor.watchlist[path + "." + key]; + rootEditor.unwatch(path + "." + key); + var newSchema = []; newSchema[key] = { @@ -546,12 +551,22 @@ function updateJsonEditorSelection(rootEditor, path, key, addElements, newEnumVa editor.removeObjectProperty(key); delete editor.cached_editors[key]; editor.addObjectProperty(key); + + if (orginalWatchFunctions) { + for (var i = 0; i < orginalWatchFunctions.length; i++) { + rootEditor.watch(path + "." + key, orginalWatchFunctions[i]); + } + } + rootEditor.notifyWatchers(path + "." + key); } function updateJsonEditorMultiSelection(rootEditor, path, key, addElements, newEnumVals, newTitelVals, newDefaultVal) { var editor = rootEditor.getEditor(path); var orginalProperties = editor.schema.properties[key]; + var orginalWatchFunctions = rootEditor.watchlist[path + "." + key]; + rootEditor.unwatch(path + "." + key); + var newSchema = []; newSchema[key] = { @@ -605,6 +620,13 @@ function updateJsonEditorMultiSelection(rootEditor, path, key, addElements, newE editor.removeObjectProperty(key); delete editor.cached_editors[key]; editor.addObjectProperty(key); + + if (orginalWatchFunctions) { + for (var i = 0; i < orginalWatchFunctions.length; i++) { + rootEditor.watch(path + "." + key, orginalWatchFunctions[i]); + } + } + rootEditor.notifyWatchers(path + "." + key); } function updateJsonEditorRange(rootEditor, path, key, minimum, maximum, defaultValue, step, clear) { diff --git a/dependencies/external/rpi_ws281x b/dependencies/external/rpi_ws281x index 5d0041eb..3a20f1bd 160000 --- a/dependencies/external/rpi_ws281x +++ b/dependencies/external/rpi_ws281x @@ -1 +1 @@ -Subproject commit 5d0041eba608e3a52aa637122a72396d3336d91b +Subproject commit 3a20f1bdd740a144de180a07d8d3317920459d2d diff --git a/libsrc/leddevice/dev_net/LedDeviceWled.cpp b/libsrc/leddevice/dev_net/LedDeviceWled.cpp index a2139342..2e848147 100644 --- a/libsrc/leddevice/dev_net/LedDeviceWled.cpp +++ b/libsrc/leddevice/dev_net/LedDeviceWled.cpp @@ -10,7 +10,7 @@ // Constants namespace { -const bool verbose = false; +const bool verbose = true; // Configuration settings const char CONFIG_ADDRESS[] = "host";