diff --git a/package-lock.json b/package-lock.json index ddb0d18..c117f44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -200,17 +200,17 @@ "dev": true }, "autoprefixer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", - "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", "dev": true, "requires": { - "browserslist": "^4.17.5", - "caniuse-lite": "^1.0.30001272", - "fraction.js": "^4.1.1", + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", - "postcss-value-parser": "^4.1.0" + "postcss-value-parser": "^4.2.0" } }, "balanced-match": { @@ -245,13 +245,13 @@ } }, "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -294,9 +294,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001286", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", - "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "version": "1.0.30001307", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", + "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", "dev": true }, "chalk": { @@ -433,9 +433,9 @@ "dev": true }, "daisyui": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-1.20.0.tgz", - "integrity": "sha512-vHXw/M9KRIkdPE6r2KSqfGNg/evoCXyZFsGZQDi4PNDOlP7wL+3YmPev5M+CvmviB2kXhorekQXpulbTTqLAZQ==" + "version": "1.25.4", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-1.25.4.tgz", + "integrity": "sha512-Y9DrFYjjfwK09Fc8/05DhpWgwqhqRuhuH4gMdQxCeZ9dLJ82y5xb6kvwLuK1cWLfCckDOWk3reEKXsciaMHyAw==" }, "deepmerge": { "version": "4.2.2", @@ -479,9 +479,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.16", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz", - "integrity": "sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA==", + "version": "1.4.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", + "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", "dev": true }, "error-ex": { @@ -670,15 +670,6 @@ "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, - "import-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", - "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", - "dev": true, - "requires": { - "import-from": "^3.0.0" - } - }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -689,23 +680,6 @@ "resolve-from": "^4.0.0" } }, - "import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -852,9 +826,9 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, "lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", "dev": true }, "lines-and-columns": { @@ -976,9 +950,9 @@ "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==" }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "node-emoji": { @@ -1081,14 +1055,14 @@ "dev": true }, "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", "dev": true, "requires": { - "nanoid": "^3.1.30", + "nanoid": "^3.2.0", "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" + "source-map-js": "^1.0.2" } }, "postcss-js": { @@ -1102,13 +1076,12 @@ } }, "postcss-load-config": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", - "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz", + "integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==", "dev": true, "requires": { - "import-cwd": "^3.0.0", - "lilconfig": "^2.0.3", + "lilconfig": "^2.0.4", "yaml": "^1.10.2" } }, @@ -1144,9 +1117,9 @@ "dev": true }, "prettier-plugin-svelte": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.5.1.tgz", - "integrity": "sha512-IhZUcqr7Bg4LY15d87t9lDr7EyC0IPehkzH5ya5igG8zYwf3UYaYDFnVW2mckREaZyLREcH9YOouesmt4f5Ozg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.6.0.tgz", + "integrity": "sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==", "dev": true }, "pretty-hrtime": { @@ -1273,9 +1246,9 @@ } }, "rollup": { - "version": "2.62.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.62.0.tgz", - "integrity": "sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==", + "version": "2.67.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.0.tgz", + "integrity": "sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -1452,9 +1425,9 @@ "dev": true }, "source-map-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-support": { @@ -1500,9 +1473,9 @@ } }, "svelte": { - "version": "3.44.3", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.44.3.tgz", - "integrity": "sha512-aGgrNCip5PQFNfq9e9tmm7EYxWLVHoFsEsmKrtOeRD8dmoGDdyTQ+21xd7qgFd8MNdKGSYvg7F9dr+Tc0yDymg==" + "version": "3.46.4", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.46.4.tgz", + "integrity": "sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==" }, "svelte-frappe-charts": { "version": "1.9.1", @@ -1514,9 +1487,9 @@ } }, "svelte-preprocess": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.1.tgz", - "integrity": "sha512-NSNloaylf+o9UeyUR2KvpdxrAyMdHl3U7rMnoP06/sG0iwJvlUM4TpMno13RaNqovh4AAoGsx1jeYcIyuGUXMw==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.2.tgz", + "integrity": "sha512-aPpkCreSo8EL/y8kJSa1trhiX0oyAtTjlNNM7BNjRAsMJ8Yy2LtqHt0zyd4pQPXt+D4PzbO3qTjjio3kwOxDlA==", "dev": true, "requires": { "@types/pug": "^2.0.4", diff --git a/package.json b/package.json index 314ba73..6df4174 100644 --- a/package.json +++ b/package.json @@ -10,23 +10,23 @@ "devDependencies": { "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-node-resolve": "^11.0.0", - "autoprefixer": "^10.4.0", - "postcss": "^8.4.5", - "postcss-load-config": "^3.1.0", + "autoprefixer": "^10.4.2", + "postcss": "^8.4.6", + "postcss-load-config": "^3.1.1", "prettier": "^2.5.1", - "prettier-plugin-svelte": "^2.5.1", - "rollup": "^2.62.0", + "prettier-plugin-svelte": "^2.6.0", + "rollup": "^2.67.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.44.3", - "svelte-preprocess": "^4.10.1", + "svelte": "^3.46.4", + "svelte-preprocess": "^4.10.2", "tailwindcss": "^2.2.19", "tinro": "^0.5.12" }, "dependencies": { - "daisyui": "^1.20.0", + "daisyui": "^1.25.4", "sirv-cli": "^1.0.14", "svelte-frappe-charts": "^1.9.1" } diff --git a/src/App.svelte b/src/App.svelte index 8e5c9cb..70d07f8 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -6,6 +6,14 @@ router.mode.hash(); // enables hash navigation method //router.mode.memory(); // enables in-memory navigation method import Chart from "svelte-frappe-charts"; + //import { SvelteToast, toast } from "@zerodevx/svelte-toast"; + + //const app = new SvelteToast({ + // target: document.body, + // props: { + // options: {}, + // }, + //}); import Card from "./components/Card.svelte"; import Modal from "./components/Modal.svelte"; @@ -50,20 +58,28 @@ //configuration let configJson = []; let configJsonFlag = false; + let configJsonParced = false; let widgetsJson = []; let widgetsJsonFlag = false; + let widgetsJsonParced = false; let itemsJson = []; let itemsJsonFlag = false; + let itemsJsonParced = false; let itemsJsonBind = 0; let layoutJson = []; let layoutJsonFlag = false; + let layoutJsonParced = false; let settingsJson = {}; let settingsJsonFlag = false; + let settingsJsonParced = false; + + let ssidJson = {}; + let ssidJsonParced = false; //web sockets let socket = []; @@ -75,12 +91,14 @@ let coreMessages = []; let wsSelected = undefined; + let oneOfJsonPackageError = false; + deviceList = [ { name: "Устройство 1", id: "987654321", ip: myip, - //ip: "192.168.88.235", + //ip: "192.168.8.196", status: false, }, ]; @@ -113,6 +131,7 @@ var itemsJsonBlob = new MyBlobBuilder(); var layoutJsonBlob = new MyBlobBuilder(); var settingsJsonBlob = new MyBlobBuilder(); + router.subscribe(handleNavigation); function handleNavigation() { @@ -222,16 +241,26 @@ let statusJson = JSON.parse(data); udatelayoutJson(statusJson); wigetsUpdate(); - if (debug) console.log("[i]", "status: ", statusJson); + if (debug) console.log("[i]", "status json parced: ", statusJson); + } + } + //сборщик ssidJson сообщений====================================== + if (data.includes("ssid")) { + if (IsJsonParse(data)) { + ssidJson = JSON.parse(data); + delete ssidJson.ssid; + ssidJson = ssidJson; + ssidJsonParced = true; + if (debug) console.log("[i]", "ssid json parced"); } } //сборщик configJson пакетов======================================== if (data === "/st/config.json") { - if (debug) console.log("[i]", "configJson start!"); + //if (debug) console.log("[i]", "configJson start!"); configJsonFlag = true; } if (data === "/end/config.json") { - if (debug) console.log("[i]", "configJson end!"); + //if (debug) console.log("[i]", "configJson end!"); configJsonFlag = false; var bb = configJsonBlob.getBlob(); let configJsonReader = new FileReader(); @@ -241,17 +270,18 @@ if (IsJsonParse(configJsonResult)) { configJson = JSON.parse(configJsonResult); configJson = configJson; + configJsonParced = true; if (debug) console.log("[i]", "configJson parced!"); } }; } //сборщик widgetsJson пакетов======================================== if (data === "/st/widgets.json") { - if (debug) console.log("[i]", "widgetsJson start!"); + //if (debug) console.log("[i]", "widgetsJson start!"); widgetsJsonFlag = true; } if (data === "/end/widgets.json") { - if (debug) console.log("[i]", "widgetsJson end!"); + //if (debug) console.log("[i]", "widgetsJson end!"); widgetsJsonFlag = false; var bb = widgetsJsonBlob.getBlob(); let widgetsJsonReader = new FileReader(); @@ -261,17 +291,18 @@ if (IsJsonParse(widgetsJsonResult)) { widgetsJson = JSON.parse(widgetsJsonResult); widgetsJson = widgetsJson; + widgetsJsonParced = true; if (debug) console.log("[i]", "widgetsJson parced!"); } }; } //сборщик itemsJson пакетов======================================== if (data === "/st/items.json") { - if (debug) console.log("[i]", "itemsJson start!"); + //if (debug) console.log("[i]", "itemsJson start!"); itemsJsonFlag = true; } if (data === "/end/items.json") { - if (debug) console.log("[i]", "itemsJson end!"); + //if (debug) console.log("[i]", "itemsJson end!"); itemsJsonFlag = false; var bb = itemsJsonBlob.getBlob(); let itemsJsonReader = new FileReader(); @@ -281,17 +312,18 @@ if (IsJsonParse(itemsJsonResult)) { itemsJson = JSON.parse(itemsJsonResult); itemsJson = itemsJson; + itemsJsonParced = true; if (debug) console.log("[i]", "itemsJson parced!"); } }; } //сборщик layoutJson пакетов======================================== if (data === "/st/layout.json") { - if (debug) console.log("[i]", "layoutJson start!"); + //if (debug) console.log("[i]", "layoutJson start!"); layoutJsonFlag = true; } if (data === "/end/layout.json") { - if (debug) console.log("[i]", "layoutJson end!"); + //if (debug) console.log("[i]", "layoutJson end!"); layoutJsonFlag = false; var bb = layoutJsonBlob.getBlob(); let layoutJsonReader = new FileReader(); @@ -302,17 +334,18 @@ layoutJson = JSON.parse(layoutJsonResult); layoutJson = layoutJson; wigetsUpdate(); + layoutJsonParced = true; if (debug) console.log("[i]", "layoutJson parced!"); } }; } //сборщик settingsJson пакетов======================================== if (data === "/st/settings.json") { - if (debug) console.log("[i]", "settingsJson start!"); + //if (debug) console.log("[i]", "settingsJson start!"); settingsJsonFlag = true; } if (data === "/end/settings.json") { - if (debug) console.log("[i]", "settingsJson end!"); + //if (debug) console.log("[i]", "settingsJson end!"); settingsJsonFlag = false; var bb = settingsJsonBlob.getBlob(); let settingsJsonReader = new FileReader(); @@ -323,6 +356,7 @@ settingsJson = JSON.parse(settingsJsonResult); settingsJson = settingsJson; wigetsUpdate(); + settingsJsonParced = true; if (debug) console.log("[i]", "settingsJson parced!"); } }; @@ -415,6 +449,15 @@ settingsJson = {}; settingsJsonBlob.clear(); + configJsonParced = false; + widgetsJsonParced = false; + itemsJsonParced = false; + layoutJsonParced = false; + settingsJsonParced = false; + ssidJsonParced = false; + + //ssidJson = {}; + if (debug) console.log("[i]", "all app data cleared"); } @@ -548,8 +591,11 @@ try { JSON.parse(str); } catch (e) { + oneOfJsonPackageError = true; + if (debug) console.log("[e]", "json error"); return false; } + oneOfJsonPackageError = false; return true; } @@ -661,6 +707,41 @@ } } + function ssidDropdownClick() { + wsSendMsg(wsSelected, "/scan"); + } + + function returnError() { + let ret = false; + if (!socketConnected || oneOfJsonPackageError) { + ret = true; + } + return ret; + } + + function returnErrorName() { + if (!socketConnected) { + return "Нет соединения"; + } else if (oneOfJsonPackageError) { + return "Ошибка данных"; + } + } + + function configPageStatus() { + if (itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced) { + return true; + } + } + + function pushGreen() { + toast.push("Saved!", { + theme: { + "--toastBackground": "#48BB78", + "--toastProgressBackground": "#2F855A", + }, + }); + } + //*******************************************************initialisation********************************************************************/ onMount(async () => { console.log("[i]", "mounted"); @@ -673,10 +754,10 @@