node-red-contrib-power-saver 3.3.0 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.firebase/hosting.ZG9jcy8udnVlcHJlc3MvZGlzdA.cache +221 -0
- package/.firebaserc +5 -0
- package/.github/workflows/firebase-hosting-merge.yml +20 -0
- package/.github/workflows/firebase-hosting-pull-request.yml +17 -0
- package/CHANGELOG.md +1 -1
- package/README.md +1 -1
- package/docs/.vuepress/clientAppEnhance.js +5 -0
- package/docs/.vuepress/components/BestSaveVerificator.vue +306 -0
- package/docs/.vuepress/components/DonateButtons.vue +87 -0
- package/docs/.vuepress/config.js +40 -7
- package/docs/.vuepress/dist/404.html +24 -6
- package/docs/.vuepress/dist/assets/css/835.styles.c5afb22b.css +1 -0
- package/docs/.vuepress/dist/assets/css/896.styles.21a80cb6.css +1 -0
- package/docs/.vuepress/dist/assets/css/styles.1c48cbd0.css +10 -0
- package/docs/.vuepress/dist/assets/img/best-save-config.79a2f39a.png +0 -0
- package/docs/.vuepress/dist/assets/img/copy-payload-best-save.b9192985.png +0 -0
- package/docs/.vuepress/dist/assets/img/heat-capacitor-temperatureVsPrice.6e74905b.png +0 -0
- package/docs/.vuepress/dist/assets/img/node-ps-strategy-heat-capacitor-cascade-control.2e75ed9e.png +0 -0
- package/docs/.vuepress/dist/assets/img/node-ps-strategy-heat-capacitor-simple-flow-example.29d9bf59.png +0 -0
- package/docs/.vuepress/dist/assets/img/oven-setpoint-calculation.5bda0eec.png +0 -0
- package/docs/.vuepress/dist/assets/img/overshoot-time.b3b5d70e.png +0 -0
- package/docs/.vuepress/dist/assets/js/229.5c5378fa.js +1 -0
- package/docs/.vuepress/dist/assets/js/331.872104cd.js +1 -0
- package/docs/.vuepress/dist/assets/js/405.f4edd94d.js +2 -0
- package/docs/.vuepress/dist/assets/js/{812.79dad458.js.LICENSE.txt → 405.f4edd94d.js.LICENSE.txt} +0 -0
- package/docs/.vuepress/dist/assets/js/490.1e639e05.js +1 -0
- package/docs/.vuepress/dist/assets/js/{491.c183eba3.js → 491.bd938119.js} +1 -1
- package/docs/.vuepress/dist/assets/js/555.d8963d84.js +1 -0
- package/docs/.vuepress/dist/assets/js/811.5f659592.js +1 -0
- package/docs/.vuepress/dist/assets/js/app.999deae8.js +1 -0
- package/docs/.vuepress/dist/assets/js/runtime~app.1774b667.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-0607240a.1304cbb6.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-08683c60.52e94cb6.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-0aca7ba6.cac5d4b9.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.18561f6e.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-1ad821fa.6697a349.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-1b3a0ab8.c6c4e19b.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-1e2b191e.07b8ab21.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-29504124.00be7399.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-30acb564.28af12af.js +1 -0
- package/docs/.vuepress/dist/assets/js/{v-3706649a.d7f73384.js → v-3706649a.c76d575b.js} +1 -1
- package/docs/.vuepress/dist/assets/js/v-4637f9e4.d334c29a.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-4c28314d.8cbb0f9d.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-510ed0d4.14f08cf3.js +1 -0
- package/docs/.vuepress/dist/assets/js/{v-5954bcb2.182daf70.js → v-5954bcb2.dff3fc67.js} +1 -1
- package/docs/.vuepress/dist/assets/js/v-5db8da3a.e5e6d7a6.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-61f728ca.81968036.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-677dfaed.c159b0f4.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-7446a652.88afb5e4.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-7c87f26e.8ed52391.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-84304104.ad4da2d5.js +1 -0
- package/docs/.vuepress/dist/assets/js/{v-8daa1a0e.dde202c9.js → v-8daa1a0e.ed84ca09.js} +1 -1
- package/docs/.vuepress/dist/assets/js/{v-b4a42144.9e5f9728.js → v-b4a42144.9a2a0c9f.js} +1 -1
- package/docs/.vuepress/dist/assets/js/v-e8c55052.b7d52fc6.js +1 -0
- package/docs/.vuepress/dist/assets/js/v-fffb8e28.d09ab959.js +1 -0
- package/docs/.vuepress/dist/changelog/index.html +24 -6
- package/docs/.vuepress/dist/contribute/index.html +24 -6
- package/docs/.vuepress/dist/examples/example-cascade-temperature-control.html +304 -0
- package/docs/.vuepress/dist/examples/example-heat-capacitor.html +247 -0
- package/docs/.vuepress/dist/examples/example-next-schedule-entity.html +28 -10
- package/docs/.vuepress/dist/examples/example-nordpool-current-state.html +25 -8
- package/docs/.vuepress/dist/examples/example-nordpool-events-state.html +25 -7
- package/docs/.vuepress/dist/examples/example-tibber-mqtt.html +25 -8
- package/docs/.vuepress/dist/examples/index.html +24 -6
- package/docs/.vuepress/dist/faq/best-save-viewer.html +33 -0
- package/docs/.vuepress/dist/faq/index.html +24 -6
- package/docs/.vuepress/dist/guide/index.html +25 -7
- package/docs/.vuepress/dist/index.html +24 -6
- package/docs/.vuepress/dist/nodes/index.html +24 -6
- package/docs/.vuepress/dist/nodes/old-power-saver-doc.html +26 -8
- package/docs/.vuepress/dist/nodes/power-saver.html +24 -6
- package/docs/.vuepress/dist/nodes/ps-elvia-add-tariff.html +24 -6
- package/docs/.vuepress/dist/nodes/ps-general-add-tariff.html +24 -6
- package/docs/.vuepress/dist/nodes/ps-receive-price.html +27 -9
- package/docs/.vuepress/dist/nodes/ps-strategy-best-save.html +46 -9
- package/docs/.vuepress/dist/nodes/ps-strategy-heat-capacitor.html +260 -0
- package/docs/.vuepress/dist/nodes/ps-strategy-lowest-price.html +41 -8
- package/docs/.vuepress/dist/nodes/strategy-input.html +25 -7
- package/docs/README.md +4 -1
- package/docs/changelog/README.md +19 -0
- package/docs/contribute/README.md +11 -3
- package/docs/examples/README.md +8 -2
- package/docs/examples/example-cascade-temperature-control.md +346 -0
- package/docs/examples/example-heat-capacitor.md +271 -0
- package/docs/faq/README.md +23 -0
- package/docs/faq/best-save-viewer.md +61 -0
- package/docs/images/copy-payload-best-save.png +0 -0
- package/docs/images/heat-capacitor-temperatureVsPrice.png +0 -0
- package/docs/images/node-ps-strategy-heat-capacitor-cascade-control.png +0 -0
- package/docs/images/node-ps-strategy-heat-capacitor-simple-flow-example.png +0 -0
- package/docs/images/node-ps-strategy-heat-capacitor.png +0 -0
- package/docs/images/oven-setpoint-calculation.png +0 -0
- package/docs/images/overshoot-time.png +0 -0
- package/docs/images/temperature-manipulation-config.png +0 -0
- package/docs/nodes/README.md +7 -1
- package/docs/nodes/ps-strategy-best-save.md +18 -0
- package/docs/nodes/ps-strategy-heat-capacitor.md +346 -0
- package/docs/nodes/ps-strategy-lowest-price.md +14 -0
- package/examples/add-general-tariff.json +103 -0
- package/examples/best-save-for-water-heater.json +140 -0
- package/examples/elvia-add-tariff.json +99 -0
- package/examples/elvia-get-tariff-types.json +58 -0
- package/examples/elvia-get-tariff.json +60 -0
- package/examples/heat-capacitor-for-room-heating.json +186 -0
- package/examples/lowest-price-for-heating-cables.json +159 -0
- package/firebase.json +6 -0
- package/package.json +20 -8
- package/public/404.html +33 -0
- package/public/index.html +89 -0
- package/src/elvia/elvia-tariff.js +2 -1
- package/src/handle-input.js +2 -2
- package/src/strategy-heat-capacitor-functions.js +246 -0
- package/src/strategy-heat-capacitor.html +85 -0
- package/src/strategy-heat-capacitor.js +125 -0
- package/test/data/converted-prices.json +1 -1
- package/test/data/multiple-trades.json +53 -0
- package/test/data/tibber-decreasing-24h.json +101 -0
- package/test/data/tibber-decreasing2-24h.json +101 -0
- package/test/strategy-best-save.test.js +14 -8
- package/test/strategy-heat-capacitor-node.test.js +183 -0
- package/test/strategy-heat-capacitor.test.js +103 -0
- package/test/strategy-lowest-price-functions.test.js +1 -1
- package/test/utils.test.js +0 -2
- package/docs/.vuepress/dist/.nojekyll +0 -0
- package/docs/.vuepress/dist/assets/css/styles.e835bef6.css +0 -8
- package/docs/.vuepress/dist/assets/img/best-save-config.93fa3c21.png +0 -0
- package/docs/.vuepress/dist/assets/js/293.5e967839.js +0 -1
- package/docs/.vuepress/dist/assets/js/812.79dad458.js +0 -2
- package/docs/.vuepress/dist/assets/js/app.49ad6d54.js +0 -1
- package/docs/.vuepress/dist/assets/js/runtime~app.547d0f4e.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-0607240a.661e1808.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-08683c60.a6b9cf5b.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-0aca7ba6.b42fad7f.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.3b37457f.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-1ad821fa.6e2194d0.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-1e2b191e.98cc227b.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-30acb564.f2fcd69f.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-4637f9e4.b320f5e8.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-510ed0d4.3c7e0056.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-5db8da3a.f2de6cb9.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-61f728ca.6fdbbb92.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-677dfaed.0013f083.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-7446a652.d05e2648.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-7c87f26e.1127dcf5.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-e8c55052.8384b053.js +0 -1
- package/docs/.vuepress/dist/assets/js/v-fffb8e28.3406fd88.js +0 -1
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
404.html,1644523149664,02c8d10f139b3bedd3496f42cc673b0927aa6628e1c0499d07bfbe0ad32dfaa3
|
|
2
|
+
euro.png,1644523146031,e6a1d246a05e447333de6e1099b1c3a5ae8ad050b2389e51ff53289e4dc1b8e4
|
|
3
|
+
.git/COMMIT_EDITMSG,1644523150276,286e4fcaf917616edf5674b053ae78c0dd65e626c7075fc3ea0e4a4a5934dcd3
|
|
4
|
+
.git/config,1644523150101,9293b175b921ccc4a4cfc1c245f70600940d48b639a86185201959a7a6acb946
|
|
5
|
+
.git/HEAD,1644523150096,0a82a7459f034a38a724938ef8ab5294be7784a5364b058c89aa3b41697f4874
|
|
6
|
+
.git/description,1644523149900,3cdc7b6a29de07f63b76d16b9911d93468000346945f759d4f6456660b5c113b
|
|
7
|
+
.git/hooks/commit-msg.sample,1644523149959,4df962ba3955944bec38b211351c73f083d7b0e5360a5d3d76a49548e7314f9e
|
|
8
|
+
index.html,1644523148947,a4cd34d4adbb1b015f36d300ffe7e292e616beee6413f135643b56c30ef9d859
|
|
9
|
+
.git/hooks/fsmonitor-watchman.sample,1644523150014,b3931ea5b83e0dfda7200fdf713bba46b1e29a609f4e0aadf123fd5406f14583
|
|
10
|
+
.git/hooks/pre-merge-commit.sample,1644523150054,0479d217dc6329cbba403c8254db7b9ee6c028f62f55db3641b0690373679b25
|
|
11
|
+
.git/hooks/pre-applypatch.sample,1644523150063,defbdbcdbf096439878474d3b12ed4b5a63dec7400ecde5f4b60a496391d64d0
|
|
12
|
+
.git/hooks/post-update.sample,1644523150044,3d5b0c2026371e835c791d4b25099e98b1d507971ed6bfb639ae56a321309aeb
|
|
13
|
+
.git/hooks/pre-commit.sample,1644523149996,c9debccbcaffa725c95e8cfb31e37163d60cbc84c07c85e23fb0fad63778acc3
|
|
14
|
+
.git/hooks/prepare-commit-msg.sample,1644523150034,9b3c070fc0608b04e690a7dd7c17419759fbed06932985aed32e306418e86ed2
|
|
15
|
+
.git/hooks/pre-receive.sample,1644523150024,b703160503002ea73605a1b54a8183989f66e6530c125fbd1595339048ebd856
|
|
16
|
+
.git/hooks/pre-push.sample,1644523150075,ec7dbdf4bb867f5032404e185b8430514836107dacb99d273857f289417ddd13
|
|
17
|
+
.git/index,1644523150275,96b5e971e9767639b9b127b4a7b5a79d0ec078293da5bb915b4eab6cc2f26bb7
|
|
18
|
+
.git/info/exclude,1644523149900,a362e375cc3330f10d115cfeb0f90a325219d80a764d57e2c4873f78d1d0b4f5
|
|
19
|
+
.git/hooks/applypatch-msg.sample,1644523150005,91b94f5feaf0e4d2e6e7808a9188384a4300adf024fa24c48547ee87c64d6558
|
|
20
|
+
.git/logs/HEAD,1644523150282,0785e239694b1b2645be954104e8633d63d8f67c7ef78a3d168384bee96e7fd8
|
|
21
|
+
.git/logs/refs/heads/master,1644523150282,0785e239694b1b2645be954104e8633d63d8f67c7ef78a3d168384bee96e7fd8
|
|
22
|
+
.git/hooks/update.sample,1644523150086,f66202d06c7959d02a35955a052261db5453db0bdb50162c78e1a9860b33013f
|
|
23
|
+
.git/objects/07/9bac81ba245c4cba5e035aa99cc75c9526d45c,1644523150203,33f59d0940ba516a81ce3d8ec7b59396b81780cbfc4065bed1734d3698a5dd7a
|
|
24
|
+
.git/hooks/pre-rebase.sample,1644523149993,b3f2e1f9de52a3895458d3a6f5e5a1ad139f688bcbc358d6e9d31888f7e84829
|
|
25
|
+
.git/objects/0c/f65b4221a19c00fce01e5ee8b59933d96a0872,1644523150221,1ed11a053bece46f38bfcf7874607ffce4751d7d1b3cd51d4da9f2c2b5e7f497
|
|
26
|
+
.git/objects/08/81503e619666400156f8439bd294f2e088db92,1644523150229,e78709bff311bd60717d2fdbc3c344af6b94253753b42b9c4ad71c98fb5106cb
|
|
27
|
+
.git/objects/18/cf64cfb900052a66734c2f4cc85e73a098cc59,1644523150158,1ce405a780f2b5d0ba0c4b25479c37b55de315c9e3cc01aa538058218d9e7582
|
|
28
|
+
.git/objects/23/eed8c898ff91a20052ec080e04d06da2844e3e,1644523150231,f029fa95d5e188de2604f127dd9ccd9576ca415fcd40adb04abde8ee5fefa146
|
|
29
|
+
.git/objects/0c/80c7458b3dedb601ee2090974470f0c6ff5b7c,1644523150153,1ea99e1e101d3c2d9324fca72c5e8e1f7c5832ee4aad484b8e7fbf4682e3a84e
|
|
30
|
+
.git/objects/09/1f58760277006ab5b8057aa1fd68197a7ea4b8,1644523150152,15295a148c0b62750c29dc80d7daa0d583912a60912efaa037da32c4118d33bc
|
|
31
|
+
.git/objects/2e/85f11fe204e5f671e6787a6b34d21735fbe5eb,1644523150238,c402b080f02021ddabe4cb344bb3143b87b3163a1aa80ae22d73417499fc91d7
|
|
32
|
+
.git/objects/1f/e45221e851f1dea87c08f9f0a14592974ab826,1644523150165,f5d5cbd69a4bac54a8dd34da6c883fba0b340cf799da53be8777a11d9230d05a
|
|
33
|
+
.git/objects/34/af6fc705a07a0f980a2e8b113fdf8bd4d51821,1644523150201,4790b3178b54febdc85c8c335fa9435a225b53b336a3ee6ad9ebc6bd7241be65
|
|
34
|
+
.git/objects/31/86fa8cc6b79fa88c6ed9f3b3104be78a11f403,1644523150217,9a3ced60244d5076ce998cd501d3ee1aa70cd1e5a3ffa84e63c958d2021f1d16
|
|
35
|
+
.git/objects/35/495d276217185f406cfb9410cf41bc74406969,1644523150196,25884e9c99cfe643167134b78f4a305643befc6114bf87247a6bc2914759ba18
|
|
36
|
+
.git/objects/2e/1aa8ffdd4259186e627e99c011e4bc9f737c8e,1644523150245,9d802c1042b0f0adb956ee3678019b6894ec7dd6798335376658608ac586bd29
|
|
37
|
+
.git/objects/20/a8f4989641e2007fd71a9acf6c749235502371,1644523150228,ebd98eb6d4ed893362ba21959dcf656b6c60170b219b04b3edcb31093a240ff3
|
|
38
|
+
.git/objects/35/13d266d4c042c9882f588dd3688993388cea5e,1644523150214,7c7d5c9b3c7669b697621c57fd79a05876dac7a6ddfc3d65267664ef53a96956
|
|
39
|
+
.git/objects/39/f996c3d9aa2b1d33e2be650a59b35387aed049,1644523150208,317f2f846669c0bf2a1992bf0f76c5098ce15ab5ef77738cfceb1035ae947d85
|
|
40
|
+
.git/objects/3c/0dccd5a589cf5c90e14058b72c8f0675369be6,1644523150200,d0f9c7d488165c5312b5d337befc5852783683ed19b07757aab6f2772e32b9c3
|
|
41
|
+
.git/objects/3a/11ddb1ab09be2933a7a7e6d452e1021a788b0f,1644523150233,6fa25d454c0e58dffd2c29544b311b6cb61e1a265f4b2fffe92eb8f17ccf7565
|
|
42
|
+
.git/objects/3d/6f923ca44b7d5b66ae03cd3dd3a4124bdb8456,1644523150242,e1fc11951100ce083f04d8448712537a8648f605f8e55a52331381d5f26dc4d4
|
|
43
|
+
.git/objects/44/00e64ace26bb71fd4606a18ca86a651f5034bd,1644523150230,1bd1aa9ac0e795c5cdfdce1bd70ce162da9d44947300a8801245e84cf68e4e28
|
|
44
|
+
logo.png,1644523146031,b0d240bb816f26ca3207f1c99f0db945e48b75928ce80b4b3500035a2627583c
|
|
45
|
+
.git/objects/33/1ef55f4b0f7d5b57d0fd6656b2d85fcde74745,1644523150219,3e44264fbe59ef3836a1a23833cbbb58a20c8dea04034d1f598b14adcf6bf81e
|
|
46
|
+
.git/objects/0d/6fd5ea608d7ce4a9265a182171d083075a91e1,1644523150225,3680493089337aac2f1ccdcceb4e8c188535c136c8a8e1b5dcdbec837c459f48
|
|
47
|
+
.git/objects/25/baab1ec9da45c7bfc7973f50c95e8dfbd56544,1644523150267,2cfc4662a7b8893e753e38f9cfb74031ff8ac717dd10ee0b8a77a4ff58610ebc
|
|
48
|
+
.git/objects/3d/439f6b82a6d6c583d74ba40be84a3c730977d5,1644523150174,e4b9d4f7e959ad36db6c5b110f43dcf12e3ddd1f514ea54572c1a067c825d0e8
|
|
49
|
+
.git/objects/1b/c9e7b4eb3547240c528c3e7f80b2aebd76124b,1644523150131,fc35a30e654740eaa8948db93c4cfb86f8e7e1222e4d411b664baa04772333de
|
|
50
|
+
.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6,1644523150115,422bb3640d58629c6cce7adf6aa528435b470f4ece69ac672eaf6e913be8a792
|
|
51
|
+
.git/objects/4a/a674094e98eaebe6bde33288ba935848fae22c,1644523150260,d62fd4d6f49605c4c38960af31fd93eb24bc536c9926aad9a5fd7bbeff14bc15
|
|
52
|
+
.git/objects/44/a35c2deaf1b05ee2ce3822442691c0b5787dae,1644523150247,f06bd9a59beef9ac559b9f384cbac350c8d89968e4f198040c9724a705f1f6cb
|
|
53
|
+
.git/objects/50/fe6fae100e1353afb1faa716d6077b0c212194,1644523150211,0cf5a50a2ec597cac1b7aa2c5517df504814e841021dd1a4f6fa6c87d0685a51
|
|
54
|
+
.git/objects/5b/10fb083af404924855dc7ddea5ebf6a4f2f4b6,1644523150220,173a333e1d0a755692fdbf90a8599b3af051fe807644ca342e924dd907baa9d3
|
|
55
|
+
.git/objects/52/ce924c6871bc8c676df543ff3de777cd7aec3f,1644523150218,c5a39b71274394bf716974df4dd9842b42fc8f7b670a876568c2ad95aaa60bb8
|
|
56
|
+
.git/objects/5f/00b407eb3ab488eda161e532983d8d58fd6aca,1644523150205,b5b4d934b515c6856a52da41c9afb539235560d706bb45504998d9004ae3e046
|
|
57
|
+
.git/objects/5d/9acff1737caf99d3765c000f2d364c97517675,1644523150207,9f87194e9b729caea08cfada5bd675905b3fe2142e31f084ac238036f4033d4d
|
|
58
|
+
.git/objects/61/228db7d13d92816860a77275d7c66cf80198b9,1644523150206,f94f911d5509b9c3960748165e88b81675678859391ef30a9e9fe73fb450d366
|
|
59
|
+
.git/objects/68/c93448545da6e9b3905a21f4014c0d3deec95a,1644523150262,3763c1de46b0f3b1a8e53abcb2f599a43b1506cdc8c917d28d7567307eb74b46
|
|
60
|
+
.git/objects/60/566b9c0cdf6ea87d37a8870022ad4a5ce885fb,1644523150272,8151b3f1281fd2cf4176fd17d300da6557365fd3f66a08db5d40d12c24cb62c2
|
|
61
|
+
.git/objects/5f/7a74c386cc019cde55400b02b1d5ed54dbcd60,1644523150212,0457d1df29c67ad19d9c6fd0ccdefe0d036661560312510641762b95da31746d
|
|
62
|
+
.git/objects/6c/ce357cd45f1fcf0527366bcd581a9eb2246d10,1644523150222,64260eb17fb9be414d8356f3cbbb2792af9e18216f4b7c309d3c5d82ef59d172
|
|
63
|
+
.git/objects/6c/d09354ffcc0a425b76aa5aaaf2e52de002cc9f,1644523150235,9a75713a640b395bff755c0d76780523ef71780979803e8507ecc8812719090f
|
|
64
|
+
.git/objects/6c/8c7c8f8c4e7579f73b2655110584d656a5100e,1644523150263,41f954879ed39bc7ffb26364008810e39d097aaeb2e8506bb5725ffb62e4d0d1
|
|
65
|
+
.git/objects/7b/60c9df90b5b61b3987adbf25c63d15c7ad01ec,1644523150240,6dc6c077a6335405f5d057e09eaf23b858f6ee556507c9e5145f10820282f9c2
|
|
66
|
+
.git/objects/7c/fc8e7bb90859b319f8e55a3b1dfa9eb19501bf,1644523150264,4a5c9d6962042e1d24762af38612cd108a5df66c08ff688585d047c8b319ae8a
|
|
67
|
+
.git/objects/75/a3cabf3bd93d59c3dd3c40851e0543367e8bf0,1644523150204,4c43a2588cd8e69715ee6f0e58c48c545e6e4ba4826453c2b5e93d28f5eb9c2c
|
|
68
|
+
.git/objects/7d/4b9eb94c20101356c21aec280df2ce3855d695,1644523150241,26677017a91f9227c50ac31a0eb3b14af49d79cd646ddb88ea4b66e4aba32ce9
|
|
69
|
+
.git/objects/7e/0d127cc63a487de0d5e56615ef6e1a6dcdd0f4,1644523150119,b7d6d01b89b84b13aa7e9707ff6f0f0519e2a9b5627cd50f4468dd3e2540ebf1
|
|
70
|
+
.git/objects/83/236781a9493a468b631981fd4968feb77d84c1,1644523150121,7bc3fab5cf4a3b2a2cc704f8f13a50cdf5f7862c939f92ffd40b1f711caa5190
|
|
71
|
+
.git/objects/86/e1078356f2fa2c01495880f87f3823a4cfe75a,1644523150265,cbef41db404df95bb6551b75049af7a6829a0f125fdfc13d2e8754bcd26a8092
|
|
72
|
+
.git/objects/8a/b55d68134a8b65718be062f3a8c9d131c7ef97,1644523150216,891f0021b368cfd45862f4a5e515fb04a93a66df692145f7757e062fbe7ef707
|
|
73
|
+
.git/objects/82/5e4217ef864caac9a55971aaacd4ce648f994c,1644523150169,e66db97500fdf78217955b3962cc4950e78ef14c1925e8060bd7b6b9dd380f41
|
|
74
|
+
.git/objects/8b/632a0b280b64bab00b345f10c23bcd94625ac4,1644523150261,fc6790423335145f2bf65cb6df3856026d10924974a181c7e1f8f7b6ec3fa9c4
|
|
75
|
+
.git/objects/87/5de0d857feefd08dd0b3bcf93279f1b950b3e8,1644523150224,78d904c7dc30e0c34bb16f3f324835edf416874c524df78f3d9b95d66697f08e
|
|
76
|
+
.git/objects/7f/eb1675702be2243458b794111277676e91bef1,1644523150242,d40257d0234f202fd7b56e4fa6a89ec406c992a639e86c3f0c18f51ed82658a7
|
|
77
|
+
.git/objects/88/572c50b5a20619ee51e46fc4e32dfb47f3e85b,1644523150157,ef5d47c751ba8a1145c755bf468e1613d4643cda888e3f3fc0fb7601419b8a36
|
|
78
|
+
.git/objects/70/9a5ae62b32cf18e9335748adc6623137ac9013,1644523150223,642d3e037c1d215806e3122285cfb8fe7883229c06ea1a7334516bb7f5c75df3
|
|
79
|
+
.git/objects/7d/c8ee5b95510d43ef664355fec03677b240a5b7,1644523150195,5b8da4677346543fda012668afd463cb96e97907428a0be2beff59b5b59d1712
|
|
80
|
+
.git/objects/47/04c14f8967c091abc273fbb38baf6b279d1c3f,1644523150163,65cd027fa05f4212b5ab8d8f3809068c0dac89785e4acaa4a89c181c0f4d97af
|
|
81
|
+
.git/objects/6a/bdcf7e8a8caa7ce17f949916e4b28c09b109e0,1644523150239,d17acba40d47155be0680f7bf44ef30c98e46e9df0a3b181b83702fd810fa0d0
|
|
82
|
+
.git/objects/69/cc41b8bb135acd42ef4c7e5e27af9725c8d54b,1644523150128,3ecdc656fdaa332c920c8d37b66930569b9df88280410a6c66141f91df020431
|
|
83
|
+
.git/objects/60/96f24ab2e8cd84f59d9639b8f33e56dc8bc067,1644523150214,4d0349dd1b1e9af5a5530cdabf728d059885ceeb59e22831f2c3ba27e0845d03
|
|
84
|
+
.git/objects/96/1991e8a784077b42962f7052552f88e93735ca,1644523150237,ffd35046676bdba5d1cd2082344de97e2cba66fac7952ea2c1c5a19df08e674f
|
|
85
|
+
.git/objects/76/9716d4eab27740bc23e08cb3acd0696e82aa58,1644523150194,e8a5834d4556a87771fd7c70a88d12e9416621aedad0e49f3e395084df3a7724
|
|
86
|
+
.git/objects/9a/22d6da5edf01ce88c54e82f8525a9b92b8642f,1644523150116,32a151f01a70d54bfee83231f1d596393277c0a32cd4c59d70b62366c52b879b
|
|
87
|
+
.git/objects/8c/362002ad1631410797ab18188d835867d04278,1644523150215,f20cc326b0a7f45b730c1122dcbeaa9b9540d6e15883f72b8ccd471164c8a2e0
|
|
88
|
+
.git/objects/8c/b9ad5123a47c4ffed66431dfbb052a56549d26,1644523150247,bdd68496af32167e666bad8fc1721380d324f3bc2181d1e16b5113fb65d1fe13
|
|
89
|
+
.git/objects/a2/e8f4a67dce34e58ef43b5632277dbfb5663194,1644523150117,51b5db371598b36b47def7e4acab02552f61f427a68705fee29a1464b9862d72
|
|
90
|
+
.git/objects/4b/5f22ac29a6e898dc762b8105c6cfae4756c060,1644523150145,737a4dce928e0d266d27831ff34a03932dfa10790e74bc115d13ee3b177530f7
|
|
91
|
+
.git/objects/3b/adba11cf84224fb59f0af44396f204009b25bc,1644523150138,70ba6f19ba81086aabd88859c3b4906a145c3ce93a10b41bd2426a0ac4c75b86
|
|
92
|
+
.git/objects/57/46a02a4a5431911e35fd9386cef63970255785,1644523150186,c42f63582b9958e361f9878d11131a5e0eb0342b8d0879b8771a4e74aa2491a6
|
|
93
|
+
.git/objects/5a/a723fbfe58650bdf40f8725ce3779803c0dd5f,1644523150199,e2c15bf6a497725a18d0549ea4fa7efb3684becd01482db36a3bf4e80bb3ea82
|
|
94
|
+
.git/objects/95/64cada0c616c4f725b04cb678852d29dd1dfc8,1644523150189,b9049788cb4cff24a115ff264555a9abe6894610e0cb89aa21be9662ded472d3
|
|
95
|
+
.git/objects/69/c63de7f595c8d50aff2b85e5db3e8ff2287e98,1644523150135,eb3fef31ba49426008036746f14970771a0fc8479fd10fcc1c2d5a535608ca8e
|
|
96
|
+
.git/objects/aa/bc3f1ca9c3505c94c0cf575f04f1c9afdf43a7,1644523150265,cdc87f0c72d34716ea82726576a1e592bcad537f417870a9bf0a241003a7c57a
|
|
97
|
+
.git/objects/a5/7420fd607ddcd9616d080792f51057cd067fad,1644523150226,a2bd1fe3969cb6ea96df3c936d988347e9c90ed83322bcca4653b9dfcfc1887e
|
|
98
|
+
.git/objects/ab/a4e16b09b43d4fad08e0209730dc6783fbd765,1644523150210,67d4ebdab38a68ddd3bf3aac9c7d70ba81ce0b83c79a1b448fdca2786cd32b28
|
|
99
|
+
.git/objects/b7/b333e1a719931adec223bc95ec909770e890a6,1644523150202,7df8458d73f435940911da845115f6c8b82e9b33c9882415aca6274ab80bea7c
|
|
100
|
+
.git/objects/9d/455b9ca7de780426c68bacfdf0bb9f755cd1f8,1644523150120,594be3029bfae1c9ca819bc34d31d7ac958678b3950e36a35484ddb94e623233
|
|
101
|
+
.git/objects/ad/5e3acf4dff970507cab7d11a104fc598183879,1644523150236,eabc4b96c17adb223353e6f84de52de2c5fc505ecbfde128467c2c8e226f9702
|
|
102
|
+
.git/objects/be/b34cd52f327c741f9e4d31126e002139cb765d,1644523150248,f61b21180a972eafa5374b92dcbf6a96c8a1c66d88ec2d075305665edc32e391
|
|
103
|
+
.git/objects/ba/6b52bfde8820e3b0c9abaeba7d251124585358,1644523150210,bec6aa65142c41889565638629af7ef98cd9a2e3529df28bc29e3ccfa418d680
|
|
104
|
+
.git/objects/c7/9861fc6ec5514d36897c1b4780a5dcec4bcfc5,1644523150118,6d421c86492f1aac09e55371c94c6063540ca3a06dcee8d81facc3cdba873480
|
|
105
|
+
.git/objects/cc/e5c977aeccefefe56bb9119581a9020772cac0,1644523150234,965f9d5b96d972166c7ea7f14dbaeee8a3c1ffb1de2d11e81eb4ba8ec194f9f0
|
|
106
|
+
.git/objects/cd/819e4920689d6d2346aecd9b079efcca026b58,1644523150227,5a49b4dbaf260f2874109aab1ee5507455c52be17fdd393a2408f873a835a858
|
|
107
|
+
.git/objects/c7/abbb79615c3369acef06162eff1b402632917d,1644523150156,7441f17b0d37f6d287ddc5772c73f145fa8d602578f40d0f061f0450e57bc6ea
|
|
108
|
+
.git/objects/b7/90de3d34ec933f190b15f671aba95a0fefefe2,1644523150244,e7bf1cea453a7e3db4b14fe82ecab7980cee88379dcc5520f43dc2d9d4ec886d
|
|
109
|
+
.git/objects/d9/8bcd461a325bd556b1eb50d5961f572506eaa8,1644523150274,d1675117bf84c6ad79d8f469c8e9b881db732c701a6e801d43977c694863fd3a
|
|
110
|
+
.git/objects/d4/a58c21f684100e13c8d0b2d234fd3e7abc775c,1644523150155,644a6e8c2f0c29849f767b6d602f6dbcac234a4125fd6f8a76f9b48a8d82a020
|
|
111
|
+
.git/objects/d9/907cd6fcb81c9310bf56b362b011dd787fb5df,1644523150235,23953036037073fec52dc2b501bb95b6b89008b3fc173ac15917e82fc9cd94cf
|
|
112
|
+
.git/objects/da/ca3701e930eb63ed46b936fca1eec0fdb8e8ec,1644523150209,9795f67f541afdc7e940d7b560fe964be253b0e9af78273fb71c002547984c98
|
|
113
|
+
.git/objects/de/169c4a3cb088342ca5450407d9935cd4b2e057,1644523150278,0bd592219897a7e5026d311fd9456c95d1e6bb608a7e7f1da3590fb3dd97dea0
|
|
114
|
+
.git/objects/db/0a72308cb81346719a8bba59684d4e3a0a68f8,1644523150195,cdf0d83fefa7ccdd18556255e5cb61dd8fb0e6cb3005eb2d8a5439f5ef54f264
|
|
115
|
+
.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391,1644523150115,1b384640d6800d08b347dca84cbce95473fe0aa6aa082c21aaccbdabecdc4ae3
|
|
116
|
+
.git/objects/e8/cb4d7b1b6eda9aea1fbbcc2be0f1711e8934a9,1644523150154,2ffc82223f259df6589ecfc5fd902cc2db54efe3a8eb8efb82b055337a116b53
|
|
117
|
+
.git/objects/f9/e57c47f844cc756f81bed00562b2bab322c284,1644523150232,3ce6a7d78acaaf8649319f578eee68064e12737a91ad8af1235928ab6457da66
|
|
118
|
+
.git/objects/d9/0c68c11d4a8385f8de290e20456b02b7c98354,1644523150206,6351bcc8f41d75bdd09cbd6c325e11636f7540c7dd5444df82e939a9e384e37b
|
|
119
|
+
.git/objects/fc/c7c7a49cca641652b8b8cfa9be25ea75898aff,1644523150243,5a51378b5ddff01a21e70a0510e0396cb98349cb8699208823edc602045ababf
|
|
120
|
+
.git/objects/9e/cf04a34894999dc59ec5d518733a00be24932c,1644523150182,03abb74dcb7dd56bc2c11be0948803d6d6af08cdeff288376f5f2f142757db97
|
|
121
|
+
.git/objects/fe/306a328601aab63a7f376a84153f0effaf708c,1644523150269,2b88937b95c5476506ded25433f7629f78c36712877eaf705468f0dd5b1177af
|
|
122
|
+
.git/objects/4f/8a04755996c87ab7679fdfb43ea94bc31f8388,1644523150127,fb42d0a6968148764dc8ef76380f1698db7fef00ea0e87f9b9bd511a8fbe633f
|
|
123
|
+
.git/refs/heads/master,1644523150281,d4ff7d4c5183eccc4223c2ee050e9f00f54ff3dd3a86a95ff19cdc87bab5102a
|
|
124
|
+
.git/objects/b5/f306955ce575bcdc5251ecfd05c3cf736f3634,1644523150133,46ab394257a3f039390df20f6c51386c1ef38586751f002c14e2a86a18b8beb3
|
|
125
|
+
assets/css/563.styles.99f4a8aa.css,1644523146013,d286e892d44c93258a56eeacdfd66f1483c48d57abbc0ddb65abb27432e966f1
|
|
126
|
+
.git/objects/cd/05376e2d797ecbbd9e7dcd82023edf45956a3c,1644523150129,727616255c3527d04008fb50ae9c0ecb3a1b0fceffb294b7add58194c7cc66b2
|
|
127
|
+
assets/img/back-to-top.8b37f773.svg,1644523145898,c6af5f9d1f495b4bb193a957cf5cbddd69b3df8346fb0ad8421ff29e872e660b
|
|
128
|
+
.git/objects/f4/276d65c1f4928dc3e1ae35b5ed69554bf0c147,1644523150151,9c173d36f204e4036bdd02a438369f8898cafcf48eca7347008101c0ac73e3de
|
|
129
|
+
assets/css/835.styles.c5afb22b.css,1644523146011,54c8fc773468d5ab5cacbd55f0535bf1cacbd57cb0ab43cde2a6bc4ea405b80e
|
|
130
|
+
assets/css/styles.031dcf27.css,1644523146011,5ce2b8407cac7602aa5961e46a59a27074b67c882a0c889625dca3202d333ab5
|
|
131
|
+
.git/objects/ad/d77c33d9ac3ca4cb0ebb781f590f858f19cc78,1644523150143,df7c8674edc0979b22a5f8ae43e6c40dc6561a2684246201cdaccd0e5488267f
|
|
132
|
+
.git/objects/af/bc04698697ebda19ea386279225b9473e52940,1644523150148,69caf14d8a9288cf2ab177db47389296b7abbe3656694472c3886ca43dd25ff0
|
|
133
|
+
.git/objects/ba/4806f4838b9ed6683ac2fc86ecbc604251161d,1644523150141,254988842cc7321d67d3d71741dbf1a3972ae122ce4dd95671c9d7bdd37a34f4
|
|
134
|
+
assets/img/elvia-config-no-config.b4bb972c.png,1644523145966,b6d893cf4f56713f3004aff49f28339645ec68e885ec30503740ff071050b643
|
|
135
|
+
assets/img/elvia-config-no-tariff.3f89aba8.png,1644523145966,00eee1c51ab3b19e3db8b139071d7596f61601b4295edcc69ad503bcea026d2f
|
|
136
|
+
.git/objects/dc/a54d7afa541cd5f4489cd4fa2b204cae449484,1644523150150,aa09d06099990ddd761aaa03992906f0683465bed8728d4fff2426ff9a831d01
|
|
137
|
+
assets/img/add-tariff-flow.eb700d4f.png,1644523145966,a27790951f13dec75da0da079edeb58378aaa6f74c1d708a0c1b5aea846ae808
|
|
138
|
+
assets/img/next-schedule-flow.413ad62b.png,1644523145940,dc39e108b2e1c231df8172b375f73bbdce6dba5e7b19b16524c81a15a1ce1036
|
|
139
|
+
assets/img/node-power-saver.51ff2e5d.png,1644523145959,bc03e13706d001771796195e67e237873c2f2b3fd014e7f8003d80e3c5e09ea9
|
|
140
|
+
assets/img/next-schedule-sensor.eb896bdd.png,1644523145940,3017cdc42afaeeccd07240a18729b59264175c8ef7f17d4bf89ecc12dcfd1723
|
|
141
|
+
assets/img/node-ps-elvia-add-tariff.94ea2b09.png,1644523145959,82f83794ebee8920524f2c8fb0123014cf8ef0182600c34ca2c170b2adefd970
|
|
142
|
+
assets/img/node-ps-general-add-tariff.a3cf6f06.png,1644523145960,0e6ef51de245944acad043cbf6b4c1a9f3762cb0d59c721afd67b8a9fa93dc90
|
|
143
|
+
assets/img/node-ps-receive-price.76eaa418.png,1644523145959,9d8f62d2b5bee458952cd895a143a2c757ba5ae6cd7e13afd3103b7872619571
|
|
144
|
+
assets/img/elvia-config-subscription-key.8be8ab8a.png,1644523145966,1e8f457772d4941c9f4a245e84e0cd89f8d0387b11464a3eab3533ed50780e9b
|
|
145
|
+
.git/objects/ee/565d44a7e671307ef95312f8e107a854db65a1,1644523150124,e6047682b480fb45f0d5287456108778278d1a1de5ad2345b7b66b5d19060735
|
|
146
|
+
assets/img/node-ps-strategy-heat-capacitor-simple-flow-example.29d9bf59.png,1644523145923,31d4e2481f50bf3d26b77e1f53899bb10ee214a8c9675114738a4f8fa2c361d2
|
|
147
|
+
assets/img/node-ps-strategy-lowest-price.3a4ad347.png,1644523145961,dd4e368f5c81e87f64770a5d80b4c026d92fc89a72589f2d8b163e6a251c3662
|
|
148
|
+
assets/js/293.08ea5200.js,1644523146006,0952709f2a1901610b53d6146f0130add68798b4b92bad9c07c63b8f43424552
|
|
149
|
+
assets/js/491.17a98f38.js,1644523146006,65b18d7138b0195971a54a139a44f836fa3336b6b70c64ef0d6921ddf3ace452
|
|
150
|
+
assets/js/331.15ee3c51.js,1644523146006,6437fb95e95dce3415cbf7e9a20100a3ddee3a2e6a421944e6f4a1566bff4ec2
|
|
151
|
+
assets/img/next-schedule-entity.4406856a.png,1644523145939,d6f36c55bef22fdb27e7a793144016b9b5688fdb7c0f358f446bec4871cb59f1
|
|
152
|
+
assets/js/811.6a3392d5.js,1644523146013,4f6777db824062a896831c035032022dcd45d93f634d5afb37e610442f146eef
|
|
153
|
+
assets/js/619.8ba1b1f6.js.LICENSE.txt,1644523146042,adc4d946db037aab89d8d540dc5ba92ec41212a9777b284c2189f3e90729031c
|
|
154
|
+
assets/js/app.e881e9b6.js,1644523145897,a5e971391db834a017ff92d0694caff6531823533d59854e0cd43906007667ec
|
|
155
|
+
assets/img/best-save-config.79a2f39a.png,1644523145986,0e854e0ad8521268786a86789707053d08f60f7810bf9bbb1c6cbfc9485c657d
|
|
156
|
+
assets/js/runtime~app.8bebaa00.js,1644523145897,f6232174b778034bfd34b7f5ed86293151032c7e47f6cf44ce2f4dec4accb154
|
|
157
|
+
assets/img/oven-setpoint-calculation.5bda0eec.png,1644523145898,d59c196f156dbb561106368065b08b9fa16b0555e0683d3d9c6ef2a123b6b787
|
|
158
|
+
assets/js/v-0607240a.a57c2199.js,1644523145898,873d48fc14b52bf404709b542e74aef747573cbb93aee734862b64ac149611cd
|
|
159
|
+
assets/js/v-08683c60.ccafdcab.js,1644523145966,3418f9e5a646c87a710fbec16d01477acb33f92ccad2a910fa04ab34d274f377
|
|
160
|
+
assets/img/node-ps-strategy-heat-capacitor-cascade-control.2e75ed9e.png,1644523145898,277fec95ceb1f4a608c512a361778e21da49cfa48f630f43ced60abf7b586c00
|
|
161
|
+
assets/js/v-0aca7ba6.4f3573a3.js,1644523145922,dbea499c89803a53096b971161ac9fc40fa272e793bacbdcb2761370cdb3f361
|
|
162
|
+
assets/js/v-1ad821fa.5978386f.js,1644523145962,3cee1b46b690b522941e859b48870f00301edaac110e11b34b8f2bde032c9ec2
|
|
163
|
+
.git/objects/cd/9386e14b0007dc858394f55c80f4b9fddcfaaa,1644523150192,3fa3036a39f34674a344447e91044371f0bad16a43266ba1e918c206b7c46778
|
|
164
|
+
assets/img/heat-capacitor-temperatureVsPrice.6e74905b.png,1644523145922,4ec0ee90f5f8c110e17a07f1c6572c1d6ef31a318e3cc58125680aae6ac39a30
|
|
165
|
+
assets/img/lowest-price-config.6d66a8c2.png,1644523146005,2e8328c5ccb07158c1c2edb5a5a1b4746f7a773b3a380d88fff2f9da279ffed2
|
|
166
|
+
assets/js/v-0b5e3c8c.76407435.js,1644523145981,17bcdf85458632cb2e4216a0160a277f2a7e24f415652fef905ef32934a99c8c
|
|
167
|
+
assets/js/v-1b3a0ab8.def099e9.js,1644523145898,85b5ac9586cc50219239118bca59b9bba7220553627cfd806ad983309854a35c
|
|
168
|
+
assets/img/node-ps-strategy-best-save.392292d5.png,1644523145959,d9e48500b4df8cdcb2696faeaea1c5e9f462299a07b0231c1a2e4e8d4d88f7bb
|
|
169
|
+
assets/img/elvia-flow.bae2a4d5.png,1644523145966,a3bbae90b0a528c8975ed92cad0d3cf354aaf6b2df8a8ec8c2f92d55d21e97df
|
|
170
|
+
assets/img/elvia-config-select-tariff.0f73fd56.png,1644523145966,db2bce470db8a714b87e3d07b915d225395b49ae2bc99a271f37844d3356e22f
|
|
171
|
+
assets/img/overshoot-time.b3b5d70e.png,1644523145898,c855af9a434f7d56928446dba5466f7fbf62958acf6f53d1230db16d0c40712f
|
|
172
|
+
assets/img/power-saver-nordpool-events-state.8c392507.png,1644523145941,d8cb79a6ded596050e5ba9a81c21d2277a76ac6c43f388d664aae9559f420780
|
|
173
|
+
assets/js/262.cf2c57d2.js,1644523146020,233694a84237ea581d3098041b95f30f75bc749c741b374db5513b0ebb56a6bb
|
|
174
|
+
assets/js/v-1e2b191e.88dc5555.js,1644523145966,bc379660eb68f388cf9985e3a7ae199137925cd7f47ec86276955dea501ced7c
|
|
175
|
+
assets/img/example-flow-2.b653b58d.png,1644523145959,44970df39fb4d1a30778770f91211ef95f13cf14a2137324b955aadff47ab17e
|
|
176
|
+
assets/img/copy-payload-best-save.b9192985.png,1644523145955,7b12f6464e3fc8a83222e1e55d0ecdc81c9fdf5356eadd173c98313a45f44f75
|
|
177
|
+
assets/js/v-30acb564.529a3c16.js,1644523145940,8de66a72a483ea347b318847b660fe64c9ab03e588f2094077bc1f533fca6c3a
|
|
178
|
+
assets/js/v-29504124.4aca27d5.js,1644523145955,1396f2fec5b65e1d54860e31bbeaffe73630b1b923f24110155365854644bef5
|
|
179
|
+
assets/img/migrate-power-saver.aae13f9d.png,1644523145966,0f2c1fd39fcea757d41d48b07d2d02832c14d289ee63ed7175d5fddc8f62bcf6
|
|
180
|
+
assets/js/v-3706649a.d7f73384.js,1644523146006,74d5c4d8b3a8a92852300eeb09e24adb5cd0f26a564bfbe0e1be931a5832e55b
|
|
181
|
+
assets/img/power-saver-nordpool-current-state.bf14afde.png,1644523145940,51824f9b48565e1f6f1f1ab8472bce7a2f5045f4bb9312989a10819c1502945c
|
|
182
|
+
assets/js/v-4637f9e4.5cc542f6.js,1644523146005,1e1ab10a03129e86a336bf08e01bf130b50abdd9ddd98482d353c4a7dc201e9d
|
|
183
|
+
assets/js/v-510ed0d4.b58000bf.js,1644523145897,1919f93a90bba990db3d165314c6ecff883672d0005bfce266e650c56dd673b9
|
|
184
|
+
assets/js/v-5954bcb2.937005d0.js,1644523146006,a3c8635241eb371442badd9f9d50e44281da1c8c02cdabcd849e9d8370d49105
|
|
185
|
+
assets/js/v-5db8da3a.3de3588d.js,1644523145941,6b3a937c180fba795aad1b18656ad8d761cfe608d943554533087a5b109c4c98
|
|
186
|
+
assets/js/v-677dfaed.1ad4c776.js,1644523145997,cfcf242c826d0add9e54b3c4102994aba1a90233b54b41fc5671ad98cdaca531
|
|
187
|
+
assets/js/v-7c87f26e.5e3553b0.js,1644523145897,960b96f030d24bea371dbe76d0818526949460ec740451c39b6b27b3b78c0e27
|
|
188
|
+
assets/js/v-8daa1a0e.c06c5c76.js,1644523145897,ce6c83f4c726f243b003fa4b97fc67db4887fec5c90bb7a6208ebd086d9ae0f9
|
|
189
|
+
assets/js/v-61f728ca.21d432fe.js,1644523145940,7c30c96d96935369fb1a7071c0701c58b90790e4e959cc2f8ca93ff97ff09be4
|
|
190
|
+
assets/js/v-b4a42144.733e4e7c.js,1644523145961,e1611b2fdbbdb96bf5f78a41ee126256cf41e80f0de3601e864bec1785caafb5
|
|
191
|
+
assets/img/example-flow-1.3ff3e23f.png,1644523145958,9602bdee071fd442bc5c466600970ad5b639a8e15c09206c8f824840979b6122
|
|
192
|
+
assets/js/v-e8c55052.9664f731.js,1644523145959,9de0a29ff17fa6aa425c919a14fb0203cb122c3e7715838c67f2ee1397f42f9d
|
|
193
|
+
assets/js/v-fffb8e28.525be02a.js,1644523145958,1546d3d29fc7dc3db3c8d92414cdd3f05b2d1f0420162d64894f5bea008e4c8d
|
|
194
|
+
changelog/index.html,1644523149053,4ee6b98d3bc12444ad1076e25413a91e36dcc46bfcd238b83e3ff7a1ac7d51d3
|
|
195
|
+
contribute/index.html,1644523149066,92041659fe5c28cbed83cf85edbd4d16aba90dc5d6a895bd69d44470a1a86481
|
|
196
|
+
examples/example-heat-capacitor.html,1644523149139,9b382be986e8d8d8ac6923a0dc260461313379d3212e127b772758c8f9c90655
|
|
197
|
+
examples/example-next-schedule-entity.html,1644523149160,94a44df0a7b4bbdda9d17000416230d03c1ecfc2d429176c85931139c400c1e8
|
|
198
|
+
examples/example-nordpool-current-state.html,1644523149186,c57564a785d75b86e64f82ca969929e8a8b2c670793c152e33e1f1f0a4778054
|
|
199
|
+
examples/example-nordpool-events-state.html,1644523149210,fc4cd13afa4678b6ac300371578e741078c68768a4f508da835c4bd2689300a5
|
|
200
|
+
assets/js/v-84304104.f66996c5.js,1644523145897,bb2b7c2e78915c4d6e27eaeb151d6ce7246d47bc85cd05bb4719d3c0f0e8ae5d
|
|
201
|
+
examples/example-tibber-mqtt.html,1644523149264,9236c98c3e4cb8317878760f1bbe8e4166d66e25e8d42a2fc2744a313b2071d5
|
|
202
|
+
examples/index.html,1644523149091,c1e9cd2e992d29c553b52b2ec1525e5b3311fb76d095a26b0f2b8c395c5f7f44
|
|
203
|
+
faq/best-save-viewer.html,1644523149325,1572f973e960ac15c16a77b9eacd1259f7550ebd3387dbbbadf9ef7937f645db
|
|
204
|
+
nodes/index.html,1644523149413,55a4accb2b16027c07740ab9fb1afe997feeae5efe96fd09220549bc24e4f4fd
|
|
205
|
+
guide/index.html,1644523149357,3f78d11bb3066694d33d932c6a3c5d3d020d78f155a794860898d5ad3a858488
|
|
206
|
+
nodes/power-saver.html,1644523149452,685ba7856767ae1d7cab45aae7b0041c3ada4a67c28c951b21bb1a0eaef177f1
|
|
207
|
+
nodes/ps-elvia-add-tariff.html,1644523149479,08fb3ab121cf4f175582284ccb3723b0b6ea758b23faccdeed988da7b1ed0e6e
|
|
208
|
+
nodes/old-power-saver-doc.html,1644523149429,90458f8b3d74fd5711cadf4094a3d9214d418631b3007f36e714a2151b830b5b
|
|
209
|
+
assets/img/power-saver-tibber-mqtt.16891dd2.png,1644523145941,24f2cad039c83c9031aa7f9d3decadc107b7cc257676e0e466078b2089632fcf
|
|
210
|
+
examples/example-cascade-temperature-control.html,1644523149116,a1cd64a8e496d9fcb142a9507492a01601f43356c9cc90c5e73962423053894b
|
|
211
|
+
assets/js/v-4c28314d.48fc6e75.js,1644523146004,174c5b0b9abb7bf8dc38ff553a4df6a4826539becfd36cde6bff1c9a4262d19b
|
|
212
|
+
faq/index.html,1644523149280,3a386a26c974fceeae315229b1322f0bf54e149a4a63a549b97ff53d9b805752
|
|
213
|
+
nodes/ps-general-add-tariff.html,1644523149508,7fda1c728f690cf8378af93868b77843ba3089e3ddbde22f89cbeb68c3eae7be
|
|
214
|
+
nodes/strategy-input.html,1644523149651,74049ece4e010ec82e22151e686c367506aea1ca1efd8507c5552eb5117c0f38
|
|
215
|
+
nodes/ps-receive-price.html,1644523149532,961e8997d564c5c5965c226f752f8000aeb304d8788c43ea2767e53ef347fc4f
|
|
216
|
+
nodes/ps-strategy-lowest-price.html,1644523149624,0305def4e9a0d6fe851b4dbb6608e9c763656508d978c8b96e65328f9aac1c5e
|
|
217
|
+
assets/js/619.8ba1b1f6.js,1644523146020,c21f0c2fdf3db04d5f0058420c49d3aa9d2f02cc9b930153b1cffd05c49cc7f8
|
|
218
|
+
assets/js/v-7446a652.74b21d0b.js,1644523145955,850a4ea713a62addcf787b91d45fd9d51a349c7d1a356bdcfbab7d7c83e39adb
|
|
219
|
+
assets/img/migrate-best-save.f73420f6.png,1644523145959,7dbcde0717bc45d78d3d1e77282f9750aba2a49f3364604a7e29911fbfc490eb
|
|
220
|
+
nodes/ps-strategy-best-save.html,1644523149563,220eceb40e5fb6a397d23fa021894ff2da4d5f503e0ecd3e1f0af23ac2674a4e
|
|
221
|
+
nodes/ps-strategy-heat-capacitor.html,1644523149591,137f774ea85fe28233daea0df4b29bc02aed6b4f8c926907f585d130e3956cbe
|
package/.firebaserc
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file was auto-generated by the Firebase CLI
|
|
2
|
+
# https://github.com/firebase/firebase-tools
|
|
3
|
+
|
|
4
|
+
name: Deploy to Firebase Hosting on merge
|
|
5
|
+
'on':
|
|
6
|
+
push:
|
|
7
|
+
branches:
|
|
8
|
+
- gh-pages
|
|
9
|
+
jobs:
|
|
10
|
+
build_and_deploy:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v2
|
|
14
|
+
- run: 'npm run docs:build'
|
|
15
|
+
- uses: FirebaseExtended/action-hosting-deploy@v0
|
|
16
|
+
with:
|
|
17
|
+
repoToken: '${{ secrets.GITHUB_TOKEN }}'
|
|
18
|
+
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_POWERSAVER_C98D0 }}'
|
|
19
|
+
channelId: live
|
|
20
|
+
projectId: powersaver-c98d0
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# This file was auto-generated by the Firebase CLI
|
|
2
|
+
# https://github.com/firebase/firebase-tools
|
|
3
|
+
|
|
4
|
+
name: Deploy to Firebase Hosting on PR
|
|
5
|
+
'on': pull_request
|
|
6
|
+
jobs:
|
|
7
|
+
build_and_preview:
|
|
8
|
+
if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}'
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v2
|
|
12
|
+
- run: 'npm run docs:build'
|
|
13
|
+
- uses: FirebaseExtended/action-hosting-deploy@v0
|
|
14
|
+
with:
|
|
15
|
+
repoToken: '${{ secrets.GITHUB_TOKEN }}'
|
|
16
|
+
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_POWERSAVER_C98D0 }}'
|
|
17
|
+
projectId: powersaver-c98d0
|
package/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[The changelog has moved here](
|
|
1
|
+
[The changelog has moved here](http://power-saver.smoky.no/changelog/)
|
package/README.md
CHANGED
|
@@ -4,4 +4,4 @@ A Node-RED node to save money when power prices are changing by the hour.
|
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
## Please read more in the [documentation](
|
|
7
|
+
## Please read more in the [documentation](http://powersaver.no/).
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<textarea rows="5" cols="80" name="rawData" placeHolder="Paste data here" v-model="dataString"></textarea>
|
|
3
|
+
<p>{{ message }}</p>
|
|
4
|
+
<div class="config" v-if="message === '' && payload.version">
|
|
5
|
+
<h3>Config:</h3>
|
|
6
|
+
<p>Max in sequence: {{ payload.config.maxHoursToSaveInSequence }}</p>
|
|
7
|
+
<p>Min on after max: {{ payload.config.minHoursOnAfterMaxSequenceSaved }}</p>
|
|
8
|
+
<p>Minimum saving: {{ payload.config.minSaving }}</p>
|
|
9
|
+
<p>Send when rescheduling: {{ payload.config.sendCurrentValueWhenRescheduling ? "Yes" : "No" }}</p>
|
|
10
|
+
<p>If no schedule, output: {{ payload.config.outputIfNoSchedule ? "On" : "Off" }}</p>
|
|
11
|
+
<h3>Meta data:</h3>
|
|
12
|
+
<p>Node version: {{ payload.version }}</p>
|
|
13
|
+
<p>Data timestamp: {{ payload.time }}</p>
|
|
14
|
+
<p>Price source: {{ payload.source }}</p>
|
|
15
|
+
<p>Current output: {{ payload.current ? "On" : "Off" }}</p>
|
|
16
|
+
<hr />
|
|
17
|
+
<h3>Days:</h3>
|
|
18
|
+
<table>
|
|
19
|
+
<tr>
|
|
20
|
+
<th>Date</th>
|
|
21
|
+
<th v-tooltip="'Number of hours for the day'">Hours</th>
|
|
22
|
+
<th v-tooltip="'Number of hours that are on'">Count on</th>
|
|
23
|
+
<th v-tooltip="'Number of hours that are off'">Count off</th>
|
|
24
|
+
<th v-tooltip="'Average price for the day'">Avg price</th>
|
|
25
|
+
<th v-tooltip="'Number of hours that are turned off (saved)'">Count saved</th>
|
|
26
|
+
<th v-tooltip="'Sum saved per kWh for the hours that are saved'">Sum saved</th>
|
|
27
|
+
<th v-tooltip="'Sum saved / count saved'">Avg saved 1</th>
|
|
28
|
+
<th v-tooltip="'Sum saved / Hours (whole day)'">Avg saved 2</th>
|
|
29
|
+
</tr>
|
|
30
|
+
<tr v-for="day in dayData" :key="day.date">
|
|
31
|
+
<td>{{ day.date }}</td>
|
|
32
|
+
<td>{{ day.countHours }}</td>
|
|
33
|
+
<td>{{ day.countOn }}</td>
|
|
34
|
+
<td>{{ day.countOff }}</td>
|
|
35
|
+
<td>{{ day.avgPrice }}</td>
|
|
36
|
+
<td>{{ day.countSaved }}</td>
|
|
37
|
+
<td>{{ day.sumSaved }}</td>
|
|
38
|
+
<td>{{ day.avgSaved1 }}</td>
|
|
39
|
+
<td>{{ day.avgSaved2 }}</td>
|
|
40
|
+
</tr>
|
|
41
|
+
</table>
|
|
42
|
+
|
|
43
|
+
<h3>Hours:</h3>
|
|
44
|
+
|
|
45
|
+
<div>
|
|
46
|
+
<input type="checkbox" id="showNegative" v-model="showNegative" />
|
|
47
|
+
<label for="showNegative">Show negative</label>
|
|
48
|
+
|
|
49
|
+
<label style="margin-left: 40px">Show saving per sequence as:</label>
|
|
50
|
+
<input type="radio" id="sum" value="sum" v-model="show" />
|
|
51
|
+
<label for="sum">Sum</label>
|
|
52
|
+
<input type="radio" id="avg" value="avg" v-model="show" />
|
|
53
|
+
<label for="avg">Average</label>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<table>
|
|
57
|
+
<tr>
|
|
58
|
+
<th colspan="5">Input data</th>
|
|
59
|
+
<th class="sepcol"></th>
|
|
60
|
+
<th :colspan="differenceColumns.length">Saving if turned off x hours</th>
|
|
61
|
+
<th class="sepcol"></th>
|
|
62
|
+
<th :colspan="differenceColumns.length">Saving for sequence of x hours</th>
|
|
63
|
+
</tr>
|
|
64
|
+
<tr>
|
|
65
|
+
<th>Date</th>
|
|
66
|
+
<th>Hour</th>
|
|
67
|
+
<th>Price</th>
|
|
68
|
+
<th>On/Off</th>
|
|
69
|
+
<th>Saving</th>
|
|
70
|
+
<th class="sepcol"></th>
|
|
71
|
+
<th v-for="h in differenceColumns" :key="h">
|
|
72
|
+
{{ h }}
|
|
73
|
+
</th>
|
|
74
|
+
<th class="sepcol"></th>
|
|
75
|
+
<th v-for="h in differenceColumns" :key="h">
|
|
76
|
+
{{ h }}
|
|
77
|
+
</th>
|
|
78
|
+
</tr>
|
|
79
|
+
<tr v-for="(hour, i) in payload.hours" :key="hour.start">
|
|
80
|
+
<td>{{ DateTime.fromISO(hour.start).day }}</td>
|
|
81
|
+
<td>{{ DateTime.fromISO(hour.start).toLocaleString(DateTime.TIME_SIMPLE) }}</td>
|
|
82
|
+
<td :class="priceClasses(i)">{{ hour.price }}</td>
|
|
83
|
+
<td>{{ hour.onOff ? "On" : "Off" }}</td>
|
|
84
|
+
<td>{{ hour.saving ?? "" }}</td>
|
|
85
|
+
<td class="sepcol"></td>
|
|
86
|
+
<td v-for="(h, j) in differenceColumns" :key="h" @click="showSavingSource(i, j)" :class="savingClasses(i, j)">
|
|
87
|
+
{{ showNegative || differencePerHour[i][j] > 0 ? differencePerHour[i][j] : "" }}
|
|
88
|
+
</td>
|
|
89
|
+
<td class="sepcol"></td>
|
|
90
|
+
<td
|
|
91
|
+
v-for="(h, j) in differenceColumns"
|
|
92
|
+
:key="h"
|
|
93
|
+
@click="showSequenceSource(i, j)"
|
|
94
|
+
:class="sequenceClasses(i, j)"
|
|
95
|
+
>
|
|
96
|
+
{{
|
|
97
|
+
showNegative || totalPerSequence[i][j] > 0
|
|
98
|
+
? "" + (showSum ? totalPerSequence[i][j] : averagePerSequence[i][j])
|
|
99
|
+
: ""
|
|
100
|
+
}}
|
|
101
|
+
</td>
|
|
102
|
+
</tr>
|
|
103
|
+
</table>
|
|
104
|
+
</div>
|
|
105
|
+
</template>
|
|
106
|
+
|
|
107
|
+
<script setup>
|
|
108
|
+
import { computed, reactive, ref, watch } from "vue";
|
|
109
|
+
|
|
110
|
+
const { roundPrice } = import("../../../src/utils");
|
|
111
|
+
const { DateTime } = import("luxon");
|
|
112
|
+
|
|
113
|
+
const message = ref("");
|
|
114
|
+
const showNegative = ref(false);
|
|
115
|
+
|
|
116
|
+
const show = ref("avg");
|
|
117
|
+
const showSum = computed(() => show.value === "sum");
|
|
118
|
+
|
|
119
|
+
console.log("This is the setup script");
|
|
120
|
+
|
|
121
|
+
const dataString = ref("");
|
|
122
|
+
watch(dataString, (value) => {
|
|
123
|
+
convert(value);
|
|
124
|
+
calculatePotentialSavings();
|
|
125
|
+
highlightSequence.length = 0;
|
|
126
|
+
clickedSequence.row = null;
|
|
127
|
+
clickedSequence.col = null;
|
|
128
|
+
clickedSaving.row = null;
|
|
129
|
+
clickedSaving.col = null;
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
const payload = reactive({});
|
|
133
|
+
function convert(value) {
|
|
134
|
+
try {
|
|
135
|
+
const obj = JSON.parse(value);
|
|
136
|
+
const pl = obj.payload ?? obj;
|
|
137
|
+
Object.keys(pl).forEach((key) => (payload[key] = pl[key]));
|
|
138
|
+
message.value = "";
|
|
139
|
+
} catch (e) {
|
|
140
|
+
message.value = "No legal JSON data";
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const differencePerHour = reactive([]);
|
|
145
|
+
const differenceColumns = reactive([]);
|
|
146
|
+
const totalPerSequence = reactive([]);
|
|
147
|
+
const averagePerSequence = reactive([]);
|
|
148
|
+
|
|
149
|
+
function calculatePotentialSavings() {
|
|
150
|
+
const hours = payload.hours;
|
|
151
|
+
|
|
152
|
+
// Savings per hour
|
|
153
|
+
for (let i = 0; i < payload.config.maxHoursToSaveInSequence; i++) {
|
|
154
|
+
differenceColumns[i] = i + 1;
|
|
155
|
+
}
|
|
156
|
+
for (let i = 0; i < hours.length; i++) {
|
|
157
|
+
const row = reactive([]);
|
|
158
|
+
for (let j = 0; j < differenceColumns.length; j++) {
|
|
159
|
+
row[j] = i + j + 1 < hours.length ? roundPrice(hours[i].price - hours[i + j + 1].price) : null;
|
|
160
|
+
}
|
|
161
|
+
differencePerHour[i] = row;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Savings per sequence
|
|
165
|
+
for (let i = 0; i < hours.length; i++) {
|
|
166
|
+
const tot = reactive([]);
|
|
167
|
+
const avg = reactive([]);
|
|
168
|
+
for (let j = 0; j < differenceColumns.length; j++) {
|
|
169
|
+
tot[j] = 0;
|
|
170
|
+
for (let k = 0; k <= j; k++) {
|
|
171
|
+
const res = tot[j] + (i + k < hours.length ? differencePerHour[i + k][j - k] : 0);
|
|
172
|
+
tot[j] = roundPrice(res);
|
|
173
|
+
avg[j] = roundPrice(res / (j + 1));
|
|
174
|
+
}
|
|
175
|
+
totalPerSequence[i] = tot;
|
|
176
|
+
averagePerSequence[i] = avg;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Daily data
|
|
182
|
+
const dayData = computed(() => {
|
|
183
|
+
const hours = payload.hours;
|
|
184
|
+
const dates = [...new Set(hours.map((h) => DateTime.fromISO(h.start).toISODate()))];
|
|
185
|
+
const days = dates.map((d) => {
|
|
186
|
+
return { date: d };
|
|
187
|
+
});
|
|
188
|
+
days.forEach((d) => {
|
|
189
|
+
const dayHours = hours.filter((h) => DateTime.fromISO(h.start).toISODate() === d.date);
|
|
190
|
+
d.countHours = dayHours.length;
|
|
191
|
+
d.countOn = dayHours.filter((h) => h.onOff).length;
|
|
192
|
+
d.countOff = dayHours.filter((h) => !h.onOff).length;
|
|
193
|
+
d.countSaved = dayHours.filter((h) => h.saving !== null).length;
|
|
194
|
+
d.avgPrice = roundPrice(
|
|
195
|
+
dayHours.reduce((prev, h) => {
|
|
196
|
+
return prev + h.price;
|
|
197
|
+
}, 0.0) / d.countHours
|
|
198
|
+
);
|
|
199
|
+
d.sumSaved =
|
|
200
|
+
d.countSaved > 0
|
|
201
|
+
? roundPrice(
|
|
202
|
+
dayHours.reduce((prev, h) => {
|
|
203
|
+
return prev + h.saving ?? 0;
|
|
204
|
+
}, 0)
|
|
205
|
+
)
|
|
206
|
+
: null;
|
|
207
|
+
d.avgSaved1 = d.countSaved > 0 ? roundPrice(d.sumSaved / d.countSaved) : null;
|
|
208
|
+
d.avgSaved2 = d.countSaved > 0 ? roundPrice(d.sumSaved / d.countHours) : null;
|
|
209
|
+
});
|
|
210
|
+
return days;
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
// Event handlers
|
|
214
|
+
|
|
215
|
+
// Show source for sequence sums
|
|
216
|
+
const highlightSequence = reactive([]);
|
|
217
|
+
const clickedSequence = reactive({ row: null, col: null });
|
|
218
|
+
function showSequenceSource(row, col) {
|
|
219
|
+
const sameCell = row === clickedSequence.row && col === clickedSequence.col;
|
|
220
|
+
highlightSequence.length = 0;
|
|
221
|
+
clickedSequence.row = sameCell ? null : row;
|
|
222
|
+
clickedSequence.col = sameCell ? null : col;
|
|
223
|
+
for (let c = 0; c <= col && !sameCell; c++) {
|
|
224
|
+
highlightSequence.push({ row: row + c, col: col - c });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Show source for saving
|
|
229
|
+
const clickedSaving = reactive({ row: null, col: null });
|
|
230
|
+
function showSavingSource(row, col) {
|
|
231
|
+
const sameCell = row === clickedSaving.row && col === clickedSaving.col;
|
|
232
|
+
clickedSaving.row = sameCell ? null : row;
|
|
233
|
+
clickedSaving.col = sameCell ? null : col;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Styling functions
|
|
237
|
+
|
|
238
|
+
function priceClasses(i) {
|
|
239
|
+
let hl =
|
|
240
|
+
clickedSaving.row === null ? false : clickedSaving.row === i || clickedSaving.row + clickedSaving.col === i - 1;
|
|
241
|
+
let res = hl ? "highlightSaving " : " ";
|
|
242
|
+
return res;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
function savingClasses(i, j) {
|
|
246
|
+
const seq = highlightSequence.some((cell) => cell.row === i && cell.col === j);
|
|
247
|
+
const sav = i === clickedSaving.row && j === clickedSaving.col;
|
|
248
|
+
const res = "selectable ";
|
|
249
|
+
if (seq & sav) {
|
|
250
|
+
return res + "highlightBoth";
|
|
251
|
+
}
|
|
252
|
+
if (seq) {
|
|
253
|
+
return res + "highlightSequence";
|
|
254
|
+
}
|
|
255
|
+
if (sav) {
|
|
256
|
+
return res + "highlightSaving";
|
|
257
|
+
}
|
|
258
|
+
return res;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function sequenceClasses(i, j) {
|
|
262
|
+
let res = clickedSequence.row === i && clickedSequence.col === j ? "highlightSequence " : " ";
|
|
263
|
+
if (averagePerSequence[i][j] < payload.config.minSaving) {
|
|
264
|
+
res = res + "belowMin ";
|
|
265
|
+
}
|
|
266
|
+
return res + "selectable";
|
|
267
|
+
}
|
|
268
|
+
</script>
|
|
269
|
+
|
|
270
|
+
<style scoped>
|
|
271
|
+
.config > p {
|
|
272
|
+
margin: 0;
|
|
273
|
+
padding: 0;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
td,
|
|
277
|
+
th {
|
|
278
|
+
margin: 2px 4px;
|
|
279
|
+
padding: 2px 4px;
|
|
280
|
+
font-size: small;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.highlightSequence {
|
|
284
|
+
background-color: lightskyblue;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.highlightSaving {
|
|
288
|
+
background-color: yellow;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.highlightBoth {
|
|
292
|
+
background-color: lightgreen;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.belowMin {
|
|
296
|
+
color: red;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.selectable {
|
|
300
|
+
cursor: pointer;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.sepcol {
|
|
304
|
+
background-color: darkgray;
|
|
305
|
+
}
|
|
306
|
+
</style>
|