переписывание api в процессе

This commit is contained in:
Dmitry Borisenko
2022-10-09 14:31:07 +02:00
parent 1d7e7c284c
commit 52fcf36644

View File

@@ -66,15 +66,6 @@
dev: false, dev: false,
}; };
let parcedFlags = {
deviceListJson: false,
ssidJson: false,
errorsJson: false,
settingsJson: false,
statusJson: false,
paramsJson: false,
};
let systemReady = false; let systemReady = false;
//update esp //update esp
@@ -82,21 +73,13 @@
let choosingVersion = undefined; let choosingVersion = undefined;
//JSON Files==================================== //JSON Files====================================
let configJson = [];
let widgetsJson = [];
let itemsJson = []; let itemsJson = [];
let widgetsJson = [];
let configJson = [];
let scenarioTxt = ""; let scenarioTxt = "";
let chartJsonFlag = {};
let layoutJsonFlag = {};
//===============================================
let layoutJson = [];
let settingsJson = {}; let settingsJson = {};
let errorsJson = {};
let ssidJson = {}; let ssidJson = {};
let paramsJson = {}; let errorsJson = {};
let incDeviceList = [];
let deviceList = []; let deviceList = [];
deviceList = [ deviceList = [
{ {
@@ -107,6 +90,30 @@
status: false, status: false,
}, },
]; ];
let incDeviceList = [];
//////////////////////////////////
let layoutJson = [];
let paramsJson = {};
let parsed = {
itemsJson: false,
widgetsJson: false,
configJson: false,
scenarioTxt: false,
settingsJson: false,
ssidJson: false,
incDeviceList: false,
deviceListJson: false,
errorsJson: false,
statusJson: false,
paramsJson: false,
};
let chartJsonFlag = {};
let layoutJsonFlag = {};
//===============================================
//web sockets //web sockets
let socket = []; let socket = [];
@@ -360,68 +367,67 @@
let data = event.data; let data = event.data;
if (ws === selectedWs) { if (ws === selectedWs) {
//сборщик deviceList сообщений //сборщик deviceList сообщений
if (data.includes('devicelist_":"')) { //if (data.includes('devicelist_":"')) {
if (IsJsonParse(data)) { // if (IsJsonParse(data)) {
incDeviceList = JSON.parse(data); // incDeviceList = JSON.parse(data);
incDeviceList = incDeviceList; // incDeviceList = incDeviceList;
if (firstDevListRequest) { // if (firstDevListRequest) {
deviceList = incDeviceList; // deviceList = incDeviceList;
deviceList[0].status = true; // deviceList[0].status = true;
} else { // } else {
deviceList = combineArrays(deviceList, incDeviceList); // deviceList = combineArrays(deviceList, incDeviceList);
} // }
firstDevListRequest = false; // firstDevListRequest = false;
deviceList = deviceList; // deviceList = deviceList;
parcedFlags.deviceListJson = true; // parsed.deviceListJson = true;
if (debug) console.log("✔ S", "deviceList parced"); // if (debug) console.log("✔ S", "deviceList parced");
onParced(); // onParced();
whenDeviceListWasUpdated(); // whenDeviceListWasUpdated();
connectToAllDevices(); // connectToAllDevices();
} // }
} //}
//сборщик ssidJson сообщений //сборщик ssidJson сообщений
if (data.includes('ssids_":"')) { //if (data.includes('ssids_":"')) {
if (IsJsonParse(data)) { // if (IsJsonParse(data)) {
ssidJson = JSON.parse(data); // ssidJson = JSON.parse(data);
ssidJson = ssidJson; // ssidJson = ssidJson;
if (debug) console.log("✔ S", "ssidJson parced"); // if (debug) console.log("✔ S", "ssidJson parced");
parcedFlags.ssidJson = true; // parsed.ssidJson = true;
//
onParced(); // onParced();
} // }
} //}
//сборщик errorsJson сообщений //сборщик errorsJson сообщений
if (data.includes('errors_":"')) { //if (data.includes('errors_":"')) {
if (IsJsonParse(data)) { // if (IsJsonParse(data)) {
errorsJson = JSON.parse(data); // errorsJson = JSON.parse(data);
errorsJson = errorsJson; // errorsJson = errorsJson;
parcedFlags.errorsJson = true; // parsed.errorsJson = true;
if (debug) console.log("✔ S", "errorsJson parced"); // if (debug) console.log("✔ S", "errorsJson parced");
onParced(); // onParced();
} // }
} //}
//сборщик settingsJson сообщений //сборщик settingsJson сообщений
if (data.includes('settings_":"')) { //if (data.includes('settings_":"')) {
if (IsJsonParse(data)) { // if (IsJsonParse(data)) {
settingsJson = JSON.parse(data); // settingsJson = JSON.parse(data);
settingsJson = settingsJson; // settingsJson = settingsJson;
//sortingLayout(); // //sortingLayout();
parcedFlags.settingsJson = true; // parsed.settingsJson = true;
if (debug) console.log("✔ S", "settingsJson parced"); // if (debug) console.log("✔ S", "settingsJson parced");
onParced(); // onParced();
} // }
} //}
//сборщик log сообщений //сборщик log сообщений
if (data.includes("/log|")) { if (data.includes("/log|")) {
data = data.replace("/log|", ""); data = data.replace("/log|", "");
//let msg = data.toString();
addCoreMsg(data); addCoreMsg(data);
} }
//метки начала конца пакетов для Blob--------------------------------------------------------------------------// //метки начала конца пакетов для Blob--------------------------------------------------------------------------//
configJsonPacket.handle(data); //configJsonPacket.handle(data);
itemsJsonPacket.handle(data); //itemsJsonPacket.handle(data);
widgetsJsonPacket.handle(data); //widgetsJsonPacket.handle(data);
scenarioJsonPacket.handle(data); //scenarioJsonPacket.handle(data);
} }
//прием от всех устройств //прием от всех устройств
//сборщик paramsJson сообщений //сборщик paramsJson сообщений
@@ -508,21 +514,7 @@
if (event.data instanceof Blob) { if (event.data instanceof Blob) {
//принимаем данные только для выбранного устройства //принимаем данные только для выбранного устройства
if (ws === selectedWs) { if (ws === selectedWs) {
if (configJsonPacket) configJsonPacket.append(event.data); parseBlob(event.data);
if (itemsJsonPacket) itemsJsonPacket.append(event.data);
if (widgetsJsonPacket) widgetsJsonPacket.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 (!chartJsonBlobArray[chartTopic]) chartJsonBlobArray[chartTopic] = new MyBlobBuilder(); if (!chartJsonBlobArray[chartTopic]) chartJsonBlobArray[chartTopic] = new MyBlobBuilder();
@@ -545,60 +537,188 @@
} }
} }
async function handleBlob(blob) { async function parseBlob(blob) {
let txt = await blob.text(); //получаем заголовок
console.log("txt: ", txt); var blobHeader = blob.slice(0, 6);
////получаем заголовок let header = await blobHeader.text();
//var blobHeader = blob.slice(0, 6);
//let header = await blobHeader.text();
//console.log("header: ", header); //console.log("header: ", header);
////получаем размер //получаем размер
//var blobSize = blob.slice(7, 11); var blobSize = blob.slice(7, 11);
//let size = await blobSize.text(); let size = await blobSize.text();
//console.log("size: ", size); //console.log("size: ", size);
if (header === "itemsj") {
let out = {};
if (await getPayloadAsJson(blob, size, out)) {
itemsJson = out.json;
parsed.itemsJson = true;
console.log("[✔]", "itemsJson: ", itemsJson);
} else {
parsed.itemsJson = false;
console.log("[e]", "itemsJson parse error");
}
}
if (header === "widget") {
let out = {};
if (await getPayloadAsJson(blob, size, out)) {
widgetsJson = out.json;
parsed.widgetsJson = true;
console.log("[✔]", "widgetsJson: ", widgetsJson);
} else {
parsed.widgetsJson = false;
console.log("[e]", "widgetsJson parse error");
}
}
if (header === "config") {
let out = {};
if (await getPayloadAsJson(blob, size, out)) {
configJson = out.json;
parsed.configJson = true;
console.log("[✔]", "configJson: ", configJson);
} else {
parsed.configJson = false;
console.log("[e]", "configJson parse error");
}
}
if (header === "scenar") {
scenarioTxt = await getPayloadAsTxt(blob, size);
console.log("[i]", "scenarioTxt: ", scenarioTxt);
}
if (header === "settin") {
let out = {};
if (await getPayloadAsJson(blob, size, out)) {
settingsJson = out.json;
parsed.settingsJson = true;
console.log("[✔]", "settingsJson: ", settingsJson);
} else {
parsed.settingsJson = false;
console.log("[e]", "settingsJson parse error");
}
}
if (header === "ssidli") {
let out = {};
if (await getPayloadAsJson(blob, size, out)) {
ssidJson = out.json;
parsed.ssidJson = true;
console.log("[✔]", "ssidJson: ", ssidJson);
} else {
parsed.ssidJson = false;
console.log("[e]", "ssidJson parse error");
}
}
if (header === "errors") {
let out = {};
if (await getPayloadAsJson(blob, size, out)) {
errorsJson = out.json;
parsed.errorsJson = true;
console.log("[✔]", "errorsJson: ", errorsJson);
} else {
parsed.errorsJson = false;
console.log("[e]", "errorsJson parse error");
}
}
if (header === "devlis") {
let out = {};
if (await getPayloadAsJson(blob, size, out)) {
incDeviceList = out.json;
parsed.incDeviceList = true;
console.log("[✔]", "incDeviceList: ", incDeviceList);
handleDeviseList();
} else {
parsed.incDeviceList = false;
console.log("[e]", "incDeviceList parse error");
}
}
onParced();
}
async function getJsonAsJson(blob, size, out) {
let partBlob = blob.slice(12, size);
let txt = await partBlob.text();
try {
out.json = JSON.parse(txt);
out.parse = true;
} catch (e) {
if (debug) console.log("[e]", "json parce error: ", txt);
out.parse = false;
}
return out.parse;
}
async function getPayloadAsJson(blob, size, out) {
let partBlob = blob.slice(size, blob.length);
let txt = await partBlob.text();
try {
out.json = JSON.parse(txt);
out.parse = true;
} catch (e) {
if (debug) console.log("[e]", "json parse error: ", txt);
out.parse = false;
}
return out.parse;
}
async function getPayloadAsTxt(blob, size) {
let payloadBlob = blob.slice(size, blob.length);
let payload = await payloadBlob.text();
return payload;
} }
async function onParced() { async function onParced() {
if (currentPageName === "/|") { //if (currentPageName === "/|") {
clearParcedFlags(); // clearParcedFlags();
if (debug) console.log("✔", "dashboard data received"); // if (debug) console.log("✔", "dashboard data received");
pageReady.dash = true; // pageReady.dash = true;
} //}
if (currentPageName === "/config|" && itemsJsonPacket.isParced && widgetsJsonPacket.isParced && configJsonPacket.isParced && scenarioJsonPacket.isParced && parcedFlags.settingsJson) {
clearParcedFlags();
itemsJson = itemsJsonPacket.getData;
widgetsJson = widgetsJsonPacket.getData;
configJson = configJsonPacket.getData;
scenarioTxt = scenarioJsonPacket.getData;
if (currentPageName === "/config|" && parsed.itemsJson && parsed.widgetsJson && parsed.configJson && parsed.settingsJson) {
clearParcedFlags();
pageReady.config = true; pageReady.config = true;
if (debug) console.log("✔✔", "config page parced"); if (debug) console.log("✔✔", "config page parced");
} }
if (currentPageName === "/connection|" && parcedFlags.ssidJson && parcedFlags.settingsJson && parcedFlags.errorsJson) { if (currentPageName === "/connection|" && parsed.ssidJson && parsed.settingsJson && parsed.errorsJson) {
clearParcedFlags(); clearParcedFlags();
if (debug) console.log("✔✔", "connection page parced"); if (debug) console.log("✔✔", "connection page parced");
pageReady.connection = true; pageReady.connection = true;
} }
if (currentPageName === "/list|" && parcedFlags.deviceListJson) {
if (currentPageName === "/list|" && parsed.deviceListJson) {
clearParcedFlags(); clearParcedFlags();
if (debug) console.log("✔✔", "list page parced"); if (debug) console.log("✔✔", "list page parced");
pageReady.list = true; pageReady.list = true;
} }
if (currentPageName === "/system|" && parcedFlags.errorsJson && parcedFlags.settingsJson) {
if (currentPageName === "/system|" && parsed.errorsJson && parsed.settingsJson) {
clearParcedFlags(); clearParcedFlags();
getVersionsList(); getVersionsList();
if (debug) console.log("✔✔", "system page parced"); if (debug) console.log("✔✔", "system page parced");
pageReady.system = true; pageReady.system = true;
} }
if (currentPageName === "/dev|" && parcedFlags.errorsJson && parcedFlags.settingsJson && configJsonPacket.isParced && itemsJsonPacket.isParced) {
clearParcedFlags(); // if (currentPageName === "/dev|" && parsed.errorsJson && parsed.settingsJson && configJsonPacket.isParced && itemsJsonPacket.isParced) {
configJson = configJsonPacket.getData; // clearParcedFlags();
itemsJson = itemsJsonPacket.getData; // configJson = configJsonPacket.getData;
if (debug) console.log("✔✔", "dev page parced"); // itemsJson = itemsJsonPacket.getData;
pageReady.dev = true; // if (debug) console.log("✔✔", "dev page parced");
// pageReady.dev = true;
// }
}
function handleDeviseList() {
if (firstDevListRequest) {
deviceList = incDeviceList;
deviceList[0].status = true;
} else {
deviceList = combineArrays(deviceList, incDeviceList);
} }
firstDevListRequest = false;
deviceList = deviceList;
parsed.deviceListJson = true;
if (debug) console.log("[✔]", "deviceList parced");
onParced();
whenDeviceListWasUpdated();
connectToAllDevices();
} }
//***********************************************************dashboard***************************************************************/ //***********************************************************dashboard***************************************************************/
@@ -888,8 +1008,8 @@
console.log("[i]", "parced flags cleared"); console.log("[i]", "parced flags cleared");
for (const [key, value] of Object.entries(parcedFlags)) { for (const [key, value] of Object.entries(parsed)) {
parcedFlags[key] = false; parsed[key] = false;
} }
clearFlags(); clearFlags();
} }
@@ -1254,8 +1374,8 @@
} }
function test() { function test() {
wsSendMsg(selectedWs, "/test|"); //wsSendMsg(selectedWs, "/test|");
console.log("[i]", "test"); //console.log("[i]", "test");
} }
</script> </script>