iobroker.eos-admin 7.9.75 → 7.9.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v54.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v55.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v56.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v57.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v58.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v59.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v60.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v61.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v62.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v63.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v64.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v65.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v66.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v67.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v68.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v69.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v70.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v71.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v72.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v73.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v74.js +1 -1
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v75.js +1 -2
- package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v76.js +2 -0
- package/adminWww/assets/Adapters-B5_jQ7DE-v54.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v55.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v56.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v57.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v58.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v59.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v60.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v61.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v62.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v63.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v64.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v65.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v66.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v67.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v68.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v69.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v70.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v71.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v72.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v73.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v74.js +1 -1
- package/adminWww/assets/Adapters-B5_jQ7DE-v75.js +1 -9
- package/adminWww/assets/Adapters-B5_jQ7DE-v76.js +9 -0
- package/adminWww/assets/Config-hHK2UzGP-v54.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v55.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v56.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v57.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v58.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v59.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v60.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v61.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v62.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v63.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v64.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v65.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v66.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v67.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v68.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v69.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v70.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v71.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v72.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v73.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v74.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v75.js +1 -1
- package/adminWww/assets/Config-hHK2UzGP-v76.js +1 -0
- package/adminWww/assets/CustomTab-B0wqoazH-v54.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v55.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v56.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v57.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v58.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v59.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v60.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v61.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v62.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v63.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v64.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v65.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v66.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v67.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v68.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v69.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v70.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v71.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v72.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v73.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v74.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v75.js +1 -1
- package/adminWww/assets/CustomTab-B0wqoazH-v76.js +1 -0
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v54.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v55.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v56.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v57.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v58.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v59.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v60.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v61.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v62.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v63.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v64.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v65.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v66.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v67.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v68.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v69.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v70.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v71.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v72.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v73.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v74.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v75.js +1 -1
- package/adminWww/assets/DeviceManager-BFmQeYQ1-v76.js +1 -0
- package/adminWww/assets/EasyMode-B1d9Vdc4-v54.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v55.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v56.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v57.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v58.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v59.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v60.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v61.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v62.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v63.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v64.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v65.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v66.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v67.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v68.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v69.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v70.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v71.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v72.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v73.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v74.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v75.js +1 -1
- package/adminWww/assets/EasyMode-B1d9Vdc4-v76.js +1 -0
- package/adminWww/assets/Enums-DbWYxKOo-v54.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v55.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v56.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v57.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v58.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v59.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v60.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v61.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v62.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v63.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v64.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v65.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v66.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v67.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v68.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v69.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v70.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v71.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v72.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v73.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v74.js +1 -1
- package/adminWww/assets/Enums-DbWYxKOo-v75.js +1 -91
- package/adminWww/assets/Enums-DbWYxKOo-v76.js +91 -0
- package/adminWww/assets/Fields-CX3rKuWb-v54.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v55.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v56.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v57.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v58.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v59.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v60.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v61.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v62.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v63.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v64.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v65.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v66.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v67.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v68.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v69.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v70.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v71.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v72.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v73.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v74.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v75.js +1 -1
- package/adminWww/assets/Fields-CX3rKuWb-v76.js +1 -0
- package/adminWww/assets/Files-Cd2HOzIE-v54.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v55.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v56.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v57.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v58.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v59.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v60.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v61.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v62.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v63.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v64.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v65.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v66.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v67.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v68.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v69.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v70.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v71.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v72.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v73.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v74.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v75.js +1 -1
- package/adminWww/assets/Files-Cd2HOzIE-v76.js +1 -0
- package/adminWww/assets/Hosts-Bg8QzW5i-v54.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v55.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v56.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v57.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v58.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v59.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v60.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v61.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v62.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v63.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v64.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v65.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v66.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v67.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v68.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v69.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v70.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v71.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v72.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v73.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v74.js +1 -1
- package/adminWww/assets/Hosts-Bg8QzW5i-v75.js +1 -121
- package/adminWww/assets/Hosts-Bg8QzW5i-v76.js +121 -0
- package/adminWww/assets/Instances-YdaGnS5a-v54.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v55.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v56.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v57.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v58.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v59.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v60.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v61.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v62.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v63.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v64.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v65.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v66.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v67.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v68.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v69.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v70.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v71.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v72.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v73.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v74.js +1 -1
- package/adminWww/assets/Instances-YdaGnS5a-v75.js +1 -2
- package/adminWww/assets/Instances-YdaGnS5a-v76.js +2 -0
- package/adminWww/assets/Intro-DkwRiz1n-v54.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v55.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v56.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v57.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v58.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v59.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v60.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v61.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v62.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v63.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v64.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v65.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v66.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v67.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v68.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v69.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v70.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v71.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v72.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v73.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v74.js +1 -1
- package/adminWww/assets/Intro-DkwRiz1n-v75.js +1 -2
- package/adminWww/assets/Intro-DkwRiz1n-v76.js +2 -0
- package/adminWww/assets/Logs-CsVPSLJH-v54.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v55.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v56.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v57.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v58.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v59.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v60.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v61.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v62.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v63.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v64.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v65.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v66.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v67.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v68.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v69.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v70.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v71.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v72.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v73.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v74.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v75.js +1 -1
- package/adminWww/assets/Logs-CsVPSLJH-v76.js +1 -0
- package/adminWww/assets/Objects-DPan0bzw-v54.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v55.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v56.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v57.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v58.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v59.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v60.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v61.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v62.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v63.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v64.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v65.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v66.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v67.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v68.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v69.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v70.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v71.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v72.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v73.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v74.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw-v75.js +1 -878
- package/adminWww/assets/Objects-DPan0bzw-v76.js +878 -0
- package/adminWww/assets/Users-BgnBRgwU-v54.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v55.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v56.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v57.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v58.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v59.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v60.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v61.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v62.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v63.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v64.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v65.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v66.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v67.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v68.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v69.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v70.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v71.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v72.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v73.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v74.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v75.js +1 -1
- package/adminWww/assets/Users-BgnBRgwU-v76.js +1 -0
- package/adminWww/assets/bootstrap-COulQZax-v54.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v55.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v56.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v57.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v58.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v59.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v60.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v61.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v62.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v63.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v64.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v65.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v66.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v67.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v68.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v69.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v70.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v71.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v72.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v73.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v74.js +1 -1
- package/adminWww/assets/bootstrap-COulQZax-v75.js +1 -317
- package/adminWww/assets/bootstrap-COulQZax-v76.js +317 -0
- package/adminWww/assets/hostInit-v54.js +1 -1
- package/adminWww/assets/hostInit-v55.js +1 -1
- package/adminWww/assets/hostInit-v56.js +1 -1
- package/adminWww/assets/hostInit-v57.js +1 -1
- package/adminWww/assets/hostInit-v58.js +1 -1
- package/adminWww/assets/hostInit-v59.js +1 -1
- package/adminWww/assets/hostInit-v60.js +1 -1
- package/adminWww/assets/hostInit-v61.js +1 -1
- package/adminWww/assets/hostInit-v62.js +1 -1
- package/adminWww/assets/hostInit-v63.js +1 -1
- package/adminWww/assets/hostInit-v64.js +1 -1
- package/adminWww/assets/hostInit-v65.js +1 -1
- package/adminWww/assets/hostInit-v66.js +1 -1
- package/adminWww/assets/hostInit-v67.js +1 -1
- package/adminWww/assets/hostInit-v68.js +1 -1
- package/adminWww/assets/hostInit-v69.js +1 -1
- package/adminWww/assets/hostInit-v70.js +1 -1
- package/adminWww/assets/hostInit-v71.js +1 -1
- package/adminWww/assets/hostInit-v72.js +1 -1
- package/adminWww/assets/hostInit-v73.js +1 -1
- package/adminWww/assets/hostInit-v74.js +1 -1
- package/adminWww/assets/hostInit-v75.js +1 -2
- package/adminWww/assets/hostInit-v76.js +2 -0
- package/adminWww/assets/index-CQZugZ1z-v54.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v55.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v56.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v57.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v58.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v59.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v60.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v61.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v62.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v63.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v64.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v65.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v66.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v67.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v68.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v69.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v70.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v71.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v72.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v73.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v74.js +1 -1
- package/adminWww/assets/index-CQZugZ1z-v75.js +1 -2
- package/adminWww/assets/index-CQZugZ1z-v76.js +2 -0
- package/adminWww/assets/index-D2ymscJA-v54.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v55.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v56.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v57.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v58.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v59.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v60.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v61.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v62.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v63.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v64.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v65.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v66.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v67.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v68.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v69.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v70.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v71.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v72.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v73.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v74.js +1 -1
- package/adminWww/assets/index-D2ymscJA-v75.js +1 -950
- package/adminWww/assets/index-D2ymscJA-v76.js +950 -0
- package/adminWww/assets/sentry-B7YeoTAx-v71.js +1 -1
- package/adminWww/assets/sentry-B7YeoTAx-v72.js +1 -1
- package/adminWww/assets/sentry-B7YeoTAx-v73.js +1 -1
- package/adminWww/assets/sentry-B7YeoTAx-v74.js +1 -1
- package/adminWww/assets/sentry-B7YeoTAx-v75.js +1 -1
- package/adminWww/assets/sentry-B7YeoTAx-v76.js +1 -0
- package/adminWww/css/eos-branding.css +32 -1
- package/adminWww/index.html +11 -11
- package/adminWww/js/eos-branding.js +1 -1
- package/adminWww/js/eos-console-quiet.js +1 -1
- package/adminWww/js/eos-manual-write-policy.js +284 -28
- package/adminWww/js/eos-objects-state-tools.js +1 -1
- package/adminWww/js/eos-policy-client.js +1 -1
- package/adminWww/js/eos-role-ui.js +1 -1
- package/adminWww/js/eos-security-ui.js +1 -1
- package/adminWww/mf-manifest.json +1 -1
- package/adminWww/remoteEntry-v54.js +1 -1
- package/adminWww/remoteEntry-v55.js +1 -1
- package/adminWww/remoteEntry-v56.js +1 -1
- package/adminWww/remoteEntry-v57.js +1 -1
- package/adminWww/remoteEntry-v58.js +1 -1
- package/adminWww/remoteEntry-v59.js +1 -1
- package/adminWww/remoteEntry-v60.js +1 -1
- package/adminWww/remoteEntry-v61.js +1 -1
- package/adminWww/remoteEntry-v62.js +1 -1
- package/adminWww/remoteEntry-v63.js +1 -1
- package/adminWww/remoteEntry-v64.js +1 -1
- package/adminWww/remoteEntry-v65.js +1 -1
- package/adminWww/remoteEntry-v66.js +1 -1
- package/adminWww/remoteEntry-v67.js +1 -1
- package/adminWww/remoteEntry-v68.js +1 -1
- package/adminWww/remoteEntry-v69.js +1 -1
- package/adminWww/remoteEntry-v70.js +1 -1
- package/adminWww/remoteEntry-v71.js +1 -1
- package/adminWww/remoteEntry-v72.js +1 -1
- package/adminWww/remoteEntry-v73.js +1 -1
- package/adminWww/remoteEntry-v74.js +1 -1
- package/adminWww/remoteEntry-v75.js +1 -2
- package/adminWww/remoteEntry-v76.js +2 -0
- package/docs/MANUAL_DATAPOINT_WRITE_POLICY.md +16 -13
- package/io-package.json +6 -6
- package/package.json +2 -2
- package/tools/nexowatt-validate-package.cjs +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./sentry-B7YeoTAx-
|
|
1
|
+
export * from "./sentry-B7YeoTAx-v76.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./sentry-B7YeoTAx-
|
|
1
|
+
export * from "./sentry-B7YeoTAx-v76.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./sentry-B7YeoTAx-
|
|
1
|
+
export * from "./sentry-B7YeoTAx-v76.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./sentry-B7YeoTAx-
|
|
1
|
+
export * from "./sentry-B7YeoTAx-v76.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export * from "./sentry-B7YeoTAx-v76.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s}from"./DefaultPropsProvider-BiXBMQYQ.js";import{i as f}from"./iobroker_admin__loadShare__react__loadShare__-LM7uyL45.js";import{a as t,i as h}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-CJO5yP3h.js";const p={},b={All:t.AllInclusive,messaging:t.Message,communication:t.WifiTethering,general:t.Apps,logic:t.VpnKey,alarm:t.NotificationsActive,"iot-systems":t.SystemUpdateAlt,"misc-data":t.EmojiSymbols,multimedia:t.PermMedia,network:t.SettingsEthernet,storage:t.Storage,visualization:t.Visibility,"climate-control":t.SettingsBrightness,"date-and-time":t.DateRange,energy:t.BatteryChargingFull,garden:t.FilterVintage,geoposition:t.LocationOn,hardware:t.Phonelink,health:t.Favorite,household:t.House,infrastructure:t.Apartment,lighting:t.EmojiObjects,protocols:t.DialerSip,utility:t.PhonelinkSetup,vehicle:t.AirportShuttle,"visualization-icons":t.BubbleChart,"visualization-widgets":t.Widgets,weather:t.Brightness6,metering:t.LinearScale};function x({iconName:d,className:a,adapter:n,socket:e,onClick:r,style:m}){const[_,g]=f.useState("");if(f.useEffect(()=>{n&&e&&(p[n]instanceof Promise||(p[n]=e.getObject(`system.adapter.${n}`)),p[n].then(o=>{var c;return((c=o==null?void 0:o.common)==null?void 0:c.icon)&&g(`../../adapter/${n}/${o.common.icon}`)}))},[n,e]),n)return s.jsx("img",{onClick:o=>r&&r(o),src:_||"",className:a,style:m,alt:""});const l=b[d]||t.Help;return s.jsx(l,{className:a,style:m,onClick:o=>r&&r(o)})}const y={button:{marginLeft:10,marginRight:10},icon:{marginRight:5}};function E({arrayItem:d,title:a,onClick:n,value:e,contained:r,buttonIcon:m,icons:_,t:g,translateSuffix:l,noTranslation:o}){const[c,u]=f.useState(null);return l=l||"",s.jsxs(s.Fragment,{children:[s.jsx(h.Tooltip,{title:a||"",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:s.jsxs(h.Button,{style:y.button,variant:r?"contained":"outlined",color:"primary",onClick:i=>u(i.currentTarget),children:[m||_&&s.jsx(x,{iconName:e,style:y.icon}),typeof e=="number"||o?e:g(e+l)]})}),s.jsx(h.Menu,{anchorEl:c,open:!!c,disableScrollLock:!0,marginThreshold:8,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},slotProps:{root:{className:"eos-module-filter-menu"},paper:{className:"eos-module-filter-menu-paper",sx:{minWidth:180,maxWidth:"min(420px, calc(100vw - 24px))",maxHeight:"min(70vh, 640px)",overflowY:"auto"}}},onClose:()=>u(null),children:d.map(({name:i},S)=>s.jsxs(h.MenuItem,{selected:e||e===0?i===e:S===0,disabled:e||e===0?i===e:S===0,className:`tag-card-${i}`,style:{placeContent:"space-between"},value:i,onClick:()=>{n(i),u(null)},children:[_&&s.jsx(x,{iconName:i,style:y.icon}),typeof i=="number"||o?i:g(i+l)]},i))})]})}const A="data:image/svg+xml,%3csvg%20viewBox='0%200%20256%20230'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M251.22%20187.856c5.785%2010.045%206.345%2020.608%201.538%2028.958-4.8%208.357-14.192%2013.143-25.768%2013.143h-21.816c.259-4.068.431-8.17.431-12.302%200-4.628-.215-9.198-.531-13.754l14.35-.014c3.528%200%206.38-2.867%206.38-6.403a6.46%206.46%200%200%200-.768-3.053l-91.46-158.97a6.349%206.349%200%200%200-5.54-3.24%206.374%206.374%200%200%200-5.461%203.09l-14.522%2025.243c44.134%2033.27%2073.804%2084.813%2077.864%20143.333.316%204.548.531%209.119.531%2013.753%200%204.132-.172%208.228-.424%2012.302h-71.246c.388-4.053.611-8.148.611-12.302%200-4.649-.273-9.233-.776-13.753-3.52-32.206-19.286-60.748-42.503-80.89l-10.003%2017.376c17.54%2016.325%2029.512%2038.558%2032.767%2063.514.59%204.505.92%209.09.92%2013.753%200%204.154-.273%208.264-.74%2012.302H29.01c-11.576%200-20.968-4.793-25.768-13.15-4.807-8.35-4.247-18.905%201.538-28.958l13.56-23.238a79.42%2079.42%200%200%201%2020.715%2016.052l-8.083%2013.768a6.523%206.523%200%200%200-.77%203.054%206.383%206.383%200%200%200%206.382%206.395l32.033.015c-2.687-15.356-9.772-29.21-19.918-40.183-5.979-6.445-12.963-11.9-20.738-16.074l35.77-62.15a151.427%20151.427%200%200%201%2021.564%2014.624c30.827%2025.013%2051.644%2061.955%2055.416%20103.776h19.172c-3.91-48.892-28.477-92.006-64.937-120.548a171.205%20171.205%200%200%200-21.672-14.457l30.532-53.045C109.583%205.77%20118.42%200%20128.036%200c9.607%200%2018.438%205.77%2024.223%2015.823l98.961%20172.033z'%20fill='%23FB2D26'/%3e%3c/svg%3e";export{E as C,x as M,A as s};
|
|
@@ -3764,7 +3764,7 @@ html.eos-objects-surface [data-eos-scalar-capture="1"]:hover {
|
|
|
3764
3764
|
box-shadow: inset 0 0 0 1px rgba(0, 255, 136, .30) !important;
|
|
3765
3765
|
}
|
|
3766
3766
|
|
|
3767
|
-
/* === NexoWatt EOS v7.9.
|
|
3767
|
+
/* === NexoWatt EOS v7.9.76: universal manual state editor =========
|
|
3768
3768
|
Button/trigger and boolean switch states use the whole value cell as one
|
|
3769
3769
|
deterministic action target. Safety-relevant commands remain visible but
|
|
3770
3770
|
are locked outside expert mode. */
|
|
@@ -3811,3 +3811,34 @@ html .eos-object-value-cell[data-eos-expert-only="1"]:hover {
|
|
|
3811
3811
|
background: rgba(255, 177, 0, .11) !important;
|
|
3812
3812
|
box-shadow: inset 0 0 0 1px rgba(255, 177, 0, .25) !important;
|
|
3813
3813
|
}
|
|
3814
|
+
|
|
3815
|
+
|
|
3816
|
+
/* === NexoWatt EOS v7.9.78: value-column alignment ========================
|
|
3817
|
+
Manual controls and scalar values remain inside the native ObjectBrowser
|
|
3818
|
+
value column. The native inline column width is intentionally preserved;
|
|
3819
|
+
only the content alignment is changed. */
|
|
3820
|
+
html.eos-app.eos-objects-surface .eos-object-value-cell,
|
|
3821
|
+
html.eos-objects-surface .eos-object-value-cell {
|
|
3822
|
+
display: flex !important;
|
|
3823
|
+
align-items: center !important;
|
|
3824
|
+
justify-content: flex-end !important;
|
|
3825
|
+
text-align: right !important;
|
|
3826
|
+
box-sizing: border-box !important;
|
|
3827
|
+
min-width: 0 !important;
|
|
3828
|
+
padding-left: 8px !important;
|
|
3829
|
+
padding-right: 8px !important;
|
|
3830
|
+
}
|
|
3831
|
+
html.eos-app.eos-objects-surface .eos-object-value-cell > *,
|
|
3832
|
+
html.eos-objects-surface .eos-object-value-cell > * {
|
|
3833
|
+
margin-left: auto !important;
|
|
3834
|
+
text-align: right !important;
|
|
3835
|
+
max-width: 100% !important;
|
|
3836
|
+
}
|
|
3837
|
+
html.eos-app.eos-objects-surface .eos-object-value-cell .MuiSwitch-root,
|
|
3838
|
+
html.eos-objects-surface .eos-object-value-cell .MuiSwitch-root,
|
|
3839
|
+
html.eos-app.eos-objects-surface .eos-object-value-cell button,
|
|
3840
|
+
html.eos-objects-surface .eos-object-value-cell button,
|
|
3841
|
+
html.eos-app.eos-objects-surface .eos-object-value-cell .admin-button,
|
|
3842
|
+
html.eos-objects-surface .eos-object-value-cell .admin-button {
|
|
3843
|
+
margin-left: auto !important;
|
|
3844
|
+
}
|
package/adminWww/index.html
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
|
|
8
8
|
<meta http-equiv="Pragma" content="no-cache" />
|
|
9
9
|
<meta http-equiv="Expires" content="0" />
|
|
10
|
-
<script src="./js/eos-console-quiet.js?v=
|
|
11
|
-
<script src="./js/eos-manual-write-policy.js?v=
|
|
12
|
-
<script type="module" src="./assets/hostInit-
|
|
10
|
+
<script src="./js/eos-console-quiet.js?v=76"></script>
|
|
11
|
+
<script src="./js/eos-manual-write-policy.js?v=76"></script>
|
|
12
|
+
<script type="module" src="./assets/hostInit-v76.js?v=76"></script>
|
|
13
13
|
|
|
14
14
|
<meta charset="utf-8" />
|
|
15
15
|
<link
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
rel="stylesheet"
|
|
37
37
|
href="css/leaflet.css"
|
|
38
38
|
/>
|
|
39
|
-
<link rel="stylesheet" href="./css/eos-branding.css?v=
|
|
39
|
+
<link rel="stylesheet" href="./css/eos-branding.css?v=78" />
|
|
40
40
|
<link
|
|
41
41
|
rel="manifest"
|
|
42
42
|
href="manifest.json"
|
|
@@ -156,15 +156,15 @@
|
|
|
156
156
|
false,
|
|
157
157
|
);
|
|
158
158
|
</script>
|
|
159
|
-
<script type="module" crossorigin src="./assets/index-CQZugZ1z-
|
|
159
|
+
<script type="module" crossorigin src="./assets/index-CQZugZ1z-v76.js?v=76"></script>
|
|
160
160
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
|
|
161
161
|
<link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
|
|
162
|
-
<script defer src="./js/eos-policy-client.js?v=
|
|
163
|
-
<script defer src="./js/eos-branding.js?v=
|
|
164
|
-
<script defer src="./js/eos-security-ui.js?v=
|
|
165
|
-
<script defer src="./js/eos-role-ui.js?v=
|
|
166
|
-
<script defer src="./js/eos-assistant.js?v=
|
|
167
|
-
<script defer src="./js/eos-objects-state-tools.js?v=
|
|
162
|
+
<script defer src="./js/eos-policy-client.js?v=76"></script>
|
|
163
|
+
<script defer src="./js/eos-branding.js?v=76"></script>
|
|
164
|
+
<script defer src="./js/eos-security-ui.js?v=76"></script>
|
|
165
|
+
<script defer src="./js/eos-role-ui.js?v=76"></script>
|
|
166
|
+
<script defer src="./js/eos-assistant.js?v=76"></script>
|
|
167
|
+
<script defer src="./js/eos-objects-state-tools.js?v=76"></script>
|
|
168
168
|
</head>
|
|
169
169
|
<body>
|
|
170
170
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
|
-
window.NEXOWATT_EOS_CONSOLE_QUIET_VERSION = '
|
|
3
|
+
window.NEXOWATT_EOS_CONSOLE_QUIET_VERSION = 'v76-universal-manual-state-editor';
|
|
4
4
|
// Diagnostic output is intentionally left untouched in the stability release.
|
|
5
5
|
// Suppressing broad console prefixes hid important performance and runtime clues.
|
|
6
6
|
window.NEXOWATT_EOS_RESTORE_CONSOLE = () => undefined;
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
/* NexoWatt EOS manual datapoint write policy v7.9.
|
|
1
|
+
/* NexoWatt EOS manual datapoint write policy v7.9.76 */
|
|
2
2
|
(function (root, factory) {
|
|
3
3
|
'use strict';
|
|
4
4
|
const api = factory();
|
|
5
5
|
if (typeof module === 'object' && module.exports) module.exports = api;
|
|
6
6
|
if (!root) return;
|
|
7
7
|
|
|
8
|
-
root.NEXOWATT_EOS_MANUAL_WRITE_POLICY_VERSION = '
|
|
8
|
+
root.NEXOWATT_EOS_MANUAL_WRITE_POLICY_VERSION = 'v76-universal-manual-state-editor';
|
|
9
|
+
root.NEXOWATT_EOS_MANUAL_WRITE_POLICY = api;
|
|
9
10
|
root.NEXOWATT_EOS_GET_WRITE_BEHAVIOR = api.getWriteBehavior;
|
|
11
|
+
root.NEXOWATT_EOS_GET_DIRECT_WRITE_VALUE = api.getDirectWriteValue;
|
|
12
|
+
root.NEXOWATT_EOS_GET_EXPERT_ONLY_REASON = api.getExpertOnlyReason;
|
|
10
13
|
root.NEXOWATT_EOS_IS_EXPERT_ONLY_STATE = api.isExpertOnlyState;
|
|
11
14
|
root.NEXOWATT_EOS_COERCE_BOOLEAN = api.toBoolean;
|
|
15
|
+
root.NEXOWATT_EOS_PREPARE_MANUAL_EDITOR = api.prepareEditor;
|
|
16
|
+
root.NEXOWATT_EOS_PARSE_MANUAL_VALUE = api.parseEditorValue;
|
|
12
17
|
root.NEXOWATT_EOS_WRITE_MANUAL_STATE = api.writeManualState;
|
|
13
18
|
})(typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : null, function () {
|
|
14
19
|
'use strict';
|
|
@@ -23,10 +28,43 @@
|
|
|
23
28
|
const flattenTranslatedText = value => {
|
|
24
29
|
if (value == null) return '';
|
|
25
30
|
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return String(value);
|
|
31
|
+
if (Array.isArray(value)) return value.map(flattenTranslatedText).join(' ');
|
|
26
32
|
if (typeof value === 'object') return Object.values(value).map(flattenTranslatedText).join(' ');
|
|
27
33
|
return '';
|
|
28
34
|
};
|
|
29
35
|
|
|
36
|
+
const normalizeCommonType = (obj, value) => {
|
|
37
|
+
const common = obj && obj.common ? obj.common : {};
|
|
38
|
+
const type = Array.isArray(common.type) ? common.type[0] : common.type;
|
|
39
|
+
if (['number', 'string', 'boolean', 'array', 'object', 'mixed', 'file', 'json'].includes(type)) return type;
|
|
40
|
+
if (Array.isArray(value)) return 'array';
|
|
41
|
+
if (value && typeof value === 'object') return 'object';
|
|
42
|
+
if (typeof value === 'number') return 'number';
|
|
43
|
+
if (typeof value === 'boolean') return 'boolean';
|
|
44
|
+
return 'string';
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const normalizeStates = states => {
|
|
48
|
+
if (!states) return [];
|
|
49
|
+
if (Array.isArray(states)) return states.map((label, index) => ({ key: String(index), label: String(label) }));
|
|
50
|
+
if (typeof states === 'string') {
|
|
51
|
+
return states
|
|
52
|
+
.split(';')
|
|
53
|
+
.map(part => part.trim())
|
|
54
|
+
.filter(Boolean)
|
|
55
|
+
.map(part => {
|
|
56
|
+
const index = part.indexOf(':');
|
|
57
|
+
return index === -1
|
|
58
|
+
? { key: part, label: part }
|
|
59
|
+
: { key: part.slice(0, index).trim(), label: part.slice(index + 1).trim() };
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (typeof states === 'object') {
|
|
63
|
+
return Object.entries(states).map(([key, label]) => ({ key, label: flattenTranslatedText(label) || key }));
|
|
64
|
+
}
|
|
65
|
+
return [];
|
|
66
|
+
};
|
|
67
|
+
|
|
30
68
|
const getExplicitExpertOnly = obj => {
|
|
31
69
|
const common = obj && obj.common ? obj.common : {};
|
|
32
70
|
const native = obj && obj.native ? obj.native : {};
|
|
@@ -46,9 +84,10 @@
|
|
|
46
84
|
return undefined;
|
|
47
85
|
};
|
|
48
86
|
|
|
49
|
-
const
|
|
87
|
+
const getExpertOnlyReason = (id, obj) => {
|
|
50
88
|
const explicit = getExplicitExpertOnly(obj);
|
|
51
|
-
if (explicit
|
|
89
|
+
if (explicit === true) return 'explicit';
|
|
90
|
+
if (explicit === false) return '';
|
|
52
91
|
|
|
53
92
|
const common = obj && obj.common ? obj.common : {};
|
|
54
93
|
const role = normalizeText(common.role);
|
|
@@ -61,9 +100,10 @@
|
|
|
61
100
|
].join(' '));
|
|
62
101
|
const compact = text.replace(/[^a-z0-9]+/g, '');
|
|
63
102
|
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
if (/^(?:
|
|
103
|
+
// High-confidence safety classes only. Normal setpoints such as room
|
|
104
|
+
// temperatures remain available outside expert mode.
|
|
105
|
+
if (/^(?:level\.)?(?:power|current)(?:\.|$)/.test(role)) return 'power-or-current-command';
|
|
106
|
+
if (/^(?:value\.)?(?:power|current)\.(?:setpoint|limit|target|command)(?:\.|$)/.test(role)) return 'power-or-current-command';
|
|
67
107
|
|
|
68
108
|
const exactRiskTokens = [
|
|
69
109
|
'hardreset', 'softreset', 'factoryreset', 'factorydefault', 'reboot', 'restartdevice', 'shutdown',
|
|
@@ -75,63 +115,279 @@
|
|
|
75
115
|
'ladeleistung', 'entladeleistung', 'ladestrom', 'stromlimit', 'leistungsgrenze',
|
|
76
116
|
'leistungssollwert', 'einspeiselimit', 'ruecksetzen', 'neustart',
|
|
77
117
|
];
|
|
78
|
-
if (exactRiskTokens.some(token => compact.includes(token))) return
|
|
118
|
+
if (exactRiskTokens.some(token => compact.includes(token))) return 'safety-command';
|
|
79
119
|
|
|
80
120
|
const powerCommand = /(?:charge|charging|discharge|export|feedin|grid|netz|pv|lade|entlade|einspeise)[\s._/-]{0,6}(?:power|current|leistung|strom).{0,28}(?:limit|setpoint|target|command|override|control|grenze|soll|vorgabe)/;
|
|
81
121
|
const inversePowerCommand = /(?:limit|setpoint|target|command|override|control|grenze|soll|vorgabe).{0,28}(?:charge|charging|discharge|export|feedin|grid|netz|pv|lade|entlade|einspeise|power|current|leistung|strom)/;
|
|
82
|
-
|
|
122
|
+
if (powerCommand.test(text) || inversePowerCommand.test(text)) return 'power-or-current-command';
|
|
123
|
+
return '';
|
|
83
124
|
};
|
|
84
125
|
|
|
126
|
+
const isExpertOnlyState = (id, obj) => Boolean(getExpertOnlyReason(id, obj));
|
|
127
|
+
|
|
85
128
|
const toBoolean = value => {
|
|
86
129
|
if (value === true || value === 1) return true;
|
|
87
130
|
if (value === false || value === 0 || value == null) return false;
|
|
88
131
|
const normalized = normalizeText(value).trim();
|
|
89
|
-
if (['true', '1', 'on', 'yes', 'ja', 'enabled', 'active'].includes(normalized)) return true;
|
|
90
|
-
if (['false', '0', 'off', 'no', 'nein', 'disabled', 'inactive', '', 'null', '(null)'].includes(normalized)) return false;
|
|
132
|
+
if (['true', '1', 'on', 'yes', 'ja', 'enabled', 'active', 'open', 'start', 'ein'].includes(normalized)) return true;
|
|
133
|
+
if (['false', '0', 'off', 'no', 'nein', 'disabled', 'inactive', 'closed', 'stop', 'aus', '', 'null', '(null)'].includes(normalized)) return false;
|
|
91
134
|
return Boolean(value);
|
|
92
135
|
};
|
|
93
136
|
|
|
137
|
+
const parseNumber = value => {
|
|
138
|
+
if (typeof value === 'number') {
|
|
139
|
+
if (!Number.isFinite(value)) throw new Error('Ungültiger Zahlenwert');
|
|
140
|
+
return value;
|
|
141
|
+
}
|
|
142
|
+
const normalized = String(value == null ? '' : value).trim().replace(',', '.');
|
|
143
|
+
if (!normalized) throw new Error('Zahlenwert fehlt');
|
|
144
|
+
const parsed = Number(normalized);
|
|
145
|
+
if (!Number.isFinite(parsed)) throw new Error(`Ungültiger Zahlenwert: ${value}`);
|
|
146
|
+
return parsed;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const parseJson = value => {
|
|
150
|
+
if (value && typeof value === 'object') return value;
|
|
151
|
+
const text = String(value == null ? '' : value).trim();
|
|
152
|
+
if (!text) throw new Error('JSON-Wert fehlt');
|
|
153
|
+
try {
|
|
154
|
+
return JSON.parse(text);
|
|
155
|
+
} catch (error) {
|
|
156
|
+
throw new Error(`Ungültiges JSON: ${error && error.message ? error.message : error}`);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
const castStateKey = (key, type) => {
|
|
161
|
+
if (type === 'number') return parseNumber(key);
|
|
162
|
+
if (type === 'boolean') return toBoolean(key);
|
|
163
|
+
if (type === 'mixed') {
|
|
164
|
+
const text = String(key).trim();
|
|
165
|
+
if (/^(true|false|on|off|yes|no|ja|nein|1|0)$/i.test(text)) return toBoolean(text);
|
|
166
|
+
if (/^[+-]?(?:\d+\.?\d*|\.\d+)$/.test(text.replace(',', '.'))) return parseNumber(text);
|
|
167
|
+
try {
|
|
168
|
+
if (/^[\[{]/.test(text)) return JSON.parse(text);
|
|
169
|
+
} catch {
|
|
170
|
+
// keep as text
|
|
171
|
+
}
|
|
172
|
+
return text;
|
|
173
|
+
}
|
|
174
|
+
return String(key);
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
const sameValue = (left, right) => {
|
|
178
|
+
if (Object.is(left, right)) return true;
|
|
179
|
+
if (left == null || right == null) return left == null && right == null;
|
|
180
|
+
if (typeof left === 'object' || typeof right === 'object') {
|
|
181
|
+
try {
|
|
182
|
+
return JSON.stringify(left) === JSON.stringify(right);
|
|
183
|
+
} catch {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return String(left) === String(right);
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
const optionScore = (option, mode) => {
|
|
191
|
+
const text = normalizeText(`${option.key} ${option.label}`).replace(/[^a-z0-9]+/g, ' ');
|
|
192
|
+
const offWords = ['false', '0', 'off', 'no', 'nein', 'disabled', 'inactive', 'closed', 'stop', 'aus'];
|
|
193
|
+
const onWords = ['true', '1', 'on', 'yes', 'ja', 'enabled', 'active', 'open', 'start', 'ein'];
|
|
194
|
+
const words = mode === 'on' ? onWords : offWords;
|
|
195
|
+
return words.reduce((score, word) => score + (new RegExp(`(?:^|\\s)${word}(?:\\s|$)`).test(text) ? 10 : 0), 0);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const getBinaryOptions = obj => {
|
|
199
|
+
const common = obj && obj.common ? obj.common : {};
|
|
200
|
+
const type = normalizeCommonType(obj);
|
|
201
|
+
const entries = normalizeStates(common.states);
|
|
202
|
+
if (entries.length > 2) return null;
|
|
203
|
+
if (entries.length === 2) {
|
|
204
|
+
const typed = entries.map(entry => ({ ...entry, value: castStateKey(entry.key, type) }));
|
|
205
|
+
const firstOff = optionScore(typed[0], 'off');
|
|
206
|
+
const firstOn = optionScore(typed[0], 'on');
|
|
207
|
+
const secondOff = optionScore(typed[1], 'off');
|
|
208
|
+
const secondOn = optionScore(typed[1], 'on');
|
|
209
|
+
if (firstOn > firstOff && secondOff >= secondOn) return { off: typed[1].value, on: typed[0].value };
|
|
210
|
+
if (secondOn > secondOff && firstOff >= firstOn) return { off: typed[0].value, on: typed[1].value };
|
|
211
|
+
return { off: typed[0].value, on: typed[1].value };
|
|
212
|
+
}
|
|
213
|
+
if (type === 'boolean') return { off: false, on: true };
|
|
214
|
+
if (type === 'number') {
|
|
215
|
+
const off = typeof common.min === 'number' ? common.min : 0;
|
|
216
|
+
let on = typeof common.max === 'number' ? common.max : 1;
|
|
217
|
+
if (sameValue(off, on)) on = off === 0 ? 1 : 0;
|
|
218
|
+
return { off, on };
|
|
219
|
+
}
|
|
220
|
+
if (type === 'string') return { off: 'false', on: 'true' };
|
|
221
|
+
if (type === 'mixed') return { off: false, on: true };
|
|
222
|
+
return null;
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const isButtonState = (obj, item) => {
|
|
226
|
+
const common = obj && obj.common ? obj.common : {};
|
|
227
|
+
const role = normalizeText(common.role);
|
|
228
|
+
const data = item && item.data ? item.data : {};
|
|
229
|
+
return Boolean(data.button) || role === 'button' || role.startsWith('button.') || role === 'action' || role.startsWith('action.');
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
const isSwitchState = (obj, item) => {
|
|
233
|
+
const common = obj && obj.common ? obj.common : {};
|
|
234
|
+
const role = normalizeText(common.role);
|
|
235
|
+
const data = item && item.data ? item.data : {};
|
|
236
|
+
const requested = Boolean(data.switch) || role === 'switch' || role.startsWith('switch.') || normalizeCommonType(obj) === 'boolean';
|
|
237
|
+
return requested && Boolean(getBinaryOptions(obj));
|
|
238
|
+
};
|
|
239
|
+
|
|
94
240
|
const getWriteBehavior = (id, obj, item, expertMode) => {
|
|
95
241
|
if (!obj || obj.type !== 'state') return 'readonly';
|
|
96
242
|
const common = obj.common || {};
|
|
97
243
|
if (common.write === false) return 'readonly';
|
|
98
244
|
if (isExpertOnlyState(id, obj) && !expertMode) return 'expert-only';
|
|
99
|
-
if (
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const data = item && item.data ? item.data : {};
|
|
103
|
-
const isButton = Boolean(data.button) || role === 'button' || role.startsWith('button.') || role === 'action' || role.startsWith('action.');
|
|
104
|
-
if (isButton) return 'button';
|
|
105
|
-
if (Boolean(data.switch) || role === 'switch' || role.startsWith('switch.') || common.type === 'boolean') return 'switch';
|
|
245
|
+
if (normalizeCommonType(obj) === 'file') return 'file';
|
|
246
|
+
if (isButtonState(obj, item) && (common.def !== undefined || !['array', 'object'].includes(normalizeCommonType(obj)))) return 'button';
|
|
247
|
+
if (isSwitchState(obj, item)) return 'switch';
|
|
106
248
|
return 'dialog';
|
|
107
249
|
};
|
|
108
250
|
|
|
251
|
+
const getDirectWriteValue = (id, obj, item, currentValue, behavior) => {
|
|
252
|
+
const common = obj && obj.common ? obj.common : {};
|
|
253
|
+
const type = normalizeCommonType(obj, currentValue);
|
|
254
|
+
const mode = behavior || getWriteBehavior(id, obj, item, true);
|
|
255
|
+
if (mode === 'button') {
|
|
256
|
+
if (common.def !== undefined) return common.def;
|
|
257
|
+
const options = getBinaryOptions(obj);
|
|
258
|
+
if (options) return options.on;
|
|
259
|
+
if (type === 'boolean') return true;
|
|
260
|
+
if (type === 'number') return 1;
|
|
261
|
+
if (type === 'string') return 'true';
|
|
262
|
+
if (type === 'mixed') return true;
|
|
263
|
+
throw new Error(`Button-Datenpunkt ${id} benötigt einen expliziten Vorgabewert`);
|
|
264
|
+
}
|
|
265
|
+
if (mode === 'switch') {
|
|
266
|
+
const options = getBinaryOptions(obj);
|
|
267
|
+
if (!options) throw new Error(`Datenpunkt ${id} ist kein binärer Schalter`);
|
|
268
|
+
return sameValue(currentValue, options.on) ? options.off : options.on;
|
|
269
|
+
}
|
|
270
|
+
throw new Error(`Direktes Schreiben ist für ${mode} nicht vorgesehen`);
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
const inferEditorType = (obj, currentValue) => {
|
|
274
|
+
const common = obj && obj.common ? obj.common : {};
|
|
275
|
+
if (normalizeStates(common.states).length) return 'states';
|
|
276
|
+
const type = normalizeCommonType(obj, currentValue);
|
|
277
|
+
if (type === 'array' || type === 'object' || type === 'json') return 'json';
|
|
278
|
+
if (type === 'mixed') return 'json';
|
|
279
|
+
if (type === 'number' || type === 'boolean' || type === 'string') return type;
|
|
280
|
+
return 'string';
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
const prepareEditor = (obj, currentValue) => {
|
|
284
|
+
const editorType = inferEditorType(obj, currentValue);
|
|
285
|
+
const originalType = normalizeCommonType(obj, currentValue);
|
|
286
|
+
let value = currentValue;
|
|
287
|
+
if (editorType === 'json') {
|
|
288
|
+
if (typeof value === 'string') {
|
|
289
|
+
try {
|
|
290
|
+
value = JSON.stringify(JSON.parse(value), null, 2);
|
|
291
|
+
} catch {
|
|
292
|
+
value = originalType === 'mixed' ? JSON.stringify(value) : value;
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
value = JSON.stringify(value == null ? null : value, null, 2);
|
|
296
|
+
}
|
|
297
|
+
} else if (editorType === 'number') {
|
|
298
|
+
value = value == null ? '' : value;
|
|
299
|
+
} else if (editorType === 'boolean') {
|
|
300
|
+
value = toBoolean(value);
|
|
301
|
+
} else if (editorType === 'string') {
|
|
302
|
+
value = value == null ? '' : String(value);
|
|
303
|
+
}
|
|
304
|
+
return {
|
|
305
|
+
editorType,
|
|
306
|
+
value,
|
|
307
|
+
originalType,
|
|
308
|
+
};
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
const parseEditorValue = (obj, editorType, rawValue) => {
|
|
312
|
+
const common = obj && obj.common ? obj.common : {};
|
|
313
|
+
const originalType = normalizeCommonType(obj, rawValue);
|
|
314
|
+
let value = rawValue && typeof rawValue === 'object' && Object.prototype.hasOwnProperty.call(rawValue, 'value')
|
|
315
|
+
? rawValue.value
|
|
316
|
+
: rawValue;
|
|
317
|
+
|
|
318
|
+
if (editorType !== 'string' && value === 'null') return null;
|
|
319
|
+
|
|
320
|
+
if (editorType === 'states') {
|
|
321
|
+
value = castStateKey(value, originalType);
|
|
322
|
+
} else if (editorType === 'number') {
|
|
323
|
+
value = parseNumber(value);
|
|
324
|
+
} else if (editorType === 'boolean') {
|
|
325
|
+
value = toBoolean(value);
|
|
326
|
+
} else if (editorType === 'json') {
|
|
327
|
+
value = parseJson(value);
|
|
328
|
+
} else {
|
|
329
|
+
value = value == null ? '' : String(value);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (originalType === 'number' && typeof value !== 'number') value = parseNumber(value);
|
|
333
|
+
if (originalType === 'boolean' && typeof value !== 'boolean') value = toBoolean(value);
|
|
334
|
+
if (originalType === 'string' && typeof value !== 'string') value = String(value);
|
|
335
|
+
if (originalType === 'array') {
|
|
336
|
+
if (typeof value === 'string') value = parseJson(value);
|
|
337
|
+
if (!Array.isArray(value)) throw new Error('Der Datenpunkt erwartet ein JSON-Array');
|
|
338
|
+
}
|
|
339
|
+
if (originalType === 'object') {
|
|
340
|
+
if (typeof value === 'string') value = parseJson(value);
|
|
341
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('Der Datenpunkt erwartet ein JSON-Objekt');
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (typeof value === 'number') {
|
|
345
|
+
if (typeof common.min === 'number' && value < common.min) throw new Error(`Wert liegt unter dem Minimum ${common.min}`);
|
|
346
|
+
if (typeof common.max === 'number' && value > common.max) throw new Error(`Wert liegt über dem Maximum ${common.max}`);
|
|
347
|
+
}
|
|
348
|
+
return value;
|
|
349
|
+
};
|
|
350
|
+
|
|
109
351
|
const writeManualState = (socket, id, value) => {
|
|
110
352
|
if (!socket || typeof socket.setState !== 'function') {
|
|
111
353
|
return Promise.reject(new Error('ioBroker socket is not ready'));
|
|
112
354
|
}
|
|
113
355
|
const key = String(id || '');
|
|
114
356
|
if (!key) return Promise.reject(new Error('Missing datapoint ID'));
|
|
115
|
-
if (pendingWrites.has(key)) return pendingWrites.get(key);
|
|
116
357
|
|
|
358
|
+
const previous = pendingWrites.get(key);
|
|
359
|
+
if (previous && sameValue(previous.value, value)) return previous.promise;
|
|
360
|
+
|
|
361
|
+
const predecessor = previous ? previous.promise.catch(() => undefined) : Promise.resolve();
|
|
117
362
|
let timeoutHandle;
|
|
118
|
-
const operation =
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const promise = Promise.race([operation, timeout])
|
|
123
|
-
.finally(() => {
|
|
124
|
-
if (timeoutHandle) clearTimeout(timeoutHandle);
|
|
125
|
-
pendingWrites.delete(key);
|
|
363
|
+
const operation = predecessor.then(() => {
|
|
364
|
+
const write = Promise.resolve(socket.setState(key, { val: value, ack: false, q: 0 }));
|
|
365
|
+
const timeout = new Promise((_, reject) => {
|
|
366
|
+
timeoutHandle = setTimeout(() => reject(new Error(`Write timeout for ${key}`)), 15000);
|
|
126
367
|
});
|
|
127
|
-
|
|
368
|
+
return Promise.race([write, timeout]);
|
|
369
|
+
});
|
|
370
|
+
const promise = operation.finally(() => {
|
|
371
|
+
if (timeoutHandle) clearTimeout(timeoutHandle);
|
|
372
|
+
const active = pendingWrites.get(key);
|
|
373
|
+
if (active && active.promise === promise) pendingWrites.delete(key);
|
|
374
|
+
});
|
|
375
|
+
pendingWrites.set(key, { value, promise });
|
|
128
376
|
return promise;
|
|
129
377
|
};
|
|
130
378
|
|
|
131
379
|
return {
|
|
380
|
+
normalizeCommonType,
|
|
381
|
+
normalizeStates,
|
|
132
382
|
getExplicitExpertOnly,
|
|
383
|
+
getExpertOnlyReason,
|
|
133
384
|
isExpertOnlyState,
|
|
385
|
+
getBinaryOptions,
|
|
134
386
|
getWriteBehavior,
|
|
387
|
+
getDirectWriteValue,
|
|
388
|
+
inferEditorType,
|
|
389
|
+
prepareEditor,
|
|
390
|
+
parseEditorValue,
|
|
135
391
|
toBoolean,
|
|
136
392
|
writeManualState,
|
|
137
393
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = '
|
|
4
|
+
window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = 'v76-universal-manual-state-editor';
|
|
5
5
|
window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_MODE = 'passive-native-objectbrowser';
|
|
6
6
|
|
|
7
7
|
// Keep this file intentionally passive. The datapoints page must use the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
window.NEXOWATT_EOS_ROLE_UI_VERSION = '
|
|
4
|
+
window.NEXOWATT_EOS_ROLE_UI_VERSION = 'v76-universal-manual-state-editor';
|
|
5
5
|
|
|
6
6
|
const ASSET_BASE = (() => {
|
|
7
7
|
const script = document.currentScript?.src || document.querySelector('script[src*="eos-role-ui.js"]')?.src || window.location.href;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const VERSION = '
|
|
4
|
+
const VERSION = 'v76-universal-manual-state-editor';
|
|
5
5
|
const LEGACY_ADMIN = 'admin';
|
|
6
6
|
const LEGACY_ADMIN_INSTANCE = 'admin.0';
|
|
7
7
|
const CORE_PROTECTED_ADAPTERS = ['admin', 'eos-admin', 'backitup', 'nexowatt-devices', 'nexowatt-device', 'nexowatt-dev', 'nexowatt-ui'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"iobroker_admin","name":"iobroker_admin","metaData":{"name":"iobroker_admin","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_admin"},"remoteEntry":{"name":"remoteEntry-
|
|
1
|
+
{"id":"iobroker_admin","name":"iobroker_admin","metaData":{"name":"iobroker_admin","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_admin"},"remoteEntry":{"name":"remoteEntry-v76.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry-v76.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_admin","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_admin:@emotion/react","name":"@emotion/react","version":"11.14.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-react.browser.esm-DrKG52pD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@emotion/styled","name":"@emotion/styled","version":"11.14.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-styled.browser.esm-DOdpWCne.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.9","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-D2ymscJA-v76.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/json-config","name":"@iobroker/json-config","version":"8.4.7","requiredVersion":"*","assets":{"js":{"async":["assets/index-D9Ej0pc9.js"],"sync":["assets/index-mSK_krgD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/dm-gui-components","name":"@iobroker/dm-gui-components","version":"9.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-bCuipom1.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns","name":"date-fns","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Cqq5gIUF.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns/locale","name":"date-fns/locale","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/locale-CLe3aX4T.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet","name":"leaflet","version":"1.9.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/leaflet-src-B651YTWC.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet-geosearch","name":"leaflet-geosearch","version":"4.2.2","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/geosearch.module-BA4ww39P.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-ace","name":"react-ace","version":"13.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-C_anklzA.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dropzone","name":"react-dropzone","version":"15.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CXZCHHB6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:semver","name":"semver","version":"7.7.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CkI9667U.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/x-date-pickers","name":"@mui/x-date-pickers","version":"7.29.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-uASdmaE6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-4wMOc304.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-D2Em8S_O.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-8JYjTPhv.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/icons-material","name":"@mui/icons-material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-jy_3EbfW.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./remoteEntry-
|
|
1
|
+
export * from "./remoteEntry-v76.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./remoteEntry-
|
|
1
|
+
export * from "./remoteEntry-v76.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./remoteEntry-
|
|
1
|
+
export * from "./remoteEntry-v76.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./remoteEntry-
|
|
1
|
+
export * from "./remoteEntry-v76.js";
|