сценарии

This commit is contained in:
Dmitry Borisenko
2022-02-23 01:38:43 +01:00
parent 91a6fac56e
commit afb8bb9d00
5 changed files with 62 additions and 25 deletions

18
package-lock.json generated
View File

@@ -1076,9 +1076,9 @@
}
},
"postcss-load-config": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz",
"integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==",
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz",
"integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==",
"dev": true,
"requires": {
"lilconfig": "^2.0.4",
@@ -1246,9 +1246,9 @@
}
},
"rollup": {
"version": "2.67.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.0.tgz",
"integrity": "sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==",
"version": "2.68.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz",
"integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==",
"dev": true,
"requires": {
"fsevents": "~2.3.2"
@@ -1487,9 +1487,9 @@
}
},
"svelte-preprocess": {
"version": "4.10.2",
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.2.tgz",
"integrity": "sha512-aPpkCreSo8EL/y8kJSa1trhiX0oyAtTjlNNM7BNjRAsMJ8Yy2LtqHt0zyd4pQPXt+D4PzbO3qTjjio3kwOxDlA==",
"version": "4.10.3",
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.3.tgz",
"integrity": "sha512-ttw17lJfb/dx2ZJT9sesaXT5l7mPQ9Apx1H496Kli3Hkk7orIRGpOw6rCPkRNzr6ueVPqb4vzodS5x7sBFhKHw==",
"dev": true,
"requires": {
"@types/pug": "^2.0.4",

View File

@@ -12,16 +12,16 @@
"@rollup/plugin-node-resolve": "^11.0.0",
"autoprefixer": "^10.4.2",
"postcss": "^8.4.6",
"postcss-load-config": "^3.1.1",
"postcss-load-config": "^3.1.3",
"prettier": "^2.5.1",
"prettier-plugin-svelte": "^2.6.0",
"rollup": "^2.67.0",
"rollup": "^2.68.0",
"rollup-plugin-css-only": "^3.1.0",
"rollup-plugin-livereload": "^2.0.0",
"rollup-plugin-svelte": "^7.0.0",
"rollup-plugin-terser": "^7.0.0",
"svelte": "^3.46.4",
"svelte-preprocess": "^4.10.2",
"svelte-preprocess": "^4.10.3",
"tailwindcss": "^2.2.19",
"tinro": "^0.5.12"
},

View File

@@ -99,6 +99,10 @@
let incDeviceList = [];
let incDeviceListParced = false;
let scenarioTxt = "";
let scenarioTxtFlag = false;
let scenarioTxtParced = false;
let deviceList = [];
deviceList = [
{
@@ -151,6 +155,8 @@
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];
@@ -283,15 +289,15 @@
deviceList = combineArrays(deviceList, incDeviceList);
}
firstDevListRequest = false;
deviceList.sort(function (a, b) {
if (a.name < b.name) {
return -1;
}
if (a.name > b.name) {
return 1;
}
return 0;
});
//deviceList.sort(function (a, b) {
// if (a.name < b.name) {
// return -1;
// }
// if (a.name > b.name) {
// return 1;
// }
// return 0;
//});
deviceList = deviceList;
whenDeviceListWasUpdated();
connectToAllDevices();
@@ -358,6 +364,24 @@
}
//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 пакетов========================================
if (data === "/st/config.json") {
configJsonFlag = true;
@@ -448,6 +472,7 @@
if (widgetsJsonFlag) widgetsJsonBlob.append(event.data);
if (itemsJsonFlag) itemsJsonBlob.append(event.data);
if (layoutJsonFlag) layoutJsonBlob.append(event.data);
if (scenarioTxtFlag) scenarioTxtBlob.append(event.data);
}
}
});
@@ -472,7 +497,7 @@
wigetsUpdate();
dashReady = true;
}
if (currentPageName === "/config|" && itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced) {
if (currentPageName === "/config|" && itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced && scenarioTxtParced) {
clearParcedFlags();
if (debug) console.log("✔✔", "config data parced");
configReady = true;
@@ -498,6 +523,7 @@
function saveConfig() {
wsSendMsg(selectedWs, "/tuoyal|" + JSON.stringify(generateLayout()));
wsSendMsg(selectedWs, "/gifnoc|" + JSON.stringify(configJson));
wsSendMsg(selectedWs, "/oiranecs|" + scenarioTxt);
clearData();
sendCurrentPageName();
}
@@ -598,6 +624,9 @@
coreMessages = [];
scenarioTxt = "";
scenarioTxtBlob.clear();
dashReady = false;
configReady = false;
connectionReady = false;
@@ -620,6 +649,7 @@
paramsJsonParced = false;
statusJsonParced = false;
incDeviceListParced = false;
scenarioTxtParced = false;
}
function wsPush(ws, topic, status) {
@@ -1070,7 +1100,7 @@
<DashboardPage show={dashReady} layoutJson={layoutJson} pages={pages} wsPush={(ws, topic, status) => wsPush(ws, topic, status)} />
</Route>
<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 path="/connection">
<ConnectionPage show={connectionReady} rebootEsp={() => rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} />

View File

@@ -10,6 +10,8 @@
export let show;
export let scenarioTxt;
let itemsJsonBind = 0;
let debug = true;
@@ -47,7 +49,7 @@
{#if show}
<div class="grd-1col1">
<Card>
<Card title="Конфигуратор">
<div class="grd-2col2">
<select class="slct-lg" bind:value={itemsJsonBind} on:change={() => elementsDropdownChange()}>
{#each itemsJson as item}
@@ -114,6 +116,11 @@
{/each}
</tbody>
</table>
</Card>
</div>
<div class="grd-1col1">
<Card title="Сценарии">
<textarea bind:value={scenarioTxt} class="ipt-big h-80 w-full" />
<div class="grd-2col1">
<button class="btn-lg" on:click={() => saveConfig()}>{"Сохранить"}</button>
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>

View File

@@ -245,7 +245,7 @@
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Причина перезагрузки</p>
</div>
<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>
<button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button>