This commit is contained in:
Dmitry Borisenko
2022-09-25 21:59:50 +02:00
parent 5343baa75f
commit 8501425296

View File

@@ -144,8 +144,8 @@
//***********************************************************navigation********************************************************/ //***********************************************************navigation********************************************************/
let currentPageName = undefined; let currentPageName = undefined;
var chartJsonBlob = new MyBlobBuilder();
var chartJsonBlob = new MyBlobBuilder();
var layoutJsonBlobArray = []; var layoutJsonBlobArray = [];
class blobToJson { class blobToJson {
@@ -418,7 +418,7 @@
widgetsJsonPacket.handle(data); widgetsJsonPacket.handle(data);
scenarioJsonPacket.handle(data); scenarioJsonPacket.handle(data);
} }
//прием от всех учтройств //прием от всех устройств
//сборщик paramsJson сообщений //сборщик paramsJson сообщений
if (data.includes('"params":"')) { if (data.includes('"params":"')) {
if (IsJsonParse(data)) { if (IsJsonParse(data)) {
@@ -445,21 +445,28 @@
wsSendMsg(ws, "/params|"); wsSendMsg(ws, "/params|");
} }
//сборщик chartJson пакетов //сборщик chartJson пакетов
if (data === "/st/chart.json") { if (data.includes("/st/chart.json|")) {
//let topic = deleteBeforeDelimiter(data, "|");
//console.log("[i] chart", topic);
chartJsonFlag = true; chartJsonFlag = true;
} }
if (data === "/end/chart.json") { if (data.includes("/end/chart.json|")) {
let topic = deleteBeforeDelimiter(data, "|");
console.log("[i] chart", topic);
chartJsonFlag = false; chartJsonFlag = false;
var bb = chartJsonBlob.getBlob(); var bb = chartJsonBlob.getBlob();
let chartJsonReader = new FileReader(); let chartJsonReader = new FileReader();
chartJsonReader.readAsText(bb); chartJsonReader.readAsText(bb);
chartJsonReader.onload = () => { chartJsonReader.onload = () => {
let chartJsonResult = chartJsonReader.result; let chartJsonResult = chartJsonReader.result;
chartJsonResult = chartJsonResult.substring(0, chartJsonResult.length - 1) + "]}"; chartJsonResult = "[" + chartJsonResult.substring(0, chartJsonResult.length - 1) + "]";
if (IsJsonParse(chartJsonResult)) { if (IsJsonParse(chartJsonResult)) {
let arr = JSON.parse(chartJsonResult); let arr = JSON.parse(chartJsonResult);
if (debug) console.log("✔", "chartJson parced", arr.topic); let status = {};
updateWidgetArr(arr); status.status = arr;
status.topic = topic;
apdateWidgetByArray(status);
if (debug) console.log("✔", "chartJson parced", status);
} }
}; };
chartJsonBlob.clear(); chartJsonBlob.clear();
@@ -489,6 +496,7 @@
} }
//принимаем данные от всех устройств //принимаем данные от всех устройств
if (chartJsonFlag) chartJsonBlob.append(event.data); if (chartJsonFlag) chartJsonBlob.append(event.data);
if (!layoutJsonBlobArray[ws]) layoutJsonBlobArray[ws] = new MyBlobBuilder(); if (!layoutJsonBlobArray[ws]) layoutJsonBlobArray[ws] = new MyBlobBuilder();
if (layoutJsonFlag) layoutJsonBlobArray[ws].append(event.data); if (layoutJsonFlag) layoutJsonBlobArray[ws].append(event.data);
} }
@@ -629,6 +637,7 @@
} }
} }
} }
wsSendMsg(ws, "/charts|");
} }
//обработка интервально прилетающих статусов //обработка интервально прилетающих статусов
@@ -645,7 +654,7 @@
} }
//если статус виджета это массив и его нужно накопить //если статус виджета это массив и его нужно накопить
function updateWidgetArr(newStatusJson) { 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) {
@@ -664,7 +673,6 @@
//если ничего не было то просто запишем новый //если ничего не было то просто запишем новый
layoutJson[i].status = newArr; layoutJson[i].status = newArr;
} }
//получен ответ - выключаем красный цвет //получен ответ - выключаем красный цвет
layoutJson[i].sent = false; layoutJson[i].sent = false;
} }
@@ -1166,6 +1174,16 @@
window.alert("Версия не выбрана или сервер недоступен"); window.alert("Версия не выбрана или сервер недоступен");
} }
} }
function selectToMarker(str, found) {
let p = str.indexOf(found);
return str.substring(0, p);
}
function deleteBeforeDelimiter(str, found) {
let p = str.indexOf(found) + found.length;
return str.substring(p);
}
</script> </script>
<div class="flex flex-col h-screen bg-gray-50"> <div class="flex flex-col h-screen bg-gray-50">