diff --git a/src/App.svelte b/src/App.svelte index 7747626..b239c15 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -83,6 +83,7 @@ let layoutJson = []; let layoutJsonFlag = false; let layoutJsonParced = false; + let layoutJsonArrayParced = []; let settingsJson = {}; let settingsJsonParced = false; @@ -157,10 +158,9 @@ var widgetsJsonBlob = new MyBlobBuilder(); var itemsJsonBlob = new MyBlobBuilder(); var layoutJsonBlob = new MyBlobBuilder(); - var layoutJsonBlob = new MyBlobBuilder(); var scenarioTxtBlob = new MyBlobBuilder(); - //var blobArr = new MyBlobBuilder()[10]; + var layoutJsonArray = []; router.subscribe(handleNavigation); @@ -275,9 +275,12 @@ if (debug) console.log("[i]", ip, ws, "completed connecting"); markDeviceStatus(ws, true); if (firstDevListRequest) wsSendMsg(0, "/list|"); - //отправим запрос только выбранному устройству - if (ws === selectedWs) { - sendCurrentPageName(); + if (currentPageName === "/|") { + wsSendMsg(ws, currentPageName); + } else { + if (ws === selectedWs) { + sendCurrentPageName(); + } } }); socket[ws].addEventListener("message", function (event) { @@ -456,27 +459,29 @@ } }; } - //сборщик layoutJson пакетов======================================== - if (data === "/st/layout.json") { - layoutJsonFlag = true; - } - if (data === "/end/layout.json") { - layoutJsonFlag = false; - var bb = layoutJsonBlob.getBlob(); - let layoutJsonReader = new FileReader(); - layoutJsonReader.readAsText(bb); - layoutJsonReader.onload = () => { - let layoutJsonResult = layoutJsonReader.result; - if (IsJsonParse(layoutJsonResult)) { - layoutJson = JSON.parse(layoutJsonResult); - layoutJson = layoutJson; - wigetsUpdate(); - layoutJsonParced = true; - if (debug) console.log("✔", "layoutJson parced", ws); - onParced(); - } - }; - } + } + //сборщик layoutJson пакетов======================================== + if (data === "/st/layout.json") { + //layoutJsonArrayParced[ws] = false; + layoutJsonFlag = true; + } + if (data === "/end/layout.json") { + layoutJsonArrayParced[ws] = true; + layoutJsonFlag = false; + var bb = layoutJsonBlob.getBlob(); + let layoutJsonReader = new FileReader(); + layoutJsonReader.readAsText(bb); + layoutJsonReader.onload = () => { + let layoutJsonResult = layoutJsonReader.result; + if (IsJsonParse(layoutJsonResult)) { + layoutJson = JSON.parse(layoutJsonResult); + layoutJson = layoutJson; + wigetsUpdate(); + layoutJsonParced = true; + if (debug) console.log("✔", "layoutJson parced", ws); + onParced(); + } + }; } } if (event.data instanceof Blob) { @@ -488,6 +493,11 @@ if (layoutJsonFlag) layoutJsonBlob.append(event.data); if (scenarioTxtFlag) scenarioTxtBlob.append(event.data); } + if (!layoutJsonArray[ws]) layoutJsonArray[ws] = new MyBlobBuilder(); + layoutJsonArray[ws].append(event.data); + if (layoutJsonArrayParced.every(Boolean) === true) { + if (debug) console.log("✔", "!!! !!!"); + } } }); socket[ws].addEventListener("close", (event) => { @@ -503,6 +513,18 @@ } } + function testBlob() { + for (let i = 0; i < layoutJsonArray.length; i++) { + var bb = layoutJsonArray[i].getBlob(); + let reader = new FileReader(); + reader.readAsText(bb); + reader.onload = () => { + console.log(i, reader.result); + }; + } + layoutJsonArray = []; + } + function onParced() { if (currentPageName === "/|" && layoutJsonParced && paramsJsonParced) { clearParcedFlags(); @@ -1037,9 +1059,6 @@
- - - {#if rebootingUpdatingInProgress} {/if} @@ -1094,6 +1113,7 @@ {:else} wsPush(ws, topic, status)} /> + saveConfig()} rebootEsp={() => rebootEsp()} />