This commit is contained in:
Dmitry Borisenko
2022-10-07 22:29:04 +02:00
parent 3193052b00
commit 1d7e7c284c
2 changed files with 98 additions and 39 deletions

View File

@@ -4,12 +4,12 @@
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" /> <meta name="viewport" content="width=device-width,initial-scale=1" />
<title>IoT Manager 4.4.0</title> <title>IoT Manager 4.4.1</title>
<link rel="icon" type="image/png" href="/favicon.ico" /> <link rel="icon" type="image/png" href="/favicon.ico" />
<link rel="stylesheet" href="/build/bundle.css?440" /> <link rel="stylesheet" href="/build/bundle.css?441" />
<script defer src="/build/bundle.js?440"></script> <script defer src="/build/bundle.js?441"></script>
</head> </head>
<body></body> <body></body>

View File

@@ -13,6 +13,7 @@
import Alarm from "./components/Alarm.svelte"; import Alarm from "./components/Alarm.svelte";
import Progress from "./components/Progress.svelte"; import Progress from "./components/Progress.svelte";
import Card from "./components/Card.svelte";
//import Modal from "./components/Modal.svelte"; //import Modal from "./components/Modal.svelte";
import DashboardPage from "./pages/Dashboard.svelte"; import DashboardPage from "./pages/Dashboard.svelte";
@@ -42,7 +43,7 @@
//****************************************************variable section**********************************************************/ //****************************************************variable section**********************************************************/
//******************************************************************************************************************************/ //******************************************************************************************************************************/
let myip = document.location.hostname; let myip = document.location.hostname;
if (devMode) myip = "192.168.88.238"; if (devMode) myip = "192.168.88.234";
//Flags //Flags
let firstDevListRequest = true; let firstDevListRequest = true;
@@ -146,7 +147,7 @@
let currentPageName = undefined; let currentPageName = undefined;
var chartJsonBlobArray = []; var chartJsonBlobArray = [];
let chartTopic; let chartTopic = "";
var chartJsonBlob = new MyBlobBuilder(); var chartJsonBlob = new MyBlobBuilder();
var layoutJsonBlobArray = []; var layoutJsonBlobArray = [];
@@ -257,7 +258,7 @@
firstDevListRequest = true; firstDevListRequest = true;
connectToAllDevices(); connectToAllDevices();
wsTestMsgTask(); wsTestMsgTask();
sortingLayout(); //sortingLayout();
}); });
//****************************************************web sockets section******************************************************/ //****************************************************web sockets section******************************************************/
@@ -426,13 +427,14 @@
//сборщик paramsJson сообщений //сборщик paramsJson сообщений
if (data.includes('"params_":"')) { if (data.includes('"params_":"')) {
if (IsJsonParse(data)) { if (IsJsonParse(data)) {
console.log("[4.1]", ws, "dev params", data);
//как добавить в объект json новый объект //как добавить в объект json новый объект
paramsJson = { paramsJson = {
...paramsJson, ...paramsJson,
...JSON.parse(data), ...JSON.parse(data),
}; };
paramsJson = paramsJson; paramsJson = paramsJson;
console.log("[4]", ws, "collecting params"); console.log("[4.2]", ws, "global params", paramsJson);
updateAllStatuses(ws); updateAllStatuses(ws);
onParced(); onParced();
} }
@@ -440,26 +442,28 @@
//сборщик layoutJson пакетов //сборщик layoutJson пакетов
if (data === "/st/layout.json") { if (data === "/st/layout.json") {
layoutJsonFlag[ws] = true; layoutJsonFlag[ws] = true;
console.log("[1]", ws, "layout package start", layoutJsonFlag);
} }
if (data === "/end/layout.json") { if (data === "/end/layout.json") {
layoutJsonFlag[ws] = false; layoutJsonFlag[ws] = false;
console.log("[1]", ws, "blob package received"); console.log("[1]", ws, "layout package received", layoutJsonFlag);
//как только прилетел весь блоб мы начнем его читать ридером и заодно запросим json-ы всех параметров //как только прилетел весь блоб мы начнем его читать ридером и заодно запросим json-ы всех параметров
combineLayoutsInOne(ws); combineLayoutsInOne(ws);
wsSendMsg(ws, "/params|");
} }
//сборщик chartJson пакетов //сборщик chartJson пакетов
if (data.includes("/st/chart.json|")) { if (data.includes("/st/chart.json|")) {
let json = JSON.parse(deleteBeforeDelimiter(data, "|")); let json = JSON.parse(deleteBeforeDelimiter(data, "|"));
chartTopic = json.topic; chartTopic = ws.toString() + json.topic.toString();
chartJsonFlag[chartTopic] = true; chartJsonFlag[chartTopic] = true;
console.log("[i]", ws, "chart package start", JSON.stringify(chartJsonFlag));
} }
if (data.includes("/end/chart.json|")) { if (data.includes("/end/chart.json|")) {
let json = JSON.parse(deleteBeforeDelimiter(data, "|")); let json = JSON.parse(deleteBeforeDelimiter(data, "|"));
chartTopic = json.topic; chartTopic = ws.toString() + json.topic.toString();
chartJsonFlag[chartTopic] = false; chartJsonFlag[chartTopic] = false;
console.log("[i] chart blob", json.topic, json.maxCount); console.log("[i]", ws, "chart package received", JSON.stringify(chartJsonFlag));
var bb = chartJsonBlobArray[chartTopic].getBlob(); var bb = chartJsonBlobArray[chartTopic].getBlob();
let chartJsonReader = new FileReader(); let chartJsonReader = new FileReader();
chartJsonReader.readAsText(bb); chartJsonReader.readAsText(bb);
@@ -508,9 +512,18 @@
if (itemsJsonPacket) itemsJsonPacket.append(event.data); if (itemsJsonPacket) itemsJsonPacket.append(event.data);
if (widgetsJsonPacket) widgetsJsonPacket.append(event.data); if (widgetsJsonPacket) widgetsJsonPacket.append(event.data);
if (scenarioJsonPacket) scenarioJsonPacket.append(event.data); if (scenarioJsonPacket) scenarioJsonPacket.append(event.data);
var bb = event.data;
handleBlob(bb);
//bb = bb.slice(0, 10);
//let testBlobReader = new FileReader();
//testBlobReader.readAsText(bb);
//testBlobReader.onload = () => {
// let testBlobResult = testBlobReader.result;
// console.log("[iiiiiiiiii]", testBlobResult);
//};
} }
//принимаем данные от всех устройств
//if (chartJsonFlag[ws]) chartJsonBlob.append(event.data);
if (!chartJsonBlobArray[chartTopic]) chartJsonBlobArray[chartTopic] = new MyBlobBuilder(); if (!chartJsonBlobArray[chartTopic]) chartJsonBlobArray[chartTopic] = new MyBlobBuilder();
if (chartJsonFlag[chartTopic]) chartJsonBlobArray[chartTopic].append(event.data); if (chartJsonFlag[chartTopic]) chartJsonBlobArray[chartTopic].append(event.data);
@@ -532,6 +545,19 @@
} }
} }
async function handleBlob(blob) {
let txt = await blob.text();
console.log("txt: ", txt);
////получаем заголовок
//var blobHeader = blob.slice(0, 6);
//let header = await blobHeader.text();
//console.log("header: ", header);
////получаем размер
//var blobSize = blob.slice(7, 11);
//let size = await blobSize.text();
//console.log("size: ", size);
}
async function onParced() { async function onParced() {
if (currentPageName === "/|") { if (currentPageName === "/|") {
clearParcedFlags(); clearParcedFlags();
@@ -584,17 +610,21 @@
reader.readAsText(bb); reader.readAsText(bb);
reader.onload = () => { reader.onload = () => {
if (IsJsonParse(reader.result)) {
let devLayout = JSON.parse(reader.result); let devLayout = JSON.parse(reader.result);
for (let i = 0; i < devLayout.length; i++) { for (let i = 0; i < devLayout.length; i++) {
devLayout[i].ws = ws; devLayout[i].ws = ws;
} }
layoutJson = layoutJson.concat(devLayout); layoutJson = layoutJson.concat(devLayout);
console.log("[2]", ws, "blob package pushed to layout"); console.log("[2]", ws, "blob package pushed to layout");
sortingLayout(); sortingLayout(ws);
} else {
console.log("[E]", "ERROR OF LAYOUT!!!");
}
}; };
} }
function sortingLayout() { function sortingLayout(ws) {
//сортируем весь layout по алфавиту //сортируем весь layout по алфавиту
layoutJson.sort(function (a, b) { layoutJson.sort(function (a, b) {
if (a.descr < b.descr) { if (a.descr < b.descr) {
@@ -630,7 +660,9 @@
}); });
layoutJson = layoutJson; layoutJson = layoutJson;
console.log("[3]", "layout sort"); console.log("[3]", ws, "layout sort, requested params...");
wsSendMsg(ws, "/params|");
//onParced(); //удалить
} }
function updateAllStatuses(ws) { function updateAllStatuses(ws) {
@@ -665,7 +697,8 @@
} }
//если статус виджета это массив и его нужно накопить //если статус виджета это массив и его нужно накопить
function apdateWidgetByArray(newStatusJson) { //должна вызываться когда весь layout в сборе
async function apdateWidgetByArray(newStatusJson) {
console.log("[i]", "collecting arrays"); console.log("[i]", "collecting arrays");
let error = true; let error = true;
if (layoutJson.length > 0) { if (layoutJson.length > 0) {
@@ -804,10 +837,27 @@
} }
if (error) console.log("[E]", "error, widget not found: " + setWidget); if (error) console.log("[E]", "error, widget not found: " + setWidget);
} }
//if (debug) console.log("[i] layout:", JSON.stringify(layout));
//сортируем весь layout по алфавиту
layout.sort(function (a, b) {
if (a.descr < b.descr) {
return -1;
}
if (a.descr > b.descr) {
return 1;
}
return 0;
});
for (let i = 0; i < layout.length; i++) {
layout[i].order = i;
}
return layout; return layout;
} }
function layoutOrderForMobileApp() {}
function clearData() { function clearData() {
configJson = []; configJson = [];
widgetsJson = []; widgetsJson = [];
@@ -832,11 +882,12 @@
} }
function clearParcedFlags() { function clearParcedFlags() {
//chartJsonParced = false; //не сбрасывай эти флаги они живут сами по себе
//chartJsonFlag = {}; //chartJsonFlag = {};
//layoutJsonFlag = {}; //layoutJsonFlag = {};
console.log("[i]", "parced flags cleared");
for (const [key, value] of Object.entries(parcedFlags)) { for (const [key, value] of Object.entries(parcedFlags)) {
parcedFlags[key] = false; parcedFlags[key] = false;
} }
@@ -1172,9 +1223,9 @@
function startUpdate() { function startUpdate() {
if (choosingVersion !== undefined) { if (choosingVersion !== undefined) {
if (choosingVersion === errorsJson.bver) { //if (choosingVersion === errorsJson.bver) {
window.alert("Эта версия уже установленна"); // window.alert("Эта версия уже установленна");
} else { //} else {
if (confirm("Запустить обновление?")) { if (confirm("Запустить обновление?")) {
console.log("start update..."); console.log("start update...");
//запишем выбранную версию в файл на esp //запишем выбранную версию в файл на esp
@@ -1186,7 +1237,7 @@
} else { } else {
console.log("update canceled"); console.log("update canceled");
} }
} //}
} else { } else {
window.alert("Версия не выбрана или сервер недоступен"); window.alert("Версия не выбрана или сервер недоступен");
} }
@@ -1201,6 +1252,11 @@
let p = str.indexOf(found) + found.length; let p = str.indexOf(found) + found.length;
return str.substring(p); return str.substring(p);
} }
function test() {
wsSendMsg(selectedWs, "/test|");
console.log("[i]", "test");
}
</script> </script>
<div class="flex flex-col h-screen bg-gray-50"> <div class="flex flex-col h-screen bg-gray-50">
@@ -1281,6 +1337,9 @@
</Route> </Route>
{#if devMode} {#if devMode}
<Route path="/dev"> <Route path="/dev">
<Card title="Кнопка">
<button class="btn-lg" on:click={() => test()}>{"Тест"}</button>
</Card>
<DevPage show={pageReady.dev} layoutJson={layoutJson} errorsJson={errorsJson} settingsJson={settingsJson} configJson={configJson} itemsJson={itemsJson} paramsJson={paramsJson} /> <DevPage show={pageReady.dev} layoutJson={layoutJson} errorsJson={errorsJson} settingsJson={settingsJson} configJson={configJson} itemsJson={itemsJson} paramsJson={paramsJson} />
</Route> </Route>
{/if} {/if}