mirror of
https://github.com/IoTManagerProject/IoTManagerWeb.git
synced 2026-03-26 23:12:34 +03:00
сценарии
This commit is contained in:
18
package-lock.json
generated
18
package-lock.json
generated
@@ -1076,9 +1076,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-load-config": {
|
"postcss-load-config": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz",
|
||||||
"integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==",
|
"integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"lilconfig": "^2.0.4",
|
"lilconfig": "^2.0.4",
|
||||||
@@ -1246,9 +1246,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rollup": {
|
"rollup": {
|
||||||
"version": "2.67.0",
|
"version": "2.68.0",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.0.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz",
|
||||||
"integrity": "sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==",
|
"integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fsevents": "~2.3.2"
|
"fsevents": "~2.3.2"
|
||||||
@@ -1487,9 +1487,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"svelte-preprocess": {
|
"svelte-preprocess": {
|
||||||
"version": "4.10.2",
|
"version": "4.10.3",
|
||||||
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.3.tgz",
|
||||||
"integrity": "sha512-aPpkCreSo8EL/y8kJSa1trhiX0oyAtTjlNNM7BNjRAsMJ8Yy2LtqHt0zyd4pQPXt+D4PzbO3qTjjio3kwOxDlA==",
|
"integrity": "sha512-ttw17lJfb/dx2ZJT9sesaXT5l7mPQ9Apx1H496Kli3Hkk7orIRGpOw6rCPkRNzr6ueVPqb4vzodS5x7sBFhKHw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/pug": "^2.0.4",
|
"@types/pug": "^2.0.4",
|
||||||
|
|||||||
@@ -12,16 +12,16 @@
|
|||||||
"@rollup/plugin-node-resolve": "^11.0.0",
|
"@rollup/plugin-node-resolve": "^11.0.0",
|
||||||
"autoprefixer": "^10.4.2",
|
"autoprefixer": "^10.4.2",
|
||||||
"postcss": "^8.4.6",
|
"postcss": "^8.4.6",
|
||||||
"postcss-load-config": "^3.1.1",
|
"postcss-load-config": "^3.1.3",
|
||||||
"prettier": "^2.5.1",
|
"prettier": "^2.5.1",
|
||||||
"prettier-plugin-svelte": "^2.6.0",
|
"prettier-plugin-svelte": "^2.6.0",
|
||||||
"rollup": "^2.67.0",
|
"rollup": "^2.68.0",
|
||||||
"rollup-plugin-css-only": "^3.1.0",
|
"rollup-plugin-css-only": "^3.1.0",
|
||||||
"rollup-plugin-livereload": "^2.0.0",
|
"rollup-plugin-livereload": "^2.0.0",
|
||||||
"rollup-plugin-svelte": "^7.0.0",
|
"rollup-plugin-svelte": "^7.0.0",
|
||||||
"rollup-plugin-terser": "^7.0.0",
|
"rollup-plugin-terser": "^7.0.0",
|
||||||
"svelte": "^3.46.4",
|
"svelte": "^3.46.4",
|
||||||
"svelte-preprocess": "^4.10.2",
|
"svelte-preprocess": "^4.10.3",
|
||||||
"tailwindcss": "^2.2.19",
|
"tailwindcss": "^2.2.19",
|
||||||
"tinro": "^0.5.12"
|
"tinro": "^0.5.12"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -99,6 +99,10 @@
|
|||||||
let incDeviceList = [];
|
let incDeviceList = [];
|
||||||
let incDeviceListParced = false;
|
let incDeviceListParced = false;
|
||||||
|
|
||||||
|
let scenarioTxt = "";
|
||||||
|
let scenarioTxtFlag = false;
|
||||||
|
let scenarioTxtParced = false;
|
||||||
|
|
||||||
let deviceList = [];
|
let deviceList = [];
|
||||||
deviceList = [
|
deviceList = [
|
||||||
{
|
{
|
||||||
@@ -151,6 +155,8 @@
|
|||||||
var widgetsJsonBlob = new MyBlobBuilder();
|
var widgetsJsonBlob = new MyBlobBuilder();
|
||||||
var itemsJsonBlob = new MyBlobBuilder();
|
var itemsJsonBlob = new MyBlobBuilder();
|
||||||
var layoutJsonBlob = new MyBlobBuilder();
|
var layoutJsonBlob = new MyBlobBuilder();
|
||||||
|
var layoutJsonBlob = new MyBlobBuilder();
|
||||||
|
var scenarioTxtBlob = new MyBlobBuilder();
|
||||||
|
|
||||||
//var blobArr = new MyBlobBuilder()[10];
|
//var blobArr = new MyBlobBuilder()[10];
|
||||||
|
|
||||||
@@ -283,15 +289,15 @@
|
|||||||
deviceList = combineArrays(deviceList, incDeviceList);
|
deviceList = combineArrays(deviceList, incDeviceList);
|
||||||
}
|
}
|
||||||
firstDevListRequest = false;
|
firstDevListRequest = false;
|
||||||
deviceList.sort(function (a, b) {
|
//deviceList.sort(function (a, b) {
|
||||||
if (a.name < b.name) {
|
// if (a.name < b.name) {
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
if (a.name > b.name) {
|
// if (a.name > b.name) {
|
||||||
return 1;
|
// return 1;
|
||||||
}
|
// }
|
||||||
return 0;
|
// return 0;
|
||||||
});
|
//});
|
||||||
deviceList = deviceList;
|
deviceList = deviceList;
|
||||||
whenDeviceListWasUpdated();
|
whenDeviceListWasUpdated();
|
||||||
connectToAllDevices();
|
connectToAllDevices();
|
||||||
@@ -358,6 +364,24 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
//BLOB==============================================================
|
//BLOB==============================================================
|
||||||
|
//сборщик scenario.txt пакетов======================================
|
||||||
|
if (data === "/st/scenario.txt") {
|
||||||
|
scenarioTxtFlag = true;
|
||||||
|
}
|
||||||
|
if (data === "/end/scenario.txt") {
|
||||||
|
scenarioTxtFlag = false;
|
||||||
|
var bb = scenarioTxtBlob.getBlob();
|
||||||
|
let scenarioTxtReader = new FileReader();
|
||||||
|
scenarioTxtReader.readAsText(bb);
|
||||||
|
scenarioTxtReader.onload = () => {
|
||||||
|
let scenarioTxtResult = scenarioTxtReader.result;
|
||||||
|
scenarioTxt = scenarioTxtResult;
|
||||||
|
scenarioTxt = scenarioTxt;
|
||||||
|
scenarioTxtParced = true;
|
||||||
|
if (debug) console.log("✔", "scenarioTxt parced");
|
||||||
|
onParced("scenario");
|
||||||
|
};
|
||||||
|
}
|
||||||
//сборщик configJson пакетов========================================
|
//сборщик configJson пакетов========================================
|
||||||
if (data === "/st/config.json") {
|
if (data === "/st/config.json") {
|
||||||
configJsonFlag = true;
|
configJsonFlag = true;
|
||||||
@@ -448,6 +472,7 @@
|
|||||||
if (widgetsJsonFlag) widgetsJsonBlob.append(event.data);
|
if (widgetsJsonFlag) widgetsJsonBlob.append(event.data);
|
||||||
if (itemsJsonFlag) itemsJsonBlob.append(event.data);
|
if (itemsJsonFlag) itemsJsonBlob.append(event.data);
|
||||||
if (layoutJsonFlag) layoutJsonBlob.append(event.data);
|
if (layoutJsonFlag) layoutJsonBlob.append(event.data);
|
||||||
|
if (scenarioTxtFlag) scenarioTxtBlob.append(event.data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -472,7 +497,7 @@
|
|||||||
wigetsUpdate();
|
wigetsUpdate();
|
||||||
dashReady = true;
|
dashReady = true;
|
||||||
}
|
}
|
||||||
if (currentPageName === "/config|" && itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced) {
|
if (currentPageName === "/config|" && itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced && scenarioTxtParced) {
|
||||||
clearParcedFlags();
|
clearParcedFlags();
|
||||||
if (debug) console.log("✔✔", "config data parced");
|
if (debug) console.log("✔✔", "config data parced");
|
||||||
configReady = true;
|
configReady = true;
|
||||||
@@ -498,6 +523,7 @@
|
|||||||
function saveConfig() {
|
function saveConfig() {
|
||||||
wsSendMsg(selectedWs, "/tuoyal|" + JSON.stringify(generateLayout()));
|
wsSendMsg(selectedWs, "/tuoyal|" + JSON.stringify(generateLayout()));
|
||||||
wsSendMsg(selectedWs, "/gifnoc|" + JSON.stringify(configJson));
|
wsSendMsg(selectedWs, "/gifnoc|" + JSON.stringify(configJson));
|
||||||
|
wsSendMsg(selectedWs, "/oiranecs|" + scenarioTxt);
|
||||||
clearData();
|
clearData();
|
||||||
sendCurrentPageName();
|
sendCurrentPageName();
|
||||||
}
|
}
|
||||||
@@ -598,6 +624,9 @@
|
|||||||
|
|
||||||
coreMessages = [];
|
coreMessages = [];
|
||||||
|
|
||||||
|
scenarioTxt = "";
|
||||||
|
scenarioTxtBlob.clear();
|
||||||
|
|
||||||
dashReady = false;
|
dashReady = false;
|
||||||
configReady = false;
|
configReady = false;
|
||||||
connectionReady = false;
|
connectionReady = false;
|
||||||
@@ -620,6 +649,7 @@
|
|||||||
paramsJsonParced = false;
|
paramsJsonParced = false;
|
||||||
statusJsonParced = false;
|
statusJsonParced = false;
|
||||||
incDeviceListParced = false;
|
incDeviceListParced = false;
|
||||||
|
scenarioTxtParced = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function wsPush(ws, topic, status) {
|
function wsPush(ws, topic, status) {
|
||||||
@@ -1070,7 +1100,7 @@
|
|||||||
<DashboardPage show={dashReady} layoutJson={layoutJson} pages={pages} wsPush={(ws, topic, status) => wsPush(ws, topic, status)} />
|
<DashboardPage show={dashReady} layoutJson={layoutJson} pages={pages} wsPush={(ws, topic, status) => wsPush(ws, topic, status)} />
|
||||||
</Route>
|
</Route>
|
||||||
<Route path="/config">
|
<Route path="/config">
|
||||||
<ConfigPage show={configReady} configJson={configJson} widgetsJson={widgetsJson} itemsJson={itemsJson} saveConfig={() => saveConfig()} rebootEsp={() => rebootEsp()} />
|
<ConfigPage show={configReady} configJson={configJson} widgetsJson={widgetsJson} itemsJson={itemsJson} bind:scenarioTxt saveConfig={() => saveConfig()} rebootEsp={() => rebootEsp()} />
|
||||||
</Route>
|
</Route>
|
||||||
<Route path="/connection">
|
<Route path="/connection">
|
||||||
<ConnectionPage show={connectionReady} rebootEsp={() => rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} />
|
<ConnectionPage show={connectionReady} rebootEsp={() => rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} />
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
export let show;
|
export let show;
|
||||||
|
|
||||||
|
export let scenarioTxt;
|
||||||
|
|
||||||
let itemsJsonBind = 0;
|
let itemsJsonBind = 0;
|
||||||
let debug = true;
|
let debug = true;
|
||||||
|
|
||||||
@@ -47,7 +49,7 @@
|
|||||||
|
|
||||||
{#if show}
|
{#if show}
|
||||||
<div class="grd-1col1">
|
<div class="grd-1col1">
|
||||||
<Card>
|
<Card title="Конфигуратор">
|
||||||
<div class="grd-2col2">
|
<div class="grd-2col2">
|
||||||
<select class="slct-lg" bind:value={itemsJsonBind} on:change={() => elementsDropdownChange()}>
|
<select class="slct-lg" bind:value={itemsJsonBind} on:change={() => elementsDropdownChange()}>
|
||||||
{#each itemsJson as item}
|
{#each itemsJson as item}
|
||||||
@@ -114,6 +116,11 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
<div class="grd-1col1">
|
||||||
|
<Card title="Сценарии">
|
||||||
|
<textarea bind:value={scenarioTxt} class="ipt-big h-80 w-full" />
|
||||||
<div class="grd-2col1">
|
<div class="grd-2col1">
|
||||||
<button class="btn-lg" on:click={() => saveConfig()}>{"Сохранить"}</button>
|
<button class="btn-lg" on:click={() => saveConfig()}>{"Сохранить"}</button>
|
||||||
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>
|
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>
|
||||||
|
|||||||
@@ -245,7 +245,7 @@
|
|||||||
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Причина перезагрузки</p>
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Причина перезагрузки</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-center w-1/3 text-sm">
|
<div class="flex justify-center w-1/3 text-sm">
|
||||||
<p class="{errorsJson.rst.includes('Watchdog') || errorsJson.rst.includes('Exception') ? 'text-red-500' : 'text-green-500'} font-bold text-center truncate">{errorsJson.rst}</p>
|
<p class="{errorsJson.rst.toString().includes('Watchdog') || errorsJson.rst.toString().includes('Exception') ? 'text-red-500' : 'text-green-500'} font-bold text-center truncate">{errorsJson.rst}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button>
|
<button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button>
|
||||||
|
|||||||
Reference in New Issue
Block a user