Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8291e2e9b2 | |||
| fbf07920a2 | |||
| 6a902fbf24 | |||
| 7ba400d79f | |||
| 4a50033040 | |||
| b07967110e | |||
| 8e8a6b3b13 | |||
| e6a97ff1a0 | |||
| 89def75df1 | |||
| cd96b91445 |
@@ -3,3 +3,7 @@ Dockerfile_noise
|
|||||||
.vscode
|
.vscode
|
||||||
node_modules
|
node_modules
|
||||||
log
|
log
|
||||||
|
.env*
|
||||||
|
.gitignore
|
||||||
|
deploy.sh
|
||||||
|
Readme.*
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# API Configuration
|
||||||
|
API_KEY=your_api_key_here
|
||||||
|
APIHOST=http://localhost:3005
|
||||||
|
|
||||||
|
# MongoDB Configuration (if needed)
|
||||||
|
MONGO_ROOT_USERNAME=admin
|
||||||
|
MONGO_ROOT_PASSWORD=your_password_here
|
||||||
|
LOCALDIR=/path/to/local/dir
|
||||||
|
REPO_USER=your_username
|
||||||
|
REPO_PASSWORD=your_password
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
node_modules
|
node_modules
|
||||||
log
|
log
|
||||||
.env
|
.env
|
||||||
|
Readme.pdf
|
||||||
Vendored
+2
-1
@@ -13,7 +13,8 @@
|
|||||||
],
|
],
|
||||||
"program": "${workspaceFolder}/bin/www.js",
|
"program": "${workspaceFolder}/bin/www.js",
|
||||||
"env": {
|
"env": {
|
||||||
// "APIHOST": "http://192.168.178.127:3005",
|
"PORT": "3003",
|
||||||
|
"APIHOST": "http://localhost:3005",
|
||||||
// "MONGOHOST": "reception",
|
// "MONGOHOST": "reception",
|
||||||
// "MONGOUSRP": "admin:mongo4noise",
|
// "MONGOUSRP": "admin:mongo4noise",
|
||||||
// "MONGOAUTH": "true",
|
// "MONGOAUTH": "true",
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
# Develop und Deploy der Noise-Anwendung
|
# Develop und Deploy der Noise-Anwendung
|
||||||
rxf 2024-12-20
|
rxf 2025-08-08
|
||||||
## Develop local ( auf esprimo !)
|
## Develop local ( auf esprimo !)
|
||||||
* via VS die APP **sensorapi** starten
|
* via VS die APP **sensorapi** auf dem *esprimo* starten
|
||||||
|
* als **mongo** direkt die auf *ionos* verwenden
|
||||||
* in VS die app **laerm_web_sensorapi** editieren und starten
|
* in VS die app **laerm_web_sensorapi** editieren und starten
|
||||||
* im Browser aufrufen: **esprimo:3000**
|
* im Browser aufrufen: **esprimo:3000**
|
||||||
|
|
||||||
@@ -20,3 +21,8 @@ rxf 2024-12-20
|
|||||||
* den Container **noise** löschen
|
* den Container **noise** löschen
|
||||||
* via *edit* das Stack neu starten
|
* via *edit* das Stack neu starten
|
||||||
* und nun im Browser mit **laerm.rbsensors.de** testen
|
* und nun im Browser mit **laerm.rbsensors.de** testen
|
||||||
|
|
||||||
|
| Datum | Version | Bemerkung |
|
||||||
|
|-------|---------|---------|
|
||||||
|
| 2025-08-08 | 1.0.1 | Typos verbessert |
|
||||||
|
| 2024-12-20| 1.0.0 | erste Version |
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'dotenv/config'
|
||||||
import createError from 'http-errors'
|
import createError from 'http-errors'
|
||||||
import logger from 'morgan'
|
import logger from 'morgan'
|
||||||
import express from 'express'
|
import express from 'express'
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"NoiseMeasurement": "Lärm-Messung",
|
"NoiseMeasurement": "Lärm-Messung",
|
||||||
"GeigerMeasurement": "Radioactivitäts-Messung",
|
|
||||||
"Settings": "Einstellungen",
|
"Settings": "Einstellungen",
|
||||||
"Info": "Info",
|
"Info": "Info",
|
||||||
"StartDate": "Start Datum",
|
"StartDate": "Start Datum",
|
||||||
@@ -49,5 +48,6 @@
|
|||||||
"Peaks": "Spitzen",
|
"Peaks": "Spitzen",
|
||||||
"Day": "Tag",
|
"Day": "Tag",
|
||||||
"Night": "Nacht",
|
"Night": "Nacht",
|
||||||
"CenterMap": "Karte zentrieren auf"
|
"CenterMap": "Karte zentrieren auf",
|
||||||
|
"MyLocation": "Mein Standort"
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"NoiseMeasurement": "Noise Measurement",
|
"NoiseMeasurement": "Noise Measurement",
|
||||||
"GeigerMeasurement": "Radioactivity Measurement",
|
|
||||||
"Settings": "Settings",
|
"Settings": "Settings",
|
||||||
"Info": "Info",
|
"Info": "Info",
|
||||||
"StartDate": "Start date",
|
"StartDate": "Start date",
|
||||||
@@ -49,5 +48,6 @@
|
|||||||
"Peaks": "Peaks",
|
"Peaks": "Peaks",
|
||||||
"Day": "Day",
|
"Day": "Day",
|
||||||
"Night": "Night",
|
"Night": "Night",
|
||||||
"CenterMap": "Center map on"
|
"CenterMap": "Center map on",
|
||||||
|
"MyLocation": "My Location"
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+323
-166
@@ -1,25 +1,26 @@
|
|||||||
{
|
{
|
||||||
"name": "laerm-web-sensorapi",
|
"name": "laerm-web-sensorapi",
|
||||||
"version": "3.1.4",
|
"version": "3.2.5",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "laerm-web-sensorapi",
|
"name": "laerm-web-sensorapi",
|
||||||
"version": "3.1.4",
|
"version": "3.2.5",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.3.4",
|
"axios": "^1.3.4",
|
||||||
"cookie-parser": "~1.4.4",
|
"cookie-parser": "~1.4.4",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"debug": "~2.6.9",
|
"debug": "~2.6.9",
|
||||||
|
"dotenv": "^17.2.3",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"http-errors": "~1.6.3",
|
"http-errors": "~1.6.3",
|
||||||
"i18next": "^22.4.14",
|
"i18next": "^22.4.14",
|
||||||
"i18next-express-middleware": "^2.0.0",
|
"i18next-express-middleware": "^2.0.0",
|
||||||
"i18next-http-middleware": "^3.3.0",
|
"i18next-http-middleware": "^3.3.0",
|
||||||
"i18next-node-fs-backend": "^2.1.3",
|
"i18next-node-fs-backend": "^1.2.1",
|
||||||
"luxon": "^3.3.0",
|
"luxon": "^3.3.0",
|
||||||
"morgan": "~1.9.1",
|
"morgan": "^1.10.1",
|
||||||
"pug": "^3.0.2",
|
"pug": "^3.0.2",
|
||||||
"sass": "^1.58.3",
|
"sass": "^1.58.3",
|
||||||
"spin.js": "^4.1.2"
|
"spin.js": "^4.1.2"
|
||||||
@@ -62,13 +63,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/runtime": {
|
"node_modules/@babel/runtime": {
|
||||||
"version": "7.25.4",
|
"version": "7.28.4",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
|
||||||
"integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==",
|
"integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
|
||||||
"regenerator-runtime": "^0.14.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
@@ -159,13 +157,13 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.7.5",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
|
||||||
"integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==",
|
"integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.6",
|
"follow-redirects": "^1.15.6",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.4",
|
||||||
"proxy-from-env": "^1.1.0"
|
"proxy-from-env": "^1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -212,9 +210,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/body-parser": {
|
"node_modules/body-parser": {
|
||||||
"version": "1.20.2",
|
"version": "1.20.3",
|
||||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
|
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
|
||||||
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
|
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bytes": "3.1.2",
|
"bytes": "3.1.2",
|
||||||
@@ -225,7 +223,7 @@
|
|||||||
"http-errors": "2.0.0",
|
"http-errors": "2.0.0",
|
||||||
"iconv-lite": "0.4.24",
|
"iconv-lite": "0.4.24",
|
||||||
"on-finished": "2.4.1",
|
"on-finished": "2.4.1",
|
||||||
"qs": "6.11.0",
|
"qs": "6.13.0",
|
||||||
"raw-body": "2.5.2",
|
"raw-body": "2.5.2",
|
||||||
"type-is": "~1.6.18",
|
"type-is": "~1.6.18",
|
||||||
"unpipe": "1.0.0"
|
"unpipe": "1.0.0"
|
||||||
@@ -297,6 +295,35 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/call-bind-apply-helpers": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"es-errors": "^1.3.0",
|
||||||
|
"function-bind": "^1.1.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/call-bound": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"call-bind-apply-helpers": "^1.0.2",
|
||||||
|
"get-intrinsic": "^1.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/character-parser": {
|
"node_modules/character-parser": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
|
||||||
@@ -330,6 +357,19 @@
|
|||||||
"fsevents": "~2.3.2"
|
"fsevents": "~2.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/coffeescript": {
|
||||||
|
"version": "1.12.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz",
|
||||||
|
"integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"cake": "bin/cake",
|
||||||
|
"coffee": "bin/coffee"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/combined-stream": {
|
"node_modules/combined-stream": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
@@ -374,21 +414,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cookie": {
|
"node_modules/cookie": {
|
||||||
"version": "0.4.1",
|
"version": "0.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
|
||||||
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
|
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cookie-parser": {
|
"node_modules/cookie-parser": {
|
||||||
"version": "1.4.6",
|
"version": "1.4.7",
|
||||||
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
|
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz",
|
||||||
"integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
|
"integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cookie": "0.4.1",
|
"cookie": "0.7.2",
|
||||||
"cookie-signature": "1.0.6"
|
"cookie-signature": "1.0.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -436,6 +476,15 @@
|
|||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/cson-parser": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-khmLtNmwe6SSlWz5vrhay9yWd/Fwwyiel+vt+1vIcCT9AsdqNuLXuK9tYhhAw1FdSSHjLc56PW8xa565/x73XQ==",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"dependencies": {
|
||||||
|
"coffeescript": "^1.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/debug": {
|
"node_modules/debug": {
|
||||||
"version": "2.6.9",
|
"version": "2.6.9",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
@@ -496,6 +545,32 @@
|
|||||||
"integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==",
|
"integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/dotenv": {
|
||||||
|
"version": "17.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
|
||||||
|
"integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
|
||||||
|
"license": "BSD-2-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://dotenvx.com"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/dunder-proto": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"call-bind-apply-helpers": "^1.0.1",
|
||||||
|
"es-errors": "^1.3.0",
|
||||||
|
"gopd": "^1.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/ee-first": {
|
"node_modules/ee-first": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||||
@@ -503,22 +578,19 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/encodeurl": {
|
"node_modules/encodeurl": {
|
||||||
"version": "1.0.2",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
|
||||||
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
|
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/es-define-property": {
|
"node_modules/es-define-property": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
||||||
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
|
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
|
||||||
"get-intrinsic": "^1.2.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
@@ -532,6 +604,33 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/es-object-atoms": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"es-errors": "^1.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/es-set-tostringtag": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"es-errors": "^1.3.0",
|
||||||
|
"get-intrinsic": "^1.2.6",
|
||||||
|
"has-tostringtag": "^1.0.2",
|
||||||
|
"hasown": "^2.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/escape-html": {
|
"node_modules/escape-html": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||||
@@ -539,16 +638,16 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/esprima": {
|
"node_modules/esprima": {
|
||||||
"version": "4.0.1",
|
"version": "2.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
|
||||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
"integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==",
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"bin": {
|
"bin": {
|
||||||
"esparse": "bin/esparse.js",
|
"esparse": "bin/esparse.js",
|
||||||
"esvalidate": "bin/esvalidate.js"
|
"esvalidate": "bin/esvalidate.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/etag": {
|
"node_modules/etag": {
|
||||||
@@ -561,37 +660,37 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/express": {
|
"node_modules/express": {
|
||||||
"version": "4.19.2",
|
"version": "4.21.2",
|
||||||
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
|
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
|
||||||
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
|
"integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"accepts": "~1.3.8",
|
"accepts": "~1.3.8",
|
||||||
"array-flatten": "1.1.1",
|
"array-flatten": "1.1.1",
|
||||||
"body-parser": "1.20.2",
|
"body-parser": "1.20.3",
|
||||||
"content-disposition": "0.5.4",
|
"content-disposition": "0.5.4",
|
||||||
"content-type": "~1.0.4",
|
"content-type": "~1.0.4",
|
||||||
"cookie": "0.6.0",
|
"cookie": "0.7.1",
|
||||||
"cookie-signature": "1.0.6",
|
"cookie-signature": "1.0.6",
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
"depd": "2.0.0",
|
"depd": "2.0.0",
|
||||||
"encodeurl": "~1.0.2",
|
"encodeurl": "~2.0.0",
|
||||||
"escape-html": "~1.0.3",
|
"escape-html": "~1.0.3",
|
||||||
"etag": "~1.8.1",
|
"etag": "~1.8.1",
|
||||||
"finalhandler": "1.2.0",
|
"finalhandler": "1.3.1",
|
||||||
"fresh": "0.5.2",
|
"fresh": "0.5.2",
|
||||||
"http-errors": "2.0.0",
|
"http-errors": "2.0.0",
|
||||||
"merge-descriptors": "1.0.1",
|
"merge-descriptors": "1.0.3",
|
||||||
"methods": "~1.1.2",
|
"methods": "~1.1.2",
|
||||||
"on-finished": "2.4.1",
|
"on-finished": "2.4.1",
|
||||||
"parseurl": "~1.3.3",
|
"parseurl": "~1.3.3",
|
||||||
"path-to-regexp": "0.1.7",
|
"path-to-regexp": "0.1.12",
|
||||||
"proxy-addr": "~2.0.7",
|
"proxy-addr": "~2.0.7",
|
||||||
"qs": "6.11.0",
|
"qs": "6.13.0",
|
||||||
"range-parser": "~1.2.1",
|
"range-parser": "~1.2.1",
|
||||||
"safe-buffer": "5.2.1",
|
"safe-buffer": "5.2.1",
|
||||||
"send": "0.18.0",
|
"send": "0.19.0",
|
||||||
"serve-static": "1.15.0",
|
"serve-static": "1.16.2",
|
||||||
"setprototypeof": "1.2.0",
|
"setprototypeof": "1.2.0",
|
||||||
"statuses": "2.0.1",
|
"statuses": "2.0.1",
|
||||||
"type-is": "~1.6.18",
|
"type-is": "~1.6.18",
|
||||||
@@ -600,12 +699,16 @@
|
|||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.10.0"
|
"node": ">= 0.10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/express/node_modules/cookie": {
|
"node_modules/express/node_modules/cookie": {
|
||||||
"version": "0.6.0",
|
"version": "0.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
|
||||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -646,13 +749,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/finalhandler": {
|
"node_modules/finalhandler": {
|
||||||
"version": "1.2.0",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
|
||||||
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
|
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
"encodeurl": "~1.0.2",
|
"encodeurl": "~2.0.0",
|
||||||
"escape-html": "~1.0.3",
|
"escape-html": "~1.0.3",
|
||||||
"on-finished": "2.4.1",
|
"on-finished": "2.4.1",
|
||||||
"parseurl": "~1.3.3",
|
"parseurl": "~1.3.3",
|
||||||
@@ -684,13 +787,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/form-data": {
|
"node_modules/form-data": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
||||||
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"asynckit": "^0.4.0",
|
"asynckit": "^0.4.0",
|
||||||
"combined-stream": "^1.0.8",
|
"combined-stream": "^1.0.8",
|
||||||
|
"es-set-tostringtag": "^2.1.0",
|
||||||
|
"hasown": "^2.0.2",
|
||||||
"mime-types": "^2.1.12"
|
"mime-types": "^2.1.12"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -739,16 +844,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/get-intrinsic": {
|
"node_modules/get-intrinsic": {
|
||||||
"version": "1.2.4",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
||||||
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
|
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"call-bind-apply-helpers": "^1.0.2",
|
||||||
|
"es-define-property": "^1.0.1",
|
||||||
"es-errors": "^1.3.0",
|
"es-errors": "^1.3.0",
|
||||||
|
"es-object-atoms": "^1.1.1",
|
||||||
"function-bind": "^1.1.2",
|
"function-bind": "^1.1.2",
|
||||||
"has-proto": "^1.0.1",
|
"get-proto": "^1.0.1",
|
||||||
"has-symbols": "^1.0.3",
|
"gopd": "^1.2.0",
|
||||||
"hasown": "^2.0.0"
|
"has-symbols": "^1.1.0",
|
||||||
|
"hasown": "^2.0.2",
|
||||||
|
"math-intrinsics": "^1.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -757,6 +867,19 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/get-proto": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"dunder-proto": "^1.0.1",
|
||||||
|
"es-object-atoms": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/glob-parent": {
|
"node_modules/glob-parent": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||||
@@ -770,12 +893,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/gopd": {
|
"node_modules/gopd": {
|
||||||
"version": "1.0.1",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
||||||
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
|
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"engines": {
|
||||||
"get-intrinsic": "^1.1.3"
|
"node": ">= 0.4"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
@@ -793,22 +916,10 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/has-proto": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/has-symbols": {
|
"node_modules/has-symbols": {
|
||||||
"version": "1.0.3",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
||||||
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
|
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -923,14 +1034,15 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/i18next-node-fs-backend": {
|
"node_modules/i18next-node-fs-backend": {
|
||||||
"version": "2.1.3",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-2.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-1.2.1.tgz",
|
||||||
"integrity": "sha512-CreMFiVl3ChlMc5ys/e0QfuLFOZyFcL40Jj6jaKD6DxZ/GCUMxPI9BpU43QMWUgC7r+PClpxg2cGXAl0CjG04g==",
|
"integrity": "sha512-lMd/tWsdgDFb158FwXHff63WZpTXggO3j8YOFEko+EvzRPzoIWkvfqdU5Oogn/p4nYfOMnCeEns29ksPF6rZBQ==",
|
||||||
"deprecated": "replaced by i18next-fs-backend",
|
"deprecated": "replaced by i18next-fs-backend",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"js-yaml": "3.13.1",
|
"cson-parser": "3.0.0",
|
||||||
"json5": "2.0.0"
|
"js-yaml": "3.5.4",
|
||||||
|
"json5": "0.5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/iconv-lite": {
|
"node_modules/iconv-lite": {
|
||||||
@@ -1062,31 +1174,25 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/js-yaml": {
|
"node_modules/js-yaml": {
|
||||||
"version": "3.13.1",
|
"version": "3.5.4",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.4.tgz",
|
||||||
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
|
"integrity": "sha512-XBGnYi4i/XkEeSclkcRmBKOR9t7SLViumIhaIqwHSkO7FU0F3xW/sqAQ1/y+AcYX2EcnwdKFY1nXWzjJHqBRoA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"argparse": "^1.0.7",
|
"argparse": "^1.0.2",
|
||||||
"esprima": "^4.0.0"
|
"esprima": "^2.6.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"js-yaml": "bin/js-yaml.js"
|
"js-yaml": "bin/js-yaml.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/json5": {
|
"node_modules/json5": {
|
||||||
"version": "2.0.0",
|
"version": "0.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.0.tgz",
|
||||||
"integrity": "sha512-0EdQvHuLm7yJ7lyG5dp7Q3X2ku++BG5ZHaJ5FTnaXpKqDrw4pMxel5Bt3oAYMthnrthFBdnZ1FcsXTPyrQlV0w==",
|
"integrity": "sha512-WDgahySBucTVnQuzQHoVh6BKKg3TFBUExSwYOPwA4it9xtspn3erHYkdEx1AXXkHN38L7O6v6lmqLiXh/GnxhA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
|
||||||
"minimist": "^1.2.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"json5": "lib/cli.js"
|
"json5": "lib/cli.js"
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/jstransformer": {
|
"node_modules/jstransformer": {
|
||||||
@@ -1117,6 +1223,15 @@
|
|||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/math-intrinsics": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/media-typer": {
|
"node_modules/media-typer": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||||
@@ -1127,10 +1242,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/merge-descriptors": {
|
"node_modules/merge-descriptors": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
|
||||||
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
|
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/methods": {
|
"node_modules/methods": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
@@ -1174,40 +1292,22 @@
|
|||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimist": {
|
|
||||||
"version": "1.2.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
|
||||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/morgan": {
|
"node_modules/morgan": {
|
||||||
"version": "1.9.1",
|
"version": "1.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz",
|
||||||
"integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
|
"integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"basic-auth": "~2.0.0",
|
"basic-auth": "~2.0.1",
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
"depd": "~1.1.2",
|
"depd": "~2.0.0",
|
||||||
"on-finished": "~2.3.0",
|
"on-finished": "~2.3.0",
|
||||||
"on-headers": "~1.0.1"
|
"on-headers": "~1.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/morgan/node_modules/depd": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/morgan/node_modules/on-finished": {
|
"node_modules/morgan/node_modules/on-finished": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||||
@@ -1254,9 +1354,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/object-inspect": {
|
"node_modules/object-inspect": {
|
||||||
"version": "1.13.2",
|
"version": "1.13.4",
|
||||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
|
||||||
"integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
|
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -1278,9 +1378,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/on-headers": {
|
"node_modules/on-headers": {
|
||||||
"version": "1.0.2",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
|
||||||
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
|
"integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -1302,9 +1402,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/path-to-regexp": {
|
"node_modules/path-to-regexp": {
|
||||||
"version": "0.1.7",
|
"version": "0.1.12",
|
||||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
|
||||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
|
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
@@ -1472,12 +1572,12 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/qs": {
|
"node_modules/qs": {
|
||||||
"version": "6.11.0",
|
"version": "6.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
|
||||||
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
|
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"side-channel": "^1.0.4"
|
"side-channel": "^1.0.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.6"
|
"node": ">=0.6"
|
||||||
@@ -1544,12 +1644,6 @@
|
|||||||
"node": ">=8.10.0"
|
"node": ">=8.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/regenerator-runtime": {
|
|
||||||
"version": "0.14.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
|
||||||
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/resolve": {
|
"node_modules/resolve": {
|
||||||
"version": "1.22.8",
|
"version": "1.22.8",
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
||||||
@@ -1611,9 +1705,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/send": {
|
"node_modules/send": {
|
||||||
"version": "0.18.0",
|
"version": "0.19.0",
|
||||||
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
|
||||||
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
|
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
@@ -1634,6 +1728,15 @@
|
|||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/send/node_modules/encodeurl": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/send/node_modules/http-errors": {
|
"node_modules/send/node_modules/http-errors": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
||||||
@@ -1663,15 +1766,15 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/serve-static": {
|
"node_modules/serve-static": {
|
||||||
"version": "1.15.0",
|
"version": "1.16.2",
|
||||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
|
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
|
||||||
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
|
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"encodeurl": "~1.0.2",
|
"encodeurl": "~2.0.0",
|
||||||
"escape-html": "~1.0.3",
|
"escape-html": "~1.0.3",
|
||||||
"parseurl": "~1.3.3",
|
"parseurl": "~1.3.3",
|
||||||
"send": "0.18.0"
|
"send": "0.19.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
@@ -1701,15 +1804,69 @@
|
|||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/side-channel": {
|
"node_modules/side-channel": {
|
||||||
"version": "1.0.6",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
|
||||||
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
|
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.7",
|
|
||||||
"es-errors": "^1.3.0",
|
"es-errors": "^1.3.0",
|
||||||
"get-intrinsic": "^1.2.4",
|
"object-inspect": "^1.13.3",
|
||||||
"object-inspect": "^1.13.1"
|
"side-channel-list": "^1.0.0",
|
||||||
|
"side-channel-map": "^1.0.1",
|
||||||
|
"side-channel-weakmap": "^1.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/side-channel-list": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"es-errors": "^1.3.0",
|
||||||
|
"object-inspect": "^1.13.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/side-channel-map": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"call-bound": "^1.0.2",
|
||||||
|
"es-errors": "^1.3.0",
|
||||||
|
"get-intrinsic": "^1.2.5",
|
||||||
|
"object-inspect": "^1.13.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/side-channel-weakmap": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"call-bound": "^1.0.2",
|
||||||
|
"es-errors": "^1.3.0",
|
||||||
|
"get-intrinsic": "^1.2.5",
|
||||||
|
"object-inspect": "^1.13.3",
|
||||||
|
"side-channel-map": "^1.0.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
|
|||||||
+5
-4
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "laerm-web-sensorapi",
|
"name": "laerm-web-sensorapi",
|
||||||
"version": "3.2.4",
|
"version": "3.3.1",
|
||||||
"date": "2024-12-20 13:00 UTC",
|
"date": "2026-06-30 18:00 UTC",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node bin/www.js >>/var/log/noise.log 2>&1"
|
"start": "node bin/www.js >>/var/log/noise.log 2>&1"
|
||||||
@@ -15,14 +15,15 @@
|
|||||||
"cookie-parser": "~1.4.4",
|
"cookie-parser": "~1.4.4",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"debug": "~2.6.9",
|
"debug": "~2.6.9",
|
||||||
|
"dotenv": "^17.2.3",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"http-errors": "~1.6.3",
|
"http-errors": "~1.6.3",
|
||||||
"i18next": "^22.4.14",
|
"i18next": "^22.4.14",
|
||||||
"i18next-express-middleware": "^2.0.0",
|
"i18next-express-middleware": "^2.0.0",
|
||||||
"i18next-http-middleware": "^3.3.0",
|
"i18next-http-middleware": "^3.3.0",
|
||||||
"i18next-node-fs-backend": "^2.1.3",
|
"i18next-node-fs-backend": "^1.2.1",
|
||||||
"luxon": "^3.3.0",
|
"luxon": "^3.3.0",
|
||||||
"morgan": "~1.9.1",
|
"morgan": "^1.10.1",
|
||||||
"pug": "^3.0.2",
|
"pug": "^3.0.2",
|
||||||
"sass": "^1.58.3",
|
"sass": "^1.58.3",
|
||||||
"spin.js": "^4.1.2"
|
"spin.js": "^4.1.2"
|
||||||
|
|||||||
@@ -180,17 +180,41 @@ export async function addSensorID2chart(chart, sensor, width) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const showError = (err) => {
|
export const showError = (err) => {
|
||||||
let e = document.querySelector('#dialogError .modal-dialog .modal-content .modal-body')
|
const dialog = document.getElementById('dialogError')
|
||||||
e.innerHTML = err
|
const body = dialog.querySelector('.dialog-body')
|
||||||
let myModal = new bootstrap.Modal(document.getElementById('dialogError'))
|
body.innerHTML = err
|
||||||
myModal.show()
|
dialog.showModal()
|
||||||
}
|
}
|
||||||
|
|
||||||
export const showReset = () => {
|
export const showReset = () => {
|
||||||
let myModal = new bootstrap.Modal(document.getElementById('dialogReset'))
|
const dialog = document.getElementById('dialogReset')
|
||||||
myModal.show()
|
dialog.showModal()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setup dialog close buttons
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const errorClose = document.querySelector('#dialogError .dialog-close')
|
||||||
|
if (errorClose) {
|
||||||
|
errorClose.addEventListener('click', () => {
|
||||||
|
document.getElementById('dialogError').close()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const resetClose = document.querySelector('#dialogReset .dialog-close')
|
||||||
|
if (resetClose) {
|
||||||
|
resetClose.addEventListener('click', () => {
|
||||||
|
document.getElementById('dialogReset').close()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const resetOk = document.querySelector('#btnResetOk')
|
||||||
|
if (resetOk) {
|
||||||
|
resetOk.addEventListener('click', () => {
|
||||||
|
document.getElementById('dialogReset').close()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
// remove the taps (if shownig the map)
|
// remove the taps (if shownig the map)
|
||||||
export const removeTabs = () => {
|
export const removeTabs = () => {
|
||||||
document.querySelector('#navi').style.display = 'none'
|
document.querySelector('#navi').style.display = 'none'
|
||||||
|
|||||||
Vendored
-2
File diff suppressed because one or more lines are too long
@@ -73,6 +73,16 @@ import * as spin from './spinner.js'
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Register events
|
// Register events
|
||||||
|
// Button 'My Location' pressed
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const btnMyLocation = document.querySelector('#btnMyLocation');
|
||||||
|
if (btnMyLocation) {
|
||||||
|
btnMyLocation.addEventListener('click', () => {
|
||||||
|
map.goToMyLocation();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Button 'Save' pressed
|
// Button 'Save' pressed
|
||||||
document.querySelector('#btnSave').addEventListener('click', async () => {
|
document.querySelector('#btnSave').addEventListener('click', async () => {
|
||||||
let curtab = getCurrentTab()
|
let curtab = getCurrentTab()
|
||||||
@@ -115,6 +125,7 @@ import * as spin from './spinner.js'
|
|||||||
if(newlng !== oldlng) {
|
if(newlng !== oldlng) {
|
||||||
location.reload()
|
location.reload()
|
||||||
}
|
}
|
||||||
|
document.getElementById('dialogSettings').close()
|
||||||
spin.spinner.spin(spin.spindiv)
|
spin.spinner.spin(spin.spindiv)
|
||||||
await loadAll(params,0, curtab)
|
await loadAll(params,0, curtab)
|
||||||
spin.spinner.stop()
|
spin.spinner.stop()
|
||||||
@@ -125,37 +136,32 @@ import * as spin from './spinner.js'
|
|||||||
// }
|
// }
|
||||||
})
|
})
|
||||||
|
|
||||||
$.datepicker.regional['de'] = {
|
|
||||||
monthNames: ['Januar','Februar','März','April','Mai','Juni',
|
|
||||||
'Juli','August','September','Oktober','November','Dezember'],
|
|
||||||
monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
|
|
||||||
'Jul','Aug','Sep','Okt','Nov','Dez'],
|
|
||||||
dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
|
|
||||||
dayNamesShort: ['Son','Mon','Die','Mit','Don','Fre','Sam'],
|
|
||||||
dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
|
|
||||||
firstDay: 1};
|
|
||||||
|
|
||||||
// Btn 'Settings' pressed
|
// Btn 'Settings' pressed
|
||||||
document.querySelector('#btnSet').addEventListener('click', () => {
|
document.querySelector('#btnSet').addEventListener('click', () => {
|
||||||
const curtab = getCurrentTab()
|
const curtab = getCurrentTab()
|
||||||
let myModal = new bootstrap.Modal(document.getElementById('dialogSettings'), {backdrop: 'static'})
|
const dialog = document.getElementById('dialogSettings')
|
||||||
const lang = localStorage.getItem('curlang')
|
|
||||||
$('#startday').datepicker($.extend(
|
// Set max and min dates for date input
|
||||||
{},
|
const today = new Date().toISOString().split('T')[0]
|
||||||
$.datepicker.regional[lang],
|
const minDateStr = minDate.toISOString().split('T')[0]
|
||||||
{
|
const startdayInput = document.getElementById('startday')
|
||||||
dateFormat: 'yy-mm-dd',
|
startdayInput.max = today
|
||||||
maxDate: new Date(),
|
startdayInput.min = minDateStr
|
||||||
minDate: minDate,
|
|
||||||
})
|
// Convert seldate format if needed
|
||||||
)
|
let seldate = params.seldate
|
||||||
document.getElementById('startday').value = params.seldate
|
if (seldate === 'today' || seldate === 'heute') {
|
||||||
|
seldate = today
|
||||||
|
}
|
||||||
|
|
||||||
|
startdayInput.value = seldate
|
||||||
document.getElementById('nbrofdays').value = params.span
|
document.getElementById('nbrofdays').value = params.span
|
||||||
document.getElementById('peaklim').value = params.peak
|
document.getElementById('peaklim').value = params.peak
|
||||||
document.getElementById('olderthan').value = params.weeks
|
document.getElementById('olderthan').value = params.weeks
|
||||||
const centercity = JSON.parse(localStorage.getItem('centercity'))
|
const centercity = JSON.parse(localStorage.getItem('centercity'))
|
||||||
document.getElementById('centercity').value = centercity.name
|
document.getElementById('centercity').value = centercity.name
|
||||||
// select different infos depending on the selcted tab
|
|
||||||
|
// select different infos depending on the selected tab
|
||||||
// first clear all
|
// first clear all
|
||||||
document.querySelector('#ccity').style.display = 'none'
|
document.querySelector('#ccity').style.display = 'none'
|
||||||
document.querySelector('#stday').style.display = 'none'
|
document.querySelector('#stday').style.display = 'none'
|
||||||
@@ -165,13 +171,22 @@ import * as spin from './spinner.js'
|
|||||||
for(let i = 0; i < setting.length; i++) {
|
for(let i = 0; i < setting.length; i++) {
|
||||||
if(setting[i].typ === curtab) {
|
if(setting[i].typ === curtab) {
|
||||||
for(let j = 0; j < setting[i].show.length; j++) {
|
for(let j = 0; j < setting[i].show.length; j++) {
|
||||||
let x = `#${setting[i].show[j]}`
|
|
||||||
document.querySelector(`#${setting[i].show[j]}`).style.display = 'inline'
|
document.querySelector(`#${setting[i].show[j]}`).style.display = 'inline'
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
myModal.show()
|
dialog.showModal()
|
||||||
|
})
|
||||||
|
|
||||||
|
// Close button for settings dialog
|
||||||
|
document.querySelector('#dialogSettings .dialog-close').addEventListener('click', () => {
|
||||||
|
document.getElementById('dialogSettings').close()
|
||||||
|
})
|
||||||
|
|
||||||
|
// Close button (secondary button)
|
||||||
|
document.querySelector('#btnClose').addEventListener('click', () => {
|
||||||
|
document.getElementById('dialogSettings').close()
|
||||||
})
|
})
|
||||||
|
|
||||||
const getSensorType = async (sid) => {
|
const getSensorType = async (sid) => {
|
||||||
@@ -221,13 +236,20 @@ import * as spin from './spinner.js'
|
|||||||
setInterval(() => dt.showDate(false, params), 1000)
|
setInterval(() => dt.showDate(false, params), 1000)
|
||||||
|
|
||||||
// initialise tabs
|
// initialise tabs
|
||||||
const triggerTabList = [].slice.call(document.querySelectorAll('.nav-link'))
|
const triggerTabList = [].slice.call(document.querySelectorAll('.tab-button'))
|
||||||
triggerTabList.forEach(function (triggerEl) {
|
triggerTabList.forEach(function (triggerEl) {
|
||||||
let tabTrigger = new bootstrap.Tab(triggerEl)
|
|
||||||
|
|
||||||
triggerEl.addEventListener('click', function (event) {
|
triggerEl.addEventListener('click', function (event) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
tabTrigger.show()
|
|
||||||
|
// Remove active from all tabs
|
||||||
|
triggerTabList.forEach(tab => tab.classList.remove('active'))
|
||||||
|
document.querySelectorAll('.tab-pane').forEach(pane => pane.classList.remove('active'))
|
||||||
|
|
||||||
|
// Add active to clicked tab
|
||||||
|
triggerEl.classList.add('active')
|
||||||
|
const targetId = triggerEl.getAttribute('data-target')
|
||||||
|
document.getElementById(targetId).classList.add('active')
|
||||||
|
|
||||||
let newtab = event.currentTarget.id
|
let newtab = event.currentTarget.id
|
||||||
setCurrentTab(newtab)
|
setCurrentTab(newtab)
|
||||||
let tab = tabtable.find(tab => tab.id === newtab)
|
let tab = tabtable.find(tab => tab.id === newtab)
|
||||||
@@ -253,8 +275,13 @@ import * as spin from './spinner.js'
|
|||||||
params.center.coords = [props.location[0].loc.coordinates[1], props.location[0].loc.coordinates[0]]
|
params.center.coords = [props.location[0].loc.coordinates[1], props.location[0].loc.coordinates[0]]
|
||||||
params.sid = csid
|
params.sid = csid
|
||||||
let t = triggerTabList[1]
|
let t = triggerTabList[1]
|
||||||
let tt = new bootstrap.Tab(t)
|
|
||||||
tt.show()
|
// Switch to live tab
|
||||||
|
triggerTabList.forEach(tab => tab.classList.remove('active'))
|
||||||
|
document.querySelectorAll('.tab-pane').forEach(pane => pane.classList.remove('active'))
|
||||||
|
t.classList.add('active')
|
||||||
|
document.getElementById('t_live').classList.add('active')
|
||||||
|
|
||||||
setCurrentTab('livetab')
|
setCurrentTab('livetab')
|
||||||
let err = await showChart(params, ttIndex.live)
|
let err = await showChart(params, ttIndex.live)
|
||||||
spin.spinner.stop()
|
spin.spinner.stop()
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
import * as utils from "./chart_utilities.js"
|
import * as utils from "./chart_utilities.js"
|
||||||
import * as mapn from './map_noise.js'
|
import * as mapn from './map_noise.js'
|
||||||
import * as mapg from './map_geiger.js'
|
|
||||||
import * as mapu from './map_utilities.js'
|
import * as mapu from './map_utilities.js'
|
||||||
|
|
||||||
const mapparams = {
|
const mapparams = {
|
||||||
@@ -43,13 +42,58 @@ export async function showMap(params) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const buildMarkers = async (params, mapparams) => {
|
const buildMarkers = async (params, mapparams) => {
|
||||||
if(sysparams.category === 'noise') {
|
|
||||||
return mapn.buildMarkers(params, mapparams)
|
return mapn.buildMarkers(params, mapparams)
|
||||||
} else if(sysparams.category === 'multigeiger') {
|
|
||||||
return mapg.buildMarkers(params, mapparams)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const setNewCenter = (center) => {
|
export const setNewCenter = (center) => {
|
||||||
mapparams.map.setView(center)
|
mapparams.map.setView(center)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const goToMyLocation = () => {
|
||||||
|
if (!navigator.geolocation) {
|
||||||
|
alert('Geolocation wird von diesem Browser nicht unterstützt');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
navigator.geolocation.getCurrentPosition(
|
||||||
|
(position) => {
|
||||||
|
const lat = position.coords.latitude;
|
||||||
|
const lon = position.coords.longitude;
|
||||||
|
const accuracy = position.coords.accuracy;
|
||||||
|
|
||||||
|
// Karte zur aktuellen Position zentrieren
|
||||||
|
mapparams.map.setView([lat, lon], 15);
|
||||||
|
|
||||||
|
// Optional: Marker an aktueller Position setzen
|
||||||
|
const myLocationMarker = L.marker([lat, lon], {
|
||||||
|
icon: L.icon({
|
||||||
|
iconUrl: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+PGNpcmNsZSBjeD0iMjAiIGN5PSIyMCIgcj0iOCIgZmlsbD0iIzQyODVGNCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIzIi8+PGNpcmNsZSBjeD0iMjAiIGN5PSIyMCIgcj0iMTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzQyODVGNCIgc3Ryb2tlLXdpZHRoPSIyIiBvcGFjaXR5PSIwLjMiLz48L3N2Zz4=',
|
||||||
|
iconSize: [40, 40],
|
||||||
|
iconAnchor: [20, 20]
|
||||||
|
})
|
||||||
|
}).addTo(mapparams.map);
|
||||||
|
|
||||||
|
myLocationMarker.bindPopup(`📍 Ihr Standort<br/>Genauigkeit: ±${Math.round(accuracy)}m`).openPopup();
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
let errorMsg = 'Position konnte nicht ermittelt werden.';
|
||||||
|
switch(error.code) {
|
||||||
|
case error.PERMISSION_DENIED:
|
||||||
|
errorMsg = 'Bitte erlauben Sie den Zugriff auf Ihren Standort.';
|
||||||
|
break;
|
||||||
|
case error.POSITION_UNAVAILABLE:
|
||||||
|
errorMsg = 'Standortinformationen sind nicht verfügbar.';
|
||||||
|
break;
|
||||||
|
case error.TIMEOUT:
|
||||||
|
errorMsg = 'Die Anfrage ist abgelaufen.';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
alert(errorMsg);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enableHighAccuracy: true,
|
||||||
|
timeout: 5000,
|
||||||
|
maximumAge: 0
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,235 +0,0 @@
|
|||||||
import * as dt from './datetime.js'
|
|
||||||
import * as utils from "./chart_utilities.js"
|
|
||||||
import { showChart, loadAll } from './showcharts.js'
|
|
||||||
import * as mapu from './map_utilities.js'
|
|
||||||
|
|
||||||
const colorscale = ['#d73027','#fc8d59','#fee08b','#ffffbf','#d9ef8b','#91cf60','#1a9850', '#808080'];
|
|
||||||
const grades = [ 10, 5, 2, 1, 0.5, 0.2, 0.1, -999];
|
|
||||||
const cpms = [1482, 741, 296, 148, 74, 30, 15, -999];
|
|
||||||
|
|
||||||
const sv_factor = {'SBM-20': 1 / 2.47, 'SBM-19': 1 / 9.81888, 'Si22G': 0.081438};
|
|
||||||
|
|
||||||
let showOnlySi22G = false;
|
|
||||||
|
|
||||||
export function getColor(d) {
|
|
||||||
let erg = d3.scaleLinear()
|
|
||||||
.domain([0.05, 0.1, 0.2, 0.5, 5])
|
|
||||||
.range(["#267A45", "#66FA5F", "#F8Fc00","#FF0000","#9000FF"])
|
|
||||||
.clamp(true);
|
|
||||||
return d < -1 ? '#9ECDEA' : d==-1 ? '#7F7F7F' : d==0 ? '#333333' : erg(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************
|
|
||||||
* buildMarkers
|
|
||||||
*
|
|
||||||
* fetch data for MArkers from 'mapdata' and create
|
|
||||||
* all the markers, that are visibile within bounds
|
|
||||||
* and plot them on the map.
|
|
||||||
* Use the ClusterGroup-Library to cluster the markers
|
|
||||||
*
|
|
||||||
* params:
|
|
||||||
* bounds find markers within this bounds
|
|
||||||
* return:
|
|
||||||
* all markers plotted on map
|
|
||||||
*******************************************************/
|
|
||||||
export async function buildMarkers(params, mpp) {
|
|
||||||
const url = mpp.APIURL + `type=radioactivity&box=${mpp.bounds.toBBoxString()}`
|
|
||||||
let sensors = await utils.fetchfromserver(url)
|
|
||||||
if (!sensors.err) {
|
|
||||||
// if (markersAll) {
|
|
||||||
// mpp.map.removeLayer(markersAll);
|
|
||||||
// }
|
|
||||||
let markers = L.markerClusterGroup({
|
|
||||||
spiderfyOnMaxZoom: true,
|
|
||||||
showCoverageOnHover: false,
|
|
||||||
zoomToBoundsOnClick: true,
|
|
||||||
// disableClusteringAtZoom: 14,
|
|
||||||
iconCreateFunction: function (cluster) {
|
|
||||||
let mymarkers = cluster.getAllChildMarkers();
|
|
||||||
let color = getMedian(mymarkers); // calc median of markers in cluster and use that color
|
|
||||||
// return L.divIcon({ html: '<b>' + cluster.getChildCount() + '</b>' });
|
|
||||||
return new L.Icon({
|
|
||||||
iconUrl: buildIcon(color, cluster.getChildCount()),
|
|
||||||
iconSize: [35, 35]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for (let x of sensors.values) {
|
|
||||||
if (x.location == undefined) { // if there is no location defined ...
|
|
||||||
continue; // ... skip this sensor
|
|
||||||
} // otherwise create marker
|
|
||||||
if ((x.name != "Radiation Si22G") && showOnlySi22G) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if ((params.weeks > 0) && (x.weeks > params.weeks)) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
let uSvph = x.value < 0 ? -1 : x.value / 60 * sv_factor[x.name.slice(10)];
|
|
||||||
let curcolor = getColor(uSvph > 0 ? x.indoor ? -2 : uSvph : uSvph);
|
|
||||||
|
|
||||||
let marker = L.marker([x.location[1], x.location[0]], {
|
|
||||||
name: x.id,
|
|
||||||
icon: new L.Icon({
|
|
||||||
iconUrl: buildIcon(curcolor),
|
|
||||||
iconSize: [35, 35]
|
|
||||||
}),
|
|
||||||
value: x.value,
|
|
||||||
mSvph: uSvph,
|
|
||||||
url: '/' + x.id,
|
|
||||||
rohr: x.name.slice(10),
|
|
||||||
indoor: x.indoor,
|
|
||||||
lastseen: dt.formatISODate(x.lastseen)
|
|
||||||
})
|
|
||||||
.on('click', e => onMarkerClick(e, true, sensors.popuptxt, params, mpp)) // define click- and
|
|
||||||
markers.addLayer(marker);
|
|
||||||
}
|
|
||||||
mpp.map.addLayer(markers);
|
|
||||||
return sensors.lastdate
|
|
||||||
} else {
|
|
||||||
utils.showError(sensors.err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
let pos = map.latLngToLayerPoint(marker.getLatLng()).round();
|
|
||||||
|
|
||||||
marker.setZIndexOffset(100 - pos.y);
|
|
||||||
// if clicked on the marker fill popup with address and click function
|
|
||||||
marker.on('click', async function () {
|
|
||||||
let addr = await holAddress(marker);
|
|
||||||
marker.setPopupContent((getPopUp(marker,addr)));
|
|
||||||
$('#btnshwgrafic').click(() => {
|
|
||||||
map.closePopup();
|
|
||||||
// if(window.matchMedia("(orientation:portrait").matches) {
|
|
||||||
// showError(5,"goto Landscape")
|
|
||||||
// } else {
|
|
||||||
showGrafik(clickedSensor);
|
|
||||||
// }
|
|
||||||
});
|
|
||||||
});
|
|
||||||
marker.bindPopup(`Loading adresse data`); // and bind the popup text
|
|
||||||
if (marker.options.value != -2) {
|
|
||||||
markersAll.addLayer(marker);
|
|
||||||
} else {
|
|
||||||
console.log(`Too old Sensor: ${marker.options.name}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mpp.map.addLayer(markersAll);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
function buildIcon(color, n, indoor) {
|
|
||||||
let x = 100;
|
|
||||||
if (n < 10) {
|
|
||||||
x = 200;
|
|
||||||
} else if (n < 100) {
|
|
||||||
x = 150;
|
|
||||||
}
|
|
||||||
let txtColor = "black";
|
|
||||||
if (color == colorscale[5]) {
|
|
||||||
txtColor = "white"
|
|
||||||
}
|
|
||||||
let icon = '<svg xmlns="http://www.w3.org/2000/svg" width="600" height="600">' +
|
|
||||||
'<circle cx="300" cy="300" r="300" fill="' + color + '"/>' +
|
|
||||||
'<circle cx="300" cy="300" r="50"/>' +
|
|
||||||
'<path stroke="#000" stroke-width="175" fill="none" stroke-dasharray="171.74" d="M382,158a164,164 0 1,1-164,0"/>';
|
|
||||||
if (n !== undefined) {
|
|
||||||
icon +=
|
|
||||||
'<text id="marker_text" x="' + x + '" y="400" font-size="1500%" font-family="Verdana,Lucida Sans Unicode,sans-serif" fill="white">' + n + '</text>';
|
|
||||||
}
|
|
||||||
icon += '</svg>';
|
|
||||||
return encodeURI("data:image/svg+xml," + icon).replace(new RegExp('#', 'g'), '%23');
|
|
||||||
}
|
|
||||||
|
|
||||||
// With all Markers in cluster (markers) calculate the median
|
|
||||||
// of the values. With this median fetch the color and return it.
|
|
||||||
// If there are 'offline' sensors (value == -1) strip then before
|
|
||||||
// calculating the median. If there are only offline sensor, return
|
|
||||||
// color of value==-1 (dark gray).
|
|
||||||
function getMedian(markers) {
|
|
||||||
markers.sort(function (a, b) { // first sort, the lowest first
|
|
||||||
let y1 = a.options.mSvph;
|
|
||||||
let y2 = b.options.mSvph;
|
|
||||||
if (y1 < y2) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (y2 < y1) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
// console.log(markers);
|
|
||||||
let i = 0; // now find the 'offlines' (mSvph == -1)
|
|
||||||
for (i = 0; i < markers.length; i++) {
|
|
||||||
if (markers[i].options.mSvph > 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
markers.splice(0, i); // remove these from array
|
|
||||||
let lang = markers.length;
|
|
||||||
if (lang > 1) { //
|
|
||||||
if ((lang % 2) == 1) { // uneven ->
|
|
||||||
return getColor(markers[(Math.floor(lang / 2))].options.mSvph); // median is in the middle
|
|
||||||
} else { // evaen ->
|
|
||||||
lang = lang / 2; // median is mean of both middle mSvphs
|
|
||||||
// console.log(lang);
|
|
||||||
let wert = (markers[lang - 1].options.mSvph +
|
|
||||||
markers[lang].options.mSvph) / 2;
|
|
||||||
return getColor(wert);
|
|
||||||
}
|
|
||||||
} else if (lang == 1) { // only one marker -> return its color
|
|
||||||
return getColor(markers[0].options.mSvph);
|
|
||||||
}
|
|
||||||
return getColor(-1); // only offlines
|
|
||||||
}
|
|
||||||
|
|
||||||
async function bauPopupText(item, txts) {
|
|
||||||
let addr = ''
|
|
||||||
let offlinetext = `
|
|
||||||
<tr><td colspan="2"><span style="color:red;">${txts.offline}</span></td></tr>
|
|
||||||
<tr><td>${txts.lastseen}:</td><td>${item.lastseen}</td></tr>`
|
|
||||||
|
|
||||||
let normaltext = `
|
|
||||||
<tr></tr><tr><td>cpm:</td><td>${item.value}</td></tr>
|
|
||||||
<tr></tr><tr><td>µSvph:</td><td>${item.mSvph}</td></tr>`
|
|
||||||
let popuptext = `
|
|
||||||
<div id="infoTitle">
|
|
||||||
<h4>${txts.sensor}: ${item.name}</h4>
|
|
||||||
<div class="addr">${addr}</div>
|
|
||||||
<div id="infoTable">
|
|
||||||
<table>
|
|
||||||
<tr><td colspan="2"><span style="color:limegreen;">${item.indoor==1 ? "indoor" : ""}</span></td></tr>
|
|
||||||
${item.value < 0 ? offlinetext : normaltext}
|
|
||||||
</table>
|
|
||||||
<div id="infoBtn">
|
|
||||||
<a href="#" class="speciallink">${txts.showchart}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>`
|
|
||||||
return popuptext
|
|
||||||
}
|
|
||||||
|
|
||||||
async function onMarkerClick(e, click, txts, params, mpp) {
|
|
||||||
let item = e.target.options;
|
|
||||||
let popuptext = await bauPopupText(item, txts)
|
|
||||||
e.target.bindPopup(popuptext).openPopup(); // show the popup
|
|
||||||
let addr = await utils.addAddress(item.name)
|
|
||||||
document.querySelector('#infoTitle .addr').innerHTML = `${addr.street}<br />${addr.plz} ${addr.city}`
|
|
||||||
let link = document.querySelector('.speciallink')
|
|
||||||
link.addEventListener('click', async function (ev) {
|
|
||||||
console.log(`Event clicked: ${mpp.clickedSensor}`)
|
|
||||||
params.sid = item.name
|
|
||||||
let ok = await showChart(params, utils.ttIndex.live)
|
|
||||||
if (ok) {
|
|
||||||
let triggerEl = document.querySelector(`#livetab`)
|
|
||||||
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
|
|
||||||
utils.setCurrentTab('livetab')
|
|
||||||
params.center.coords = [e.latlng.lat, e.latlng.lng]
|
|
||||||
mpp.map.setView([e.latlng.lat, e.latlng.lng]);
|
|
||||||
ev.preventDefault()
|
|
||||||
await loadAll(params)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -151,8 +151,13 @@ async function onMarkerClick(e, click, txts, params, mpp) {
|
|||||||
let ok = await showChart(params, utils.ttIndex.live)
|
let ok = await showChart(params, utils.ttIndex.live)
|
||||||
spin.spinner.stop()
|
spin.spinner.stop()
|
||||||
if (ok) {
|
if (ok) {
|
||||||
|
// Switch to live tab
|
||||||
let triggerEl = document.querySelector(`#livetab`)
|
let triggerEl = document.querySelector(`#livetab`)
|
||||||
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
|
document.querySelectorAll('.tab-button').forEach(tab => tab.classList.remove('active'))
|
||||||
|
document.querySelectorAll('.tab-pane').forEach(pane => pane.classList.remove('active'))
|
||||||
|
triggerEl.classList.add('active')
|
||||||
|
document.getElementById('t_live').classList.add('active')
|
||||||
|
|
||||||
params.center.coords = [e.latlng.lat, e.latlng.lng]
|
params.center.coords = [e.latlng.lat, e.latlng.lng]
|
||||||
ev.preventDefault()
|
ev.preventDefault()
|
||||||
await loadAll(params)
|
await loadAll(params)
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ export const loadAll = async (params, start = 2, curtab = '') => {
|
|||||||
|
|
||||||
export const setNoUTC = () => {
|
export const setNoUTC = () => {
|
||||||
Highcharts.setOptions({
|
Highcharts.setOptions({
|
||||||
global: {
|
time: {
|
||||||
useUTC: false // Don't use UTC on the charts
|
useUTC: false // Don't use UTC on the charts
|
||||||
},
|
},
|
||||||
accessibility: { // supress warning concerning accessability
|
accessibility: { // supress warning concerning accessability
|
||||||
|
|||||||
+219
-10
@@ -74,6 +74,7 @@ header #buttonsRight #h1datum {
|
|||||||
border: solid 1px seagreen;
|
border: solid 1px seagreen;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
#map #infoTable table, #map #infoTable tr, #map #infoTable td {
|
#map #infoTable table, #map #infoTable tr, #map #infoTable td {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
@@ -84,6 +85,28 @@ header #buttonsRight #h1datum {
|
|||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
#map #btnMyLocation {
|
||||||
|
position: absolute;
|
||||||
|
top: 80px;
|
||||||
|
right: 10px;
|
||||||
|
z-index: 1000;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
padding: 0;
|
||||||
|
border: 2px solid rgba(0,0,0,0.2);
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: white;
|
||||||
|
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
#map #btnMyLocation:hover {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
#map #btnMyLocation:active {
|
||||||
|
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
|
||||||
#mapdateactsens {
|
#mapdateactsens {
|
||||||
width: 98vw;
|
width: 98vw;
|
||||||
@@ -238,15 +261,6 @@ footer #author #versn {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.nav-tabs .nav-item .nav-link {
|
|
||||||
background-color: #2D6AF8;
|
|
||||||
color: #FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-tabs .nav-item .nav-link.active {
|
|
||||||
color: #2D6AF8;
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
#stday, #nbday, #pklim, #odth {
|
#stday, #nbday, #pklim, #odth {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -275,4 +289,199 @@ footer #author #versn {
|
|||||||
|
|
||||||
.errdiv {
|
.errdiv {
|
||||||
display: none;
|
display: none;
|
||||||
}/*# sourceMappingURL=style.css.map */
|
}
|
||||||
|
|
||||||
|
/* Button Styles */
|
||||||
|
button {
|
||||||
|
padding: 8px 16px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
color: #333;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-color: #e9ecef;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:active {
|
||||||
|
background-color: #dee2e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnSet, #btnHelp {
|
||||||
|
background-color: #2D6AF8;
|
||||||
|
color: white;
|
||||||
|
border-color: #2D6AF8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnSet:hover, #btnHelp:hover {
|
||||||
|
background-color: #1e5ae8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnMyLocation {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tabs */
|
||||||
|
.tabs {
|
||||||
|
display: flex;
|
||||||
|
gap: 2px;
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0.5vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-button {
|
||||||
|
background-color: #2D6AF8;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
padding: 10px 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-button:hover {
|
||||||
|
background-color: #1e5ae8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-button.active {
|
||||||
|
background-color: white;
|
||||||
|
color: #2D6AF8;
|
||||||
|
border-bottom: 2px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-content {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-pane {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-pane.active {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dialog Styles */
|
||||||
|
dialog {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||||
|
padding: 0;
|
||||||
|
max-width: 600px;
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog::backdrop {
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 16px 20px;
|
||||||
|
border-bottom: 1px solid #dee2e6;
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-close {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
font-size: 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: #000;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-close:hover {
|
||||||
|
opacity: 1;
|
||||||
|
background-color: rgba(0, 0, 0, 0.05);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-body {
|
||||||
|
padding: 20px;
|
||||||
|
overflow-y: auto;
|
||||||
|
max-height: 60vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 16px 20px;
|
||||||
|
border-top: 1px solid #dee2e6;
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-button {
|
||||||
|
padding: 8px 16px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-button.primary {
|
||||||
|
background-color: #2D6AF8;
|
||||||
|
color: white;
|
||||||
|
border-color: #2D6AF8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-button.primary:hover {
|
||||||
|
background-color: #1e5ae8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-button.secondary {
|
||||||
|
background-color: #6c757d;
|
||||||
|
color: white;
|
||||||
|
border-color: #6c757d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-button.secondary:hover {
|
||||||
|
background-color: #5a6268;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Radio buttons */
|
||||||
|
.radio-group {
|
||||||
|
display: flex;
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.radio-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.radio-label input[type="radio"] {
|
||||||
|
margin: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*# sourceMappingURL=style.css.map */
|
||||||
@@ -1,352 +0,0 @@
|
|||||||
body {
|
|
||||||
font-family: Verdana, "Lucida Sans Unicode", sans-serif;
|
|
||||||
font-size: 16px;
|
|
||||||
width: 100%;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#wrapper {
|
|
||||||
margin: auto;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 5px;
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #0000EE;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
background-color: lightgray;
|
|
||||||
}
|
|
||||||
header #hline1 {
|
|
||||||
margin: 0px 1vw 5px 1vw;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
header #h1name {
|
|
||||||
font-size: 148%;
|
|
||||||
clear: both;
|
|
||||||
float: left;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
header #h1datum {
|
|
||||||
float: right;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fenster {
|
|
||||||
margin-left: 0.5vw;
|
|
||||||
background: white;
|
|
||||||
padding-top: 5px;
|
|
||||||
width: 99vw;
|
|
||||||
}
|
|
||||||
#fenster #navi {
|
|
||||||
float: left;
|
|
||||||
margin-left: 1%;
|
|
||||||
}
|
|
||||||
#fenster #buttonsRight {
|
|
||||||
float: right;
|
|
||||||
margin-right: 1%;
|
|
||||||
}
|
|
||||||
#fenster #buttonsRight #btnSet {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map {
|
|
||||||
clear: both;
|
|
||||||
height: 80vh;
|
|
||||||
z-index: 0;
|
|
||||||
border-top: solid 1px black;
|
|
||||||
border-bottom: solid 1px black;
|
|
||||||
margin-top: 45px
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
img.leaflet-tile {
|
|
||||||
filter: grayscale(85%) saturate(150%) hue-rotate(180deg) contrast(90%) brightness(110%);
|
|
||||||
-webkit-filter: grayscale(85%) saturate(150%) hue-rotate(180deg) contrast(90%) brightness(110%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
#map {
|
|
||||||
margin-left: 0.5vw;
|
|
||||||
width: 98vw;
|
|
||||||
height: 80vh;
|
|
||||||
border-radius: 10px;
|
|
||||||
border: solid 1px seagreen;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
#map #infoTable table, #map #infoTable tr, #map #infoTable td {
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
#map #infoBtn {
|
|
||||||
margin-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map_geiger {
|
|
||||||
margin-left: -0.5vw;
|
|
||||||
width: 101%;
|
|
||||||
height: 80vh;
|
|
||||||
border: solid 1px seagreen;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
#map_geiger img.leaflet-tile {
|
|
||||||
filter: grayscale(85%) saturate(150%) hue-rotate(180deg) contrast(90%) brightness(110%);
|
|
||||||
-webkit-filter: grayscale(85%) saturate(150%) hue-rotate(180deg) contrast(90%) brightness(110%);
|
|
||||||
}
|
|
||||||
#map_geiger #infoTable table, #map_geiger #infoTable tr, #map_geiger #infoTable td {
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
#map_geiger #infoBtn {
|
|
||||||
margin-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mapdateactsens {
|
|
||||||
width: 98vw;
|
|
||||||
font-size: 70%;
|
|
||||||
padding: 10px 0 10px 0;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
#mapdateactsens #mapdate, #mapdateactsens #actsensors {
|
|
||||||
width: 33%;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
#mapdateactsens #actsensors {
|
|
||||||
text-align: left;
|
|
||||||
margin-left: 1vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
background-color: lightgray;
|
|
||||||
}
|
|
||||||
footer #author {
|
|
||||||
font-size: 80%;
|
|
||||||
width: 98vw;
|
|
||||||
margin: auto;
|
|
||||||
padding-bottom: 30px;
|
|
||||||
padding-top: 10px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
footer #author #mailadr {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
footer #author #versn {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
|
||||||
padding: 6px 8px;
|
|
||||||
font: 12px Arial, Helvetica, sans-serif;
|
|
||||||
background: rgba(255, 255, 255, 0.8);
|
|
||||||
box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info h4 {
|
|
||||||
margin: 0 0 5px;
|
|
||||||
color: #777;
|
|
||||||
}
|
|
||||||
|
|
||||||
.legend {
|
|
||||||
font-family: arial, sans-serif;
|
|
||||||
color:black;
|
|
||||||
font-size: 12px;
|
|
||||||
position: absolute;
|
|
||||||
left: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
height: 35%;
|
|
||||||
width: 130px;
|
|
||||||
z-index: 999;
|
|
||||||
background-color: rgba(238,238,238,0.80);
|
|
||||||
border: solid 1px black;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm {
|
|
||||||
position: absolute;
|
|
||||||
left: 20px;
|
|
||||||
bottom: 15px;
|
|
||||||
z-index: 1001;
|
|
||||||
pointer-events: none;
|
|
||||||
height: 90%;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
padding-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .gradient {
|
|
||||||
opacity: 0.8;
|
|
||||||
width: 20px;
|
|
||||||
/* background: -webkit-linear-gradient(bottom, #00796b 0%, #00796b 16%, #f9a825 32%, #e65100 48%, #dd2c00 72%, #dd2c00 80%, #8c0084 100%); */
|
|
||||||
background: -webkit-linear-gradient(bottom, #9ECDEA 0%, #9ECDEA 8%, #7F7F7F 8%, #7F7F7F 16%, #00796b 16%, #f9a825 44%, #e65100 58%, #dd2c00 72%, #dd2c00 86%, #8c0084 100%);
|
|
||||||
/* background: linear-gradient(to top, #00796b 0%, #00796b 16%, #f9a825 32%, #e65100 48%, #dd2c00 72%, #dd2c00 80%, #8c0084 100%); */
|
|
||||||
background: linear-gradient(to top, #9ECDEA 0%, #9ECDEA 8%, #7F7F7F 8%, #7F7F7F 16%,
|
|
||||||
#267A45 16%,
|
|
||||||
#66FA5F 30%,
|
|
||||||
#F8Fc00 44%,
|
|
||||||
#FF0000 58%,
|
|
||||||
#9000FF 100%);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels {
|
|
||||||
width: 150px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels .label {
|
|
||||||
position: absolute;
|
|
||||||
-webkit-transform: translateY(50%);
|
|
||||||
transform: translateY(50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels .label1 {
|
|
||||||
position: absolute;
|
|
||||||
-webkit-transform: translateY(50%);
|
|
||||||
transform: translateY(50%);
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels .label:before {
|
|
||||||
content: '\2013 ';
|
|
||||||
}
|
|
||||||
|
|
||||||
.ndmarker {
|
|
||||||
position: absolute;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-pane {
|
|
||||||
margin-top: 44px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#dlive, #dhour, #dday, #ddaynight, #dlden {
|
|
||||||
width: 100%;
|
|
||||||
margin: auto;
|
|
||||||
height: 80vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#dialogError {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-content {
|
|
||||||
border: red solid 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highcharts-tooltip {
|
|
||||||
zIndex: 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.settings {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.thelabels {
|
|
||||||
width: 50%;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.theInputs {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rows {
|
|
||||||
width: 100%;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.column {
|
|
||||||
width: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#startday {
|
|
||||||
width: 40%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nbrofdays, #peaklim, #olderthan {
|
|
||||||
width: 13%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.addit {
|
|
||||||
width: 20%;
|
|
||||||
border: 1px solid blue;
|
|
||||||
}
|
|
||||||
|
|
||||||
.klein {
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.infoTafel th, td {
|
|
||||||
margin: auto;
|
|
||||||
text-align: left;
|
|
||||||
padding: 0 10px;
|
|
||||||
border: 1px solid black;
|
|
||||||
background-color: rgba(238, 238, 238, 0.6);
|
|
||||||
}
|
|
||||||
|
|
||||||
.infoTafel th {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.infoTafel tr {
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width: 700px) {
|
|
||||||
.infoTafel, .legend {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.nav-tabs .nav-item .nav-link {
|
|
||||||
background-color: #2D6AF8;
|
|
||||||
color: #FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-tabs .nav-item .nav-link.active {
|
|
||||||
color: #2D6AF8;
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
#stday, #nbday, #pklim, #odth {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#first {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.addr {
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigger {
|
|
||||||
font-size: 120%;
|
|
||||||
font-weight: bold;
|
|
||||||
}/*# sourceMappingURL=style.css.map */
|
|
||||||
@@ -1,692 +0,0 @@
|
|||||||
htnml {
|
|
||||||
height: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: auto;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
font: 14px Montserrat Helvetica, Arial, sans-serif;
|
|
||||||
border-top: 1px solid black;
|
|
||||||
border-bottom: 1px solid black;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fenster {
|
|
||||||
margin-left: 0.5vw;
|
|
||||||
background: white;
|
|
||||||
padding-top: 5px;
|
|
||||||
width: 99vw;
|
|
||||||
}
|
|
||||||
#fenster #navi {
|
|
||||||
float: left;
|
|
||||||
margin-left: 1%;
|
|
||||||
}
|
|
||||||
#fenster #buttonsRight {
|
|
||||||
float: right;
|
|
||||||
margin-right: 1%;
|
|
||||||
}
|
|
||||||
#fenster #buttonsRight #btnSet {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#meldung {
|
|
||||||
margin : auto;
|
|
||||||
/* width: 100%; */
|
|
||||||
text-align: center;
|
|
||||||
background-color: #DDDDDD;
|
|
||||||
padding-top: 30px;
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
border: 3px solid red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#buttons {
|
|
||||||
clear: both;
|
|
||||||
/* margin: auto; */
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-right: 20px;
|
|
||||||
/* text-align: right; */
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#buttonsLeft {
|
|
||||||
width: 48%;
|
|
||||||
float: left;
|
|
||||||
/* margin-bottom: 5px; */
|
|
||||||
margin-left: 15px;
|
|
||||||
/* border: 1px solid blue; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#buttonsRight {
|
|
||||||
text-align: right;
|
|
||||||
width: 45%;
|
|
||||||
float: right;
|
|
||||||
/* margin-bottom: 5px; */
|
|
||||||
margin-right: 15px;
|
|
||||||
/* border: 1px solid blue; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#buttright {
|
|
||||||
justify-content:flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav { display: flex;}
|
|
||||||
|
|
||||||
|
|
||||||
#btninfo {
|
|
||||||
/* float: right; */
|
|
||||||
margin-top: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#btnda, #btnmo, #btnwe {
|
|
||||||
width: 80px;
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mybuttons{
|
|
||||||
height: 30px;
|
|
||||||
font-size: 95%;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.myinputs{
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#btnlegende {
|
|
||||||
margin-right: 20px;
|
|
||||||
margin-top: 2px;
|
|
||||||
/* display: none; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#btnTST {
|
|
||||||
margin-right: 20px;
|
|
||||||
margin-top: 2px;
|
|
||||||
/* display: none; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#btnset {
|
|
||||||
margin-right: 10px;
|
|
||||||
/* display: none; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#btnshwgrafic {
|
|
||||||
magin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Grafik-Fenster */
|
|
||||||
|
|
||||||
#placeholderFS_1 {
|
|
||||||
width: 100%;
|
|
||||||
margin: auto;
|
|
||||||
margin-bottom:8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#placeholderBME {
|
|
||||||
width: 100%;
|
|
||||||
margin-top: -10px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.infoTafel th,td {
|
|
||||||
margin: auto;
|
|
||||||
text-align: left;
|
|
||||||
padding: 0 10px;
|
|
||||||
border: 1px solid black;
|
|
||||||
background-color: rgba(238,238,238,0.6) ! important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.infoTafel th {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.infoTafel tr {
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.errTafel {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.errTafelsmall {
|
|
||||||
font-size:75%;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#author {
|
|
||||||
font-size:80%;
|
|
||||||
width: 100%;
|
|
||||||
margin: auto;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
padding-top: 5px;
|
|
||||||
background: #DDD;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#mailadr {
|
|
||||||
float: left;
|
|
||||||
margin-left: 2%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#versn {
|
|
||||||
float: right;
|
|
||||||
margin-right: 2%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#help {
|
|
||||||
width: 700px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sensors {
|
|
||||||
margin: 30px auto;
|
|
||||||
align:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sensors td, #sensors th{
|
|
||||||
text-align: center;
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
#fstb {
|
|
||||||
padding-top: 30px;
|
|
||||||
}
|
|
||||||
#alert {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map {
|
|
||||||
clear: both;
|
|
||||||
height: 90vh;
|
|
||||||
z-index: 0;
|
|
||||||
border-top: solid 1px black;
|
|
||||||
border-bottom: solid 1px black;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#mapdate {
|
|
||||||
font-size: 70%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nosensor {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 120%;
|
|
||||||
font-weight: bold;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hrefsimu {
|
|
||||||
color: blue;
|
|
||||||
cursor:pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fehlersensoren {
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
#infoTable table, #infoTable tr, #infoTable td {
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#popuptext {
|
|
||||||
width : 150px;
|
|
||||||
/* height: 150px; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#infoTable table, #infoTable tr, #infoTable td {
|
|
||||||
background-color: palegreen;
|
|
||||||
border:none !important;
|
|
||||||
margin: auto;
|
|
||||||
font-weight: bold;
|
|
||||||
width: 100px;
|
|
||||||
text-align: center;
|
|
||||||
/* font-size:110%;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
#inforohr {
|
|
||||||
text-align: center;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
#infoBtn {
|
|
||||||
margin: 10px 0 0 25px;
|
|
||||||
font-size: 120%;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#fehlerexplain {
|
|
||||||
margin-left: 30px;
|
|
||||||
padding: 5px;
|
|
||||||
border: solid 2px red;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*label, input { display: block; }
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
radio {
|
|
||||||
display: inline-block;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
mrgin-right: 10px;
|
|
||||||
disaplay: inline;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#page-mask {
|
|
||||||
background: rgba(0, 0, 0, 0.5);
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highcharts-tooltip span {
|
|
||||||
background-color: white;
|
|
||||||
opacity: 1;
|
|
||||||
z-index: 9999 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#errorDialog {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
|
|
||||||
color: lightgray;
|
|
||||||
opacity: 1; /* Firefox */
|
|
||||||
}
|
|
||||||
|
|
||||||
:-ms-input-placeholder { /* Internet Explorer 10-11 */
|
|
||||||
color: lightgray;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-ms-input-placeholder { /* Microsoft Edge */
|
|
||||||
color: lightgray;
|
|
||||||
}
|
|
||||||
|
|
||||||
#underymax {
|
|
||||||
font-size: 75%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#alarm {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#datumtxt {
|
|
||||||
font-size: 120%;
|
|
||||||
font-weight: bold;
|
|
||||||
position: absolute;
|
|
||||||
top: 170px;
|
|
||||||
right: 25px;
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ui-widget-content a {
|
|
||||||
color: blue;
|
|
||||||
/* Überschreibt das default in jquery (das ist nicht blau) */
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
#stat_table {
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#stat_table tr:hover {
|
|
||||||
background-color: #ffff99;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#stat_table caption {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#stat_table table, #stat_table th {
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#stat_table th {
|
|
||||||
padding: 5px;
|
|
||||||
text-align: center;
|
|
||||||
background-color: green;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
.w25, .w10 {
|
|
||||||
text-align:right;
|
|
||||||
width: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#body2 {
|
|
||||||
border-top: 3px green solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bord1 {
|
|
||||||
border-top: 2px black solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.setting_head {
|
|
||||||
background-color: blue;
|
|
||||||
color: white;
|
|
||||||
padding-left: 20px;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#avgselect {
|
|
||||||
margin-left:30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#lueber {
|
|
||||||
margin-left: 15px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ui-dialog {
|
|
||||||
z-index:1000 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cb {
|
|
||||||
/* background-color: #86bc24;
|
|
||||||
opacity: 0.8; */
|
|
||||||
font-size: 130%;
|
|
||||||
text-align: center;
|
|
||||||
display: inline-block;
|
|
||||||
width: 130px;
|
|
||||||
height: 40px;
|
|
||||||
border: solid 2px #B5B5B5;
|
|
||||||
}
|
|
||||||
.centerbutt {
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
|
||||||
padding: 6px 8px;
|
|
||||||
font: 12px Arial, Helvetica, sans-serif;
|
|
||||||
background: rgba(255,255,255,0.8);
|
|
||||||
box-shadow: 0 0 15px rgba(0,0,0,0.2);
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.info h4 {
|
|
||||||
margin: 0 0 5px;
|
|
||||||
color: #777;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
img.leaflet-tile {
|
|
||||||
filter: grayscale(85%) saturate(150%) hue-rotate(180deg) contrast(90%) brightness(110%);
|
|
||||||
-webkit-filter: grayscale(85%) saturate(150%) hue-rotate(180deg) contrast(90%) brightness(110%);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.mapbox {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#overlay {
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
top: 60px;
|
|
||||||
left: 0px;
|
|
||||||
border: 2px #86bc24 solid;
|
|
||||||
width: 710px;
|
|
||||||
/* height: 100%; */
|
|
||||||
background-color: white;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.btnlink {
|
|
||||||
background:none;border:none;
|
|
||||||
color: blue;
|
|
||||||
margin-left: 15px;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#loading {
|
|
||||||
position : absolute;
|
|
||||||
top: 200px;
|
|
||||||
left: 200px;
|
|
||||||
display: none;
|
|
||||||
width: 200px;
|
|
||||||
color: blue;
|
|
||||||
border: 1px solid blue;
|
|
||||||
text-align: center;
|
|
||||||
z-index:20;
|
|
||||||
background-color:lightcyan;
|
|
||||||
vertical-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ib {
|
|
||||||
background-color: #86bc24;
|
|
||||||
opacity: 0.8;
|
|
||||||
border: none;
|
|
||||||
padding: 20px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 200%;
|
|
||||||
margin: 4px 2px;
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
}
|
|
||||||
.infobutt {
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#marker_text {
|
|
||||||
font-family: Verdana, 'Lucida Sans Unicode', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.my-custom-control {
|
|
||||||
padding:5px 10px;
|
|
||||||
background: rgba(0,0,0,0.5);
|
|
||||||
color: #fff;
|
|
||||||
font-size: 10px;
|
|
||||||
line-height: 15px;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.my-custom-control:empty {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
/* background-color: #86bc24;
|
|
||||||
opacity: 0.8; */
|
|
||||||
font-size: 130%;
|
|
||||||
text-align: center;
|
|
||||||
display: inline-block;
|
|
||||||
width: 130px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-.menue {
|
|
||||||
max-width: max-content;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbg {
|
|
||||||
background: #DDD;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
.ui-dialog {
|
|
||||||
z-index:1000000000;
|
|
||||||
top: 0; left: 0;
|
|
||||||
margin: auto;
|
|
||||||
position: fixed;
|
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: stretch;
|
|
||||||
}
|
|
||||||
.ui-dialog .ui-dialog-content {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
.ui-dialog .ui-dialog-buttonpane {
|
|
||||||
background:white;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
.has-search .form-control {
|
|
||||||
padding-left: 2.375rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.has-search .form-control-feedback {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 2;
|
|
||||||
display: block;
|
|
||||||
width: 2.375rem;
|
|
||||||
height: 2.375rem;
|
|
||||||
line-height: 2.375rem;
|
|
||||||
text-align: center;
|
|
||||||
pointer-events: none;
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@media (max-width: 576px) {
|
|
||||||
.legend {
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
#btnlegende {
|
|
||||||
display:inline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
.dropdown-menu {
|
|
||||||
white-space: nowrap;
|
|
||||||
padding-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#popuptext, #infoaddr, #akwpopuptext{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#infoBtn {
|
|
||||||
margin: 10px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#newmapcenter {
|
|
||||||
width: 250px;
|
|
||||||
height: 33px;
|
|
||||||
padding-left: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spspan {
|
|
||||||
float: right;
|
|
||||||
margin-right: 6px;
|
|
||||||
margin-top: -25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-icon{
|
|
||||||
position: absolute;
|
|
||||||
left: 5px;
|
|
||||||
top: calc(50% - 0.5em); /* Keep icon in center of input, regardless of the input height */
|
|
||||||
}
|
|
||||||
.input-wrapper{
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#indoor {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ndmarker {
|
|
||||||
position: absolute;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#splashChecklabel {
|
|
||||||
margin-top: 9px;
|
|
||||||
font-size: 110%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.legend {
|
|
||||||
font-family: arial, sans-serif;
|
|
||||||
color:black;
|
|
||||||
font-size: 12px;
|
|
||||||
position: absolute;
|
|
||||||
left: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
height: 35%;
|
|
||||||
width: 130px;
|
|
||||||
z-index: 999;
|
|
||||||
background-color: rgba(238,238,238,0.80);
|
|
||||||
border: solid 1px black;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm {
|
|
||||||
position: absolute;
|
|
||||||
left: 20px;
|
|
||||||
bottom: 15px;
|
|
||||||
z-index: 1001;
|
|
||||||
pointer-events: none;
|
|
||||||
height: 90%;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
padding-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .gradient {
|
|
||||||
opacity: 0.8;
|
|
||||||
width: 20px;
|
|
||||||
/* background: -webkit-linear-gradient(bottom, #00796b 0%, #00796b 16%, #f9a825 32%, #e65100 48%, #dd2c00 72%, #dd2c00 80%, #8c0084 100%); */
|
|
||||||
background: -webkit-linear-gradient(bottom, #9ECDEA 0%, #9ECDEA 8%, #7F7F7F 8%, #7F7F7F 16%, #00796b 16%, #f9a825 44%, #e65100 58%, #dd2c00 72%, #dd2c00 86%, #8c0084 100%);
|
|
||||||
/* background: linear-gradient(to top, #00796b 0%, #00796b 16%, #f9a825 32%, #e65100 48%, #dd2c00 72%, #dd2c00 80%, #8c0084 100%); */
|
|
||||||
background: linear-gradient(to top, #9ECDEA 0%, #9ECDEA 8%, #7F7F7F 8%, #7F7F7F 16%,
|
|
||||||
#267A45 16%,
|
|
||||||
#66FA5F 30%,
|
|
||||||
#F8Fc00 44%,
|
|
||||||
#FF0000 58%,
|
|
||||||
#9000FF 100%);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels {
|
|
||||||
width: 150px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels .label {
|
|
||||||
position: absolute;
|
|
||||||
-webkit-transform: translateY(50%);
|
|
||||||
transform: translateY(50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels .label1 {
|
|
||||||
position: absolute;
|
|
||||||
-webkit-transform: translateY(50%);
|
|
||||||
transform: translateY(50%);
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-inner-cpm .labels .label:before {
|
|
||||||
content: '\2013 ';
|
|
||||||
}
|
|
||||||
|
|
||||||
#bandgapregion {
|
|
||||||
margin-left: 50px;
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
#kraftw, #togwind {
|
|
||||||
margin-left: 30px;
|
|
||||||
}
|
|
||||||
+5
-1
@@ -16,6 +16,7 @@ const disttable = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
let APIHOST = process.env.APIHOST || 'http://localhost:3005'
|
let APIHOST = process.env.APIHOST || 'http://localhost:3005'
|
||||||
|
const API_KEY = process.env.API_KEY
|
||||||
|
|
||||||
|
|
||||||
/* GET home page. */
|
/* GET home page. */
|
||||||
@@ -25,9 +26,12 @@ router.get('/:cmd', async function(req, res, next) {
|
|||||||
const cmd = req.params.cmd
|
const cmd = req.params.cmd
|
||||||
const pretty = (req.query.pretty !== undefined)
|
const pretty = (req.query.pretty !== undefined)
|
||||||
const lng = getLanguage()
|
const lng = getLanguage()
|
||||||
|
|
||||||
let url = APIHOST + '/api' + req.originalUrl.slice(4) + `&lng=${lng}`
|
let url = APIHOST + '/api' + req.originalUrl.slice(4) + `&lng=${lng}`
|
||||||
try {
|
try {
|
||||||
const response = await axios.get(encodeURI(url));
|
const response = await axios.get(encodeURI(url) , {
|
||||||
|
headers: {'X-API-Key': API_KEY}
|
||||||
|
});
|
||||||
if (response.status !== 200) {
|
if (response.status !== 200) {
|
||||||
res.json({err: `${trans('ESYSCALL')} status=${response.status}`})
|
res.json({err: `${trans('ESYSCALL')} status=${response.status}`})
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-11
@@ -6,14 +6,8 @@ const router = express.Router()
|
|||||||
const { name, version, date } = pkg
|
const { name, version, date } = pkg
|
||||||
|
|
||||||
const renderOpts = (sid, cat) => {
|
const renderOpts = (sid, cat) => {
|
||||||
let tit = 'Feinstaub'
|
|
||||||
if (cat === 'multigeiger') {
|
|
||||||
tit = 'Geiger'
|
|
||||||
} else if (cat == 'noise') {
|
|
||||||
tit = 'Noise'
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
title: tit,
|
title: 'Noise',
|
||||||
version: version,
|
version: version,
|
||||||
date: date.slice(0, 10),
|
date: date.slice(0, 10),
|
||||||
csensor: sid,
|
csensor: sid,
|
||||||
@@ -28,11 +22,7 @@ const translate = (x) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const getIndex = (cat) => {
|
const getIndex = (cat) => {
|
||||||
if (cat == 'noise') {
|
|
||||||
return 'index_noise'
|
return 'index_noise'
|
||||||
} else if (cat === 'multigeiger') {
|
|
||||||
return 'index_geiger'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,111 +0,0 @@
|
|||||||
extends layout
|
|
||||||
|
|
||||||
block content
|
|
||||||
header
|
|
||||||
#hline1
|
|
||||||
#h1name #{t("GeigerMeasurement")}
|
|
||||||
#h1datum
|
|
||||||
|
|
||||||
#fenster
|
|
||||||
#buttonsRight
|
|
||||||
button.btn.btn-primary#btnSet(value='set') #{t("Settings")}
|
|
||||||
button.btn.btn-primary#btnHelp(value='help') #{t("Info")}
|
|
||||||
|
|
||||||
#map
|
|
||||||
#legendcontainer
|
|
||||||
.legend#legendcpm
|
|
||||||
#legend-inner-cpm
|
|
||||||
.gradient
|
|
||||||
.labels
|
|
||||||
.label(style="bottom: 100%;") >= 5 µSv/h
|
|
||||||
.label(style="bottom: 86%;") 2
|
|
||||||
.label(style="bottom: 72%;") 1
|
|
||||||
.label(style="bottom: 58%;") 0.5
|
|
||||||
.label(style="bottom: 44%;") 0.2
|
|
||||||
.label(style="bottom: 30%;") 0.1
|
|
||||||
.label(style="bottom: 17%;") 0.05
|
|
||||||
.label1(style="bottom: 10%;") offline
|
|
||||||
.label1(style="bottom: 2%;") indoor
|
|
||||||
#mapdateactsens
|
|
||||||
#actsensors
|
|
||||||
#mapdate
|
|
||||||
|
|
||||||
|
|
||||||
#overlay
|
|
||||||
#loading Lade die Daten ...
|
|
||||||
#placeholderFS_1
|
|
||||||
#placeholderBME
|
|
||||||
|
|
||||||
// Error-Dialog
|
|
||||||
.modal.fade#dialogError(tabindex="-1" role="dialog" aria-labelledby="Error" aria-hidden="true")
|
|
||||||
.modal-dialog.modal-dialog-centered(role="document")
|
|
||||||
.modal-content
|
|
||||||
.modal-header
|
|
||||||
h5.modal-title.dialogErrorTitle #{t("Error")}
|
|
||||||
button(type="button" class="close" data-bs-dismiss="modal" aria-label="Close")
|
|
||||||
span(aria-hidden="true") ×
|
|
||||||
.modal-body
|
|
||||||
.modal-footer
|
|
||||||
//button(type="button" class="btn btn-secondary" data-bs-dismiss="modal") Close
|
|
||||||
// button(type="button" class="btn btn-primary") Save changes
|
|
||||||
|
|
||||||
|
|
||||||
// Settings-Dialog
|
|
||||||
.modal.fade#dialogSettings(tabindex="-1" role="dialog" aria-labelledby="Settings" aria-hidden="true")
|
|
||||||
.modal-dialog.modal-dialog-centered(role="document")
|
|
||||||
.modal-content
|
|
||||||
.modal-header
|
|
||||||
h5.modal-title.dialogErrorTitle #{t("Settings")}
|
|
||||||
button(type="button" class="close" data-bs-dismiss="modal" aria-label="Close")
|
|
||||||
span(aria-hidden="true") ×
|
|
||||||
.modal-body.settings
|
|
||||||
.rows
|
|
||||||
.column#stday
|
|
||||||
label.thelabels(for='startday') #{t("StartDate")}:
|
|
||||||
input.theInputs#startday(name='startday' )
|
|
||||||
.column
|
|
||||||
.column#nbday
|
|
||||||
label.thelabels(for='nbrofdays')
|
|
||||||
| #{t("NumberOfDays")}:<br />
|
|
||||||
// span.klein (#{t("Only_for_live_chart")})
|
|
||||||
input.theInputs#nbrofdays(type = 'number' name = 'nbrofdays', min="1", max="10")
|
|
||||||
span.klein (max. 10)
|
|
||||||
.column#pklim
|
|
||||||
label.thelabels(for='peaklim')
|
|
||||||
| #{t("Count_peaks_over")}
|
|
||||||
input.theInputs#peaklim(type = 'number' name = 'peaklim', min="10", max="130")
|
|
||||||
| dbA
|
|
||||||
span.klein (max. 130)
|
|
||||||
.column#odth
|
|
||||||
label.thelabels(for='olderthan')
|
|
||||||
| #{t("RemoveFromMap")}
|
|
||||||
input.theInputs#olderthan(type = 'number' name = 'olderthan', min="0", max="52")
|
|
||||||
| #{t("weeks")}
|
|
||||||
span.klein (max. 52)
|
|
||||||
.column
|
|
||||||
.column#sellan
|
|
||||||
label.thelabels
|
|
||||||
| #{t("Language")}:
|
|
||||||
.form-check.form-check-inline
|
|
||||||
input#de.form-check-input(type="radio" name="lanbut")
|
|
||||||
label.form-check-label(for='de') Deutsch
|
|
||||||
.form-check.form-check-inline
|
|
||||||
input#en.form-check-input(type="radio" name="lanbut", checked)
|
|
||||||
label.form-check-label(for="en") English
|
|
||||||
.modal-footer
|
|
||||||
button.btn.btn-secondary(type="button" data-bs-dismiss="modal") #{t("Close")}
|
|
||||||
button#btnSave.btn.btn-primary(type="button" data-bs-dismiss="modal") #{t("Save_changes")}
|
|
||||||
|
|
||||||
|
|
||||||
// Error-Dialog
|
|
||||||
.modal.fade#dialogReset(tabindex="-1" role="dialog" aria-labelledby="Error" aria-hidden="true")
|
|
||||||
.modal-dialog.modal-dialog-centered(role="document")
|
|
||||||
.modal-content
|
|
||||||
.modal-header
|
|
||||||
h5.modal-title.dialogErrorTitle Info
|
|
||||||
button(type="button" class="close" data-bs-dismiss="modal" aria-label="Close")
|
|
||||||
span(aria-hidden="true") ×
|
|
||||||
.modal-body
|
|
||||||
.modal-footer
|
|
||||||
//button(type="button" class="btn btn-secondary" data-bs-dismiss="modal") Close
|
|
||||||
button(type="button" class="btn btn-primary" data-bs-dismiss="modal") OK
|
|
||||||
+53
-66
@@ -5,123 +5,110 @@ block content
|
|||||||
#hline1
|
#hline1
|
||||||
#h1name #{t("NoiseMeasurement")}
|
#h1name #{t("NoiseMeasurement")}
|
||||||
#buttonsRight
|
#buttonsRight
|
||||||
button.btn.btn-primary#btnSet(value='set') #{t("Settings")}
|
button#btnSet(value='set') #{t("Settings")}
|
||||||
// button.btn.btn-primary#btnHelp(value='help') #{t("Info")}
|
// button#btnHelp(value='help') #{t("Info")}
|
||||||
#h1datum
|
#h1datum
|
||||||
|
|
||||||
#fenster
|
#fenster
|
||||||
#spinner
|
#spinner
|
||||||
#navi
|
#navi
|
||||||
ul.nav.nav-tabs#tablist
|
.tabs#tablist
|
||||||
li.nav-item(role='presentation')
|
button.tab-button.active#maptab(data-target="t_map" type="button" role="tab" aria-controls="map" aria-selected="true") #{t("Map")}
|
||||||
button.nav-link.active#maptab(data-bs-toggle="tab" data-bs-target="#t_map" type="button" role="tab" aria-controls="map" aria-selected="true") #{t("Map")}
|
button.tab-button#livetab(data-target="t_live" type="button" role="tab" aria-controls="live") #{t("Live")}
|
||||||
li.nav-item(role='presentation')
|
button.tab-button#houravgtab(data-target="t_houravg" type="button" role="tab" aria-controls="houravg") #{t("Hour_AVG")}
|
||||||
button.nav-link#livetab(data-bs-toggle="tab" data-bs-target="#t_live" type="button" role="tab" aria-controls="live" aria-selected="true") #{t("Live")}
|
button.tab-button#dayavgtab(data-target="t_dayavg" type="button" role="tab" aria-controls="dayavg") #{t("Day_AVG")}
|
||||||
li.nav-item(role='presentation')
|
button.tab-button#daynighttab(data-target="t_daynight" type="button" role="tab" aria-controls="daynight") #{t("Day_Night")}
|
||||||
button.nav-link#houravgtab(data-bs-toggle="tab" data-bs-target="#t_houravg" type="button" role="tab" aria-controls="houravg" aria-selected="true") #{t("Hour_AVG")}
|
button.tab-button#ldentab(data-target="t_lden" type="button" role="tab" aria-controls="lden") L<sub>DEN</sub>-Index
|
||||||
li.nav-item(role='presentation')
|
|
||||||
button.nav-link#dayavgtab(data-bs-toggle="tab" data-bs-target="#t_dayavg" type="button" role="tab" aria-controls="dayavg" aria-selected="true") #{t("Day_AVG")}
|
|
||||||
li.nav-item(role='presentation')
|
|
||||||
button.nav-link#daynighttab(data-bs-toggle="tab" data-bs-target="#t_daynight" type="button" role="tab" aria-controls="daynight" aria-selected="true") #{t("Day_Night")}
|
|
||||||
li.nav-item(role='presentation')
|
|
||||||
button.nav-link#ldentab(data-bs-toggle="tab" data-bs-target="#t_lden" type="button" role="tab" aria-controls="lden" aria-selected="true") L<sub>DEN</sub>-Index
|
|
||||||
.tab-content#thetabs
|
.tab-content#thetabs
|
||||||
.tab-pane.fade.show.active#t_map(role="tabpanel" aria-labelledby="map-tab")
|
.tab-pane.active#t_map(role="tabpanel")
|
||||||
#map
|
#map
|
||||||
|
// button#btnMyLocation(type="button" title=t("MyLocation"))
|
||||||
|
span 📍
|
||||||
#maptaberr.errdiv
|
#maptaberr.errdiv
|
||||||
#mapdateactsens
|
#mapdateactsens
|
||||||
#actsensors
|
#actsensors
|
||||||
#mapdate
|
#mapdate
|
||||||
.tab-pane.fade#t_live(role="tabpanel" aria-labelledby="live-tab")
|
.tab-pane#t_live(role="tabpanel")
|
||||||
#dlive
|
#dlive
|
||||||
#livetaberr.errdiv
|
#livetaberr.errdiv
|
||||||
.tab-pane.fade#t_houravg(role="tabpanel" aria-labelledby="map-tab")
|
.tab-pane#t_houravg(role="tabpanel")
|
||||||
#dhour
|
#dhour
|
||||||
#houravgtaberr.errdiv
|
#houravgtaberr.errdiv
|
||||||
.tab-pane.fade#t_dayavg(role="tabpanel" aria-labelledby="map-tab")
|
.tab-pane#t_dayavg(role="tabpanel")
|
||||||
#dday
|
#dday
|
||||||
#dayavgtaberr.errdiv
|
#dayavgtaberr.errdiv
|
||||||
.tab-pane.fade#t_daynight(role="tabpanel" aria-labelledby="map-tab")
|
.tab-pane#t_daynight(role="tabpanel")
|
||||||
#ddaynight
|
#ddaynight
|
||||||
#daynighttaberr.errdiv
|
#daynighttaberr.errdiv
|
||||||
.tab-pane.fade#t_lden(role="tabpanel" aria-labelledby="map-tab")
|
.tab-pane#t_lden(role="tabpanel")
|
||||||
#dlden
|
#dlden
|
||||||
#ldentaberr.errdiv
|
#ldentaberr.errdiv
|
||||||
|
|
||||||
|
|
||||||
// Error-Dialog
|
// Error-Dialog
|
||||||
.modal.fade#dialogError(tabindex="-1" role="dialog" aria-labelledby="Error" aria-hidden="true")
|
dialog#dialogError
|
||||||
.modal-dialog.modal-dialog-centered(role="document")
|
.dialog-content
|
||||||
.modal-content
|
.dialog-header
|
||||||
.modal-header
|
h3.dialog-title #{t("Error")}
|
||||||
h5.modal-title.dialogErrorTitle #{t("Error")}
|
button.dialog-close(type="button" aria-label="Close") ×
|
||||||
button(type="button" class="close" data-bs-dismiss="modal" aria-label="Close")
|
.dialog-body
|
||||||
span(aria-hidden="true") ×
|
.dialog-footer
|
||||||
.modal-body
|
|
||||||
.modal-footer
|
|
||||||
//button(type="button" class="btn btn-secondary" data-bs-dismiss="modal") Close
|
|
||||||
// button(type="button" class="btn btn-primary") Save changes
|
|
||||||
|
|
||||||
|
|
||||||
// Settings-Dialog
|
// Settings-Dialog
|
||||||
.modal.fade#dialogSettings(tabindex="-1" role="dialog" aria-labelledby="Settings" aria-hidden="true")
|
dialog#dialogSettings
|
||||||
.modal-dialog.modal-dialog-centered(role="document")
|
.dialog-content
|
||||||
.modal-content
|
.dialog-header
|
||||||
.modal-header
|
h3.dialog-title #{t("Settings")}
|
||||||
h5.modal-title.dialogErrorTitle #{t("Settings")}
|
button.dialog-close(type="button" aria-label="Close") ×
|
||||||
button(type="button" class="close" data-bs-dismiss="modal" aria-label="Close")
|
.dialog-body.settings
|
||||||
span(aria-hidden="true") ×
|
|
||||||
.modal-body.settings
|
|
||||||
.rows
|
.rows
|
||||||
.comlumn#ccity
|
.column#ccity
|
||||||
label.thelabels(for='city') #{t("CenterMap")}:
|
label.thelabels(for='city') #{t("CenterMap")}:
|
||||||
input.theInputs#centercity(name="centercity")
|
input.theInputs#centercity(name="centercity")
|
||||||
.column#stday
|
.column#stday
|
||||||
label.thelabels(for='startday') #{t("StartDate")}:
|
label.thelabels(for='startday') #{t("StartDate")}:
|
||||||
input.theInputs#startday(name='startday' )
|
input.theInputs#startday(type='date' name='startday')
|
||||||
.column
|
.column
|
||||||
.column#nbday
|
.column#nbday
|
||||||
label.thelabels(for='nbrofdays')
|
label.thelabels(for='nbrofdays')
|
||||||
| #{t("NumberOfDays")}:<br />
|
| #{t("NumberOfDays")}:<br />
|
||||||
// span.klein (#{t("Only_for_live_chart")})
|
input.theInputs#nbrofdays(type='number' name='nbrofdays' min="1" max="10")
|
||||||
input.theInputs#nbrofdays(type = 'number' name = 'nbrofdays', min="1", max="10")
|
|
||||||
span.klein (max. 10)
|
span.klein (max. 10)
|
||||||
.column#pklim
|
.column#pklim
|
||||||
label.thelabels(for='peaklim')
|
label.thelabels(for='peaklim')
|
||||||
| #{t("Count_peaks_over")}
|
| #{t("Count_peaks_over")}
|
||||||
input.theInputs#peaklim(type = 'number' name = 'peaklim', min="10", max="130")
|
input.theInputs#peaklim(type='number' name='peaklim' min="10" max="130")
|
||||||
| dbA
|
| dbA
|
||||||
span.klein (max. 130)
|
span.klein (max. 130)
|
||||||
.column#odth
|
.column#odth
|
||||||
label.thelabels(for='olderthan')
|
label.thelabels(for='olderthan')
|
||||||
| #{t("RemoveFromMap")}
|
| #{t("RemoveFromMap")}
|
||||||
input.theInputs#olderthan(type = 'number' name = 'olderthan', min="0", max="52")
|
input.theInputs#olderthan(type='number' name='olderthan' min="0" max="52")
|
||||||
| #{t("weeks")}
|
| #{t("weeks")}
|
||||||
span.klein (max. 52)
|
span.klein (max. 52)
|
||||||
.column
|
.column
|
||||||
.column#sellan
|
.column#sellan
|
||||||
label.thelabels
|
label.thelabels
|
||||||
| #{t("Language")}:
|
| #{t("Language")}:
|
||||||
.form-check.form-check-inline
|
.radio-group
|
||||||
input#de.form-check-input(type="radio" name="lanbut")
|
label.radio-label
|
||||||
label.form-check-label(for='de') Deutsch
|
input#de(type="radio" name="lanbut")
|
||||||
.form-check.form-check-inline
|
span Deutsch
|
||||||
input#en.form-check-input(type="radio" name="lanbut", checked)
|
label.radio-label
|
||||||
label.form-check-label(for="en") English
|
input#en(type="radio" name="lanbut" checked)
|
||||||
.modal-footer
|
span English
|
||||||
button.btn.btn-secondary(type="button" data-bs-dismiss="modal") #{t("Close")}
|
.dialog-footer
|
||||||
button#btnSave.btn.btn-primary(type="button" data-bs-dismiss="modal") #{t("Save_changes")}
|
button.dialog-button.secondary#btnClose(type="button") #{t("Close")}
|
||||||
|
button.dialog-button.primary#btnSave(type="button") #{t("Save_changes")}
|
||||||
|
|
||||||
|
|
||||||
// Reset-Dialog
|
// Reset-Dialog
|
||||||
.modal.fade#dialogReset(tabindex="-1" role="dialog" aria-labelledby="Error" aria-hidden="true")
|
dialog#dialogReset
|
||||||
.modal-dialog.modal-dialog-centered(role="document")
|
.dialog-content
|
||||||
.modal-content
|
.dialog-header
|
||||||
.modal-header
|
h3.dialog-title Info
|
||||||
h5.modal-title.dialogErrorTitle Info
|
button.dialog-close(type="button" aria-label="Close") ×
|
||||||
button(type="button" class="close" data-bs-dismiss="modal" aria-label="Close")
|
.dialog-body
|
||||||
span(aria-hidden="true") ×
|
.dialog-footer
|
||||||
.modal-body
|
button.dialog-button.primary#btnResetOk(type="button") OK
|
||||||
.modal-footer
|
|
||||||
//button(type="button" class="btn btn-secondary" data-bs-dismiss="modal") Close
|
|
||||||
button(type="button" class="btn btn-primary" data-bs-dismiss="modal") OK
|
|
||||||
|
|||||||
@@ -3,14 +3,10 @@ html
|
|||||||
head
|
head
|
||||||
title= title
|
title= title
|
||||||
meta(name="viewport" content="width=device-width, initial-scale=1" charset="utf-8")
|
meta(name="viewport" content="width=device-width, initial-scale=1" charset="utf-8")
|
||||||
link(href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"
|
|
||||||
rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65"
|
|
||||||
crossorigin="anonymous")
|
|
||||||
link(rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css"
|
link(rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css"
|
||||||
integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI="
|
integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI="
|
||||||
crossorigin="")
|
crossorigin="")
|
||||||
link(rel='stylesheet', href='/stylesheets/MarkerCluster.css')
|
link(rel='stylesheet', href='/stylesheets/MarkerCluster.css')
|
||||||
link(rel="stylesheet" href="https://code.jquery.com/ui/1.14.0/themes/base/jquery-ui.css")
|
|
||||||
link(rel='stylesheet', href='/spin.js/spin.css')
|
link(rel='stylesheet', href='/spin.js/spin.css')
|
||||||
|
|
||||||
|
|
||||||
@@ -22,9 +18,6 @@ html
|
|||||||
category: '#{category}'
|
category: '#{category}'
|
||||||
};
|
};
|
||||||
|
|
||||||
if category === 'multigeiger'
|
|
||||||
link(rel='stylesheet', href='/stylesheets/style_geiger.css')
|
|
||||||
else
|
|
||||||
link(rel='stylesheet', href='/stylesheets/style.css')
|
link(rel='stylesheet', href='/stylesheets/style.css')
|
||||||
|
|
||||||
body
|
body
|
||||||
@@ -36,15 +29,9 @@ html
|
|||||||
a(href="mailto:rexfue@gmail.com") mailto:rexfue@gmail.com
|
a(href="mailto:rexfue@gmail.com") mailto:rexfue@gmail.com
|
||||||
#versn #{t('Version')}: #{version} #{t('from')} #{date}
|
#versn #{t('Version')}: #{version} #{t('from')} #{date}
|
||||||
|
|
||||||
script(src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"
|
|
||||||
integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4"
|
|
||||||
crossorigin="anonymous")
|
|
||||||
script(src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js"
|
script(src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js"
|
||||||
integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM="
|
integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM="
|
||||||
crossorigin="")
|
crossorigin="")
|
||||||
script(src="/javascripts/leaflet.markercluster.js")
|
script(src="/javascripts/leaflet.markercluster.js")
|
||||||
script(src="https://code.highcharts.com/highcharts.js")
|
script(src="https://code.highcharts.com/highcharts.js")
|
||||||
script(src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.0.0/d3.min.js")
|
|
||||||
script(src="https://code.jquery.com/jquery-3.7.1.min.js")
|
|
||||||
script(src="https://code.jquery.com/ui/1.14.0/jquery-ui.min.js")
|
|
||||||
script(type="module" src="/javascripts/global.js")
|
script(type="module" src="/javascripts/global.js")
|
||||||
Reference in New Issue
Block a user