Initial monorepo: readin, sensorapi, noise (Node22, npm ci, axios1.x, i18next-fs-backend)

This commit is contained in:
rxf
2026-07-25 11:35:41 +00:00
commit 2df1f79617
97 changed files with 13547 additions and 0 deletions
@@ -0,0 +1,60 @@
.marker-cluster-small {
background-color: rgba(181, 226, 140, 0.6);
}
.marker-cluster-small div {
background-color: rgba(110, 204, 57, 0.6);
}
.marker-cluster-medium {
background-color: rgba(241, 211, 87, 0.6);
}
.marker-cluster-medium div {
background-color: rgba(240, 194, 12, 0.6);
}
.marker-cluster-large {
background-color: rgba(253, 156, 115, 0.6);
}
.marker-cluster-large div {
background-color: rgba(241, 128, 23, 0.6);
}
/* IE 6-8 fallback colors */
.leaflet-oldie .marker-cluster-small {
background-color: rgb(181, 226, 140);
}
.leaflet-oldie .marker-cluster-small div {
background-color: rgb(110, 204, 57);
}
.leaflet-oldie .marker-cluster-medium {
background-color: rgb(241, 211, 87);
}
.leaflet-oldie .marker-cluster-medium div {
background-color: rgb(240, 194, 12);
}
.leaflet-oldie .marker-cluster-large {
background-color: rgb(253, 156, 115);
}
.leaflet-oldie .marker-cluster-large div {
background-color: rgb(241, 128, 23);
}
.marker-cluster {
background-clip: padding-box;
border-radius: 20px;
}
.marker-cluster div {
width: 30px;
height: 30px;
margin-left: 5px;
margin-top: 5px;
text-align: center;
border-radius: 15px;
font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
}
.marker-cluster span {
line-height: 30px;
}
@@ -0,0 +1,14 @@
.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
transition: transform 0.3s ease-out, opacity 0.3s ease-in;
}
.leaflet-cluster-spider-leg {
/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
}
+487
View File
@@ -0,0 +1,487 @@
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 #buttonsRight {
float: right;
margin-right: 1%;
}
header #buttonsRight #btnSet {
margin-right: 20px;
}
header #buttonsRight #btnHelp {
margin-right: 20px;
}
header #buttonsRight #h1datum {
float: right;
margin-top: 5px;
}
#fenster {
margin-left: 0.5vw;
background: white;
padding-top: 5px;
width: 99vw;
}
#fenster #navi {
float: left;
margin-left: 0.5vw;
}
#map {
margin-left: 0.5vw;
margin-top: -50px;
width: 98vw;
height: 80vh;
border-radius: 10px;
border: solid 1px seagreen;
overflow: hidden;
z-index: 1;
position: relative;
}
#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 #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 {
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 {
line-height: 18px;
color: #555;
font-size: 110%;
}
.legend i {
width: 18px;
height: 18px;
float: left;
margin-right: 0px;
opacity: 1;
}
.leglabel {
padding-top: 20px;
}
.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;
}
}
#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;
}
.highcharts-container {
margin-top: -10px;
}
.errdiv {
display: none;
}
/* 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
View File
@@ -0,0 +1 @@
{"version":3,"sources":["style.sass","style.css"],"names":[],"mappings":"AAYA;EACE,uDAAA;EACA,eAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;EACA,YAAA;ACXF;;ADcA;EACE,YAAA;ACXF;;ADaA;EACE,YAAA;EACA,WAAA;EACA,kBAAA;EAEA,eAAA;EACA,YAAA;EACA,kBAAA;ACXF;;ADaA;EACE,cAAA;ACVF;;ADYA;EACE,2BA9BoB;ACqBtB;ADWE;EACE,uBAAA;EACA,iBAAA;EACA,oBAAA;EACA,cAAA;ACTJ;ADWE;EACE,eAAA;EACA,WAAA;EACA,WAAA;EACA,gBAAA;ACTJ;ADWE;EACE,YAAA;EACA,gBAAA;ACTJ;ADUI;EACE,kBAAA;ACRN;ADSI;EACE,kBAAA;ACPN;ADQI;EACE,YAAA;EACA,eAAA;ACNN;;ADQA;EACE,kBAAA;EACA,iBAAA;EACA,gBAAA;EACA,WAAA;ACLF;ADOE;EACE,WAAA;EACA,kBAAA;ACLJ;;ADOA;EACE,kBAAA;EACA,iBAAA;EACA,WAAA;EACA,YAAA;EACA,mBA7Ec;EA8Ed,0BAAA;EACA,gBAAA;EACA,UAAA;ACJF;ADME;EACE,YAAA;EACA,kBAAA;EACA,uBAAA;ACJJ;ADKE;EACE,gBAAA;EACA,kBAAA;ACHJ;;ADMA;EACE,WAAA;EACA,cAAA;EACA,sBAAA;EACA,cAAA;ACHF;ADKE;EACE,UAAA;EACA,WAAA;ACHJ;ADIE;EACE,gBAAA;EACA,gBAAA;ACFJ;;ADIA;EACE,2BAlGoB;ACiGtB;ADGE;EACE,cAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,iBAAA;EACA,YAAA;ACDJ;ADGI;EACE,WAAA;ACDN;ADGI;EACE,YAAA;ACDN;;ADIA;EACE,gBAAA;EACA,uCAAA;EACA,oCAAA;EACA,uCAAA;EACA,kBAAA;ACDF;;ADGA;EACE,eAAA;EACA,WAAA;ACAF;;ADEA;EACE,iBAAA;EACA,WAAA;EACA,eAAA;ACCF;;ADCA;EACE,WAAA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;EACA,UAAA;ACEF;;ADAA;EACE,iBAAA;ACGF;;ADDA;EACE,kBAAA;EACA,eAAA;ACIF;;ADFA;EACE,gBAAA;ACKF;;ADHA;EACE,WAAA;EACA,YAAA;EACA,YAAA;ACMF;;ADJA;EACE,UAAA;ACOF;;ADLA;EACE,qBAAA;ACQF;;ADNA;EACE,SAAA;ACSF;;ADNA;EACE,gBAAA;ACSF;;ADPA;EACE,UAAA;EACA,WAAA;ACUF;;ADPA;EAEE,WAAA;ACSF;;ADNA;EACE,WAAA;EACA,cAAA;ACSF;;ADPA;EACE,WAAA;EACA,qBAAA;EACA,mBAAA;ACUF;;ADRA;EACE,UAAA;ACWF;;ADTA;EACE,UAAA;ACYF;;ADVA;EACE,UAAA;EACA,sBAAA;ACaF;;ADXA;EACE,cAAA;ACcF;;ADZA;EACE,YAAA;EACA,gBAAA;EACA,eAAA;EACA,uBAAA;EACA,0CAAA;ACeF;;ADbA;EACE,kBAAA;ACgBF;;ADdA;EACE,YAAA;ACiBF;;ADfA;EACE;IACE,aAAA;ECkBF;AACF;ADjBA;EACE,yBArNa;EAsNb,WAAA;ACmBF;;ADjBA;EACE,cAzNa;EA0Nb,yBAAA;ACoBF;;ADjBA;EACE,aAAA;ACoBF;;ADfA;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,kBAAA;ACkBF;;ADhBA;EACE,iBAAA;EACA,mBAAA;ACmBF;;ADjBA;EACE,eAAA;EACA,iBAAA;ACoBF;;ADlBA;EACE,iBAAA;ACqBF;;ADnBA;EACE,aAAA;ACsBF","file":"style.css"}
+257
View File
@@ -0,0 +1,257 @@
$corner-radius: 10px
$border-color: seagreen
$background: rgb(146, 154, 146)
$divcolor: rgb(162, 227, 162)
$table-stripes: rgb(157, 179, 157)
$fieldset-color: rgb(208, 235, 208)
$button-color: darkslategrey
$header_footer_color: lightgray
$checkboxsize: 1.5
$inboxwidth: 70px
$navtab-color: #2D6AF8
body
font-family: Verdana, 'Lucida Sans Unicode', sans-serif
font-size: 16px
width: 100%
margin-left: auto
margin-right: auto
height: 100%
// background-color: rgba(0,0,0,0.9)
html
height: 100%
#wrapper
margin: auto
width: 100%
text-align: center
// background-color: #e9e9e9
margin-top: 5px
height: 100%
position: relative
a
color: #0000EE
header
background-color: $header_footer_color
#hline1
margin: 0px 1vw 5px 1vw
padding-top: 10px
padding-bottom: 10px
overflow: auto
#h1name
font-size: 148%
clear: both
float: left
text-align: left
#buttonsRight
float: right
margin-right: 1%
#btnSet
margin-right: 20px
#btnHelp
margin-right: 20px
#h1datum
float: right
margin-top: 5px
#fenster
margin-left: 0.5vw
background: white
padding-top: 5px
width: 99vw
#navi
float: left
margin-left: 0.5vw
#map
margin-left: 0.5vw
margin-top: -50px
width: 98vw
height: 80vh
border-radius: $corner-radius
border: solid 1px $border-color
overflow: hidden
z-index: 1
#infoTable table, #infoTable tr, #infoTable td
margin: auto
text-align: center
border: none !important
#infoBtn
margin-top: 10px
text-align: center
#mapdateactsens
width: 98vw
font-size: 70%
padding: 10px 0 10px 0
overflow: auto
#mapdate, #actsensors
width: 33%
float: left
#actsensors
text-align: left
margin-left: 1vw
footer
background-color: $header_footer_color
#author
font-size: 80%
width: 98vw
margin: auto
padding-bottom: 30px
padding-top: 10px
height: 50px
#mailadr
float: left
#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
line-height: 18px
color: #555
font-size: 110%
.legend i
width: 18px
height: 18px
float: left
margin-right: 0px
opacity: 1
.leglabel
padding-top: 20px
.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
// border: 1px solid green
.theInputs
//width: 60%
float: left
// border: 1px red solid
.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: $navtab-color
color: #FFF
.nav-tabs .nav-item .nav-link.active
color: $navtab-color
background-color: #FFFFFF
// for settings: set all to 'none'
#stday, #nbday, #pklim, #odth
display: none
// for first page to show 'Loading ...'
#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
.highcharts-container
margin-top: -10px
.errdiv
display: none