feat: implement map view for lake visualization and automate data scraping pipeline
This commit is contained in:
Generated
+51
@@ -11,14 +11,17 @@
|
|||||||
"axios": "^1.17.0",
|
"axios": "^1.17.0",
|
||||||
"cheerio": "^1.2.0",
|
"cheerio": "^1.2.0",
|
||||||
"date-fns": "^4.4.0",
|
"date-fns": "^4.4.0",
|
||||||
|
"leaflet": "^1.9.4",
|
||||||
"react": "^19.2.0",
|
"react": "^19.2.0",
|
||||||
"react-dom": "^19.2.0",
|
"react-dom": "^19.2.0",
|
||||||
"react-icons": "^5.5.0",
|
"react-icons": "^5.5.0",
|
||||||
|
"react-leaflet": "^5.0.0",
|
||||||
"react-router-dom": "^7.9.6",
|
"react-router-dom": "^7.9.6",
|
||||||
"recharts": "^3.8.1"
|
"recharts": "^3.8.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.39.1",
|
"@eslint/js": "^9.39.1",
|
||||||
|
"@types/leaflet": "^1.9.21",
|
||||||
"@types/node": "^24.10.1",
|
"@types/node": "^24.10.1",
|
||||||
"@types/react": "^19.2.5",
|
"@types/react": "^19.2.5",
|
||||||
"@types/react-dom": "^19.2.3",
|
"@types/react-dom": "^19.2.3",
|
||||||
@@ -1016,6 +1019,17 @@
|
|||||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@react-leaflet/core": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-3EWmekh4Nz+pGcr+xjf0KNyYfC3U2JjnkWsh0zcqaexYqmmB5ZhH37kz41JXGmKzpaMZCnPofBBm64i+YrEvGQ==",
|
||||||
|
"license": "Hippocratic-2.1",
|
||||||
|
"peerDependencies": {
|
||||||
|
"leaflet": "^1.9.0",
|
||||||
|
"react": "^19.0.0",
|
||||||
|
"react-dom": "^19.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@reduxjs/toolkit": {
|
"node_modules/@reduxjs/toolkit": {
|
||||||
"version": "2.12.0",
|
"version": "2.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.12.0.tgz",
|
||||||
@@ -1494,6 +1508,13 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/geojson": {
|
||||||
|
"version": "7946.0.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz",
|
||||||
|
"integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@types/json-schema": {
|
"node_modules/@types/json-schema": {
|
||||||
"version": "7.0.15",
|
"version": "7.0.15",
|
||||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
||||||
@@ -1501,6 +1522,16 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/leaflet": {
|
||||||
|
"version": "1.9.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.21.tgz",
|
||||||
|
"integrity": "sha512-TbAd9DaPGSnzp6QvtYngntMZgcRk+igFELwR2N99XZn7RXUdKgsXMR+28bUO0rPsWp8MIu/f47luLIQuSLYv/w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/geojson": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "24.10.1",
|
"version": "24.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
|
||||||
@@ -3318,6 +3349,12 @@
|
|||||||
"json-buffer": "3.0.1"
|
"json-buffer": "3.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/leaflet": {
|
||||||
|
"version": "1.9.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz",
|
||||||
|
"integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==",
|
||||||
|
"license": "BSD-2-Clause"
|
||||||
|
},
|
||||||
"node_modules/levn": {
|
"node_modules/levn": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
||||||
@@ -3706,6 +3743,20 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
|
"node_modules/react-leaflet": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-CWbTpr5vcHw5bt9i4zSlPEVQdTVcML390TjeDG0cK59z1ylexpqC6M1PJFjV8jD7CF+ACBFsLIDs6DRMoLEofw==",
|
||||||
|
"license": "Hippocratic-2.1",
|
||||||
|
"dependencies": {
|
||||||
|
"@react-leaflet/core": "^3.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"leaflet": "^1.9.0",
|
||||||
|
"react": "^19.0.0",
|
||||||
|
"react-dom": "^19.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/react-redux": {
|
"node_modules/react-redux": {
|
||||||
"version": "9.3.0",
|
"version": "9.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.3.0.tgz",
|
||||||
|
|||||||
+6
-1
@@ -9,20 +9,25 @@
|
|||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"mock": "tsx scripts/generateMockLakes.ts",
|
"mock": "tsx scripts/generateMockLakes.ts",
|
||||||
"scrape": "tsx scripts/scrapeLipno.ts"
|
"scrape": "tsx scripts/scrapeLakes.ts",
|
||||||
|
"build-index": "tsx scripts/buildIndex.ts",
|
||||||
|
"data:update": "npm run scrape && npm run build-index"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.17.0",
|
"axios": "^1.17.0",
|
||||||
"cheerio": "^1.2.0",
|
"cheerio": "^1.2.0",
|
||||||
"date-fns": "^4.4.0",
|
"date-fns": "^4.4.0",
|
||||||
|
"leaflet": "^1.9.4",
|
||||||
"react": "^19.2.0",
|
"react": "^19.2.0",
|
||||||
"react-dom": "^19.2.0",
|
"react-dom": "^19.2.0",
|
||||||
"react-icons": "^5.5.0",
|
"react-icons": "^5.5.0",
|
||||||
|
"react-leaflet": "^5.0.0",
|
||||||
"react-router-dom": "^7.9.6",
|
"react-router-dom": "^7.9.6",
|
||||||
"recharts": "^3.8.1"
|
"recharts": "^3.8.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.39.1",
|
"@eslint/js": "^9.39.1",
|
||||||
|
"@types/leaflet": "^1.9.21",
|
||||||
"@types/node": "^24.10.1",
|
"@types/node": "^24.10.1",
|
||||||
"@types/react": "^19.2.5",
|
"@types/react": "^19.2.5",
|
||||||
"@types/react-dom": "^19.2.3",
|
"@types/react-dom": "^19.2.3",
|
||||||
|
|||||||
@@ -0,0 +1,167 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 463.41,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:15:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:45:00.000Z",
|
||||||
|
"level": 463.42,
|
||||||
|
"flow": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 520.64,
|
||||||
|
"flow": 0.78
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 520.59,
|
||||||
|
"flow": 0.75
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 520.78,
|
||||||
|
"flow": 0.72
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 520.94,
|
||||||
|
"flow": 0.69
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 521.01,
|
||||||
|
"flow": 0.69
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 521.14,
|
||||||
|
"flow": 0.63
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 521.18,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 521.18,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 521.18,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 521.18,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 521.18,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 521.18,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 521.18,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 521.19,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 521.19,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 521.19,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 521.19,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 521.2,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 521.2,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 521.2,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 521.2,
|
||||||
|
"flow": 0.63
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 521.21,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 521.21,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 521.21,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 521.21,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 521.22,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 521.22,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 521.22,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 521.22,
|
||||||
|
"flow": 0.62
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 521.22,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 521.22,
|
||||||
|
"flow": 0.63
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 521.22,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 521.23,
|
||||||
|
"flow": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 521.23,
|
||||||
|
"flow": 0.65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 521.23,
|
||||||
|
"flow": 0.64
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 292.88,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 292.87,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 292.9,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 292.91,
|
||||||
|
"flow": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,167 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 632.73,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 632.74,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 632.76,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 632.77,
|
||||||
|
"flow": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,167 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 635.67,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 635.67,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 635.69,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 635.71,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 635.7,
|
||||||
|
"flow": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 345,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 344.95,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 344.99,
|
||||||
|
"flow": 0.57
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 345.15,
|
||||||
|
"flow": 0.57
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 345.18,
|
||||||
|
"flow": 0.55
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 345.18,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.55
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 345.16,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 345.18,
|
||||||
|
"flow": 0.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 345.18,
|
||||||
|
"flow": 1.19
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 345.18,
|
||||||
|
"flow": 1.19
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 1.18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 1.18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 1.18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 345.17,
|
||||||
|
"flow": 1.19
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 345.16,
|
||||||
|
"flow": 1.19
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 345.16,
|
||||||
|
"flow": 1.54
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 345.15,
|
||||||
|
"flow": 1.56
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 345.15,
|
||||||
|
"flow": 1.54
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 345.15,
|
||||||
|
"flow": 1.54
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 345.14,
|
||||||
|
"flow": 1.54
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 345.14,
|
||||||
|
"flow": 1.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 345.14,
|
||||||
|
"flow": 1.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 345.14,
|
||||||
|
"flow": 1.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 345.14,
|
||||||
|
"flow": 1.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 345.14,
|
||||||
|
"flow": 1.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 345.14,
|
||||||
|
"flow": 1.53
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 640.65,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 640.65,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 640.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 640.67,
|
||||||
|
"flow": 0.01
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 467.48,
|
||||||
|
"flow": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 467.44,
|
||||||
|
"flow": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 467.47,
|
||||||
|
"flow": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 467.54,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 467.58,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 467.6,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 467.65,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 467.66,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 467.66,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 467.67,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 467.67,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 467.68,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 467.68,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 467.68,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 467.68,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 467.68,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 467.69,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 467.69,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 467.69,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 467.69,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 467.7,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 467.7,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 467.7,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 467.7,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 467.71,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 467.71,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 467.71,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 467.71,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 467.71,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 467.72,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 467.72,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 467.72,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 467.72,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 467.72,
|
||||||
|
"flow": 0.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 467.72,
|
||||||
|
"flow": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 353.02,
|
||||||
|
"flow": 2.46
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 352.99,
|
||||||
|
"flow": 2.48
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 352.97,
|
||||||
|
"flow": 2.48
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 352.95,
|
||||||
|
"flow": 2.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 352.92,
|
||||||
|
"flow": 2.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 352.89,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 352.88,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 352.87,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.53
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 352.85,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 352.85,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 352.85,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 352.85,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 352.85,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 352.86,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 352.85,
|
||||||
|
"flow": 2.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 352.85,
|
||||||
|
"flow": 2.53
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 530.77,
|
||||||
|
"flow": 0.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 530.77,
|
||||||
|
"flow": 0.48
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 530.76,
|
||||||
|
"flow": 0.51
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 530.76,
|
||||||
|
"flow": 0.48
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 530.74,
|
||||||
|
"flow": 0.48
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 530.72,
|
||||||
|
"flow": 0.48
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 530.71,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 530.71,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 530.71,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 530.7,
|
||||||
|
"flow": 0.35
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 563.6,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 563.59,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 563.65,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 563.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 563.68,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 563.66,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 563.67,
|
||||||
|
"flow": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 670.62,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 670.6,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 670.61,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 670.6,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 670.58,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 670.57,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 670.56,
|
||||||
|
"flow": null
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 313.38,
|
||||||
|
"flow": 1.44
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 313.35,
|
||||||
|
"flow": 1.46
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 313.35,
|
||||||
|
"flow": 1.35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 313.44,
|
||||||
|
"flow": 0.97
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 313.5,
|
||||||
|
"flow": 0.98
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 313.56,
|
||||||
|
"flow": 0.99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 1.05
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 0.94
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 0.94
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 0.94
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 0.94
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 0.95
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 313.6,
|
||||||
|
"flow": 0.95
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 313.6,
|
||||||
|
"flow": 0.95
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 313.6,
|
||||||
|
"flow": 1.12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 2.85
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 313.59,
|
||||||
|
"flow": 3.15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 313.58,
|
||||||
|
"flow": 3.11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 313.58,
|
||||||
|
"flow": 2.97
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 313.57,
|
||||||
|
"flow": 2.92
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 313.57,
|
||||||
|
"flow": 2.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 313.56,
|
||||||
|
"flow": 2.88
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 313.55,
|
||||||
|
"flow": 2.97
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 313.55,
|
||||||
|
"flow": 3.07
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 313.54,
|
||||||
|
"flow": 3.14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 313.53,
|
||||||
|
"flow": 3.12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 313.53,
|
||||||
|
"flow": 3.12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 313.52,
|
||||||
|
"flow": 3.11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 313.52,
|
||||||
|
"flow": 3.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 313.51,
|
||||||
|
"flow": 3.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 313.51,
|
||||||
|
"flow": 3.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 313.51,
|
||||||
|
"flow": 3.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 313.51,
|
||||||
|
"flow": 3.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 313.51,
|
||||||
|
"flow": 3.1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 313.51,
|
||||||
|
"flow": 3.1
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 385,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 385,
|
||||||
|
"flow": 0.01
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.05
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.02
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 385.01,
|
||||||
|
"flow": 0.04
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 723.04,
|
||||||
|
"flow": 1.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 723.06,
|
||||||
|
"flow": 1.03
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 30.94
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 1.51
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 723.1,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 723.1,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 723.1,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 723.1,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 723.1,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 1.49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 13.76
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 723.08,
|
||||||
|
"flow": 34.78
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 34.85
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 34.87
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 34.87
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 34.87
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 723.09,
|
||||||
|
"flow": 34.87
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 345.7,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 345.75,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 345.82,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 345.76,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 345.76,
|
||||||
|
"flow": 17.77
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 345.67,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 345.65,
|
||||||
|
"flow": 98.84
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 345.59,
|
||||||
|
"flow": 374.8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 345.58,
|
||||||
|
"flow": 97.45
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 345.58,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 345.57,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 345.59,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 345.59,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 345.58,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 345.6,
|
||||||
|
"flow": 100.93
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 345.54,
|
||||||
|
"flow": 284.29
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 345.52,
|
||||||
|
"flow": 187.15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 345.53,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 345.52,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 345.53,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 345.54,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 345.53,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 345.55,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 345.54,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 345.55,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 345.56,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 345.55,
|
||||||
|
"flow": 72.6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 345.53,
|
||||||
|
"flow": 186.83
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 345.47,
|
||||||
|
"flow": 454.38
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 345.39,
|
||||||
|
"flow": 444.3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 345.38,
|
||||||
|
"flow": 444.26
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 345.37,
|
||||||
|
"flow": 443.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 345.36,
|
||||||
|
"flow": 443.75
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 345.35,
|
||||||
|
"flow": 446.81
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 345.34,
|
||||||
|
"flow": 444.17
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-30T05:00:00.000Z",
|
||||||
|
"level": 269.85,
|
||||||
|
"flow": 58.2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-05-31T05:00:00.000Z",
|
||||||
|
"level": 269.64,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-01T05:00:00.000Z",
|
||||||
|
"level": 269.47,
|
||||||
|
"flow": 139.04
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-02T05:00:00.000Z",
|
||||||
|
"level": 269.44,
|
||||||
|
"flow": 13.82
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-03T05:00:00.000Z",
|
||||||
|
"level": 269.35,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T05:00:00.000Z",
|
||||||
|
"level": 269.42,
|
||||||
|
"flow": 26.22
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T20:00:00.000Z",
|
||||||
|
"level": 269.37,
|
||||||
|
"flow": 89.57
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T21:00:00.000Z",
|
||||||
|
"level": 269.42,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T22:00:00.000Z",
|
||||||
|
"level": 269.42,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-04T23:00:00.000Z",
|
||||||
|
"level": 269.47,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T00:00:00.000Z",
|
||||||
|
"level": 269.5,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T01:00:00.000Z",
|
||||||
|
"level": 269.52,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T02:00:00.000Z",
|
||||||
|
"level": 269.55,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T03:00:00.000Z",
|
||||||
|
"level": 269.57,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T04:00:00.000Z",
|
||||||
|
"level": 269.59,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T05:00:00.000Z",
|
||||||
|
"level": 269.62,
|
||||||
|
"flow": 58.26
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T06:00:00.000Z",
|
||||||
|
"level": 269.64,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T07:00:00.000Z",
|
||||||
|
"level": 269.67,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T08:00:00.000Z",
|
||||||
|
"level": 269.66,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T09:00:00.000Z",
|
||||||
|
"level": 269.67,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T10:00:00.000Z",
|
||||||
|
"level": 269.65,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T11:00:00.000Z",
|
||||||
|
"level": 269.66,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T12:00:00.000Z",
|
||||||
|
"level": 269.65,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T13:00:00.000Z",
|
||||||
|
"level": 269.66,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T14:00:00.000Z",
|
||||||
|
"level": 269.66,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T15:00:00.000Z",
|
||||||
|
"level": 269.66,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T16:00:00.000Z",
|
||||||
|
"level": 269.66,
|
||||||
|
"flow": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T17:00:00.000Z",
|
||||||
|
"level": 269.65,
|
||||||
|
"flow": 119.44
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T18:00:00.000Z",
|
||||||
|
"level": 269.65,
|
||||||
|
"flow": 137.14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:00:00.000Z",
|
||||||
|
"level": 269.75,
|
||||||
|
"flow": 310.27
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:10:00.000Z",
|
||||||
|
"level": 269.76,
|
||||||
|
"flow": 311.12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:20:00.000Z",
|
||||||
|
"level": 269.74,
|
||||||
|
"flow": 312.38
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:30:00.000Z",
|
||||||
|
"level": 269.74,
|
||||||
|
"flow": 312.7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:40:00.000Z",
|
||||||
|
"level": 269.75,
|
||||||
|
"flow": 313.15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timestamp": "2026-06-05T19:50:00.000Z",
|
||||||
|
"level": 269.76,
|
||||||
|
"flow": 312.56
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
+422
-828
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,62 @@
|
|||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
|
import { lakesConfig } from './lakesConfig';
|
||||||
|
|
||||||
|
interface DataRecord {
|
||||||
|
timestamp: string;
|
||||||
|
level: number;
|
||||||
|
flow: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
const lakes = lakesConfig.map(lake => {
|
||||||
|
const [internalId, oid] = lake.id.split('|');
|
||||||
|
const DATA_FILE = path.resolve(`public/data/${internalId}.json`);
|
||||||
|
|
||||||
|
let currentLevel = 0;
|
||||||
|
let currentFlow = 0;
|
||||||
|
let sparkline: number[] = Array(12).fill(0);
|
||||||
|
|
||||||
|
if (fs.existsSync(DATA_FILE)) {
|
||||||
|
try {
|
||||||
|
const data: DataRecord[] = JSON.parse(fs.readFileSync(DATA_FILE, 'utf-8'));
|
||||||
|
if (data.length > 0) {
|
||||||
|
// Find latest valid record or just the last record
|
||||||
|
const lastValidLevelData = [...data].reverse().find(d => d.level !== null && !isNaN(d.level));
|
||||||
|
const lastValidFlowData = [...data].reverse().find(d => d.flow !== null && !isNaN(d.flow) && d.flow > 0);
|
||||||
|
|
||||||
|
currentLevel = lastValidLevelData ? lastValidLevelData.level : 0;
|
||||||
|
currentFlow = lastValidFlowData ? lastValidFlowData.flow : 0;
|
||||||
|
|
||||||
|
// 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));
|
||||||
|
|
||||||
|
// Pad with zeros if less than 12
|
||||||
|
while (sparkline.length < 12) {
|
||||||
|
sparkline.unshift(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(`Error reading data for ${internalId}`, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
id: lake.id,
|
||||||
|
name: lake.text.replace('VD ', '').split('-')[0].trim(),
|
||||||
|
river: lake.text.includes('-') ? lake.text.split('-')[1].trim() : '',
|
||||||
|
priority: lake.priority || false,
|
||||||
|
level: currentLevel.toFixed(2),
|
||||||
|
capacity: 0, // Removed fake capacity
|
||||||
|
inflow: currentFlow.toFixed(1),
|
||||||
|
outflow: currentFlow.toFixed(1),
|
||||||
|
volume: lake.maxVolume || 0, // Using real maxVolume if known
|
||||||
|
lat: lake.coords[0],
|
||||||
|
lng: lake.coords[1],
|
||||||
|
sparkline
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const outputPath = path.resolve(process.cwd(), 'public/data/lakes_index.json');
|
||||||
|
fs.writeFileSync(outputPath, JSON.stringify(lakes, null, 2));
|
||||||
|
console.log('Real lakes index generated:', lakes.length);
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
import * as fs from 'fs';
|
|
||||||
import * as path from 'path';
|
|
||||||
|
|
||||||
interface LakeRaw {
|
|
||||||
id: string;
|
|
||||||
text: string;
|
|
||||||
priority?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const lakesRaw: LakeRaw[] = [
|
|
||||||
{ id: "VLL1|1", text: "VD Lipno 1 - Vltava", priority: true },
|
|
||||||
{ id: "VLOR|1", text: "VD Orlík - Vltava", priority: true },
|
|
||||||
{ id: "VLSL|1", text: "VD Slapy - Vltava", priority: false },
|
|
||||||
{ id: "BLHU|1", text: "VD Husinec - Blanice (PI)" },
|
|
||||||
{ id: "BIBI|1", text: "VD Bílsko - Bílský potok" },
|
|
||||||
{ id: "KLDP|3", text: "VD Dolejší Padrťský rybník" },
|
|
||||||
{ id: "KLHP|3", text: "VD Hořejší Padrťský rybník" },
|
|
||||||
{ id: "KLKL|3", text: "VD Klabava - Klabava" },
|
|
||||||
{ id: "KCKC|3", "text": "VD Klíčava - Klíčava" },
|
|
||||||
{ id: "LILA|3", "text": "VD Láz - Litavka" },
|
|
||||||
{ id: "MARI|1", "text": "VD Římov - Malše" },
|
|
||||||
{ id: "MZHR|3", "text": "VD Hracholusky - Mže" },
|
|
||||||
{ id: "MZLU|3", "text": "VD Lučina - Mže" },
|
|
||||||
{ id: "MZSS|3", "text": "VD Plzeň-Štruncovy sady" },
|
|
||||||
{ id: "OPOB|3", "text": "VD Obecnice - Obecnický potok" },
|
|
||||||
{ id: "PPPI|3", "text": "VD Pilská - Pilský potok" },
|
|
||||||
{ id: "RACU|3", "text": "VD České Údolí - Radbuza" },
|
|
||||||
{ id: "SPNE|2", "text": "VD Němčice - Sedlický potok" },
|
|
||||||
{ id: "SVKR|1", "text": "VD Švihov - Želivka" },
|
|
||||||
{ id: "UHKA|1", "text": "VD Kamýk - Vltava" },
|
|
||||||
{ id: "VRSN|1", "text": "VD Vrané - Vltava" },
|
|
||||||
{ id: "ZLUT|3", "text": "VD Žlutice - Střela" },
|
|
||||||
// Adding dummies to reach ~40
|
|
||||||
...Array.from({length: 18}).map((_, i) => ({ id: `DUMMY${i}`, text: `VD Dummy Lake ${i+1}` }))
|
|
||||||
];
|
|
||||||
|
|
||||||
const lakes = lakesRaw.map(lake => {
|
|
||||||
const sparkline = Array.from({length: 12}).map(() => 50 + Math.random() * 20);
|
|
||||||
return {
|
|
||||||
id: lake.id,
|
|
||||||
name: lake.text.replace('VD ', '').split('-')[0].trim(),
|
|
||||||
river: lake.text.includes('-') ? lake.text.split('-')[1].trim() : '',
|
|
||||||
priority: lake.priority || false,
|
|
||||||
level: (200 + Math.random() * 500).toFixed(2),
|
|
||||||
capacity: Math.floor(20 + Math.random() * 80), // 20% to 100%
|
|
||||||
inflow: (Math.random() * 20).toFixed(1),
|
|
||||||
outflow: (Math.random() * 20).toFixed(1),
|
|
||||||
volume: (Math.random() * 300).toFixed(1),
|
|
||||||
sparkline
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
const outputPath = path.resolve(process.cwd(), 'public/data/lakes_index.json');
|
|
||||||
fs.writeFileSync(outputPath, JSON.stringify(lakes, null, 2));
|
|
||||||
console.log('Mock lakes generated:', lakes.length);
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
export interface LakeConfig {
|
||||||
|
id: string;
|
||||||
|
text: string;
|
||||||
|
priority?: boolean;
|
||||||
|
coords: [number, number];
|
||||||
|
}
|
||||||
|
|
||||||
|
export const lakesConfig: LakeConfig[] = [
|
||||||
|
{ id: "VLL1|1", text: "VD Lipno 1 - Vltava", priority: true, coords: [48.6322, 14.2215], maxVolume: 306.0 },
|
||||||
|
{ id: "VLOR|2", text: "VD Orlík - Vltava", priority: true, coords: [49.6060, 14.1700], maxVolume: 716.5 },
|
||||||
|
{ id: "VLSL|2", text: "VD Slapy - Vltava", priority: false, coords: [49.8220, 14.4360], maxVolume: 269.3 },
|
||||||
|
{ id: "BLHU|1", text: "VD Husinec - Blanice (PI)", coords: [49.0520, 13.9830], maxVolume: 6.9 },
|
||||||
|
{ id: "BIBI|1", text: "VD Bílsko - Bílský potok", coords: [49.1910, 14.0530] },
|
||||||
|
{ id: "KLDP|3", text: "VD Dolejší Padrťský rybník", coords: [49.6640, 13.7660] },
|
||||||
|
{ id: "KLHP|3", text: "VD Hořejší Padrťský rybník", coords: [49.6540, 13.7840] },
|
||||||
|
{ id: "KLKL|3", text: "VD Klabava - Klabava", coords: [49.7560, 13.5650] },
|
||||||
|
{ id: "KCKC|3", "text": "VD Klíčava - Klíčava", coords: [50.0650, 13.9290], maxVolume: 8.3 },
|
||||||
|
{ id: "LILA|3", text: "VD Láz - Litavka", coords: [49.6670, 13.8820] },
|
||||||
|
{ id: "MARI|1", text: "VD Římov - Malše", coords: [48.8470, 14.4870], maxVolume: 33.8 },
|
||||||
|
{ id: "MZHR|3", text: "VD Hracholusky - Mže", coords: [49.7890, 13.1550], maxVolume: 56.7 },
|
||||||
|
{ id: "MZLU|3", text: "VD Lučina - Mže", coords: [49.8000, 12.6100] },
|
||||||
|
{ id: "MZSS|3", text: "VD Plzeň-Štruncovy sady", coords: [49.7510, 13.3850] },
|
||||||
|
{ id: "OPOB|3", "text": "VD Obecnice - Obecnický potok", coords: [49.7210, 13.9450] },
|
||||||
|
{ id: "PPPI|3", "text": "VD Pilská - Pilský potok", coords: [49.6760, 13.8960] },
|
||||||
|
{ id: "RACU|3", "text": "VD České Údolí - Radbuza", coords: [49.7110, 13.3610] },
|
||||||
|
{ id: "SPNE|2", "text": "VD Němčice - Sedlický potok", coords: [49.6050, 15.2280] },
|
||||||
|
{ id: "SVKR|2", "text": "VD Švihov - Želivka", coords: [49.7180, 15.1060], maxVolume: 266.6 },
|
||||||
|
{ id: "UHKA|2", "text": "VD Kamýk - Vltava", coords: [49.6360, 14.2540], maxVolume: 12.8 },
|
||||||
|
{ id: "VRSN|2", "text": "VD Vrané - Vltava", coords: [49.9340, 14.3850], maxVolume: 11.1 },
|
||||||
|
{ id: "ZLUT|3", "text": "VD Žlutice - Střela", coords: [50.0930, 13.1590] }
|
||||||
|
];
|
||||||
@@ -3,9 +3,7 @@ import * as path from 'path';
|
|||||||
import * as cheerio from 'cheerio';
|
import * as cheerio from 'cheerio';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import https from 'https';
|
import https from 'https';
|
||||||
|
import { lakesConfig } from './lakesConfig';
|
||||||
const URL = 'https://www.pvl.cz/portal/nadrze/cz/pc/Mereni.aspx?oid=1&id=VLL1';
|
|
||||||
const DATA_FILE = path.resolve('public/data/lipno.json');
|
|
||||||
|
|
||||||
interface DataRecord {
|
interface DataRecord {
|
||||||
timestamp: string;
|
timestamp: string;
|
||||||
@@ -23,12 +21,12 @@ function parseDateString(dateStr: string): string {
|
|||||||
return d.toISOString();
|
return d.toISOString();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function scrape(): Promise<void> {
|
async function scrapeLake(lakeId: string, oid: string, internalId: string) {
|
||||||
try {
|
const URL = `https://www.pvl.cz/portal/nadrze/cz/pc/Mereni.aspx?oid=${oid}&id=${internalId}`;
|
||||||
const agent = new https.Agent({
|
const DATA_FILE = path.resolve(`public/data/${internalId}.json`);
|
||||||
rejectUnauthorized: false
|
|
||||||
});
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
const agent = new https.Agent({ rejectUnauthorized: false });
|
||||||
const response = await axios.get(URL, {
|
const response = await axios.get(URL, {
|
||||||
httpsAgent: agent,
|
httpsAgent: agent,
|
||||||
headers: {
|
headers: {
|
||||||
@@ -38,7 +36,6 @@ async function scrape(): Promise<void> {
|
|||||||
|
|
||||||
const html = response.data;
|
const html = response.data;
|
||||||
const $ = cheerio.load(html);
|
const $ = cheerio.load(html);
|
||||||
|
|
||||||
const rows = $('table tr');
|
const rows = $('table tr');
|
||||||
const newData: DataRecord[] = [];
|
const newData: DataRecord[] = [];
|
||||||
|
|
||||||
@@ -46,7 +43,6 @@ async function scrape(): Promise<void> {
|
|||||||
const tds = $(row).find('td');
|
const tds = $(row).find('td');
|
||||||
if (tds.length >= 3) {
|
if (tds.length >= 3) {
|
||||||
const datetimeText = $(tds[0]).text().trim();
|
const datetimeText = $(tds[0]).text().trim();
|
||||||
// Check if it's a valid date string matching DD.MM.YYYY HH:MM
|
|
||||||
if (/^\d{2}\.\d{2}\.\d{4}\s\d{2}:\d{2}$/.test(datetimeText)) {
|
if (/^\d{2}\.\d{2}\.\d{4}\s\d{2}:\d{2}$/.test(datetimeText)) {
|
||||||
const timestamp = parseDateString(datetimeText);
|
const timestamp = parseDateString(datetimeText);
|
||||||
const levelText = $(tds[1]).text().trim().replace(',', '.');
|
const levelText = $(tds[1]).text().trim().replace(',', '.');
|
||||||
@@ -61,33 +57,42 @@ async function scrape(): Promise<void> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load existing data
|
|
||||||
let existingData: DataRecord[] = [];
|
let existingData: DataRecord[] = [];
|
||||||
if (fs.existsSync(DATA_FILE)) {
|
if (fs.existsSync(DATA_FILE)) {
|
||||||
const fileContent = fs.readFileSync(DATA_FILE, 'utf-8');
|
const fileContent = fs.readFileSync(DATA_FILE, 'utf-8');
|
||||||
existingData = JSON.parse(fileContent);
|
existingData = JSON.parse(fileContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge and deduplicate by timestamp
|
|
||||||
const dataMap = new Map<string, DataRecord>();
|
const dataMap = new Map<string, DataRecord>();
|
||||||
existingData.forEach(item => dataMap.set(item.timestamp, item));
|
existingData.forEach(item => dataMap.set(item.timestamp, item));
|
||||||
newData.forEach(item => dataMap.set(item.timestamp, item));
|
newData.forEach(item => dataMap.set(item.timestamp, item));
|
||||||
|
|
||||||
// Sort chronologically
|
|
||||||
const mergedData = Array.from(dataMap.values()).sort((a, b) => {
|
const mergedData = Array.from(dataMap.values()).sort((a, b) => {
|
||||||
return new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime();
|
return new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Save back
|
|
||||||
fs.mkdirSync(path.dirname(DATA_FILE), { recursive: true });
|
fs.mkdirSync(path.dirname(DATA_FILE), { recursive: true });
|
||||||
fs.writeFileSync(DATA_FILE, JSON.stringify(mergedData, null, 2), 'utf-8');
|
fs.writeFileSync(DATA_FILE, JSON.stringify(mergedData, null, 2), 'utf-8');
|
||||||
|
|
||||||
console.log(`Scraped ${newData.length} records. Total records in DB: ${mergedData.length}`);
|
console.log(`[${internalId}] Scraped ${newData.length} records. DB total: ${mergedData.length}`);
|
||||||
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('Error scraping data:', error.message);
|
console.error(`[${internalId}] Error scraping data:`, error.message);
|
||||||
process.exit(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scrape();
|
async function runScraper() {
|
||||||
|
console.log(`Starting bulk scraper for ${lakesConfig.length} lakes...`);
|
||||||
|
|
||||||
|
for (const lake of lakesConfig) {
|
||||||
|
// ID format: VLL1|1 -> internalId=VLL1, oid=1
|
||||||
|
const [internalId, oid] = lake.id.split('|');
|
||||||
|
await scrapeLake(lake.id, oid, internalId);
|
||||||
|
// Add small delay to not hammer the server
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 500));
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Bulk scraping finished.');
|
||||||
|
}
|
||||||
|
|
||||||
|
runScraper();
|
||||||
+6
-7
@@ -1,6 +1,7 @@
|
|||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import LakeDetail from './components/LakeDetail';
|
import LakeDetail from './components/LakeDetail';
|
||||||
import LakesOverview from './components/LakesOverview';
|
import LakesOverview from './components/LakesOverview';
|
||||||
|
import LakeMap from './components/LakeMap';
|
||||||
import Sidebar from './components/Sidebar';
|
import Sidebar from './components/Sidebar';
|
||||||
import Topbar from './components/Topbar';
|
import Topbar from './components/Topbar';
|
||||||
import SettingsModal from './components/SettingsModal';
|
import SettingsModal from './components/SettingsModal';
|
||||||
@@ -11,7 +12,7 @@ function App() {
|
|||||||
const [language, setLanguage] = useState<Language>('en');
|
const [language, setLanguage] = useState<Language>('en');
|
||||||
const [theme, setTheme] = useState<'dark' | 'light'>('dark');
|
const [theme, setTheme] = useState<'dark' | 'light'>('dark');
|
||||||
const [isSettingsOpen, setIsSettingsOpen] = useState(false);
|
const [isSettingsOpen, setIsSettingsOpen] = useState(false);
|
||||||
const [activeView, setActiveView] = useState<'overview' | 'detail'>('overview');
|
const [activeView, setActiveView] = useState<'overview' | 'detail' | 'map'>('overview');
|
||||||
const [activeLakeId, setActiveLakeId] = useState<string | null>(null);
|
const [activeLakeId, setActiveLakeId] = useState<string | null>(null);
|
||||||
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
||||||
|
|
||||||
@@ -29,7 +30,7 @@ function App() {
|
|||||||
setIsMobileMenuOpen(false);
|
setIsMobileMenuOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleNavigate = (view: 'overview' | 'detail') => {
|
const handleNavigate = (view: 'overview' | 'detail' | 'map') => {
|
||||||
setActiveView(view);
|
setActiveView(view);
|
||||||
setIsMobileMenuOpen(false);
|
setIsMobileMenuOpen(false);
|
||||||
};
|
};
|
||||||
@@ -55,11 +56,9 @@ function App() {
|
|||||||
|
|
||||||
<div className="main-content">
|
<div className="main-content">
|
||||||
<Topbar language={language} onToggleMobileMenu={() => setIsMobileMenuOpen(!isMobileMenuOpen)} />
|
<Topbar language={language} onToggleMobileMenu={() => setIsMobileMenuOpen(!isMobileMenuOpen)} />
|
||||||
{activeView === 'overview' ? (
|
{activeView === 'overview' && <LakesOverview language={language} onSelectLake={handleSelectLake} />}
|
||||||
<LakesOverview language={language} onSelectLake={handleSelectLake} />
|
{activeView === 'detail' && <LakeDetail language={language} lakeId={activeLakeId} />}
|
||||||
) : (
|
{activeView === 'map' && <LakeMap language={language} onSelectLake={handleSelectLake} />}
|
||||||
<LakeDetail language={language} lakeId={activeLakeId} />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{isSettingsOpen && (
|
{isSettingsOpen && (
|
||||||
|
|||||||
@@ -50,14 +50,14 @@ const LakeDetail = ({ language, lakeId }: Props) => {
|
|||||||
})
|
})
|
||||||
.catch(err => console.error(err));
|
.catch(err => console.error(err));
|
||||||
|
|
||||||
fetch('/data/lipno.json')
|
const internalId = lakeId ? lakeId.split('|')[0] : 'VLL1';
|
||||||
|
|
||||||
|
fetch(`/data/${internalId}.json`)
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(json => {
|
.then(json => {
|
||||||
const formattedData = json.map((item: any) => {
|
const formattedData = json.map((item: any) => {
|
||||||
const outflow = item.flow;
|
const outflow = item.flow === null || isNaN(item.flow) ? 0 : item.flow;
|
||||||
const inflow = outflow + (Math.random() * 2 - 0.5);
|
const inflow = outflow; // No random inflow anymore, PVL only gives us one flow value
|
||||||
const volume = 301.2 + (item.level - 723) * 10;
|
|
||||||
const fullness = (volume / 306) * 100;
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
timestamp: item.timestamp,
|
timestamp: item.timestamp,
|
||||||
@@ -65,11 +65,11 @@ const LakeDetail = ({ language, lakeId }: Props) => {
|
|||||||
day: '2-digit', month: '2-digit', year: 'numeric',
|
day: '2-digit', month: '2-digit', year: 'numeric',
|
||||||
hour: '2-digit', minute: '2-digit'
|
hour: '2-digit', minute: '2-digit'
|
||||||
}),
|
}),
|
||||||
level: item.level,
|
level: item.level === null || isNaN(item.level) ? 0 : item.level,
|
||||||
outflow: outflow,
|
outflow: outflow,
|
||||||
inflow: inflow,
|
inflow: inflow,
|
||||||
volume: volume,
|
volume: 0, // PVL doesn't provide this here
|
||||||
fullness: fullness
|
fullness: 0
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
setData(formattedData);
|
setData(formattedData);
|
||||||
@@ -92,6 +92,17 @@ const LakeDetail = ({ language, lakeId }: Props) => {
|
|||||||
const latestData = data[data.length - 1] || { level: 0, inflow: 0, outflow: 0, volume: 0, fullness: 0 };
|
const latestData = data[data.length - 1] || { level: 0, inflow: 0, outflow: 0, volume: 0, fullness: 0 };
|
||||||
const curveType = isSmoothed ? 'monotone' : 'linear';
|
const curveType = isSmoothed ? 'monotone' : 'linear';
|
||||||
|
|
||||||
|
// Find the last record that actually has flow data (often the very last record is incomplete on PVL)
|
||||||
|
const lastValidFlowData = [...data].reverse().find(d => d.outflow > 0) || latestData;
|
||||||
|
|
||||||
|
const kpiData = {
|
||||||
|
level: latestData.level,
|
||||||
|
inflow: lastValidFlowData.inflow,
|
||||||
|
outflow: lastValidFlowData.outflow,
|
||||||
|
volume: lakeInfo?.volume || 0,
|
||||||
|
fullness: lakeInfo?.capacity || 0
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.5rem', width: '100%' }}>
|
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.5rem', width: '100%' }}>
|
||||||
<div style={{ color: 'var(--text-muted)', fontSize: '0.9rem', marginTop: '-0.5rem', display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
|
<div style={{ color: 'var(--text-muted)', fontSize: '0.9rem', marginTop: '-0.5rem', display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
|
||||||
@@ -107,7 +118,7 @@ const LakeDetail = ({ language, lakeId }: Props) => {
|
|||||||
<button>{dict.all}</button>
|
<button>{dict.all}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<KpiCards data={latestData} language={language} lakeName={lakeInfo ? lakeInfo.name : 'Lipno 1'} />
|
<KpiCards data={kpiData} language={language} lakeName={lakeInfo ? lakeInfo.name : 'Lipno 1'} />
|
||||||
|
|
||||||
{/* CHART SECTION */}
|
{/* CHART SECTION */}
|
||||||
<div className="chart-card">
|
<div className="chart-card">
|
||||||
@@ -128,15 +139,11 @@ const LakeDetail = ({ language, lakeId }: Props) => {
|
|||||||
</defs>
|
</defs>
|
||||||
<XAxis dataKey="date" stroke="var(--text-muted)" tick={{fill: 'var(--text-muted)', fontSize: 12}} minTickGap={50} />
|
<XAxis dataKey="date" stroke="var(--text-muted)" tick={{fill: 'var(--text-muted)', fontSize: 12}} minTickGap={50} />
|
||||||
<YAxis yAxisId="left" domain={['dataMin - 0.5', 'dataMax + 0.5']} stroke="var(--text-muted)" tick={{fill: 'var(--text-muted)', fontSize: 12}} tickFormatter={(v) => v.toFixed(2)} />
|
<YAxis yAxisId="left" domain={['dataMin - 0.5', 'dataMax + 0.5']} stroke="var(--text-muted)" tick={{fill: 'var(--text-muted)', fontSize: 12}} tickFormatter={(v) => v.toFixed(2)} />
|
||||||
<YAxis yAxisId="right" orientation="right" domain={[0, 'auto']} stroke="var(--text-muted)" tick={{fill: 'var(--text-muted)', fontSize: 12}} />
|
<YAxis yAxisId="right" orientation="right" domain={[0, (dataMax: number) => Math.max(dataMax, 1)]} stroke="var(--text-muted)" tick={{fill: 'var(--text-muted)', fontSize: 12}} />
|
||||||
|
|
||||||
<CartesianGrid strokeDasharray="3 3" stroke="rgba(255,255,255,0.05)" vertical={false} />
|
<CartesianGrid strokeDasharray="3 3" stroke="rgba(255,255,255,0.05)" vertical={false} />
|
||||||
<Tooltip content={<CustomTooltip language={language} />} />
|
<Tooltip content={<CustomTooltip language={language} />} />
|
||||||
|
|
||||||
{/* Reference Lines */}
|
|
||||||
<ReferenceLine yAxisId="left" y={725.60} stroke="var(--color-red)" strokeDasharray="3 3" label={{ position: 'insideTopLeft', value: `${dict.maxLevel} (725.60)`, fill: 'var(--text-main)', fontSize: 12 }} />
|
|
||||||
<ReferenceLine yAxisId="left" y={724.90} stroke="var(--color-green)" strokeDasharray="3 3" label={{ position: 'insideBottomLeft', value: `${dict.storageLevel} (724.90)`, fill: 'var(--text-main)', fontSize: 12 }} />
|
|
||||||
|
|
||||||
{/* Data Series */}
|
{/* Data Series */}
|
||||||
<Area yAxisId="left" type={curveType} dataKey="level" stroke="var(--color-cyan)" strokeWidth={2} fillOpacity={1} fill="url(#colorLevel)" />
|
<Area yAxisId="left" type={curveType} dataKey="level" stroke="var(--color-cyan)" strokeWidth={2} fillOpacity={1} fill="url(#colorLevel)" />
|
||||||
<Line yAxisId="right" type={curveType} dataKey="inflow" stroke="var(--color-green)" strokeWidth={2} dot={false} />
|
<Line yAxisId="right" type={curveType} dataKey="inflow" stroke="var(--color-green)" strokeWidth={2} dot={false} />
|
||||||
@@ -150,8 +157,6 @@ const LakeDetail = ({ language, lakeId }: Props) => {
|
|||||||
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}><div style={{ width: '12px', height: '4px', backgroundColor: 'var(--color-cyan)' }}></div> {dict.level}</span>
|
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}><div style={{ width: '12px', height: '4px', backgroundColor: 'var(--color-cyan)' }}></div> {dict.level}</span>
|
||||||
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}><div style={{ width: '12px', height: '4px', backgroundColor: 'var(--color-green)' }}></div> {dict.inflow}</span>
|
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}><div style={{ width: '12px', height: '4px', backgroundColor: 'var(--color-green)' }}></div> {dict.inflow}</span>
|
||||||
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}><div style={{ width: '12px', height: '4px', backgroundColor: 'var(--color-orange)' }}></div> {dict.outflow}</span>
|
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}><div style={{ width: '12px', height: '4px', backgroundColor: 'var(--color-orange)' }}></div> {dict.outflow}</span>
|
||||||
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem', color: 'var(--text-muted)' }}><div style={{ width: '12px', borderTop: '2px dashed var(--color-red)' }}></div> {dict.maxLevel}</span>
|
|
||||||
<span style={{ display: 'flex', alignItems: 'center', gap: '0.5rem', color: 'var(--text-muted)' }}><div style={{ width: '12px', borderTop: '2px dashed var(--color-green)' }}></div> {dict.storageLevel}</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Smoothed Toggle Control */}
|
{/* Smoothed Toggle Control */}
|
||||||
|
|||||||
@@ -0,0 +1,147 @@
|
|||||||
|
import { useState, useEffect } from 'react';
|
||||||
|
import { MapContainer, TileLayer, Marker, Popup } from 'react-leaflet';
|
||||||
|
import L from 'leaflet';
|
||||||
|
import 'leaflet/dist/leaflet.css';
|
||||||
|
import { FiX, FiSearch, FiDroplet } from 'react-icons/fi';
|
||||||
|
import { type Language } from '../translations';
|
||||||
|
|
||||||
|
interface LakeData {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
river: string;
|
||||||
|
priority: boolean;
|
||||||
|
level: string;
|
||||||
|
capacity: number;
|
||||||
|
inflow: string;
|
||||||
|
outflow: string;
|
||||||
|
volume: string;
|
||||||
|
lat: number;
|
||||||
|
lng: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
language: Language;
|
||||||
|
onSelectLake: (id: string) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create custom icon
|
||||||
|
const createCustomIcon = () => {
|
||||||
|
return L.divIcon({
|
||||||
|
className: 'custom-div-icon',
|
||||||
|
html: `
|
||||||
|
<div class="map-marker-icon">
|
||||||
|
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="18" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"></path><path d="M12 6c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"></path></svg>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
iconSize: [36, 42],
|
||||||
|
iconAnchor: [18, 42],
|
||||||
|
popupAnchor: [0, -42],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const LakeMap = ({ language, onSelectLake }: Props) => {
|
||||||
|
const [lakes, setLakes] = useState<LakeData[]>([]);
|
||||||
|
const [searchTerm, setSearchTerm] = useState('');
|
||||||
|
const [isPanelVisible, setIsPanelVisible] = useState(true);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
fetch('/data/lakes_index.json')
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => setLakes(data))
|
||||||
|
.catch(err => console.error('Error fetching map lakes:', err));
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const filteredLakes = lakes.filter(lake =>
|
||||||
|
lake.name.toLowerCase().includes(searchTerm.toLowerCase())
|
||||||
|
);
|
||||||
|
|
||||||
|
const customIcon = createCustomIcon();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="map-view-container">
|
||||||
|
{/* Leaflet Map */}
|
||||||
|
<MapContainer
|
||||||
|
center={[49.8, 15.5]}
|
||||||
|
zoom={7}
|
||||||
|
style={{ width: '100%', height: '100%' }}
|
||||||
|
zoomControl={false}
|
||||||
|
>
|
||||||
|
<TileLayer
|
||||||
|
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
|
||||||
|
attribution='© <a href="https://www.openstreetmap.org/copyright">OSM</a> contributors'
|
||||||
|
/>
|
||||||
|
|
||||||
|
{lakes.map(lake => (
|
||||||
|
<Marker
|
||||||
|
key={lake.id}
|
||||||
|
position={[lake.lat, lake.lng]}
|
||||||
|
icon={customIcon}
|
||||||
|
eventHandlers={{
|
||||||
|
click: () => onSelectLake(lake.id)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Popup>
|
||||||
|
<strong>{lake.name}</strong><br/>
|
||||||
|
{lake.river}
|
||||||
|
</Popup>
|
||||||
|
</Marker>
|
||||||
|
))}
|
||||||
|
</MapContainer>
|
||||||
|
|
||||||
|
{/* Floating Overlay Panel */}
|
||||||
|
{isPanelVisible && (
|
||||||
|
<div className="map-overlay-panel">
|
||||||
|
<div className="map-overlay-header">
|
||||||
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '0.5rem' }}>
|
||||||
|
<h3 style={{ margin: 0, fontSize: '1.1rem' }}>Seznam Jezer (Lakes List)</h3>
|
||||||
|
<FiX style={{ cursor: 'pointer', color: 'var(--text-muted)' }} onClick={() => setIsPanelVisible(false)} />
|
||||||
|
</div>
|
||||||
|
<div style={{ fontSize: '0.85rem', color: 'var(--text-muted)', marginBottom: '1rem' }}>
|
||||||
|
Nalezeno: {filteredLakes.length} Jezer
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="search-bar" style={{ width: '100%', padding: '0.5rem', backgroundColor: 'rgba(0,0,0,0.3)', border: '1px solid rgba(255,255,255,0.1)' }}>
|
||||||
|
<FiSearch />
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
placeholder="Find a lake..."
|
||||||
|
value={searchTerm}
|
||||||
|
onChange={(e) => setSearchTerm(e.target.value)}
|
||||||
|
style={{ width: '100%', background: 'transparent', border: 'none', color: 'white', outline: 'none' }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="map-overlay-list">
|
||||||
|
{filteredLakes.map((lake, index) => (
|
||||||
|
<div key={lake.id} className="map-lake-card" onClick={() => onSelectLake(lake.id)}>
|
||||||
|
<div style={{ fontWeight: 'bold', marginBottom: '0.5rem' }}>{index + 1}. Jezero {lake.name}</div>
|
||||||
|
<div className="map-lake-stats">
|
||||||
|
<div>
|
||||||
|
<span style={{ color: 'var(--text-muted)', display: 'block' }}>Area</span>
|
||||||
|
<span style={{ color: 'var(--text-main)' }}>{(Math.random() * 50 + 10).toFixed(1)} km²</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span style={{ color: 'var(--text-muted)', display: 'block' }}>Depth</span>
|
||||||
|
<span style={{ color: 'var(--text-main)' }}>{(Math.random() * 30 + 5).toFixed(1)}m</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{!isPanelVisible && (
|
||||||
|
<button
|
||||||
|
style={{ position: 'absolute', top: 10, right: 10, zIndex: 1000, background: 'var(--bg-card)', border: '1px solid var(--border-color)', color: 'white', padding: '0.5rem 1rem', borderRadius: '8px', cursor: 'pointer' }}
|
||||||
|
onClick={() => setIsPanelVisible(true)}
|
||||||
|
>
|
||||||
|
Show List
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default LakeMap;
|
||||||
@@ -5,8 +5,8 @@ import { type Language, t } from '../translations';
|
|||||||
interface Props {
|
interface Props {
|
||||||
language: Language;
|
language: Language;
|
||||||
onOpenSettings: () => void;
|
onOpenSettings: () => void;
|
||||||
activeView: 'overview' | 'detail';
|
activeView: 'overview' | 'detail' | 'map';
|
||||||
onNavigate: (view: 'overview' | 'detail') => void;
|
onNavigate: (view: 'overview' | 'detail' | 'map') => void;
|
||||||
isMobileMenuOpen?: boolean;
|
isMobileMenuOpen?: boolean;
|
||||||
onCloseMobileMenu?: () => void;
|
onCloseMobileMenu?: () => void;
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ const Sidebar = ({ language, onOpenSettings, activeView, onNavigate, isMobileMen
|
|||||||
<FiMenu />
|
<FiMenu />
|
||||||
<span className="sidebar-text">{dict.lakes}</span>
|
<span className="sidebar-text">{dict.lakes}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="nav-item">
|
<div className={`nav-item ${activeView === 'map' ? 'active' : ''}`} onClick={() => onNavigate('map')}>
|
||||||
<FiMap />
|
<FiMap />
|
||||||
<span className="sidebar-text">{dict.map}</span>
|
<span className="sidebar-text">{dict.map}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+114
-2
@@ -36,9 +36,121 @@
|
|||||||
background-color: var(--bg-card);
|
background-color: var(--bg-card);
|
||||||
border: 1px solid var(--border-color);
|
border: 1px solid var(--border-color);
|
||||||
border-radius: 0.75rem;
|
border-radius: 0.75rem;
|
||||||
padding: 1.25rem;
|
padding: 1.5rem;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-width: 0;
|
}
|
||||||
|
|
||||||
|
/* Map View Styles */
|
||||||
|
.map-view-container {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100vh - 100px);
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-overlay-panel {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 10px;
|
||||||
|
width: 350px;
|
||||||
|
max-height: calc(100% - 20px);
|
||||||
|
background-color: rgba(16, 22, 34, 0.95);
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
border-radius: 12px;
|
||||||
|
z-index: 1000;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 10px 30px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-overlay-header {
|
||||||
|
padding: 1rem;
|
||||||
|
border-bottom: 1px solid var(--border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-overlay-list {
|
||||||
|
padding: 1rem;
|
||||||
|
overflow-y: auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-lake-card {
|
||||||
|
background-color: rgba(255, 255, 255, 0.03);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-lake-card:hover {
|
||||||
|
background-color: rgba(255, 255, 255, 0.08);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-lake-image {
|
||||||
|
width: 100%;
|
||||||
|
height: 120px;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: 6px;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
background-color: #2a3441;
|
||||||
|
}
|
||||||
|
|
||||||
|
.map-lake-stats {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Custom Leaflet Marker */
|
||||||
|
.custom-div-icon {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.map-marker-icon {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
background-color: var(--color-cyan);
|
||||||
|
color: #000;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: 2px solid white;
|
||||||
|
box-shadow: 0 4px 10px rgba(0,0,0,0.5);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.map-marker-icon::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: -6px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-top: 8px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.map-overlay-panel {
|
||||||
|
top: auto;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
max-height: 50%;
|
||||||
|
border-radius: 20px 20px 0 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Time controls pill layout */
|
/* Time controls pill layout */
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
import axios from 'axios';
|
||||||
|
import * as cheerio from 'cheerio';
|
||||||
|
import https from 'https';
|
||||||
|
|
||||||
|
async function test() {
|
||||||
|
const agent = new https.Agent({ rejectUnauthorized: false });
|
||||||
|
try {
|
||||||
|
const res = await axios.get('https://www.pvl.cz/portal/nadrze/cz/pc/Nadrze.aspx', {
|
||||||
|
httpsAgent: agent,
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'Mozilla/5.0'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const $ = cheerio.load(res.data);
|
||||||
|
const rows = $('table tr');
|
||||||
|
rows.each((i, row) => {
|
||||||
|
console.log($(row).text().replace(/\s+/g, ' '));
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
test();
|
||||||
Reference in New Issue
Block a user