feat: add circular progress component and update historical lake data indices

This commit is contained in:
David Fencl
2026-06-06 10:38:43 +02:00
parent 27551f9183
commit a3b3d40769
15 changed files with 2896 additions and 243 deletions
+271 -1
View File
@@ -6833,10 +6833,280 @@
{
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 467.72,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 14.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 467.72,
"flow": 0,
"inflow": 2.88,
"volume": 26.49,
"temperature": 11.6,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 467.72,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 467.72,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 467.72,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 467.72,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 467.72,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 467.73,
"flow": 0,
"inflow": 2.88,
"volume": 26.49,
"temperature": 10.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 10.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 10.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 10.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 10.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 10.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 467.73,
"flow": 0,
"inflow": 2.88,
"volume": 26.51,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 467.73,
"flow": 0,
"inflow": 2.88,
"volume": 26.51,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 467.73,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 467.74,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 467.74,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 467.74,
"flow": 0.7,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:30:00.000Z",
"level": 467.74,
"flow": 0,
"inflow": 2.24,
"volume": 26.53,
"temperature": 17.5,
"precipitation": 0
}
]
+271 -1
View File
@@ -6834,9 +6834,279 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 12.1,
"precipitation": 5.7
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 1.46,
"volume": 32.37,
"temperature": 11.6,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 352.85,
"flow": 2.55,
"inflow": 1.46,
"volume": 32.34,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 352.85,
"flow": 2.55,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 1.46,
"volume": 32.36,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 352.85,
"flow": 2.52,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 352.85,
"flow": 2.52,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 352.85,
"flow": 2.52,
"inflow": 1.46,
"volume": 32.33,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 352.85,
"flow": 2.52,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 352.84,
"flow": 2.52,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 352.84,
"flow": 2.52,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 352.84,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 352.85,
"flow": 2.53,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:30:00.000Z",
"level": 352.84,
"flow": 0,
"inflow": 1.47,
"volume": 32.32,
"temperature": 17.3,
"precipitation": 0
}
]
+307 -1
View File
@@ -6834,9 +6834,315 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 369.79,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 18.234727964853622,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 369.79,
"flow": 1.25,
"inflow": 10.82,
"volume": 20.24,
"temperature": 11.1,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 369.79,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 369.79,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 369.79,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 369.79,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 369.79,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 369.8,
"flow": 1.25,
"inflow": 10.82,
"volume": 20.27,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 369.8,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 369.8,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 369.81,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 369.81,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 369.81,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 369.81,
"flow": 1.25,
"inflow": 10.82,
"volume": 20.3,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 369.81,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 369.81,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 369.83,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 369.83,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 369.83,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 369.83,
"flow": 1.25,
"inflow": 10.82,
"volume": 20.33,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 369.83,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 369.83,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 369.84,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 369.85,
"flow": 1.25,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 369.84,
"flow": 14.17,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 369.84,
"flow": 14.17,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 369.84,
"flow": 14.17,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:10:00.000Z",
"level": 369.84,
"flow": 14.17,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:20:00.000Z",
"level": 369.83,
"flow": 14.17,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:30:00.000Z",
"level": 369.83,
"flow": 14.17,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:40:00.000Z",
"level": 369.83,
"flow": 14.17,
"inflow": 0,
"volume": 20.39,
"temperature": 16,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 369.81,
"flow": 14.17,
"inflow": 0,
"volume": 0,
"temperature": 16,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 369.81,
"flow": 6.78,
"inflow": 0,
"volume": 0,
"temperature": 16,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 369.83,
"flow": 2.5,
"inflow": 0,
"volume": 0,
"temperature": 16,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:30:00.000Z",
"level": 369.83,
"flow": 2.5,
"inflow": 0,
"volume": 20.33,
"temperature": 17.6,
"precipitation": 0
}
]
+307 -1
View File
@@ -6834,9 +6834,315 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 352.42,
"flow": 19.01,
"inflow": 0,
"volume": 0,
"temperature": 12.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 352.43,
"flow": 11.37,
"inflow": 14.13,
"volume": 2.74,
"temperature": 11.1,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 352.42,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 352.42,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 352.42,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 352.42,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 352.42,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 10.9,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 352.42,
"flow": 0.13,
"inflow": 14.13,
"volume": 2.74,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 352.43,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 352.44,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 352.43,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 352.43,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 352.44,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.7,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 352.44,
"flow": 0.13,
"inflow": 14.13,
"volume": 2.74,
"temperature": 9.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 352.44,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 352.45,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 352.45,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 352.45,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 352.45,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 9.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 352.45,
"flow": 0.13,
"inflow": 14.13,
"volume": 2.74,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 352.46,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 352.47,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 352.48,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 352.49,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 352.52,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 352.56,
"flow": 0.13,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 352.57,
"flow": 19.05,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:10:00.000Z",
"level": 352.57,
"flow": 19.05,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:20:00.000Z",
"level": 352.56,
"flow": 19.05,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:30:00.000Z",
"level": 352.56,
"flow": 19.05,
"inflow": 0,
"volume": 0,
"temperature": 8.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:40:00.000Z",
"level": 352.56,
"flow": 19.05,
"inflow": 13.43,
"volume": 2.79,
"temperature": 15.1,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 352.56,
"flow": 19.05,
"inflow": 0,
"volume": 0,
"temperature": 15.1,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 352.56,
"flow": 19.05,
"inflow": 0,
"volume": 0,
"temperature": 15.1,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 352.56,
"flow": 19.05,
"inflow": 0,
"volume": 0,
"temperature": 15.1,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:30:00.000Z",
"level": 352.56,
"flow": 19.05,
"inflow": 13.43,
"volume": 2.79,
"temperature": 16.9,
"precipitation": 0
}
]
+289 -1
View File
@@ -6834,9 +6834,297 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 723.08,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 18.62002326908434,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 723.08,
"flow": 1.51,
"inflow": 2.51,
"volume": 199.67,
"temperature": 11.5,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 723.08,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 2.51,
"volume": 199.28,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 723.08,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 723.08,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 723.08,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 723.08,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 11,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 2.51,
"volume": 199.67,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 2.51,
"volume": 199.67,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:10:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:20:00.000Z",
"level": 723.09,
"flow": 0,
"inflow": 9.25,
"volume": 199.67,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 723.09,
"flow": 1.51,
"inflow": 0,
"volume": 0,
"temperature": 10,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:30:00.000Z",
"level": 723.09,
"flow": 0,
"inflow": 9.25,
"volume": 199.67,
"temperature": 16.3,
"precipitation": 0
}
]
+308 -2
View File
@@ -6815,7 +6815,7 @@
{
"timestamp": "2026-06-05T21:20:00.000Z",
"level": 559.89,
"flow": 0,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 17.97824695485787,
@@ -6834,9 +6834,315 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 559.87,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 17.97824695485787,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 559.86,
"flow": 0,
"inflow": 3.71,
"volume": 0.68,
"temperature": 8.7,
"temperature": 8.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 559.85,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 8.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 559.84,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 8.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 559.83,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 8.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 559.82,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 8.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 559.81,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 8.6,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 559.8,
"flow": 0,
"inflow": 3.71,
"volume": 0.66,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 559.79,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 559.78,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 559.77,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 559.76,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 559.75,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 8.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 559.73,
"flow": 0,
"inflow": 3.71,
"volume": 0.64,
"temperature": 7.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 559.72,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 7.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 559.71,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 7.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 559.7,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 7.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 559.69,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 7.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 559.68,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 7.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 559.67,
"flow": 0,
"inflow": 3.71,
"volume": 0.62,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 559.66,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 559.59,
"flow": 7.15,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 559.52,
"flow": 7.18,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 559.44,
"flow": 7.15,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 559.37,
"flow": 7.15,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 559.29,
"flow": 7.15,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 559.21,
"flow": 7.15,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:10:00.000Z",
"level": 559.2,
"flow": 7.15,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:20:00.000Z",
"level": 559.19,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:30:00.000Z",
"level": 559.18,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 7.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:40:00.000Z",
"level": 559.16,
"flow": 0,
"inflow": 5.37,
"volume": 0.51,
"temperature": 16.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 559.13,
"flow": 7.15,
"inflow": 0,
"volume": 0,
"temperature": 16.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 559.12,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 16.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 559.11,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 16.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:30:00.000Z",
"level": 559.09,
"flow": 0,
"inflow": 5.37,
"volume": 0.49,
"temperature": 17.7,
"precipitation": 0
}
]
+298 -1
View File
@@ -6834,9 +6834,306 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 18.70045888971512,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 23.84,
"volume": 522.12,
"temperature": 12,
"temperature": 11.8,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.8,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.8,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 345.24,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.8,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.8,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.8,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 23.84,
"volume": 522.12,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 345.27,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 345.24,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.1,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 23.84,
"volume": 521.92,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 345.27,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 23.84,
"volume": 521.92,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 345.25,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:10:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:20:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:30:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.4,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:40:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 24.39,
"volume": 522.12,
"temperature": 16.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 345.26,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 16.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 345.27,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 16.2,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 345.27,
"flow": 0,
"inflow": 24.39,
"volume": 522.12,
"temperature": 17.6,
"precipitation": 0
}
]
+316 -1
View File
@@ -6834,9 +6834,324 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 269.84,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 16.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 269.87,
"flow": 0,
"inflow": 46.5,
"volume": 260.21,
"temperature": 11.5,
"temperature": 11.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 269.87,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 269.82,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 269.81,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 269.82,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 11.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 269.83,
"flow": 0,
"inflow": 46.5,
"volume": 261.2,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 269.84,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 269.84,
"flow": 68.9,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 269.84,
"flow": 97.7,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 269.85,
"flow": 95.8,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 269.87,
"flow": 97.87,
"inflow": 0,
"volume": 0,
"temperature": 10.2,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 269.85,
"flow": 97.69,
"inflow": 46.5,
"volume": 260.66,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 269.85,
"flow": 88.74,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 269.87,
"flow": 25.95,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 269.86,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 269.84,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 269.82,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 269.83,
"flow": 0,
"inflow": 46.5,
"volume": 260.76,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 269.85,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 269.87,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 269.86,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 269.86,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 269.88,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:10:00.000Z",
"level": 269.88,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:20:00.000Z",
"level": 269.87,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:30:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:40:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:50:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 81.06,
"volume": 261.05,
"temperature": 17.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 17.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 269.89,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 17.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 269.88,
"flow": 0,
"inflow": 0,
"volume": 0,
"temperature": 17.8,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:30:00.000Z",
"level": 269.87,
"flow": 0,
"inflow": 81.06,
"volume": 261.23,
"temperature": 18.6,
"precipitation": 0
}
]
+307 -1
View File
@@ -6834,9 +6834,315 @@
"timestamp": "2026-06-05T21:40:00.000Z",
"level": 218.72,
"flow": 25.33,
"inflow": 0,
"volume": 0,
"temperature": 18.450684013836877,
"precipitation": 0
},
{
"timestamp": "2026-06-05T21:50:00.000Z",
"level": 218.54,
"flow": 25.33,
"inflow": 19.85,
"volume": 9.68,
"temperature": 11.5,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:00:00.000Z",
"level": 218.6,
"flow": 25.39,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:10:00.000Z",
"level": 218.62,
"flow": 47.22,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:20:00.000Z",
"level": 218.45,
"flow": 60.59,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:30:00.000Z",
"level": 218.53,
"flow": 60.74,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:40:00.000Z",
"level": 218.45,
"flow": 60.6,
"inflow": 0,
"volume": 0,
"temperature": 11.4,
"precipitation": 0
},
{
"timestamp": "2026-06-05T22:50:00.000Z",
"level": 218.34,
"flow": 60.68,
"inflow": 19.85,
"volume": 9.69,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:00:00.000Z",
"level": 218.42,
"flow": 60.67,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:10:00.000Z",
"level": 218.33,
"flow": 39.08,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:20:00.000Z",
"level": 218.38,
"flow": 25.38,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:30:00.000Z",
"level": 218.54,
"flow": 25.38,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:40:00.000Z",
"level": 218.45,
"flow": 25.33,
"inflow": 0,
"volume": 0,
"temperature": 10.3,
"precipitation": 0
},
{
"timestamp": "2026-06-05T23:50:00.000Z",
"level": 218.54,
"flow": 25.38,
"inflow": 19.85,
"volume": 9.51,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:00:00.000Z",
"level": 218.62,
"flow": 25.35,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:10:00.000Z",
"level": 218.55,
"flow": 40.15,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:20:00.000Z",
"level": 218.6,
"flow": 50.5,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:30:00.000Z",
"level": 218.52,
"flow": 50.47,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:40:00.000Z",
"level": 218.49,
"flow": 50.47,
"inflow": 0,
"volume": 0,
"temperature": 9.9,
"precipitation": 0
},
{
"timestamp": "2026-06-06T00:50:00.000Z",
"level": 218.49,
"flow": 35.85,
"inflow": 19.85,
"volume": 9.71,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T01:00:00.000Z",
"level": 218.43,
"flow": 25.34,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T02:00:00.000Z",
"level": 218.33,
"flow": 25.34,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T03:00:00.000Z",
"level": 218.25,
"flow": 25.34,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T04:00:00.000Z",
"level": 218.1,
"flow": 60.76,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T05:00:00.000Z",
"level": 217.82,
"flow": 75.61,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T06:00:00.000Z",
"level": 217.57,
"flow": 60.65,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:00:00.000Z",
"level": 217.32,
"flow": 50.51,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:10:00.000Z",
"level": 217.29,
"flow": 37.55,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:20:00.000Z",
"level": 217.27,
"flow": 25.32,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:30:00.000Z",
"level": 217.24,
"flow": 25.32,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:40:00.000Z",
"level": 217.23,
"flow": 25.32,
"inflow": 0,
"volume": 0,
"temperature": 9.6,
"precipitation": 0
},
{
"timestamp": "2026-06-06T07:50:00.000Z",
"level": 217.22,
"flow": 25.32,
"inflow": 48.25,
"volume": 8.48,
"temperature": 17.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:00:00.000Z",
"level": 217.19,
"flow": 25.31,
"inflow": 0,
"volume": 0,
"temperature": 17.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:10:00.000Z",
"level": 217.17,
"flow": 25.31,
"inflow": 0,
"volume": 0,
"temperature": 17.5,
"precipitation": 0
},
{
"timestamp": "2026-06-06T08:20:00.000Z",
"level": 217.17,
"flow": 25.31,
"inflow": 48.25,
"volume": 8.36,
"temperature": 18.1,
"precipitation": 0
}
]
+151 -151
View File
@@ -4,28 +4,28 @@
"name": "Lipno 1",
"river": "Vltava",
"priority": true,
"level": "723.08",
"capacity": 76.2,
"storageDiff": -1.82,
"inflow": "2.5",
"outflow": "1.5",
"level": "723.09",
"capacity": 76.3,
"storageDiff": -1.81,
"inflow": "9.3",
"outflow": "0.0",
"volume": 199.67,
"maxVolume": 306,
"lat": 48.6322,
"lng": 14.2215,
"sparkline": [
34.78,
37.78,
33.61,
14.02,
1.51,
1.51,
1.51,
1.51,
1.51,
1.51,
1.51,
1.51
723.09,
723.09,
723.09,
723.09,
723.09,
723.09,
723.09,
723.09,
723.09,
723.09,
723.09,
723.09
]
},
{
@@ -33,28 +33,28 @@
"name": "Lipno II",
"river": "Vltava",
"priority": false,
"level": "559.87",
"level": "559.09",
"capacity": 100,
"storageDiff": 48.37,
"inflow": "3.7",
"storageDiff": 47.59,
"inflow": "5.4",
"outflow": "0.0",
"volume": 0.68,
"volume": 0.49,
"maxVolume": 1.5,
"lat": 48.625,
"lng": 14.318,
"sparkline": [
7.48,
7.29,
7.27,
7.24,
0,
0,
0,
7.18,
7.18,
0,
0,
0
559.44,
559.37,
559.29,
559.21,
559.2,
559.19,
559.18,
559.16,
559.13,
559.12,
559.11,
559.09
]
},
{
@@ -62,28 +62,28 @@
"name": "Hněvkovice",
"river": "Vltava",
"priority": true,
"level": "369.79",
"capacity": 87.1,
"storageDiff": -0.31,
"inflow": "10.8",
"outflow": "1.3",
"volume": 20.24,
"level": "369.83",
"capacity": 87.8,
"storageDiff": -0.27,
"inflow": "0.0",
"outflow": "2.5",
"volume": 20.33,
"maxVolume": 21.1,
"lat": 49.183,
"lng": 14.444,
"sparkline": [
18.46,
14.28,
5,
1.25,
1.25,
1.25,
1.25,
1.25,
1.25,
1.25,
1.25,
1.25
369.85,
369.84,
369.84,
369.84,
369.84,
369.83,
369.83,
369.83,
369.81,
369.81,
369.83,
369.83
]
},
{
@@ -91,28 +91,28 @@
"name": "Kořensko",
"river": "Vltava",
"priority": false,
"level": "352.42",
"capacity": 28,
"storageDiff": -0.18,
"inflow": "14.1",
"outflow": "19.0",
"volume": 2.74,
"level": "352.56",
"capacity": 37.3,
"storageDiff": -0.04,
"inflow": "13.4",
"outflow": "19.1",
"volume": 2.79,
"maxVolume": 2.8,
"lat": 49.255,
"lng": 14.398,
"sparkline": [
19.01,
19.01,
19.01,
19.01,
19.01,
19.01,
19.01,
19.01,
19.01,
19.01,
19.01,
19.01
352.49,
352.52,
352.56,
352.57,
352.57,
352.56,
352.56,
352.56,
352.56,
352.56,
352.56,
352.56
]
},
{
@@ -120,28 +120,28 @@
"name": "Orlík",
"river": "Vltava",
"priority": true,
"level": "345.26",
"level": "345.27",
"capacity": 63.6,
"storageDiff": -4.64,
"inflow": "23.8",
"storageDiff": -4.63,
"inflow": "24.4",
"outflow": "0.0",
"volume": 522.12,
"maxVolume": 716.5,
"lat": 49.606,
"lng": 14.17,
"sparkline": [
444.3,
370.39,
381.47,
431.93,
432.4,
432.9,
432.41,
377.67,
137.48,
0,
0,
0
345.26,
345.26,
345.25,
345.26,
345.26,
345.26,
345.26,
345.26,
345.26,
345.26,
345.27,
345.27
]
},
{
@@ -178,28 +178,28 @@
"name": "Slapy",
"river": "Vltava",
"priority": true,
"level": "269.84",
"capacity": 77.5,
"storageDiff": -0.76,
"inflow": "46.5",
"level": "269.87",
"capacity": 78,
"storageDiff": -0.73,
"inflow": "81.1",
"outflow": "0.0",
"volume": 260.21,
"volume": 261.23,
"maxVolume": 269.3,
"lat": 49.822,
"lng": 14.436,
"sparkline": [
310.27,
308.35,
304.36,
284.81,
285.23,
287.34,
287.91,
217.32,
79.38,
0,
0,
0
269.86,
269.89,
269.88,
269.88,
269.87,
269.89,
269.89,
269.89,
269.89,
269.89,
269.88,
269.87
]
},
{
@@ -207,28 +207,28 @@
"name": "Štěchovice",
"river": "Vltava",
"priority": false,
"level": "218.72",
"capacity": 68.8,
"storageDiff": -0.68,
"inflow": "19.9",
"level": "217.17",
"capacity": 6.8,
"storageDiff": -2.23,
"inflow": "48.3",
"outflow": "25.3",
"volume": 9.68,
"volume": 8.36,
"maxVolume": 11.2,
"lat": 49.845,
"lng": 14.412,
"sparkline": [
150.41,
150.43,
120.77,
99.8,
99.83,
94.85,
85.34,
85.17,
52.56,
25.32,
25.39,
25.33
218.1,
217.82,
217.57,
217.32,
217.29,
217.27,
217.24,
217.23,
217.22,
217.19,
217.17,
217.17
]
},
{
@@ -294,28 +294,28 @@
"name": "Římov",
"river": "Malše",
"priority": true,
"level": "467.72",
"capacity": 74.8,
"storageDiff": -2.93,
"inflow": "2.9",
"level": "467.74",
"capacity": 74.9,
"storageDiff": -2.91,
"inflow": "2.2",
"outflow": "0.0",
"volume": 26.49,
"volume": 26.53,
"maxVolume": 33.8,
"lat": 48.847,
"lng": 14.487,
"sparkline": [
0.7,
0.7,
0.7,
0.7,
0.7,
0.7,
0,
0.7,
0.7,
0.7,
0.7,
0
467.73,
467.73,
467.73,
467.73,
467.73,
467.73,
467.73,
467.73,
467.74,
467.74,
467.74,
467.74
]
},
{
@@ -323,28 +323,28 @@
"name": "Hracholusky",
"river": "Mže",
"priority": true,
"level": "352.85",
"level": "352.84",
"capacity": 0,
"storageDiff": -1.25,
"storageDiff": -1.26,
"inflow": "1.5",
"outflow": "2.5",
"volume": 32.37,
"outflow": "0.0",
"volume": 32.32,
"maxVolume": 56.7,
"lat": 49.789,
"lng": 13.155,
"sparkline": [
2.52,
2.53,
2.53,
2.53,
2.53,
2.53,
2.53,
2.53,
2.53,
2.53,
2.53,
2.53
352.85,
352.85,
352.84,
352.84,
352.84,
352.84,
352.84,
352.84,
352.84,
352.84,
352.85,
352.84
]
}
]
+1 -1
View File
@@ -33,7 +33,7 @@ const lakes = lakesConfig.map(lake => {
// Take up to 12 last records for sparkline
const recentData = data.slice(-12);
sparkline = recentData.map(d => (d.flow === null || isNaN(d.flow) ? 0 : d.flow));
sparkline = recentData.map(d => (d.level === null || isNaN(d.level) ? 0 : d.level));
// Pad with zeros if less than 12
while (sparkline.length < 12) {
+42
View File
@@ -0,0 +1,42 @@
import React from 'react';
interface Props {
value: number;
size?: number;
strokeWidth?: number;
}
export const CircularProgress: React.FC<Props> = ({ value, size = 60, strokeWidth = 6 }) => {
const radius = (size - strokeWidth) / 2;
const circumference = radius * 2 * Math.PI;
const offset = circumference - (value / 100) * circumference;
return (
<div style={{ position: 'relative', width: size, height: size }}>
<svg width={size} height={size}>
<circle
stroke="rgba(255,255,255,0.1)"
fill="transparent"
strokeWidth={strokeWidth}
r={radius}
cx={size / 2}
cy={size / 2}
/>
<circle
stroke="var(--color-cyan)"
fill="transparent"
strokeWidth={strokeWidth}
strokeLinecap="round"
style={{ strokeDasharray: circumference, strokeDashoffset: offset, transition: 'stroke-dashoffset 0.5s ease-in-out' }}
r={radius}
cx={size / 2}
cy={size / 2}
transform={`rotate(-90 ${size / 2} ${size / 2})`}
/>
</svg>
<div style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: size * 0.25, fontWeight: 'bold' }}>
{value > 0 ? `${value.toFixed(1)}%` : 'N/A'}
</div>
</div>
);
};
+3 -29
View File
@@ -2,6 +2,7 @@ import { useState, useEffect } from 'react';
import { FiStar } from 'react-icons/fi';
import { type Language } from '../translations';
import { useFavorites } from '../hooks/useFavorites';
import { CircularProgress } from './CircularProgress';
import { useNavigate } from 'react-router-dom';
import { slugify } from '../utils/slugify';
import { AreaChart, Area, ResponsiveContainer } from 'recharts';
@@ -25,34 +26,13 @@ interface Props {
language: Language;
}
const CircularProgress = ({ value, size = 60, strokeWidth = 6 }: { value: number, size?: number, strokeWidth?: number }) => {
const radius = (size - strokeWidth) / 2;
const circumference = radius * 2 * Math.PI;
const offset = circumference - (value / 100) * circumference;
return (
<div style={{ position: 'relative', width: size, height: size }}>
<svg width={size} height={size}>
<circle stroke="rgba(255,255,255,0.1)" fill="transparent" strokeWidth={strokeWidth} r={radius} cx={size / 2} cy={size / 2} />
<circle
stroke="var(--color-cyan)" fill="transparent" strokeWidth={strokeWidth} strokeLinecap="round"
style={{ strokeDasharray: circumference, strokeDashoffset: offset, transition: 'stroke-dashoffset 0.5s ease-in-out' }}
r={radius} cx={size / 2} cy={size / 2} transform={`rotate(-90 ${size / 2} ${size / 2})`}
/>
</svg>
<div style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: size * 0.25, fontWeight: 'bold' }}>
{value > 0 ? `${value}%` : 'N/A'}
</div>
</div>
);
};
const FavoritesOverview = ({ language }: Props) => {
const [lakes, setLakes] = useState<Lake[]>([]);
const { isFavorite, toggleFavorite } = useFavorites();
const navigate = useNavigate();
useEffect(() => {
fetch('/data/lakes_index.json')
fetch(`/data/lakes_index.json?t=${Date.now()}`)
.then(res => res.json())
.then(data => setLakes(data))
.catch(err => console.error(err));
@@ -131,17 +111,11 @@ const FavoritesOverview = ({ language }: Props) => {
<div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>
<CircularProgress value={lake.capacity} size={70} strokeWidth={6} />
<div>
<div style={{ fontSize: '1.25rem', fontWeight: 'bold' }}>
<span style={{ color: lake.capacity >= 80 ? 'var(--color-green)' : lake.capacity < 40 ? 'var(--color-red)' : 'var(--text-main)' }}>
{lake.capacity > 0 ? `${lake.capacity}%` : 'N/A'}
</span>
</div>
{lake.storageDiff !== undefined && (
<div style={{ fontSize: '0.8rem', color: lake.storageDiff >= 0 ? 'var(--color-green)' : 'var(--color-red)', fontWeight: 500 }}>
<div style={{ fontSize: '1.25rem', color: lake.storageDiff >= 0 ? 'var(--color-green)' : 'var(--color-red)', fontWeight: 'bold' }}>
{lake.storageDiff > 0 ? '+' : ''}{lake.storageDiff.toFixed(2)} m
</div>
)}
</div>
</div>
</div>
+12 -8
View File
@@ -1,6 +1,7 @@
import { FiArrowUp, FiArrowDown } from 'react-icons/fi';
import { type Language, t } from '../translations';
import { useState, useEffect } from 'react';
import { CircularProgress } from './CircularProgress';
interface KpiData {
level: number;
@@ -55,9 +56,6 @@ const KpiCards = ({ data, language, lakeName = 'Lipno 1' }: Props) => {
({(data.levelDiff30d ?? 0) > 0 ? '+' : ''}{((data.levelDiff30d ?? 0) * 100).toFixed(1)} cm / 30d)
</div>
</div>
{/* Decorative Circle for Level */}
<div style={{ position: 'absolute', right: '1.5rem', top: '1.5rem', width: '40px', height: '40px', borderRadius: '50%', border: '4px solid rgba(0, 195, 255, 0.2)', borderTopColor: 'var(--color-cyan)', transform: 'rotate(45deg)' }}></div>
</div>
{/* CARD 2: PRŮTOK */}
@@ -135,11 +133,17 @@ const KpiCards = ({ data, language, lakeName = 'Lipno 1' }: Props) => {
</div>
)}
</div>
<div style={{ fontSize: '2rem', fontWeight: 'bold', lineHeight: 1, marginBottom: '0.5rem', color: data.storageDiff && data.storageDiff < 0 ? 'var(--color-red)' : 'var(--color-cyan)' }}>
{data.storageDiff !== undefined && data.storageDiff !== 0 ? (data.storageDiff > 0 ? `+${data.storageDiff.toFixed(2)} m` : `${data.storageDiff.toFixed(2)} m`) : (data.fullness > 0 ? `${data.fullness.toFixed(1)}%` : 'N/A')}
</div>
<div style={{ fontSize: '0.85rem', color: 'var(--text-muted)' }}>
{dict.volume}: {data.volume.toFixed(1)} mil. m³
<div style={{ display: 'flex', alignItems: 'center', gap: '1.5rem', marginTop: '0.5rem' }}>
<CircularProgress value={data.fullness} size={80} strokeWidth={8} />
<div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center' }}>
<div style={{ fontSize: '2rem', fontWeight: 'bold', lineHeight: 1, marginBottom: '0.5rem', color: data.storageDiff && data.storageDiff < 0 ? 'var(--color-red)' : 'var(--color-cyan)' }}>
{data.storageDiff !== undefined && data.storageDiff !== 0 ? (data.storageDiff > 0 ? `+${data.storageDiff.toFixed(2)} m` : `${data.storageDiff.toFixed(2)} m`) : (data.fullness > 0 ? `${data.fullness.toFixed(1)}%` : 'N/A')}
</div>
<div style={{ fontSize: '0.85rem', color: 'var(--text-muted)' }}>
{dict.volume}: {data.volume.toFixed(1)} mil. m³
</div>
</div>
</div>
</div>
</div>
+13 -44
View File
@@ -1,10 +1,11 @@
import { useState, useEffect } from 'react';
import { FiTrendingUp, FiTrendingDown, FiStar } from 'react-icons/fi';
import { type Language, t } from '../translations';
import { AreaChart, Area, ResponsiveContainer } from 'recharts';
import { AreaChart, Area, ResponsiveContainer, YAxis } from 'recharts';
import { useNavigate } from 'react-router-dom';
import { slugify } from '../utils/slugify';
import { useFavorites } from '../hooks/useFavorites';
import { CircularProgress } from './CircularProgress';
interface Lake {
id: string;
@@ -24,45 +25,17 @@ interface Props {
language: Language;
}
const CircularProgress = ({ value, size = 60, strokeWidth = 6 }: { value: number, size?: number, strokeWidth?: number }) => {
const radius = (size - strokeWidth) / 2;
const circumference = radius * 2 * Math.PI;
const offset = circumference - (value / 100) * circumference;
return (
<div style={{ position: 'relative', width: size, height: size }}>
<svg width={size} height={size}>
<circle
stroke="rgba(255,255,255,0.1)"
fill="transparent"
strokeWidth={strokeWidth}
r={radius}
cx={size / 2}
cy={size / 2}
/>
<circle
stroke="var(--color-cyan)"
fill="transparent"
strokeWidth={strokeWidth}
strokeLinecap="round"
style={{ strokeDasharray: circumference, strokeDashoffset: offset, transition: 'stroke-dashoffset 0.5s ease-in-out' }}
r={radius}
cx={size / 2}
cy={size / 2}
transform={`rotate(-90 ${size / 2} ${size / 2})`}
/>
</svg>
<div style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: size * 0.25, fontWeight: 'bold' }}>
{value > 0 ? `${value}%` : 'N/A'}
</div>
</div>
);
};
const LakeCard = ({ lake, language, isFav, onToggleFav }: { lake: Lake, language: Language, isFav: boolean, onToggleFav: (id: string) => void }) => {
const navigate = useNavigate();
const chartData = lake.sparkline.map((val, i) => ({ name: i, value: val }));
const minVal = Math.min(...lake.sparkline);
const maxVal = Math.max(...lake.sparkline);
const diff = maxVal - minVal;
// Enforce a minimum visual span of 0.5 meters so tiny fluctuations don't look like mountains
const padding = diff < 0.5 ? (0.5 - diff) / 2 : 0;
const yDomain = [minVal - padding, maxVal + padding];
return (
<div
className="kpi-card priority-lake-card"
@@ -106,13 +79,8 @@ const LakeCard = ({ lake, language, isFav, onToggleFav }: { lake: Lake, language
<div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>
<CircularProgress value={lake.capacity} size={70} strokeWidth={6} />
<div>
<div style={{ fontSize: '1.25rem', fontWeight: 'bold' }}>
<span style={{ color: lake.capacity >= 80 ? 'var(--color-green)' : lake.capacity < 40 ? 'var(--color-red)' : 'var(--text-main)' }}>
{lake.capacity > 0 ? `${lake.capacity}%` : 'N/A'}
</span>
</div>
{lake.storageDiff !== undefined && (
<div style={{ fontSize: '0.8rem', color: lake.storageDiff >= 0 ? 'var(--color-green)' : 'var(--color-red)', fontWeight: 500 }}>
<div style={{ fontSize: '1.25rem', color: lake.storageDiff >= 0 ? 'var(--color-green)' : 'var(--color-red)', fontWeight: 'bold' }}>
{lake.storageDiff > 0 ? '+' : ''}{lake.storageDiff.toFixed(2)} m
</div>
)}
@@ -130,7 +98,8 @@ const LakeCard = ({ lake, language, isFav, onToggleFav }: { lake: Lake, language
<stop offset="95%" stopColor="var(--color-cyan)" stopOpacity={0} />
</linearGradient>
</defs>
<Area type="monotone" dataKey="value" stroke="var(--color-cyan)" fillOpacity={1} fill="url(#colorSpark)" />
<YAxis domain={yDomain} hide />
<Area type="monotone" dataKey="value" stroke="var(--color-cyan)" fillOpacity={1} fill="url(#colorSpark)" baseValue={yDomain[0]} />
</AreaChart>
</ResponsiveContainer>
</div>
@@ -201,7 +170,7 @@ const LakesOverview = ({ language }: Props) => {
const { isFavorite, toggleFavorite, favorites } = useFavorites();
useEffect(() => {
fetch('/data/lakes_index.json')
fetch(`/data/lakes_index.json?t=${Date.now()}`)
.then(res => res.json())
.then(data => setLakes(data))
.catch(err => console.error(err));