Save ordering/filters (#570)

This commit is contained in:
Darrell 2022-08-03 18:15:35 -04:00 committed by GitHub
parent 1846640b1a
commit 8373e8edf8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1515 additions and 952 deletions

View File

@ -37,6 +37,7 @@ namespace HttpServer
if (url.indexOf("devices") > 0) subJson = 1;
AsyncJsonResponse* response = new AsyncJsonResponse(false, JSON_BUFFER_SIZE);
JsonObject root = response->getRoot();
//root["room"] = room;
switch (subJson)
{
case 1:
@ -49,26 +50,27 @@ namespace HttpServer
void serializeConfig(){};
void Init(AsyncWebServer *server)
{
DefaultHeaders::Instance().addHeader(F("Access-Control-Allow-Origin"), "*");
DefaultHeaders::Instance().addHeader(F("Access-Control-Allow-Methods"), "*");
DefaultHeaders::Instance().addHeader(F("Access-Control-Allow-Headers"), "*");
DefaultHeaders::Instance().addHeader(F("Access-Control-Allow-Origin"), "*");
DefaultHeaders::Instance().addHeader(F("Access-Control-Allow-Methods"), "*");
DefaultHeaders::Instance().addHeader(F("Access-Control-Allow-Headers"), "*");
server->on("/", HTTP_OPTIONS, [](AsyncWebServerRequest *request) {
AsyncWebServerResponse *response = request->beginResponse(200);
response->addHeader(F("Access-Control-Max-Age"), F("7200"));
request->send(response);
});
server->on("/", HTTP_OPTIONS, [](AsyncWebServerRequest *request) {
AsyncWebServerResponse *response = request->beginResponse(200);
response->addHeader(F("Access-Control-Max-Age"), F("7200"));
request->send(response);
});
server->on("/devices", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveIndexHtml(request); });
server->on("/bundle.css", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveBundleCss(request); });
server->on("/index.js", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveIndexJs(request); });
server->on("/json", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveJson(request); });
AsyncCallbackJsonWebHandler *handler = new AsyncCallbackJsonWebHandler("/json", [](AsyncWebServerRequest *request, JsonVariant &json)
{
server->on("/devices", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveIndexHtml(request); });
server->on("/bundle.css", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveBundleCss(request); });
server->on("/index.js", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveIndexJs(request); });
server->on("/json", HTTP_GET, [](AsyncWebServerRequest *request)
{ serveJson(request); });
AsyncCallbackJsonWebHandler *handler = new AsyncCallbackJsonWebHandler("/json", [](AsyncWebServerRequest *request, JsonVariant &json)
{
bool verboseResponse = false;
bool isConfig = false;
{
@ -99,8 +101,7 @@ namespace HttpServer
serializeConfig(); //Save new settings to FS
}
}
request->send(200, "application/json", F("{\"success\":true}")); });
server->addHandler(handler);
}
request->send(200, "application/json", F("{\"success\":true}")); });
server->addHandler(handler);
}
}

View File

@ -7,31 +7,31 @@
*/
// Autogenerated do not edit!!
const uint16_t BUNDLE_CSS_L = 355;
const uint16_t BUNDLE_CSS_L = 356;
const uint8_t BUNDLE_CSS[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x51, 0x5f, 0x4b, 0xc3, 0x30,
0x10, 0x7f, 0xdf, 0xa7, 0x08, 0x88, 0xa0, 0xb0, 0x8c, 0x76, 0x6c, 0x4e, 0xb2, 0x27, 0xf1, 0x45,
0xc1, 0x37, 0x3f, 0x41, 0x9a, 0x5c, 0xdb, 0xb3, 0x69, 0x52, 0x92, 0xdb, 0x9f, 0x6e, 0xf4, 0xbb,
0x9b, 0x54, 0xa7, 0x4e, 0x41, 0x91, 0x42, 0x4a, 0xee, 0x7e, 0xff, 0xee, 0x22, 0xbc, 0x73, 0xc4,
0x8e, 0x13, 0xc6, 0x94, 0x33, 0xce, 0xf3, 0xa0, 0x6a, 0x68, 0x41, 0x30, 0x83, 0x55, 0x4d, 0x4c,
0x4b, 0xdf, 0xac, 0x63, 0xaf, 0x74, 0x96, 0x78, 0x29, 0x5b, 0x34, 0xbd, 0x60, 0x8f, 0x96, 0xc0,
0x4f, 0xd9, 0xdd, 0x16, 0x2c, 0xc6, 0xff, 0x03, 0x98, 0x2d, 0x10, 0x2a, 0x19, 0x4b, 0x1e, 0xa5,
0x99, 0xb2, 0x20, 0x6d, 0xe0, 0x01, 0x3c, 0x96, 0x1f, 0xdc, 0x80, 0x87, 0x28, 0x9a, 0xdf, 0x74,
0xfb, 0x54, 0x32, 0x68, 0x81, 0xd7, 0x90, 0x2c, 0x04, 0x9b, 0x2f, 0x52, 0xf1, 0x14, 0x40, 0x30,
0x5f, 0x15, 0xf2, 0x6a, 0xbe, 0x5c, 0x4e, 0xd9, 0xe7, 0x91, 0xcd, 0x6e, 0x57, 0xd7, 0x89, 0x59,
0x48, 0xd5, 0x54, 0xde, 0x6d, 0xac, 0xe6, 0xef, 0xf0, 0x8b, 0xf9, 0x22, 0x7d, 0xa3, 0xc2, 0x9b,
0x55, 0x6f, 0xa9, 0x86, 0x80, 0x41, 0x30, 0xeb, 0x2c, 0x24, 0x16, 0xc1, 0x9e, 0xb8, 0x07, 0xab,
0x63, 0x26, 0x5b, 0x09, 0xe6, 0x3a, 0xc2, 0x36, 0x26, 0x7a, 0x82, 0x0a, 0x0b, 0x34, 0x48, 0x7d,
0x42, 0xf1, 0x1d, 0x14, 0x0d, 0xc6, 0x39, 0x47, 0x95, 0x36, 0xee, 0xa5, 0x1e, 0xd1, 0xd2, 0x52,
0x1c, 0x0b, 0x65, 0x00, 0x3d, 0xc2, 0x5a, 0x77, 0xe0, 0x2e, 0xec, 0x7f, 0xe0, 0x2a, 0x2f, 0xfb,
0xa0, 0xa4, 0x81, 0xaf, 0x62, 0xa3, 0x75, 0x9a, 0x9e, 0x4b, 0xfd, 0xb2, 0x09, 0x71, 0xde, 0x3c,
0xcb, 0x2e, 0xd7, 0x93, 0x61, 0xd2, 0x4a, 0xb4, 0xb3, 0xb0, 0x05, 0x43, 0x71, 0x17, 0x55, 0xe6,
0xca, 0xd5, 0xb1, 0x93, 0x5a, 0x27, 0xa9, 0xdc, 0x43, 0x3b, 0xd4, 0xf9, 0xb7, 0xee, 0x28, 0x15,
0x83, 0x54, 0x56, 0x28, 0x48, 0x6f, 0x30, 0x90, 0x2c, 0x0c, 0x9c, 0x50, 0x3a, 0xc8, 0x72, 0x45,
0xe7, 0xb7, 0xe3, 0x0e, 0x35, 0xd5, 0x22, 0x59, 0x0e, 0x33, 0x0c, 0xcf, 0xce, 0xff, 0x4d, 0x51,
0x1b, 0x1f, 0xe2, 0x62, 0x3b, 0x87, 0xa3, 0x47, 0xa4, 0xdd, 0x1b, 0x54, 0xcd, 0x7f, 0x79, 0xe4,
0xcf, 0xfb, 0x8c, 0x6a, 0x16, 0xc0, 0x80, 0xfa, 0x25, 0xe2, 0x2b, 0xa1, 0xd5, 0x04, 0xcd, 0x8d,
0x02, 0x00, 0x00
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x51, 0xdb, 0x4a, 0x03, 0x31,
0x10, 0x7d, 0xef, 0x57, 0x04, 0x44, 0x50, 0x68, 0xca, 0xb6, 0xb4, 0x56, 0xd2, 0x27, 0xf1, 0x45,
0xc1, 0x37, 0xbf, 0x60, 0x36, 0x99, 0xdd, 0x1d, 0x9b, 0x4d, 0x96, 0x64, 0x7a, 0xa7, 0xff, 0x6e,
0xb2, 0x5a, 0xb5, 0x0a, 0x8a, 0x04, 0x12, 0x32, 0x73, 0xce, 0xcc, 0x39, 0x33, 0x2d, 0x90, 0x1b,
0xc5, 0x35, 0x5a, 0x46, 0xd9, 0xd4, 0x85, 0xaf, 0xe6, 0x87, 0x0e, 0x8c, 0x21, 0x57, 0xab, 0x71,
0xc0, 0xf6, 0xd8, 0x8c, 0xbf, 0x65, 0x19, 0xb7, 0x2c, 0xc1, 0x52, 0xed, 0x94, 0x46, 0xc7, 0x18,
0x8e, 0x2a, 0x78, 0xcf, 0xe2, 0x30, 0x10, 0x42, 0x7b, 0xeb, 0x83, 0x8c, 0xba, 0xc1, 0x16, 0x95,
0x48, 0x98, 0x86, 0x85, 0x81, 0xb0, 0x5c, 0xa4, 0x5c, 0xe5, 0x1d, 0xcb, 0x0a, 0x5a, 0xb2, 0x3b,
0x25, 0x1e, 0x33, 0x71, 0x28, 0xee, 0xd6, 0xe8, 0x28, 0xbd, 0x0f, 0x68, 0xd7, 0xc8, 0xa4, 0x21,
0x85, 0x02, 0x81, 0x1d, 0x8a, 0x08, 0x2e, 0xca, 0x88, 0x81, 0xaa, 0x0f, 0x6e, 0xa4, 0x7d, 0x2a,
0x3a, 0xbe, 0xe9, 0xb6, 0x39, 0x64, 0xc9, 0x25, 0x49, 0x98, 0x5b, 0x28, 0x31, 0x99, 0xe6, 0xe0,
0x49, 0x80, 0x12, 0xa1, 0x2e, 0xe1, 0x6a, 0x32, 0x9b, 0x0d, 0xc5, 0xe7, 0x55, 0x8c, 0x6e, 0xe7,
0xd7, 0x99, 0x59, 0x82, 0x5e, 0xd6, 0xc1, 0xaf, 0x9c, 0x91, 0xef, 0xf0, 0x8b, 0xc9, 0x34, 0x9f,
0xbe, 0xc2, 0x5b, 0xab, 0x9d, 0xe3, 0x06, 0x23, 0x45, 0x25, 0x9c, 0x77, 0x98, 0x59, 0xbd, 0xed,
0x80, 0xce, 0x24, 0x4d, 0x69, 0x36, 0xc2, 0x77, 0x4c, 0x6d, 0x52, 0xf4, 0x84, 0x35, 0x95, 0x64,
0x89, 0x77, 0x19, 0x25, 0x37, 0x58, 0x2e, 0x29, 0xf9, 0xec, 0xab, 0xb4, 0x69, 0x2e, 0x4d, 0x8f,
0x06, 0xc7, 0xc9, 0x16, 0x41, 0x44, 0xd3, 0xc3, 0x5a, 0xbf, 0x97, 0x3e, 0x6e, 0x7f, 0xe0, 0xea,
0x00, 0xbb, 0xa8, 0xc1, 0xe2, 0xd7, 0x62, 0x7d, 0xeb, 0xec, 0x5e, 0x82, 0x79, 0x59, 0xc5, 0xe4,
0x77, 0x5c, 0x14, 0x97, 0x8b, 0xc1, 0x71, 0xc0, 0x50, 0x5a, 0x3c, 0xed, 0xc7, 0x44, 0xa8, 0xe6,
0x7c, 0xfe, 0x3b, 0x6c, 0xc8, 0x70, 0xa3, 0x32, 0xfe, 0x38, 0xa2, 0xf8, 0xec, 0xc3, 0xdf, 0x14,
0xbd, 0x0a, 0x31, 0x4d, 0xa5, 0xf3, 0xd4, 0x6f, 0x37, 0xd1, 0xee, 0x2d, 0xe9, 0xe5, 0x7f, 0x79,
0x1c, 0xce, 0xf3, 0x82, 0x1b, 0x11, 0xd1, 0xa2, 0xfe, 0x45, 0xe2, 0x2b, 0x4d, 0xc8, 0x83, 0x61,
0x8d, 0x02, 0x00, 0x00
};
void serveBundleCss(AsyncWebServerRequest* request) {

File diff suppressed because it is too large Load Diff

520
ui/package-lock.json generated
View File

@ -14,6 +14,7 @@
"@rollup/plugin-image": "^2.1.1",
"@rollup/plugin-node-resolve": "^13.3.0",
"@sveltejs/vite-plugin-svelte": "^1.0.1",
"concurrently": "^7.3.0",
"mime": "^3.0.0",
"pascal-case": "^3.1.2",
"rollup": "^2.77.2",
@ -167,6 +168,30 @@
"integrity": "sha512-KcfkBq9H4PI6Vpu5B/KoPeuVDAbmi+2mDBqGPGUgoL7yXQtcWGu2vJWmmRkneWK3Rh0nIAX192Aa87AqKHYChQ==",
"dev": true
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/builtin-modules": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
@ -179,6 +204,99 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/chalk/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/concurrently": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.3.0.tgz",
"integrity": "sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA==",
"dev": true,
"dependencies": {
"chalk": "^4.1.0",
"date-fns": "^2.16.1",
"lodash": "^4.17.21",
"rxjs": "^7.0.0",
"shell-quote": "^1.7.3",
"spawn-command": "^0.0.2-1",
"supports-color": "^8.1.0",
"tree-kill": "^1.2.2",
"yargs": "^17.3.1"
},
"bin": {
"concurrently": "dist/bin/concurrently.js"
},
"engines": {
"node": "^12.20.0 || ^14.13.0 || >=16.0.0"
}
},
"node_modules/date-fns": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.1.tgz",
"integrity": "sha512-dlLD5rKaKxpFdnjrs+5azHDFOPEu4ANy/LTh04A1DTzMM7qoajmKCBc8pkKRFT41CNzw+4gQh79X5C+Jq27HAw==",
"dev": true,
"engines": {
"node": ">=0.11"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/date-fns"
}
},
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -205,6 +323,12 @@
"node": ">=0.10.0"
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"node_modules/esbuild": {
"version": "0.14.51",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz",
@ -560,6 +684,15 @@
"node": ">=12"
}
},
"node_modules/escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
@ -600,6 +733,15 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
@ -618,6 +760,15 @@
"node": ">= 0.4.0"
}
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/is-builtin-module": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz",
@ -642,6 +793,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
@ -666,6 +826,12 @@
"node": ">=6"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"node_modules/lower-case": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
@ -794,6 +960,15 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/require-relative": {
"version": "0.8.7",
"resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
@ -891,6 +1066,21 @@
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
"dev": true
},
"node_modules/rxjs": {
"version": "7.5.6",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
"integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
"dev": true,
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/shell-quote": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
"dev": true
},
"node_modules/source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
@ -906,6 +1096,53 @@
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"dev": true
},
"node_modules/spawn-command": {
"version": "0.0.2-1",
"resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
"integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==",
"dev": true
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@ -944,6 +1181,15 @@
"resolved": "https://registry.npmjs.org/svelte-table/-/svelte-table-0.5.0.tgz",
"integrity": "sha512-wh4PzJq4R6iA0YCv0tgyc4oR8xVAC2ZwzkzT+tqZTHscH+Vu8srzP4eeIRklKPggSO2yN4sDABVHriVbM5PDQQ=="
},
"node_modules/tree-kill": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true,
"bin": {
"tree-kill": "cli.js"
}
},
"node_modules/tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
@ -999,6 +1245,59 @@
"optional": true
}
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/yargs": {
"version": "17.5.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
"integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
"dev": true,
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.3",
"y18n": "^5.0.5",
"yargs-parser": "^21.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/yargs-parser": {
"version": "21.0.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz",
"integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==",
"dev": true,
"engines": {
"node": ">=12"
}
}
},
"dependencies": {
@ -1109,12 +1408,97 @@
"integrity": "sha512-KcfkBq9H4PI6Vpu5B/KoPeuVDAbmi+2mDBqGPGUgoL7yXQtcWGu2vJWmmRkneWK3Rh0nIAX192Aa87AqKHYChQ==",
"dev": true
},
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"builtin-modules": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
"dev": true
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"dependencies": {
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"concurrently": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.3.0.tgz",
"integrity": "sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA==",
"dev": true,
"requires": {
"chalk": "^4.1.0",
"date-fns": "^2.16.1",
"lodash": "^4.17.21",
"rxjs": "^7.0.0",
"shell-quote": "^1.7.3",
"spawn-command": "^0.0.2-1",
"supports-color": "^8.1.0",
"tree-kill": "^1.2.2",
"yargs": "^17.3.1"
}
},
"date-fns": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.1.tgz",
"integrity": "sha512-dlLD5rKaKxpFdnjrs+5azHDFOPEu4ANy/LTh04A1DTzMM7qoajmKCBc8pkKRFT41CNzw+4gQh79X5C+Jq27HAw==",
"dev": true
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -1130,6 +1514,12 @@
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"esbuild": {
"version": "0.14.51",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz",
@ -1298,6 +1688,12 @@
"dev": true,
"optional": true
},
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"dev": true
},
"estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
@ -1328,6 +1724,12 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
"graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
@ -1343,6 +1745,12 @@
"function-bind": "^1.1.1"
}
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"is-builtin-module": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz",
@ -1361,6 +1769,12 @@
"has": "^1.0.3"
}
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
@ -1382,6 +1796,12 @@
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
"dev": true
},
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"lower-case": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
@ -1473,6 +1893,12 @@
"source-map-js": "^1.0.2"
}
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true
},
"require-relative": {
"version": "0.8.7",
"resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
@ -1544,6 +1970,21 @@
}
}
},
"rxjs": {
"version": "7.5.6",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
"integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
}
},
"shell-quote": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
"dev": true
},
"source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
@ -1556,6 +1997,41 @@
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"dev": true
},
"spawn-command": {
"version": "0.0.2-1",
"resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
"integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==",
"dev": true
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
},
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@ -1580,6 +2056,12 @@
"resolved": "https://registry.npmjs.org/svelte-table/-/svelte-table-0.5.0.tgz",
"integrity": "sha512-wh4PzJq4R6iA0YCv0tgyc4oR8xVAC2ZwzkzT+tqZTHscH+Vu8srzP4eeIRklKPggSO2yN4sDABVHriVbM5PDQQ=="
},
"tree-kill": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true
},
"tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
@ -1604,6 +2086,44 @@
"resolve": "^1.22.1",
"rollup": "^2.75.6"
}
},
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yargs": {
"version": "17.5.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
"integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
"dev": true,
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.3",
"y18n": "^5.0.5",
"yargs-parser": "^21.0.0"
}
},
"yargs-parser": {
"version": "21.0.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz",
"integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==",
"dev": true
}
}
}

View File

@ -4,7 +4,9 @@
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"dev:vite": "vite",
"dev:rollup": "rollup -c -w",
"dev": "concurrently \"npm:dev:rollup\" \"npm:dev:vite\"",
"build": "vite build",
"preview": "vite preview"
},
@ -12,6 +14,7 @@
"@rollup/plugin-image": "^2.1.1",
"@rollup/plugin-node-resolve": "^13.3.0",
"@sveltejs/vite-plugin-svelte": "^1.0.1",
"concurrently": "^7.3.0",
"mime": "^3.0.0",
"pascal-case": "^3.1.2",
"rollup": "^2.77.2",

View File

@ -2,6 +2,9 @@
import { devices } from './stores';
import SvelteTable from "svelte-table";
var filterSelections = { };
var sortBy = "distance"
var sortOrder = 1;
const columns = [
{
key: "distance",
@ -16,20 +19,16 @@ const columns = [
value: v => v.id,
sortable: true,
filterOptions: rows => {
// generate groupings of 0-10, 10-20 etc...
let nums = {};
const prefixes = new Set()
rows.forEach(row => {
let num = Math.floor(row.id / 10);
if (nums[num] === undefined)
nums[num] = { name: `${num * 10} to ${(num + 1) * 10}`, value: num };
var prefix = row.id.substring(0, row.id.indexOf(":")+1);
if (prefix.length > 0) {
prefixes.add(prefix);
}
});
// fix order
nums = Object.entries(nums)
.sort()
.reduce((o, [k, v]) => ((o[k] = v), o), {});
return Object.values(nums);
return Array.from(prefixes).sort().map(a=>({"name": a, "value": a}));
},
filterValue: v => Math.floor(v.id / 10),
filterValue: v => v.id.substring(0, v.id.indexOf(":")+1),
headerClass: "text-left",
},
{
@ -38,7 +37,6 @@ const columns = [
value: v => v.name ?? "",
sortable: true,
filterOptions: rows => {
// use first letter of first_name to generate filter
let letrs = {};
rows.forEach(row => {
let letr = row.name?.charAt(0);
@ -54,7 +52,7 @@ const columns = [
.reduce((o, [k, v]) => ((o[k] = v), o), {});
return Object.values(letrs);
},
filterValue: v => v.first_name.charAt(0).toLowerCase(),
filterValue: v => v.name?.charAt(0).toLowerCase(),
},
{
key: "mac",
@ -78,20 +76,20 @@ const columns = [
.reduce((o, [k, v]) => ((o[k] = v), o), {});
return Object.values(letrs);
},
filterValue: v => v.last_name.charAt(0).toLowerCase(),
filterValue: v => v.mac.charAt(0).toLowerCase(),
},
{
key: "rssi",
title: "Rssi",
value: v => v.rssi,
renderValue: v => v.rssi+"dBm",
renderValue: v => v.rssi + "dBm",
sortable: true,
},
{
key: "rssi@1m",
title: "Rssi@1m",
value: v => v["rssi@1m"],
renderValue: v => v["rssi@1m"]+"dBm",
renderValue: v => v["rssi@1m"] + "dBm",
sortable: true,
},
{
@ -106,8 +104,12 @@ const columns = [
<main>
{#if $devices != null}
<SvelteTable columns="{columns}" rows="{$devices}"></SvelteTable>
{#if $devices?.devices != null }
<SvelteTable columns="{columns}" rows="{$devices.devices}"
bind:filterSelections="{filterSelections}"
bind:sortBy = "{sortBy}"
bind:sortOrder = "{sortOrder}"
></SvelteTable>
{:else}
<h1>Error while loading devices</h1>
{/if}

View File

@ -1,11 +1,18 @@
import { readable } from 'svelte/store';
export const devices = readable([], function start(set) {
var errors = 0;
const interval = setInterval(() => {
fetch(`/json/devices`)
.then(d => d.json())
.then(r => set(r.devices))
.catch((ex) => { set(null); console.log(ex); });
.then(r => {
errors = 0;
set(r);
})
.catch((ex) => {
if (errors > 5) set(null);
console.log(ex);
});
}, 1000)
return function stop() {

View File

@ -7,7 +7,7 @@ export default defineConfig({
server: {
proxy: {
'^/json': {
target: 'http://192.168.128.134/',
target: 'http://192.168.128.180/',
changeOrigin: true,
rewrite: (path) => path
},