diff --git a/src/App.svelte b/src/App.svelte index 44cde72..cd73134 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -45,25 +45,57 @@ //dashboard let pages = []; + //ready flags + let dashReady = false; + let configReady = false; + let connectionReady = false; + let listReady = false; + let systemReady = false; + //configuration let configJson = []; let configJsonFlag = false; + let configJsonParced = false; let widgetsJson = []; let widgetsJsonFlag = false; + let widgetsJsonParced = false; let itemsJson = []; let itemsJsonFlag = false; + let itemsJsonParced = false; let layoutJson = []; let layoutJsonFlag = false; + let layoutJsonParced = false; let settingsJson = {}; let settingsJsonFlag = false; + let settingsJsonParced = false; let errorsJson = {}; + let errorsJsonParced = false; let ssidJson = {}; + let ssidJsonParced = false; + + let paramsJson = {}; + let paramsJsonParced = false; + + let statusJsonParced = false; + + let incDeviceList = []; + let incDeviceListParced = false; + + let deviceList = []; + deviceList = [ + { + name: "--", + id: "--", + ip: myip, + status: false, + }, + ]; //web sockets let socket = []; @@ -77,19 +109,6 @@ let oneOfJsonPackageError = false; - let deviceList = []; - deviceList = [ - { - name: "--", - id: "--", - ip: myip, - status: false, - }, - ]; - - let incDeviceList = []; - let incDeviceListParced = false; - //***********************************************************blob**************************************************************/ var MyBlobBuilder = function () { this.parts = []; @@ -235,16 +254,16 @@ udateStatusOfWidget(statusJson); wigetsUpdate(); if (debug) console.log("✔", "statusJson parced"); + statusJsonParced = true; onParced("status"); } } //сборщик paramsJson сообщений====================================== if (data.includes("params")) { if (IsJsonParse(data)) { - let paramsJson = JSON.parse(data); - udateStatusOfAllWidgets(paramsJson); - wigetsUpdate(); + paramsJson = JSON.parse(data); if (debug) console.log("✔", "paramsJson parced"); + paramsJsonParced = true; onParced("params"); } } @@ -254,6 +273,7 @@ ssidJson = JSON.parse(data); ssidJson = ssidJson; if (debug) console.log("✔", "ssidJson parced"); + ssidJsonParced = true; onParced("ssid"); } } @@ -267,6 +287,7 @@ deviceList = deviceList; whenDeviceListWasUpdated(); connectToAllDevices(); + if (debug) console.log("✔", "incDeviceList json parced"); onParced("devicelist"); } @@ -276,8 +297,8 @@ if (IsJsonParse(data)) { errorsJson = JSON.parse(data); errorsJson = errorsJson; + errorsJsonParced = true; if (debug) console.log("✔", "errorsJson json parced"); - //dataReceived(); onParced("errors"); } } @@ -295,6 +316,7 @@ if (IsJsonParse(configJsonResult)) { configJson = JSON.parse(configJsonResult); configJson = configJson; + configJsonParced = true; if (debug) console.log("✔", "configJson parced"); onParced("config"); } @@ -314,6 +336,7 @@ if (IsJsonParse(widgetsJsonResult)) { widgetsJson = JSON.parse(widgetsJsonResult); widgetsJson = widgetsJson; + widgetsJsonParced = true; if (debug) console.log("✔", "widgetsJson parced"); onParced("widgets"); } @@ -333,6 +356,7 @@ if (IsJsonParse(itemsJsonResult)) { itemsJson = JSON.parse(itemsJsonResult); itemsJson = itemsJson; + itemsJsonParced = true; if (debug) console.log("✔", "itemsJson parced"); onParced("items"); } @@ -353,6 +377,7 @@ layoutJson = JSON.parse(layoutJsonResult); layoutJson = layoutJson; wigetsUpdate(); + layoutJsonParced = true; if (debug) console.log("✔", "layoutJson parced"); onParced("layout"); } @@ -374,6 +399,7 @@ settingsJson = settingsJson; wigetsUpdate(); updateThisDeviceInList(); + settingsJsonParced = true; if (debug) console.log("✔", "settingsJson parced"); onParced("settings"); } @@ -401,6 +427,36 @@ } } + function onParced(file) { + if (currentPageName === "/|" && layoutJsonParced && paramsJsonParced) { + clearParcedFlags(); + if (debug) console.log("✔✔", "dashboard data parced"); + udateStatusOfAllWidgets(paramsJson); + wigetsUpdate(); + dashReady = true; + } + if (currentPageName === "/config|" && itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced) { + clearParcedFlags(); + if (debug) console.log("✔✔", "config data parced"); + configReady = true; + } + if (currentPageName === "/connection|" && ssidJsonParced && settingsJsonParced && errorsJsonParced) { + clearParcedFlags(); + if (debug) console.log("✔✔", "connection data parced"); + connectionReady = true; + } + if (currentPageName === "/list|" && incDeviceListParced) { + clearParcedFlags(); + if (debug) console.log("✔✔", "list data parced"); + listReady = true; + } + if (currentPageName === "/system|" && errorsJsonParced) { + clearParcedFlags(); + if (debug) console.log("✔✔", "system data parced"); + systemReady = true; + } + } + function saveConfig() { wsSendMsg(selectedWs, "/tuoyal|" + JSON.stringify(generateLayout())); wsSendMsg(selectedWs, "/gifnoc|" + JSON.stringify(configJson)); @@ -501,9 +557,30 @@ errorsJson = {}; + dashReady = false; + configReady = false; + connectionReady = false; + listReady = false; + systemReady = false; + + clearParcedFlags(); + if (debug) console.log("[i]", "all app data cleared"); } + function clearParcedFlags() { + configJsonParced = false; + widgetsJsonParced = false; + itemsJsonParced = false; + layoutJsonParced = false; + settingsJsonParced = false; + errorsJsonParced = false; + ssidJsonParced = false; + paramsJsonParced = false; + statusJsonParced = false; + incDeviceListParced = false; + } + function wsPush(ws, topic, status) { let msg = topic + " " + status; if (debug) console.log("[i]", "send to ws msg:", msg); @@ -802,8 +879,6 @@ wsSendMsg(selectedWs, '/rorre|{"' + alarmKey + '":0}'); } - function onParced(file) {} - //*******************************************************initialisation********************************************************************/ onMount(async () => { console.log("[i]", "mounted"); @@ -879,16 +954,19 @@ {:else} - wsPush(ws, topic, status)} /> + wsPush(ws, topic, status)} /> - saveConfig()} /> + saveConfig()} /> - rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} /> + rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} /> + + + addDevInList()} newDevice={newDevice} /> - rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} /> + rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} /> @@ -901,9 +979,6 @@ {/if} - - addDevInList()} newDevice={newDevice} /> - diff --git a/src/pages/Config.svelte b/src/pages/Config.svelte index 99e7319..6be6c85 100644 --- a/src/pages/Config.svelte +++ b/src/pages/Config.svelte @@ -2,11 +2,14 @@ import Card from "../components/Card.svelte"; import CrossIcon from "../svg/Cross.svelte"; import OpenIcon from "../svg/Open.svelte"; + import Alarm from "../components/Alarm.svelte"; export let configJson; export let widgetsJson; export let itemsJson; + export let show; + let itemsJsonBind = 0; let debug = true; @@ -41,80 +44,78 @@ } - -
- -
- - -
- - - - - - - - - - - - {#each configJson as element, i} - - - - - - - - +{#if show} +
+ +
+ + +
+
ТипIdВиджетВкладкаНазвание - -
{element.subtype} (hideAllSubParams = !hideAllSubParams)} /> deleteLineFromConfig(i)} />
+ + + + + + + + - {#if !hideAllSubParams} - {#each Object.entries(element) as [key, param]} - {#if key != "type" && key != "subtype" && key != "id" && key != "widget" && key != "page" && key != "descr"} - - - - - {/if} - {/each} - - {/if} - {/each} - -
ТипIdВиджетВкладкаНазвание +
- - - -

{key}

-
- -
- -
-
- - - - - + + + {#each configJson as element, i} + + {element.subtype} + + + + + (hideAllSubParams = !hideAllSubParams)} /> + deleteLineFromConfig(i)} /> + + {#if !hideAllSubParams} + {#each Object.entries(element) as [key, param]} + {#if key != "type" && key != "subtype" && key != "id" && key != "widget" && key != "page" && key != "descr"} + + + + + +

{key}

+ + + + + + {/if} + {/each} + + {/if} + {/each} + + + + + +{:else} + +{/if} diff --git a/src/pages/Connection.svelte b/src/pages/Connection.svelte index df2c05c..b974c10 100644 --- a/src/pages/Connection.svelte +++ b/src/pages/Connection.svelte @@ -6,131 +6,137 @@ export let errorsJson; export let ssidJson; + export let show; + export let ssidClick = () => {}; export let saveSett = () => {}; export let saveMqtt = () => {}; export let rebootEsp = () => {}; -
- -
-
-

Название устройства

+{#if show} +
+ +
+
+

Название устройства

+
+
+ +
-
- +
+
+

Точка доступа

+
+
+ +
-
-
-
-

Точка доступа

+
+
+

Пароль точки доступа

+
+
+ +
-
- +
+
+

Название wifi сети

+
+
+ +
-
-
-
-

Пароль точки доступа

+
+
+

Пароль

+
+
+ +
-
- -
-
-
-
-

Название wifi сети

-
-
- -
-
-
-
-

Пароль

-
-
- -
-
- {#if errorsJson.passer === 1} -
- -
- {/if} + {#if errorsJson.passer === 1} +
+ +
+ {/if} - - + + - -
-
-

Состояние подключения

+ +
+
+

Состояние подключения

+
+
+ {#if errorsJson.mqtt === "e5"} +

Подключено

+ {:else if errorsJson.mqtt === "e13"} +

Подключение

+ {:else if errorsJson.mqtt === undefined} +

Ожидание

+ {:else} +

Ошибка

+ {/if} +
-
- {#if errorsJson.mqtt === "e5"} -

Подключено

- {:else if errorsJson.mqtt === "e13"} -

Подключение

- {:else if errorsJson.mqtt === undefined} -

Ожидание

- {:else} -

Ошибка

- {/if} +
+
+

Название сервера

+
+
+ +
-
-
-
-

Название сервера

+
+
+

Порт

+
+
+ +
-
- +
+
+

Префикс

+
+
+ +
-
-
-
-

Порт

+
+
+

Имя пользователя

+
+
+ +
-
- +
+
+

Пароль

+
+
+ +
-
-
-
-

Префикс

-
-
- -
-
-
-
-

Имя пользователя

-
-
- -
-
-
-
-

Пароль

-
-
- -
-
- - -
-
- - - -
+ + +
+
+ + + +
+{:else} + +{/if} diff --git a/src/pages/Dashboard.svelte b/src/pages/Dashboard.svelte index 15c6a7f..992face 100644 --- a/src/pages/Dashboard.svelte +++ b/src/pages/Dashboard.svelte @@ -3,32 +3,39 @@ import Input from "../widgets/Input.svelte"; import Toggle from "../widgets/Toggle.svelte"; import Anydata from "../widgets/Anydata.svelte"; + import Alarm from "../components/Alarm.svelte"; export let layoutJson; export let pages; + export let show; + export let wsPush = (ws, topic, status) => {}; -
- {#if layoutJson === []} - - {/if} - {#each pages as pagesName, i} - - {#each layoutJson as widget, i} - {#if widget.page === pagesName.page} - {#if widget.widget === "input"} - wsPush(ws, topic, status)} /> +{#if show} +
+ {#if layoutJson === []} + + {/if} + {#each pages as pagesName, i} + + {#each layoutJson as widget, i} + {#if widget.page === pagesName.page} + {#if widget.widget === "input"} + wsPush(ws, topic, status)} /> + {/if} + {#if widget.widget === "toggle"} + wsPush(ws, topic, status)} /> + {/if} + {#if widget.widget === "anydata"} + + {/if} {/if} - {#if widget.widget === "toggle"} - wsPush(ws, topic, status)} /> - {/if} - {#if widget.widget === "anydata"} - - {/if} - {/if} - {/each} - - {/each} -
+ {/each} +
+ {/each} +
+{:else} + +{/if} diff --git a/src/pages/List.svelte b/src/pages/List.svelte index f924362..363fa95 100644 --- a/src/pages/List.svelte +++ b/src/pages/List.svelte @@ -5,6 +5,8 @@ import CrossIcon from "../svg/Cross.svelte"; import OpenIcon from "../svg/Open.svelte"; + export let show; + export let deviceList; export let showInput; export let newDevice = {}; @@ -25,41 +27,45 @@ } -
- - - - - - - - - - - - {#each deviceList as device, i} +{#if show} +
+ +
Название устройстваIP адресИдентификаторСостояние -
+ - - - - - + + + + + - {/each} - {#if showInput} - - - - - - {/if} - -
{device.name}{device.ip}{device.id}{device.status ? "online" : "offline"} deleteLineFromDevlist(i)} />Название устройстваIP адресИдентификаторСостояние
-
- -
- -

Список устройств будет обновляться автоматически. Подключенные к одному роутеру устройства будут появляться в списке в течении двух минут. Ручное добавление сделано в целях проверки для разработчика.

-
-
+ + + {#each deviceList as device, i} + + {device.name} + {device.ip} + {device.id} + {device.status ? "online" : "offline"} + deleteLineFromDevlist(i)} /> + + {/each} + {#if showInput} + + + + + + + {/if} + + + + + +

Список устройств будет обновляться автоматически. Подключенные к одному роутеру устройства будут появляться в списке в течении двух минут. Ручное добавление сделано в целях проверки для разработчика.

+
+
+{:else} + +{/if} diff --git a/src/pages/System.svelte b/src/pages/System.svelte index 3ef4fc7..3e7d8da 100644 --- a/src/pages/System.svelte +++ b/src/pages/System.svelte @@ -124,98 +124,104 @@ export let errorsJson; export let rebootEsp = () => {}; + export let show; + export let cancelAlarm = (alarmKey) => {}; -
- -
-
-

Версия прошивки

+{#if show} +
+ +
+
+

Версия прошивки

+
+
+

{errorsJson.bver}

+
-
-

{errorsJson.bver}

+
+
+

Версия файловой системы

+
+
+

{version}

+
-
-
-
-

Версия файловой системы

+
+
+

Uptime устройства

+
+
+

{errorsJson.upt}

+
-
-

{version}

+
+
+

Uptime сессии mqtt

+
+
+

{errorsJson.uptm}

+
-
-
-
-

Uptime устройства

+
+
+

Качество WiFi сигнала

+
+
+ {#if errorsJson.rssi === 0} +

не подключено

+ {/if} + {#if errorsJson.rssi === 1} +

нет сигнала

+ {/if} + {#if errorsJson.rssi === 2} +

очень низкий

+ {/if} + {#if errorsJson.rssi === 3} +

низкий

+ {/if} + {#if errorsJson.rssi === 4} +

хороший

+ {/if} + {#if errorsJson.rssi === 5} +

очень хороший

+ {/if} + {#if errorsJson.rssi === 6} +

отличный

+ {/if} +
-
-

{errorsJson.upt}

+
+
+

Остаток оперативной памяти

+
+
+

{errorsJson.heap}

+
-
-
-
-

Uptime сессии mqtt

+ + +
+ + {#each Object.entries(errorsJson) as [key, param]} + {#if key in systemErrorsRus && param in systemErrorsRus[key]} + cancelAlarm(key)}> +

{systemErrorsRus[key][param].txt}

+ {#if systemErrorsRus[key][param].num} +

{"Количество: " + errorsJson[key + "n"]}

+ {/if} +
+ {/if} + {/each}
-
-

{errorsJson.uptm}

-
-
-
-
-

Качество WiFi сигнала

-
-
- {#if errorsJson.rssi === 0} -

не подключено

- {/if} - {#if errorsJson.rssi === 1} -

нет сигнала

- {/if} - {#if errorsJson.rssi === 2} -

очень низкий

- {/if} - {#if errorsJson.rssi === 3} -

низкий

- {/if} - {#if errorsJson.rssi === 4} -

хороший

- {/if} - {#if errorsJson.rssi === 5} -

очень хороший

- {/if} - {#if errorsJson.rssi === 6} -

отличный

- {/if} -
-
-
-
-

Остаток оперативной памяти

-
-
-

{errorsJson.heap}

-
-
- - -
- - {#each Object.entries(errorsJson) as [key, param]} - {#if key in systemErrorsRus && param in systemErrorsRus[key]} - cancelAlarm(key)}> -

{systemErrorsRus[key][param].txt}

- {#if systemErrorsRus[key][param].num} -

{"Количество: " + errorsJson[key + "n"]}

- {/if} -
- {/if} - {/each} -
-
-
-
- - - -
+ +
+
+ + + +
+{:else} + +{/if}