48 Commits

Author SHA1 Message Date
ISA
6820fa9eed feat: local-cpl-sim.mjs Detailansicht Modal in System 2025-09-04 14:04:33 +02:00
ISA
3daa6b1dbb feat: local-cpl-sim.mjs analogInputs /Messwerteingäge / analoge Eingänge 2025-09-04 13:36:13 +02:00
ISA
9c7ad37233 feat: local-cpl-sim.mjs digitalInputs /Messwerteingänge 2025-09-04 13:24:10 +02:00
ISA
0286670b81 feat: local-cpl-sim system 2025-09-04 12:26:06 +02:00
ISA
02a0ce5891 feat: local-cpl-sim meldungen/Berichte 2025-09-04 12:02:04 +02:00
ISA
47e0efeb80 feat: local-cpl-sim.mjs kabelueberwachung 2025-09-04 11:16:06 +02:00
ISA
b62c477d50 feat: local-cpl-sim.mjs Einstellungen done 2025-09-04 11:02:17 +02:00
ISA
653a31ce63 feat: local-cpl-sim.mjs 2025-09-04 10:54:37 +02:00
ISA
57ffdecb10 test: npx playwright test erfolgreich 2025-09-03 15:58:11 +02:00
ISA
11bd68200b refactoring: test files 2025-09-03 15:07:57 +02:00
ISA
2c92ca0866 fix: DigitalOutputsVies.tsx 2025-09-03 14:06:35 +02:00
ISA
a9ccdfc9ab feat: Messverlauf bei Systemwerten (Temperatur und Spannungen) mit Datumsauswahl 2025-09-03 13:38:05 +02:00
ISA
f4f4c28cb7 feat(mocks): mesages_all.json mock script 2025-09-03 12:24:41 +02:00
ISA
d6fcf95795 feat(mocks): retime chart mocks to today; add global/all-slot scripts
Add retimeAnalogInputs.mjs (all slots, single slot, or path)
Add retimeAllCharts.mjs (recursive under chartsData)
Update package.json with npm scripts:
mocks:retime:ai (all analog slots)
mocks:retime:ai:slot (single slot via %SLOT%)
mocks:retime:all (entire chartsData tree)
Preserve relative deltas; set first entry to today (same time); DIA2 daily at 00:00
Skip files/arrays without parsable "t" timestamps
2025-09-03 11:45:44 +02:00
ISA
6c2707ff47 feat: update analogInputs data in mocks 2025-09-03 11:30:44 +02:00
ISA
420f1da114 refactor(api): Pfad für Digitalausgänge vereinheitlicht; Duplikat entfernt
updateDigitalOutputsHandler: JSON-Schreibpfad auf digitalOutputsMockData.json umgestellt
digitalOutputsMockData.json gelöscht (nicht mehr benötigt)
GET-Handler liest bereits aus dem kanonischen Pfad; Verhalten unverändert
2025-09-03 10:37:48 +02:00
ISA
5aa7618832 refactor(api): Legacy-Fallback entfernt; nur noch chartsData/cable-monitoring-data 2025-09-03 10:14:14 +02:00
ISA
35171891a3 fix: AnalogInputsView.tsx style 2025-09-03 09:54:23 +02:00
ISA
2df1ee1022 del: remove old mock files 2025-09-03 09:43:12 +02:00
ISA
7fe842aa93 del: remove 4000value folder from mock 2025-09-03 09:31:04 +02:00
ISA
cdf4869548 doc: TODOs 2025-09-03 07:26:01 +02:00
ISA
bb115a9a4f fix: curl 2025-09-03 07:02:20 +02:00
ISA
da87ebc5c8 fix: Die .woodpecker.yml wurde korrigiert:
trigger entfernt, stattdessen wieder when auf Top-Level.
Für die Notification-Steps wurde das Image alpine/curl:latest hinzugefügt.
Damit sollten die Linter-Fehler verschwinden und die Push-Benachrichtigungen funktionieren.
2025-09-03 06:42:45 +02:00
ISA
5b4eb7ff51 fix: Die .woodpecker.yml wurde korrigiert:
Der clone-Step ist jetzt Teil der Steps.
curl.exe wurde zu curl geändert (Linux-kompatibel).
when wurde zu trigger geändert.
Damit sollte Woodpecker den Build korrekt starten und die Push-Benachrichtigungen funktionieren.
2025-09-03 06:39:15 +02:00
ISA
3254563458 playwright headless true 2025-09-03 06:32:35 +02:00
ISA
5252ec5998 feat(ci): Push-Benachrichtigung bei Test-Erfolg oder -Fehlschlag für Jenkins und Woodpecker integriert 2025-09-03 06:29:41 +02:00
ISA
2d9cd74375 refactor: move headerTest to header folder 2025-09-02 15:03:43 +02:00
ISA
f4e0620b49 fix: playwright Test bugs beheben 2025-09-02 14:40:08 +02:00
ISA
35e34b96d1 WIP: Test fehlgeschlagen 2025-09-02 14:22:58 +02:00
ISA
fb79817136 test: extracted navigation tests to separate file 2025-09-02 11:48:54 +02:00
ISA
89dc26b0d2 Test: nav ausgelagert 2025-09-02 11:25:25 +02:00
ISA
c8616f7bbe Test: done 2025-09-02 11:08:34 +02:00
ISA
b0b9952a2d chore: remove jsconfig.json, project uses only tsconfig.json for path aliases 2025-09-02 10:49:30 +02:00
ISA
8da1457e4d Test: playwright done 2025-09-02 10:40:12 +02:00
ISA
7dc64ca972 test: refactoring playwright test structure 2025-09-02 09:58:46 +02:00
ISA
1b038ac844 fix: Detailansicht Modal sichtbar beim klicken 2025-09-02 08:51:13 +02:00
ISA
cbc476b09a fix: ohne E-Mail 2025-09-02 08:13:28 +02:00
ISA
306f469634 fix: woodpecker 2025-09-02 08:09:01 +02:00
ISA
772baea4ed feat: woodpecker E-Mail 2025-09-02 07:51:01 +02:00
ISA
f3f6e25e9c fix(ci): match case for systemMockData.js (Linux case-sensitive) 2025-09-01 16:40:34 +02:00
ISA
43fe9e2065 test: find mock 2025-09-01 16:28:32 +02:00
ISA
30f156934c fix: TDR Messungstarten statt TDR aktivieren 2025-09-01 16:14:49 +02:00
ISA
b108d63106 test: woodpecker dev mode 2025-09-01 16:04:38 +02:00
ISA
b53762cf5c test: .woodpecker 2025-09-01 15:33:22 +02:00
ISA
629548bfdd Test: .woodpecker.yml 2025-09-01 15:24:48 +02:00
ISA
174d67cfd8 Test: In KÜ RSL: Zahl mit 3 Nachkommastellen 2025-09-01 14:33:31 +02:00
ISA
57baca292a fix: KÜ ISO 2 Nachkommastellen und RSL 3 Nachkommastellen 2025-09-01 14:03:04 +02:00
ISA
0c02e6f1c9 fix: System Footer responsive 2025-09-01 13:43:26 +02:00
424 changed files with 1504517 additions and 1512078 deletions

View File

@@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false
NEXT_PUBLIC_EXPORT_STATIC=false
NEXT_PUBLIC_USE_CGI=false
# App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.792
NEXT_PUBLIC_APP_VERSION=1.6.840
NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter)

View File

@@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL
NEXT_PUBLIC_EXPORT_STATIC=true
NEXT_PUBLIC_USE_CGI=true
# App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.792
NEXT_PUBLIC_APP_VERSION=1.6.840
NEXT_PUBLIC_CPL_MODE=production

View File

@@ -1,34 +1,48 @@
# .woodpecker.yml — Option B (Browser im Workspace, stabil für CI)
when:
- event: push
- event: pull_request
steps:
- name: install-dependencies-and-browsers
image: node:22
environment:
PLAYWRIGHT_BROWSERS_PATH: "0"
CI: "true"
E2E_BASE_URL: "http://localhost:3000"
LANG: "C.UTF-8"
TZ: "Europe/Berlin"
PW_HEADLESS: "1" # erzwingt headless über die Config
- name: clone
image: woodpeckerci/plugin-git
settings:
depth: 0
lfs: true
submodules: true
- name: verify-mocks
image: mcr.microsoft.com/playwright:v1.54.2-jammy
commands:
- echo "📦 Installing deps..."
- pwd
- node -v && npm -v
- npm ci
- echo "🧩 Installing Playwright (Chromium) into workspace..."
- npx playwright install chromium
# Zeig mir, ob die Datei wirklich im Checkout liegt:
- echo "=== git ls-files ==="
- git ls-files | grep -i "^mocks/device-cgi-simulator/SERVICE/systemMockData.js" || true
- echo "=== ls -la ==="
- ls -la mocks/device-cgi-simulator/SERVICE || true
- echo "=== file exists? ==="
- test -f mocks/device-cgi-simulator/SERVICE/systemMockData.js && echo "FOUND" || (echo "MISSING" && exit 1)
- name: run-tests
image: node:22
- name: e2e-dev
image: mcr.microsoft.com/playwright:v1.54.2-jammy
environment:
PLAYWRIGHT_BROWSERS_PATH: "0"
CI: "true"
E2E_BASE_URL: "http://localhost:3000"
LANG: "C.UTF-8"
TZ: "Europe/Berlin"
PW_HEADLESS: "1"
NODE_ENV: "development"
NEXT_TELEMETRY_DISABLED: "1"
PORT: "3000"
commands:
- echo "🔧 Installing system dependencies for Playwright..."
- npx playwright install-deps
- echo "🌱 Starting dev server (npm run dev)..."
- npm run dev &
- echo "🧪 Running Playwright tests (Chromium only)..."
- npm ci
- npx playwright test --project=chromium
- name: notify-success
image: alpine/curl:latest
when:
status: success
commands:
- curl -d "Tests erfolgreich in woodpecker" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35
- name: notify-failure
image: alpine/curl:latest
when:
status: failure
commands:
- curl -d "Tests fehlgeschlagen in woodpecker" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35

View File

@@ -1,3 +1,265 @@
## [1.6.840] 2025-09-04
- feat: local-cpl-sim.mjs analogInputs /Messwerteingäge / analoge Eingänge
---
## [1.6.839] 2025-09-04
- feat: local-cpl-sim.mjs digitalInputs /Messwerteingänge
---
## [1.6.838] 2025-09-04
- feat: local-cpl-sim system
---
## [1.6.837] 2025-09-04
- feat: local-cpl-sim meldungen/Berichte
---
## [1.6.836] 2025-09-04
- feat: local-cpl-sim.mjs kabelueberwachung
---
## [1.6.835] 2025-09-04
- feat: local-cpl-sim.mjs Einstellungen done
---
## [1.6.834] 2025-09-04
- feat: local-cpl-sim.mjs
---
## [1.6.833] 2025-09-04
- test: npx playwright test erfolgreich
---
## [1.6.832] 2025-09-03
- refactoring: test files
---
## [1.6.831] 2025-09-03
- fix: DigitalOutputsVies.tsx
---
## [1.6.830] 2025-09-03
- feat: Messverlauf bei Systemwerten (Temperatur und Spannungen) mit Datumsauswahl
---
## [1.6.829] 2025-09-03
- feat(mocks): mesages_all.json mock script
---
## [1.6.828] 2025-09-03
- feat(mocks): retime chart mocks to today; add global/all-slot scripts
Add retimeAnalogInputs.mjs (all slots, single slot, or path)
Add retimeAllCharts.mjs (recursive under chartsData)
Update package.json with npm scripts:
mocks:retime:ai (all analog slots)
mocks:retime:ai:slot (single slot via %SLOT%)
mocks:retime:all (entire chartsData tree)
Preserve relative deltas; set first entry to today (same time); DIA2 daily at 00:00
Skip files/arrays without parsable "t" timestamps
---
## [1.6.827] 2025-09-03
- feat: update analogInputs data in mocks
---
## [1.6.826] 2025-09-03
- refactor(api): Pfad für Digitalausgänge vereinheitlicht; Duplikat entfernt
updateDigitalOutputsHandler: JSON-Schreibpfad auf digitalOutputsMockData.json umgestellt
digitalOutputsMockData.json gelöscht (nicht mehr benötigt)
GET-Handler liest bereits aus dem kanonischen Pfad; Verhalten unverändert
---
## [1.6.825] 2025-09-03
- refactor(api): Legacy-Fallback entfernt; nur noch chartsData/cable-monitoring-data
---
## [1.6.824] 2025-09-03
- fix: AnalogInputsView.tsx style
---
## [1.6.823] 2025-09-03
- del: remove old mock files
---
## [1.6.822] 2025-09-03
- del: remove 4000value folder from mock
---
## [1.6.821] 2025-09-03
- doc: TODOs
---
## [1.6.820] 2025-09-03
- fix: curl
---
## [1.6.819] 2025-09-03
- fix: Die .woodpecker.yml wurde korrigiert:
trigger entfernt, stattdessen wieder when auf Top-Level.
Für die Notification-Steps wurde das Image alpine/curl:latest hinzugefügt.
Damit sollten die Linter-Fehler verschwinden und die Push-Benachrichtigungen funktionieren.
---
## [1.6.818] 2025-09-03
- fix: Die .woodpecker.yml wurde korrigiert:
Der clone-Step ist jetzt Teil der Steps.
curl.exe wurde zu curl geändert (Linux-kompatibel).
when wurde zu trigger geändert.
Damit sollte Woodpecker den Build korrekt starten und die Push-Benachrichtigungen funktionieren.
---
## [1.6.817] 2025-09-03
- playwright headless true
---
## [1.6.816] 2025-09-03
- feat(ci): Push-Benachrichtigung bei Test-Erfolg oder -Fehlschlag für Jenkins und Woodpecker integriert
---
## [1.6.815] 2025-09-03
- refactor: move headerTest to header folder
---
## [1.6.814] 2025-09-02
- fix: playwright Test bugs beheben
---
## [1.6.813] 2025-09-02
- WIP: Test fehlgeschlagen
---
## [1.6.812] 2025-09-02
- test: extracted navigation tests to separate file
---
## [1.6.811] 2025-09-02
- Test: nav ausgelagert
---
## [1.6.810] 2025-09-02
- Test: done
---
## [1.6.809] 2025-09-02
- chore: remove jsconfig.json, project uses only tsconfig.json for path aliases
---
## [1.6.808] 2025-09-02
- Test: playwright done
---
## [1.6.807] 2025-09-02
- test: refactoring playwright test structure
---
## [1.6.806] 2025-09-02
- fix: Detailansicht Modal sichtbar beim klicken
---
## [1.6.805] 2025-09-02
- fix: ohne E-Mail
---
## [1.6.804] 2025-09-02
- fix: woodpecker
---
## [1.6.803] 2025-09-02
- feat: woodpecker E-Mail
---
## [1.6.802] 2025-09-02
- fix(ci): match case for systemMockData.js (Linux case-sensitive)
---
## [1.6.801] 2025-09-01
- test: find mock
---
## [1.6.800] 2025-09-01
- fix: TDR Messungstarten statt TDR aktivieren
---
## [1.6.799] 2025-09-01
- test: woodpecker dev mode
---
## [1.6.798] 2025-09-01
- test: .woodpecker
---
## [1.6.797] 2025-09-01
- Test: .woodpecker.yml
---
## [1.6.796] 2025-09-01
- Test: In KÜ RSL: Zahl mit 3 Nachkommastellen
---
## [1.6.795] 2025-09-01
- fix: KÜ ISO 2 Nachkommastellen und RSL 3 Nachkommastellen
---
## [1.6.794] 2025-09-01
- fix: System Footer responsive
---
## [1.6.793] 2025-09-01
- fix: playwright headless true
---
## [1.6.792] 2025-09-01
- fix: playwright August Text

8
Jenkinsfile vendored
View File

@@ -16,4 +16,12 @@ pipeline {
}
}
}
post {
success {
sh 'curl -d "Tests erfolgreich in Jenkins" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35'
}
failure {
sh 'curl -d "Tests fehlgeschlagen in Jenkins" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35'
}
}
}

View File

@@ -35,14 +35,12 @@ function AnalogInputsView() {
loading ? "cursor-wait" : ""
}`}
>
<div className="container mx-auto">
<div className="grid grid-cols-1 gap-4 justify-items-start">
<div className="bg-white dark:bg-gray-900 rounded-lg p-4 max-w-3xl text-gray-900 dark:text-gray-100">
<h2 className="text-xl font-semibold mb-4 text-gray-900 dark:text-gray-100">
Messwerteingänge
</h2>
<AnalogInputsTable loading={loading} />
</div>
<div className="grid grid-cols-1 gap-4 justify-items-start">
<div className="bg-white dark:bg-gray-900 rounded-lg p-4 max-w-3xl text-gray-900 dark:text-gray-100">
<h2 className="text-xl font-semibold mb-4 text-gray-900 dark:text-gray-100">
Messwerteingänge
</h2>
<AnalogInputsTable loading={loading} />
</div>
</div>

View File

@@ -18,6 +18,10 @@ const DigitalOutputsView: React.FC = () => {
const [isOutputModalOpen, setIsOutputModalOpen] = useState(false);
useEffect(() => {
// Fetch immediately on mount to ensure data is present without waiting for the first interval
dispatch(getDigitalOutputsThunk());
// Then continue polling periodically
const interval = setInterval(() => {
dispatch(getDigitalOutputsThunk());
}, 3000);

View File

@@ -373,7 +373,7 @@ const LoopChartActionBar = forwardRef((_props, ref) => {
className="px-4 py-1 bg-littwin-blue text-white rounded text-sm whitespace-nowrap"
disabled={isLoading || rslRunning}
>
{rslRunning ? "RSL läuft..." : "RSL starten"}
{rslRunning ? "RSL läuft..." : "RSL Messung starten"}
</button>
<button
onClick={handleFetchData}

View File

@@ -102,10 +102,10 @@ const TDRChartActionBar: React.FC = () => {
}
console.log("✅ TDR Messung gestartet für Slot", selectedSlot);
alert(`✅ TDR Messung für Slot ${selectedSlot + 1} gestartet`);
//alert(`✅ TDR Messung für Slot ${selectedSlot + 1} gestartet`);
} catch (err) {
console.error("❌ Fehler beim Starten der TDR Messung:", err);
alert("❌ Fehler beim Starten der TDR Messung.");
//alert("❌ Fehler beim Starten der TDR Messung.");
}
};
@@ -152,7 +152,7 @@ const TDRChartActionBar: React.FC = () => {
className="px-4 py-1 bg-littwin-blue text-white rounded text-sm whitespace-nowrap "
disabled={selectedSlot === null}
>
Messung aktivieren
TDR-Messung starten
</button>
{/* 🔽 Dropdown für Messungen */}

View File

@@ -340,7 +340,9 @@ const Kue705FO: React.FC<Kue705FOProps> = ({
>
{isoDisplayValue === "Abgleich"
? "ISO: Abgleich"
: `ISO: ${Number(isolationswert)} MOhm`}
: `ISO: ${Number(isolationswert)
.toFixed(2)
.replace(".", ",")} MOhm`}
</span>
{/* 3. Zeile: Schleifenwert, in Rot bei Schleifenfehler, sonst normal */}
<span
@@ -348,7 +350,9 @@ const Kue705FO: React.FC<Kue705FOProps> = ({
Number(kueAlarm2?.[slotIndex]) === 1 ? "text-red-500" : ""
}`}
>
{`RSL: ${loopDisplayValue} kOhm`}
{`RSL: ${Number(loopDisplayValue)
.toFixed(3)
.replace(".", ",")} kOhm`}
</span>
</div>
</div>

View File

@@ -4,15 +4,11 @@ import React, { useEffect, useRef, useState, useCallback } from "react";
import { Line } from "react-chartjs-2";
import { useSelector } from "react-redux";
import { RootState, useAppDispatch } from "@/redux/store";
import { Listbox } from "@headlessui/react";
import { setFullScreen } from "@/redux/slices/kabelueberwachungChartSlice";
import DateRangePicker from "@/components/common/DateRangePicker";
import {
setVonDatum,
setBisDatum,
} from "@/redux/slices/kabelueberwachungChartSlice";
import { resetDateRange } from "@/redux/slices/dateRangePickerSlice";
// Import Thunks
import SystemChartActionBar from "@/components/main/system/SystemChartActionBar";
import { getSystemspannung5VplusThunk } from "@/redux/thunks/getSystemspannung5VplusThunk";
import { getSystemspannung15VplusThunk } from "@/redux/thunks/getSystemspannung15VplusThunk";
import { getSystemspannung15VminusThunk } from "@/redux/thunks/getSystemspannung15VminusThunk";
@@ -214,8 +210,8 @@ export const DetailModal = ({
useEffect(() => {
if (isOpen) {
setZeitraum("DIA0");
dispatch(setVonDatum(""));
dispatch(setBisDatum(""));
// Reset DateRangePicker to its defaults (it sets 30 days → today on mount)
dispatch(resetDateRange());
// Chart-Daten zurücksetzen beim Öffnen
setChartData({ datasets: [] });
@@ -260,8 +256,7 @@ export const DetailModal = ({
const handleClose = () => {
dispatch(setFullScreen(false));
dispatch(setVonDatum(""));
dispatch(setBisDatum(""));
dispatch(resetDateRange());
onClose();
};
@@ -307,25 +302,55 @@ export const DetailModal = ({
}
}, [chartData, isLoading]);
// DateRange from global DateRangePicker slice
const pickerVonDatum = useSelector(
(state: RootState) => state.dateRangePicker.vonDatum
);
const pickerBisDatum = useSelector(
(state: RootState) => state.dateRangePicker.bisDatum
);
// Update chart data when Redux data changes (only after button click)
useEffect(() => {
if (shouldUpdateChart && reduxData && reduxData.length > 0) {
console.log("Redux data for chart:", reduxData);
// Filter data by selected date range (inclusive end date)
let filtered = reduxData;
try {
if (pickerVonDatum && pickerBisDatum) {
const start = new Date(`${pickerVonDatum}T00:00:00`);
const end = new Date(`${pickerBisDatum}T23:59:59`);
const s = start.getTime();
const e = end.getTime();
filtered = reduxData.filter((entry) => {
const t = new Date(entry.t).getTime();
return t >= s && t <= e;
});
}
} catch (err) {
console.warn("Zeitfilter konnte nicht angewendet werden:", err);
}
console.log("Redux data for chart (filtered):", filtered.length);
if (!filtered.length) {
setChartData({ datasets: [] });
setShouldUpdateChart(false);
return;
}
// Create datasets array for multiple lines
const datasets = [];
// Check which data fields are available and create datasets accordingly
const hasMinimum = reduxData.some(
const hasMinimum = filtered.some(
(entry) => entry.i !== undefined && entry.i !== null && entry.i !== 0
);
const hasMaximum = reduxData.some(
const hasMaximum = filtered.some(
(entry) => entry.a !== undefined && entry.a !== null
);
const hasAverage = reduxData.some(
const hasAverage = filtered.some(
(entry) => entry.g !== undefined && entry.g !== null
);
const hasCurrent = reduxData.some(
const hasCurrent = filtered.some(
(entry) => entry.m !== undefined && entry.m !== null
);
@@ -333,7 +358,7 @@ export const DetailModal = ({
if (hasMinimum) {
datasets.push({
label: "Messwert Minimum",
data: reduxData.map((entry) => ({
data: filtered.map((entry) => ({
x: new Date(entry.t).getTime(),
y: entry.i || 0,
})),
@@ -348,7 +373,7 @@ export const DetailModal = ({
if (hasMaximum) {
datasets.push({
label: "Messwert Maximum",
data: reduxData.map((entry) => ({
data: filtered.map((entry) => ({
x: new Date(entry.t).getTime(),
y: entry.a || 0,
})),
@@ -364,7 +389,7 @@ export const DetailModal = ({
if (hasAverage) {
datasets.push({
label: "Durchschnitt",
data: reduxData.map((entry) => ({
data: filtered.map((entry) => ({
x: new Date(entry.t).getTime(),
y: entry.g || 0,
})),
@@ -379,7 +404,7 @@ export const DetailModal = ({
if (hasCurrent) {
datasets.push({
label: "Messwert",
data: reduxData.map((entry) => ({
data: filtered.map((entry) => ({
x: new Date(entry.t).getTime(),
y: entry.m || 0,
})),
@@ -449,70 +474,12 @@ export const DetailModal = ({
</div>
</div>
<div className="flex items-center justify-start gap-4 mb-4 flex-wrap">
<DateRangePicker />
<label className="font-medium">Zeitraum:</label>
<Listbox value={zeitraum} onChange={setZeitraum}>
<div className="relative w-48">
<Listbox.Button className="w-full border px-3 py-1 rounded text-left bg-white flex justify-between items-center text-sm">
<span>
{
{
DIA0: "Alle Messwerte",
DIA1: "Stündlich",
DIA2: "Täglich",
}[zeitraum]
}
</span>
<svg
className="w-5 h-5 text-gray-400"
viewBox="0 0 20 20"
fill="currentColor"
>
<path
fillRule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 10.585l3.71-3.355a.75.75 0 111.02 1.1l-4.25 3.85a.75.75 0 01-1.02 0l-4.25-3.85a.75.75 0 01.02-1.06z"
clipRule="evenodd"
/>
</svg>
</Listbox.Button>
<Listbox.Options className="absolute z-50 mt-1 w-full border rounded bg-white dark:bg-gray-800 shadow max-h-60 overflow-auto text-sm border-gray-200 dark:border-gray-700 text-gray-900 dark:text-gray-100">
{["DIA0", "DIA1", "DIA2"].map((option) => (
<Listbox.Option
key={option}
value={option}
className={({ selected, active }) =>
`px-4 py-1 cursor-pointer ${
selected
? "bg-littwin-blue text-white"
: active
? "bg-gray-200 dark:bg-gray-700"
: ""
}`
}
>
{
{
DIA0: "Alle Messwerte",
DIA1: "Stündlich",
DIA2: "Täglich",
}[option]
}
</Listbox.Option>
))}
</Listbox.Options>
</div>
</Listbox>
<button
onClick={handleFetchData}
className={`px-4 py-1 bg-littwin-blue text-white rounded text-sm ${
isLoading ? "cursor-wait" : ""
}`}
disabled={isLoading}
>
{isLoading ? "Laden..." : "Daten laden"}
</button>
</div>
<SystemChartActionBar
zeitraum={zeitraum}
setZeitraum={setZeitraum}
onFetchData={handleFetchData}
isLoading={isLoading}
/>
<div className="h-[85%] bg-white dark:bg-gray-800 rounded shadow border border-gray-200 dark:border-gray-700 p-2">
<Line ref={chartRef} data={chartData} options={chartOptions} />

View File

@@ -0,0 +1,96 @@
"use client";
// components/main/system/SystemChartActionBar.tsx
import React from "react";
import DateRangePicker from "@/components/common/DateRangePicker";
import { Listbox } from "@headlessui/react";
type Props = {
zeitraum: "DIA0" | "DIA1" | "DIA2";
setZeitraum: (typ: "DIA0" | "DIA1" | "DIA2") => void;
onFetchData: () => void;
isLoading?: boolean;
className?: string;
};
const SystemChartActionBar: React.FC<Props> = ({
zeitraum,
setZeitraum,
onFetchData,
isLoading = false,
className = "",
}) => {
return (
<div
className={`flex items-center justify-start gap-3 mb-4 flex-wrap ${className}`}
>
{/* DateRangePicker nutzt globalen Redux-Slice */}
<DateRangePicker compact />
{/* Zeitraum (DIA0/DIA1/DIA2) */}
<label className="font-medium text-sm">Zeitraum:</label>
<Listbox value={zeitraum} onChange={setZeitraum}>
<div className="relative w-48">
<Listbox.Button className="w-full border px-3 py-1 rounded text-left bg-white flex justify-between items-center text-sm">
<span>
{
{ DIA0: "Alle Messwerte", DIA1: "Stündlich", DIA2: "Täglich" }[
zeitraum
]
}
</span>
<svg
className="w-5 h-5 text-gray-400"
viewBox="0 0 20 20"
fill="currentColor"
>
<path
fillRule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 10.585l3.71-3.355a.75.75 0 111.02 1.1l-4.25 3.85a.75.75 0 01-1.02 0l-4.25-3.85a.75.75 0 01.02-1.06z"
clipRule="evenodd"
/>
</svg>
</Listbox.Button>
<Listbox.Options className="absolute z-50 mt-1 w-full border rounded bg-white shadow max-h-60 overflow-auto text-sm">
{["DIA0", "DIA1", "DIA2"].map((option) => (
<Listbox.Option
key={option}
value={option}
className={({ selected, active }) =>
`px-4 py-1 cursor-pointer ${
selected
? "bg-littwin-blue text-white"
: active
? "bg-gray-200"
: ""
}`
}
>
{
{
DIA0: "Alle Messwerte",
DIA1: "Stündlich",
DIA2: "Täglich",
}[option as "DIA0" | "DIA1" | "DIA2"]
}
</Listbox.Option>
))}
</Listbox.Options>
</div>
</Listbox>
{/* Daten laden */}
<button
onClick={onFetchData}
className={`px-4 py-1 bg-littwin-blue text-white rounded text-sm ${
isLoading ? "cursor-wait opacity-70" : ""
}`}
disabled={isLoading}
aria-busy={isLoading}
>
{isLoading ? "Laden..." : "Daten laden"}
</button>
</div>
);
};
export default SystemChartActionBar;

View File

@@ -10,7 +10,7 @@ export const SystemOverviewGrid = ({ voltages, onOpenDetail }: Props) => {
const formatValue = (value: number) => value.toFixed(2);
return (
<div className="grid grid-cols-2 gap-4 mb-8">
<div className="grid grid-cols-2 gap-4 mb-2">
{Object.entries(voltages).map(([key, value]) => {
const unit = key.includes("Temp") ? "\u00b0C" : "V";
return (

View File

@@ -42,32 +42,29 @@ const SystemPage = () => {
const handleOpenDetail = (key: string) => {
setSelectedKey(key);
const handleOpenDetail = (key: string) => {
setSelectedKey(key);
setIsModalOpen(true);
switch (key) {
case "+5V":
dispatch(getSystemspannung5VplusThunk(zeitraum));
break;
case "+15V":
dispatch(getSystemspannung15VplusThunk(zeitraum));
break;
case "-15V":
dispatch(getSystemspannung15VminusThunk(zeitraum));
break;
case "-98V":
dispatch(getSystemspannung98VminusThunk(zeitraum));
break;
case "ADC Temp":
dispatch(getTemperaturAdWandlerThunk(zeitraum));
break;
case "CPU Temp":
dispatch(getTemperaturProzessorThunk(zeitraum));
break;
default:
break;
}
};
setIsModalOpen(true);
switch (key) {
case "+5V":
dispatch(getSystemspannung5VplusThunk(zeitraum));
break;
case "+15V":
dispatch(getSystemspannung15VplusThunk(zeitraum));
break;
case "-15V":
dispatch(getSystemspannung15VminusThunk(zeitraum));
break;
case "-98V":
dispatch(getSystemspannung98VminusThunk(zeitraum));
break;
case "ADC Temp":
dispatch(getTemperaturAdWandlerThunk(zeitraum));
break;
case "CPU Temp":
dispatch(getTemperaturProzessorThunk(zeitraum));
break;
default:
break;
}
};
const handleCloseDetail = () => {
setIsModalOpen(false);

Binary file not shown.

View File

@@ -79,3 +79,29 @@ in Rot, wenn Schleifenfehler ansteht
# 15.08.2025
- [x] BUGFIX: Messkurven-Modal lädt jetzt automatisch die Kurve beim Öffnen, Dropdown ist auf 'Alle Messwerte' (DIA0) initialisiert, und Filter werden beim Schließen zurückgesetzt. Dateien: IsoChartView.tsx, LoopChartView.tsx
# 01.09.2025
- [x] TODO: In KÜs Display ISO 2 Nachkommastellen und RSL 3 Nachkommastellen
- [ ] TODO: Schleife, Timer für jeder KÜ separate und nicht eine für alle, aktuell wird prozentzahl bei allen das gleiche angezeigt
- [x] TODO: RSL starten in RSL Messung starten umbenennen
- [x] TODO: TDR-Messung starten statt TDR aktivieren in ChartBar
- [x] TODO: KÜ TDR-aktiviert alert entfernen
- [ ] TODO: Systemdaten unter Detailansicht ein Verlaufsdiagramm hinzufügen mit Datumsauswahl
- [ ] TODO: Playwright testen mit der Entwicklung
# Kai Schmidt:
# Folgende Erweiterung / Neuerungen:
[ ] TODO: Messverlauf bei Systemwerten (Temperatur und Spannungen) mit Datumsauswahl
[ ] TODO: Formatierung der Kabelüberwachungswerten in den visuellen Einschüben (Isowert mit Komma und 2 Nachkommastellen; RSL mit Komma und 3 Noachkommastellen) Nachkommastellen immer anzeigen und mit Nullen auffüllen.
[ ] TODO: Admin User nach einer Zeit von einer Stunde löschen (Cookie oder Local Storrage)
[ ] TODO: lange Modulnamen bei KÜ ermöglichen (48 Zeichen) bei Version ab V4.30. Laufschrift möglich?
[ ] TODO: Darkmode ermöglichen
[ ] TODO: Wenn im Browser Darkmode eingschaltet ist muss die Webseite erkennbar sein.

View File

@@ -1,23 +0,0 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["*"],
"@/redux/*": ["redux/*"],
"@/utils/*": ["utils/*"],
"@/components/*": ["components/*"]
}
},
"include": [
"src/**/*",
"components/**/*",
"redux/**/*",
"utils/**/*",
"*.js",
"*.ts",
"*.jsx",
"*.tsx"
],
"extends": "./tsconfig.json"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,2 +0,0 @@
win_da_state = [1, 1, 1, 1];
win_da_bezeichnung = ["Ausgang2", "Ausgang2", "Ausgang3", "Ausgang4"];

View File

@@ -1,4 +1,14 @@
{
"win_da_state": [1, 1, 1, 1],
"win_da_bezeichnung": ["Ausgang2", "Ausgang2", "Ausgang3", "Ausgang4"]
}
"win_da_state": [
1,
1,
1,
1
],
"win_da_bezeichnung": [
"Ausgang1",
"Ausgang2",
"Ausgang3",
"Ausgang4"
]
}

View File

@@ -1,4 +1,4 @@
// /device-cgi-simulator/SERVICE/SystemMockData.js
// /device-cgi-simulator/SERVICE/systemMockData.js
var win_appVersion = "0.02";
var win_deviceName = "CPLV4 Ismail Rastede";
var win_mac1 = "0 48 86 81 46 143";

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 13.5,
"a": 14,
"g": 13.545
},
{
"t": "2025-08-12 00:00:00",
"i": 12.5,
"a": 14,
"g": 13.519
},
{
"t": "2025-08-11 00:00:00",
"i": 13,
"a": 14,
"g": 13.5
},
{
"t": "2025-08-10 00:00:00",
"i": 12.5,
"a": 14,
"g": 13.755
},
{
"t": "2025-08-09 00:00:00",
"i": 13,
"a": 14,
"g": 13.988
},
{
"t": "2025-08-08 00:00:00",
"i": 11.5,
"a": 14,
"g": 13.733
},
{
"t": "2025-08-07 00:00:00",
"i": 11.5,
"a": 14,
"g": 13.5
},
{
"t": "2025-08-06 00:00:00",
"i": 12.5,
"a": 13.5,
"g": 13.5
},
{
"t": "2025-08-05 00:00:00",
"i": 13,
"a": 14,
"g": 13.493
},
{
"t": "2025-08-04 00:00:00",
"i": 12.5,
"a": 14,
"g": 13.5
},
{
"t": "2025-08-03 00:00:00",
"i": 13,
"a": 14,
"g": 13.5
},
{
"t": "2025-08-02 00:00:00",
"i": 13,
"a": 14,
"g": 13.5
},
{
"t": "2025-08-01 00:00:00",
"i": 13.5,
"a": 200,
"g": 13.5
},
{
"t": "2025-07-31 00:00:00",
"i": 10,
"a": 13.5,
"g": 13.5
},
{
"t": "2025-07-30 00:00:00",
"i": 12.5,
"a": 14,
"g": 13.5
},
{
"t": "2025-07-29 00:00:00",
"i": 13.5,
"a": 14,
"g": 13.5
},
{
"t": "2025-07-28 00:00:00",
"i": 12.5,
"a": 13.5,
"g": 13.5
},
{
"t": "2025-07-27 00:00:00",
"i": 13.5,
"a": 13.5,
"g": 13.5
},
{
"t": "2025-07-26 00:00:00",
"i": 13.5,
"a": 14,
"g": 13.518
},
{
"t": "2025-07-25 00:00:00",
"i": 13.5,
"a": 14,
"g": 13.5
},
{
"t": "2025-07-24 00:00:00",
"i": 11.5,
"a": 14,
"g": 13.522
},
{
"t": "2025-07-23 00:00:00",
"i": 13,
"a": 14,
"g": 13.5
},
{
"t": "2025-07-22 00:00:00",
"i": 13,
"a": 14,
"g": 13.5
},
{
"t": "2025-07-21 00:00:00",
"i": 12,
"a": 13.5,
"g": 13.5
},
{
"t": "2025-07-20 00:00:00",
"i": 13.5,
"a": 14,
"g": 13.5
},
{
"t": "2025-07-19 00:00:00",
"i": 12.5,
"a": 13.5,
"g": 13.5
},
{
"t": "2025-07-18 00:00:00",
"i": 13,
"a": 13.5,
"g": 13.498
},
{
"t": "2025-07-17 00:00:00",
"i": 13.5,
"a": 13.5,
"g": 13.5
},
{
"t": "2025-07-16 00:00:00",
"i": 13,
"a": 13.5,
"g": 13.498
},
{
"t": "2025-07-15 00:00:00",
"i": 12.5,
"a": 14,
"g": 13.5
},
{
"t": "2025-07-14 00:00:00",
"i": 12,
"a": 13.5,
"g": 13.5
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": -0.001,
"a": 14.076,
"g": 12.978
},
{
"t": "2025-08-12 00:00:00",
"i": 13.954,
"a": 14.103,
"g": 14.041
},
{
"t": "2025-08-11 00:00:00",
"i": 14.024,
"a": 14.144,
"g": 14.108
},
{
"t": "2025-08-10 00:00:00",
"i": 13.974,
"a": 14.074,
"g": 14.035
},
{
"t": "2025-08-09 00:00:00",
"i": 14.028,
"a": 14.165,
"g": 14.114
},
{
"t": "2025-08-08 00:00:00",
"i": 13.94,
"a": 14.039,
"g": 14.007
},
{
"t": "2025-08-07 00:00:00",
"i": 13.998,
"a": 14.152,
"g": 14.052
},
{
"t": "2025-08-06 00:00:00",
"i": 13.978,
"a": 14.056,
"g": 14.028
},
{
"t": "2025-08-05 00:00:00",
"i": 13.87,
"a": 14.041,
"g": 14.006
},
{
"t": "2025-08-04 00:00:00",
"i": 13.87,
"a": 14.095,
"g": 13.995
},
{
"t": "2025-08-03 00:00:00",
"i": 14.013,
"a": 14.143,
"g": 14.055
},
{
"t": "2025-08-02 00:00:00",
"i": 14.01,
"a": 14.143,
"g": 14.088
},
{
"t": "2025-08-01 00:00:00",
"i": 13.975,
"a": 14.125,
"g": 14.045
},
{
"t": "2025-07-31 00:00:00",
"i": 13.921,
"a": 14.117,
"g": 14.052
},
{
"t": "2025-07-30 00:00:00",
"i": 13.962,
"a": 14.109,
"g": 14.04
},
{
"t": "2025-07-29 00:00:00",
"i": 13.962,
"a": 14.105,
"g": 14.039
},
{
"t": "2025-07-28 00:00:00",
"i": 14.054,
"a": 14.171,
"g": 14.081
},
{
"t": "2025-07-27 00:00:00",
"i": 14.071,
"a": 14.171,
"g": 14.123
},
{
"t": "2025-07-26 00:00:00",
"i": 14.024,
"a": 14.126,
"g": 14.071
},
{
"t": "2025-07-25 00:00:00",
"i": 14.006,
"a": 14.148,
"g": 14.093
},
{
"t": "2025-07-24 00:00:00",
"i": -0.001,
"a": 14.116,
"g": 13.567
},
{
"t": "2025-07-23 00:00:00",
"i": 13.98,
"a": 14.11,
"g": 14.042
},
{
"t": "2025-07-22 00:00:00",
"i": 13.793,
"a": 14.099,
"g": 13.97
},
{
"t": "2025-07-21 00:00:00",
"i": 13.982,
"a": 14.127,
"g": 14.044
},
{
"t": "2025-07-20 00:00:00",
"i": 13.832,
"a": 14.056,
"g": 13.971
},
{
"t": "2025-07-19 00:00:00",
"i": 13.967,
"a": 14.056,
"g": 14.027
},
{
"t": "2025-07-18 00:00:00",
"i": 13.927,
"a": 14.086,
"g": 13.989
},
{
"t": "2025-07-17 00:00:00",
"i": 13.952,
"a": 14.13,
"g": 14.067
},
{
"t": "2025-07-16 00:00:00",
"i": 13.952,
"a": 14.153,
"g": 14.071
},
{
"t": "2025-07-15 00:00:00",
"i": 13.943,
"a": 14.114,
"g": 14.062
},
{
"t": "2025-07-14 00:00:00",
"i": 13.936,
"a": 14.047,
"g": 13.989
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 40,
"a": 49,
"g": 46.125
},
{
"t": "2025-08-12 00:00:00",
"i": 39.5,
"a": 47.5,
"g": 46.033
},
{
"t": "2025-08-11 00:00:00",
"i": 39.5,
"a": 47,
"g": 45.995
},
{
"t": "2025-08-10 00:00:00",
"i": 25.5,
"a": 47,
"g": 45.947
},
{
"t": "2025-08-09 00:00:00",
"i": 25.5,
"a": 47,
"g": 45.702
},
{
"t": "2025-08-08 00:00:00",
"i": 25.5,
"a": 47,
"g": 45.835
},
{
"t": "2025-08-07 00:00:00",
"i": 33.5,
"a": 46.5,
"g": 45.642
},
{
"t": "2025-08-06 00:00:00",
"i": 39,
"a": 46.5,
"g": 45.5
},
{
"t": "2025-08-05 00:00:00",
"i": 25,
"a": 46.5,
"g": 45.321
},
{
"t": "2025-08-04 00:00:00",
"i": 25,
"a": 46.5,
"g": 45.059
},
{
"t": "2025-08-03 00:00:00",
"i": 39,
"a": 47,
"g": 45.067
},
{
"t": "2025-08-02 00:00:00",
"i": 33,
"a": 47.5,
"g": 45.09
},
{
"t": "2025-08-01 00:00:00",
"i": 25,
"a": 47.5,
"g": 44.958
},
{
"t": "2025-07-31 00:00:00",
"i": 33,
"a": 47,
"g": 44.891
},
{
"t": "2025-07-30 00:00:00",
"i": 39,
"a": 46.5,
"g": 45.182
},
{
"t": "2025-07-29 00:00:00",
"i": 33,
"a": 200,
"g": 45.536
},
{
"t": "2025-07-28 00:00:00",
"i": 25,
"a": 48,
"g": 45.469
},
{
"t": "2025-07-27 00:00:00",
"i": 25.5,
"a": 48,
"g": 45.79
},
{
"t": "2025-07-26 00:00:00",
"i": 33,
"a": 47,
"g": 45.337
},
{
"t": "2025-07-25 00:00:00",
"i": 25,
"a": 47.5,
"g": 45.172
},
{
"t": "2025-07-24 00:00:00",
"i": 25,
"a": 200,
"g": 45.605
},
{
"t": "2025-07-23 00:00:00",
"i": 23,
"a": 47.5,
"g": 45.979
},
{
"t": "2025-07-22 00:00:00",
"i": 39,
"a": 47,
"g": 45.469
},
{
"t": "2025-07-21 00:00:00",
"i": 33.5,
"a": 47.5,
"g": 45.793
},
{
"t": "2025-07-20 00:00:00",
"i": 33.5,
"a": 47.5,
"g": 45.947
},
{
"t": "2025-07-19 00:00:00",
"i": 39,
"a": 47,
"g": 45.568
},
{
"t": "2025-07-18 00:00:00",
"i": 42.5,
"a": 46.5,
"g": 45.339
},
{
"t": "2025-07-17 00:00:00",
"i": 33.5,
"a": 47,
"g": 45.651
},
{
"t": "2025-07-16 00:00:00",
"i": 43,
"a": 47,
"g": 45.817
},
{
"t": "2025-07-15 00:00:00",
"i": 39.5,
"a": 47.5,
"g": 45.826
},
{
"t": "2025-07-14 00:00:00",
"i": 39,
"a": 47,
"g": 45.3
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": -0.001,
"a": 3.42,
"g": 3.228
},
{
"t": "2025-08-12 00:00:00",
"i": 3.417,
"a": 3.434,
"g": 3.426
},
{
"t": "2025-08-11 00:00:00",
"i": 3.393,
"a": 3.422,
"g": 3.413
},
{
"t": "2025-08-10 00:00:00",
"i": 3.393,
"a": 3.431,
"g": 3.42
},
{
"t": "2025-08-09 00:00:00",
"i": 3.409,
"a": 3.438,
"g": 3.419
},
{
"t": "2025-08-08 00:00:00",
"i": 3.409,
"a": 3.414,
"g": 3.412
},
{
"t": "2025-08-07 00:00:00",
"i": 3.398,
"a": 3.416,
"g": 3.412
},
{
"t": "2025-08-06 00:00:00",
"i": 3.398,
"a": 3.415,
"g": 3.407
},
{
"t": "2025-08-05 00:00:00",
"i": 3.408,
"a": 3.431,
"g": 3.415
},
{
"t": "2025-08-04 00:00:00",
"i": 3.41,
"a": 3.423,
"g": 3.415
},
{
"t": "2025-08-03 00:00:00",
"i": 3.4,
"a": 3.424,
"g": 3.412
},
{
"t": "2025-08-02 00:00:00",
"i": 3.403,
"a": 3.421,
"g": 3.411
},
{
"t": "2025-08-01 00:00:00",
"i": 3.406,
"a": 3.417,
"g": 3.413
},
{
"t": "2025-07-31 00:00:00",
"i": 3.415,
"a": 3.422,
"g": 3.419
},
{
"t": "2025-07-30 00:00:00",
"i": 3.413,
"a": 3.419,
"g": 3.415
},
{
"t": "2025-07-29 00:00:00",
"i": 3.388,
"a": 3.417,
"g": 3.403
},
{
"t": "2025-07-28 00:00:00",
"i": 3.412,
"a": 3.422,
"g": 3.416
},
{
"t": "2025-07-27 00:00:00",
"i": 3.414,
"a": 3.43,
"g": 3.423
},
{
"t": "2025-07-26 00:00:00",
"i": 3.412,
"a": 3.425,
"g": 3.417
},
{
"t": "2025-07-25 00:00:00",
"i": 3.399,
"a": 3.425,
"g": 3.414
},
{
"t": "2025-07-24 00:00:00",
"i": 3.399,
"a": 3.424,
"g": 3.41
},
{
"t": "2025-07-23 00:00:00",
"i": 3.384,
"a": 3.424,
"g": 3.408
},
{
"t": "2025-07-22 00:00:00",
"i": 3.397,
"a": 3.417,
"g": 3.407
},
{
"t": "2025-07-21 00:00:00",
"i": 3.41,
"a": 3.424,
"g": 3.418
},
{
"t": "2025-07-20 00:00:00",
"i": 3.406,
"a": 3.428,
"g": 3.416
},
{
"t": "2025-07-19 00:00:00",
"i": 3.397,
"a": 3.431,
"g": 3.411
},
{
"t": "2025-07-18 00:00:00",
"i": 3.403,
"a": 3.431,
"g": 3.411
},
{
"t": "2025-07-17 00:00:00",
"i": 3.404,
"a": 3.44,
"g": 3.417
},
{
"t": "2025-07-16 00:00:00",
"i": 3.413,
"a": 3.44,
"g": 3.421
},
{
"t": "2025-07-15 00:00:00",
"i": 3.415,
"a": 3.424,
"g": 3.421
},
{
"t": "2025-07-14 00:00:00",
"i": 3.402,
"a": 3.426,
"g": 3.413
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-08-12 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-08-11 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-08-10 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-08-09 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-08-08 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-08-07 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.006
},
{
"t": "2025-08-06 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-08-05 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.089
},
{
"t": "2025-08-04 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 9.963
},
{
"t": "2025-08-03 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.006
},
{
"t": "2025-08-02 00:00:00",
"i": 10,
"a": 10,
"g": 10
},
{
"t": "2025-08-01 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.979
},
{
"t": "2025-07-31 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-07-30 00:00:00",
"i": 10,
"a": 10,
"g": 10
},
{
"t": "2025-07-29 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-07-28 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.943
},
{
"t": "2025-07-27 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-26 00:00:00",
"i": 10,
"a": 10,
"g": 10
},
{
"t": "2025-07-25 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.875
},
{
"t": "2025-07-24 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-23 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-22 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.896
},
{
"t": "2025-07-21 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-20 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-19 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.095
},
{
"t": "2025-07-18 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.062
},
{
"t": "2025-07-17 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-16 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-15 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.174
},
{
"t": "2025-07-14 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.135
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 3.665,
"a": 3.69,
"g": 3.673
},
{
"t": "2025-08-12 00:00:00",
"i": 3.681,
"a": 3.695,
"g": 3.688
},
{
"t": "2025-08-11 00:00:00",
"i": 3.679,
"a": 3.691,
"g": 3.682
},
{
"t": "2025-08-10 00:00:00",
"i": 3.675,
"a": 3.696,
"g": 3.688
},
{
"t": "2025-08-09 00:00:00",
"i": 3.675,
"a": 3.697,
"g": 3.684
},
{
"t": "2025-08-08 00:00:00",
"i": 3.678,
"a": 3.693,
"g": 3.687
},
{
"t": "2025-08-07 00:00:00",
"i": 3.676,
"a": 3.7,
"g": 3.69
},
{
"t": "2025-08-06 00:00:00",
"i": 3.676,
"a": 3.71,
"g": 3.692
},
{
"t": "2025-08-05 00:00:00",
"i": 3.675,
"a": 3.699,
"g": 3.688
},
{
"t": "2025-08-04 00:00:00",
"i": 3.677,
"a": 3.691,
"g": 3.686
},
{
"t": "2025-08-03 00:00:00",
"i": 3.663,
"a": 3.692,
"g": 3.678
},
{
"t": "2025-08-02 00:00:00",
"i": 3.673,
"a": 3.696,
"g": 3.681
},
{
"t": "2025-08-01 00:00:00",
"i": 3.674,
"a": 3.696,
"g": 3.689
},
{
"t": "2025-07-31 00:00:00",
"i": 3.676,
"a": 3.698,
"g": 3.688
},
{
"t": "2025-07-30 00:00:00",
"i": 3.676,
"a": 3.691,
"g": 3.686
},
{
"t": "2025-07-29 00:00:00",
"i": 3.682,
"a": 3.722,
"g": 3.696
},
{
"t": "2025-07-28 00:00:00",
"i": 3.681,
"a": 3.696,
"g": 3.687
},
{
"t": "2025-07-27 00:00:00",
"i": 3.681,
"a": 3.699,
"g": 3.693
},
{
"t": "2025-07-26 00:00:00",
"i": 3.673,
"a": 3.699,
"g": 3.683
},
{
"t": "2025-07-25 00:00:00",
"i": 3.684,
"a": 3.699,
"g": 3.692
},
{
"t": "2025-07-24 00:00:00",
"i": 3.68,
"a": 3.697,
"g": 3.687
},
{
"t": "2025-07-23 00:00:00",
"i": 3.679,
"a": 3.702,
"g": 3.69
},
{
"t": "2025-07-22 00:00:00",
"i": 3.67,
"a": 3.682,
"g": 3.677
},
{
"t": "2025-07-21 00:00:00",
"i": 3.682,
"a": 3.69,
"g": 3.686
},
{
"t": "2025-07-20 00:00:00",
"i": 3.673,
"a": 3.686,
"g": 3.68
},
{
"t": "2025-07-19 00:00:00",
"i": 3.682,
"a": 3.695,
"g": 3.689
},
{
"t": "2025-07-18 00:00:00",
"i": 3.682,
"a": 3.695,
"g": 3.69
},
{
"t": "2025-07-17 00:00:00",
"i": 3.682,
"a": 3.693,
"g": 3.684
},
{
"t": "2025-07-16 00:00:00",
"i": 3.681,
"a": 3.697,
"g": 3.69
},
{
"t": "2025-07-15 00:00:00",
"i": 3.688,
"a": 3.695,
"g": 3.691
},
{
"t": "2025-07-14 00:00:00",
"i": 3.67,
"a": 3.689,
"g": 3.681
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.459
},
{
"t": "2025-08-12 00:00:00",
"i": 10,
"a": 11,
"g": 10.317
},
{
"t": "2025-08-11 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.053
},
{
"t": "2025-08-10 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.106
},
{
"t": "2025-08-09 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.011
},
{
"t": "2025-08-08 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.314
},
{
"t": "2025-08-07 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.381
},
{
"t": "2025-08-06 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.021
},
{
"t": "2025-08-05 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.01
},
{
"t": "2025-08-04 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.021
},
{
"t": "2025-08-03 00:00:00",
"i": 10,
"a": 200,
"g": 10.156
},
{
"t": "2025-08-02 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.026
},
{
"t": "2025-08-01 00:00:00",
"i": 10,
"a": 11,
"g": 10.268
},
{
"t": "2025-07-31 00:00:00",
"i": 10,
"a": 11,
"g": 10.698
},
{
"t": "2025-07-30 00:00:00",
"i": 10,
"a": 11,
"g": 10.375
},
{
"t": "2025-07-29 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.281
},
{
"t": "2025-07-28 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.297
},
{
"t": "2025-07-27 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.074
},
{
"t": "2025-07-26 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.442
},
{
"t": "2025-07-25 00:00:00",
"i": 10,
"a": 11,
"g": 10.443
},
{
"t": "2025-07-24 00:00:00",
"i": 10,
"a": 11,
"g": 10.305
},
{
"t": "2025-07-23 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.182
},
{
"t": "2025-07-22 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.385
},
{
"t": "2025-07-21 00:00:00",
"i": 10,
"a": 11,
"g": 10.293
},
{
"t": "2025-07-20 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.016
},
{
"t": "2025-07-19 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.116
},
{
"t": "2025-07-18 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.292
},
{
"t": "2025-07-17 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.292
},
{
"t": "2025-07-16 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.006
},
{
"t": "2025-07-15 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-07-14 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.073
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 3.641,
"a": 3.662,
"g": 3.658
},
{
"t": "2025-08-12 00:00:00",
"i": 3.64,
"a": 3.656,
"g": 3.649
},
{
"t": "2025-08-11 00:00:00",
"i": 3.642,
"a": 3.664,
"g": 3.655
},
{
"t": "2025-08-10 00:00:00",
"i": 3.641,
"a": 3.696,
"g": 3.656
},
{
"t": "2025-08-09 00:00:00",
"i": 3.64,
"a": 3.696,
"g": 3.656
},
{
"t": "2025-08-08 00:00:00",
"i": 3.64,
"a": 3.647,
"g": 3.645
},
{
"t": "2025-08-07 00:00:00",
"i": 3.645,
"a": 3.656,
"g": 3.648
},
{
"t": "2025-08-06 00:00:00",
"i": 3.637,
"a": 3.661,
"g": 3.649
},
{
"t": "2025-08-05 00:00:00",
"i": 3.642,
"a": 3.659,
"g": 3.65
},
{
"t": "2025-08-04 00:00:00",
"i": 3.636,
"a": 3.665,
"g": 3.651
},
{
"t": "2025-08-03 00:00:00",
"i": 3.643,
"a": 3.654,
"g": 3.65
},
{
"t": "2025-08-02 00:00:00",
"i": 3.643,
"a": 3.667,
"g": 3.658
},
{
"t": "2025-08-01 00:00:00",
"i": 3.642,
"a": 3.662,
"g": 3.659
},
{
"t": "2025-07-31 00:00:00",
"i": 3.642,
"a": 3.673,
"g": 3.653
},
{
"t": "2025-07-30 00:00:00",
"i": 3.635,
"a": 3.673,
"g": 3.656
},
{
"t": "2025-07-29 00:00:00",
"i": 3.635,
"a": 3.666,
"g": 3.653
},
{
"t": "2025-07-28 00:00:00",
"i": 3.654,
"a": 3.673,
"g": 3.665
},
{
"t": "2025-07-27 00:00:00",
"i": 3.64,
"a": 3.654,
"g": 3.649
},
{
"t": "2025-07-26 00:00:00",
"i": 3.641,
"a": 3.657,
"g": 3.648
},
{
"t": "2025-07-25 00:00:00",
"i": 3.643,
"a": 3.662,
"g": 3.649
},
{
"t": "2025-07-24 00:00:00",
"i": 3.648,
"a": 3.671,
"g": 3.658
},
{
"t": "2025-07-23 00:00:00",
"i": 3.644,
"a": 3.671,
"g": 3.653
},
{
"t": "2025-07-22 00:00:00",
"i": 3.65,
"a": 3.699,
"g": 3.658
},
{
"t": "2025-07-21 00:00:00",
"i": 3.651,
"a": 3.699,
"g": 3.663
},
{
"t": "2025-07-20 00:00:00",
"i": 3.65,
"a": 3.665,
"g": 3.659
},
{
"t": "2025-07-19 00:00:00",
"i": 3.64,
"a": 3.663,
"g": 3.649
},
{
"t": "2025-07-18 00:00:00",
"i": 3.642,
"a": 3.666,
"g": 3.653
},
{
"t": "2025-07-17 00:00:00",
"i": 3.648,
"a": 3.662,
"g": 3.656
},
{
"t": "2025-07-16 00:00:00",
"i": 3.651,
"a": 3.695,
"g": 3.669
},
{
"t": "2025-07-15 00:00:00",
"i": 3.635,
"a": 3.654,
"g": 3.646
},
{
"t": "2025-07-14 00:00:00",
"i": 3.627,
"a": 3.663,
"g": 3.649
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 9.892
},
{
"t": "2025-08-12 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.956
},
{
"t": "2025-08-11 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.995
},
{
"t": "2025-08-10 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-08-09 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-08-08 00:00:00",
"i": 10,
"a": 10,
"g": 10
},
{
"t": "2025-08-07 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-08-06 00:00:00",
"i": 10,
"a": 10,
"g": 10
},
{
"t": "2025-08-05 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.958
},
{
"t": "2025-08-04 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 9.932
},
{
"t": "2025-08-03 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.006
},
{
"t": "2025-08-02 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-08-01 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 9.832
},
{
"t": "2025-07-31 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.844
},
{
"t": "2025-07-30 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.953
},
{
"t": "2025-07-29 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.979
},
{
"t": "2025-07-28 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.984
},
{
"t": "2025-07-27 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.983
},
{
"t": "2025-07-26 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.984
},
{
"t": "2025-07-25 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 9.953
},
{
"t": "2025-07-24 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.011
},
{
"t": "2025-07-23 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.031
},
{
"t": "2025-07-22 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-21 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-07-20 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.979
},
{
"t": "2025-07-19 00:00:00",
"i": 9.5,
"a": 10,
"g": 10
},
{
"t": "2025-07-18 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.984
},
{
"t": "2025-07-17 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-16 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-15 00:00:00",
"i": 9.5,
"a": 10,
"g": 9.889
},
{
"t": "2025-07-14 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 9.896
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 3.666,
"a": 3.677,
"g": 3.669
},
{
"t": "2025-08-12 00:00:00",
"i": 3.663,
"a": 3.679,
"g": 3.674
},
{
"t": "2025-08-11 00:00:00",
"i": 3.669,
"a": 3.685,
"g": 3.674
},
{
"t": "2025-08-10 00:00:00",
"i": 3.672,
"a": 3.685,
"g": 3.679
},
{
"t": "2025-08-09 00:00:00",
"i": 3.67,
"a": 3.686,
"g": 3.675
},
{
"t": "2025-08-08 00:00:00",
"i": 3.666,
"a": 3.687,
"g": 3.674
},
{
"t": "2025-08-07 00:00:00",
"i": 3.665,
"a": 3.687,
"g": 3.676
},
{
"t": "2025-08-06 00:00:00",
"i": 3.668,
"a": 3.682,
"g": 3.676
},
{
"t": "2025-08-05 00:00:00",
"i": 3.671,
"a": 3.7,
"g": 3.677
},
{
"t": "2025-08-04 00:00:00",
"i": 3.666,
"a": 3.7,
"g": 3.679
},
{
"t": "2025-08-03 00:00:00",
"i": 3.677,
"a": 3.685,
"g": 3.679
},
{
"t": "2025-08-02 00:00:00",
"i": 3.672,
"a": 3.684,
"g": 3.678
},
{
"t": "2025-08-01 00:00:00",
"i": 3.665,
"a": 3.675,
"g": 3.671
},
{
"t": "2025-07-31 00:00:00",
"i": 3.667,
"a": 3.676,
"g": 3.672
},
{
"t": "2025-07-30 00:00:00",
"i": 3.673,
"a": 3.688,
"g": 3.678
},
{
"t": "2025-07-29 00:00:00",
"i": 3.664,
"a": 3.685,
"g": 3.677
},
{
"t": "2025-07-28 00:00:00",
"i": 3.66,
"a": 3.684,
"g": 3.671
},
{
"t": "2025-07-27 00:00:00",
"i": 3.665,
"a": 3.689,
"g": 3.677
},
{
"t": "2025-07-26 00:00:00",
"i": 3.664,
"a": 3.684,
"g": 3.677
},
{
"t": "2025-07-25 00:00:00",
"i": 3.649,
"a": 3.686,
"g": 3.67
},
{
"t": "2025-07-24 00:00:00",
"i": 3.675,
"a": 3.687,
"g": 3.681
},
{
"t": "2025-07-23 00:00:00",
"i": 3.661,
"a": 3.688,
"g": 3.67
},
{
"t": "2025-07-22 00:00:00",
"i": 3.662,
"a": 3.696,
"g": 3.684
},
{
"t": "2025-07-21 00:00:00",
"i": 3.672,
"a": 3.689,
"g": 3.681
},
{
"t": "2025-07-20 00:00:00",
"i": 3.674,
"a": 3.688,
"g": 3.678
},
{
"t": "2025-07-19 00:00:00",
"i": 3.658,
"a": 3.688,
"g": 3.677
},
{
"t": "2025-07-18 00:00:00",
"i": 3.677,
"a": 3.688,
"g": 3.683
},
{
"t": "2025-07-17 00:00:00",
"i": 3.671,
"a": 3.69,
"g": 3.678
},
{
"t": "2025-07-16 00:00:00",
"i": 3.672,
"a": 3.694,
"g": 3.678
},
{
"t": "2025-07-15 00:00:00",
"i": 3.674,
"a": 3.694,
"g": 3.681
},
{
"t": "2025-07-14 00:00:00",
"i": 3.669,
"a": 3.686,
"g": 3.676
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 10,
"a": 10,
"g": 10
},
{
"t": "2025-08-12 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.117
},
{
"t": "2025-08-11 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.126
},
{
"t": "2025-08-10 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.064
},
{
"t": "2025-08-09 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.09
},
{
"t": "2025-08-08 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-08-07 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.006
},
{
"t": "2025-08-06 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.168
},
{
"t": "2025-08-05 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.182
},
{
"t": "2025-08-04 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.047
},
{
"t": "2025-08-03 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.006
},
{
"t": "2025-08-02 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-08-01 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.032
},
{
"t": "2025-07-31 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-07-30 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.036
},
{
"t": "2025-07-29 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-28 00:00:00",
"i": 10,
"a": 200,
"g": 10
},
{
"t": "2025-07-27 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-26 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-07-25 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.026
},
{
"t": "2025-07-24 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-23 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-22 00:00:00",
"i": 10,
"a": 10,
"g": 10
},
{
"t": "2025-07-21 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-20 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.174
},
{
"t": "2025-07-19 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.268
},
{
"t": "2025-07-18 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.021
},
{
"t": "2025-07-17 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-16 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-15 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.084
},
{
"t": "2025-07-14 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.193
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 3.662,
"a": 3.672,
"g": 3.664
},
{
"t": "2025-08-12 00:00:00",
"i": 3.662,
"a": 3.672,
"g": 3.668
},
{
"t": "2025-08-11 00:00:00",
"i": 3.665,
"a": 3.679,
"g": 3.669
},
{
"t": "2025-08-10 00:00:00",
"i": 3.66,
"a": 3.679,
"g": 3.668
},
{
"t": "2025-08-09 00:00:00",
"i": 3.656,
"a": 3.674,
"g": 3.666
},
{
"t": "2025-08-08 00:00:00",
"i": 3.669,
"a": 3.675,
"g": 3.672
},
{
"t": "2025-08-07 00:00:00",
"i": 3.657,
"a": 3.675,
"g": 3.661
},
{
"t": "2025-08-06 00:00:00",
"i": 3.662,
"a": 3.675,
"g": 3.668
},
{
"t": "2025-08-05 00:00:00",
"i": 3.655,
"a": 3.676,
"g": 3.667
},
{
"t": "2025-08-04 00:00:00",
"i": 3.664,
"a": 3.67,
"g": 3.666
},
{
"t": "2025-08-03 00:00:00",
"i": 3.652,
"a": 3.673,
"g": 3.665
},
{
"t": "2025-08-02 00:00:00",
"i": 3.658,
"a": 3.666,
"g": 3.663
},
{
"t": "2025-08-01 00:00:00",
"i": 3.657,
"a": 3.676,
"g": 3.667
},
{
"t": "2025-07-31 00:00:00",
"i": 3.657,
"a": 3.683,
"g": 3.67
},
{
"t": "2025-07-30 00:00:00",
"i": 3.662,
"a": 3.701,
"g": 3.676
},
{
"t": "2025-07-29 00:00:00",
"i": 3.664,
"a": 3.675,
"g": 3.669
},
{
"t": "2025-07-28 00:00:00",
"i": 3.659,
"a": 3.679,
"g": 3.672
},
{
"t": "2025-07-27 00:00:00",
"i": 3.663,
"a": 3.679,
"g": 3.672
},
{
"t": "2025-07-26 00:00:00",
"i": 3.658,
"a": 3.677,
"g": 3.671
},
{
"t": "2025-07-25 00:00:00",
"i": 3.658,
"a": 3.675,
"g": 3.669
},
{
"t": "2025-07-24 00:00:00",
"i": 3.656,
"a": 3.681,
"g": 3.669
},
{
"t": "2025-07-23 00:00:00",
"i": 3.666,
"a": 3.675,
"g": 3.671
},
{
"t": "2025-07-22 00:00:00",
"i": 3.655,
"a": 3.676,
"g": 3.67
},
{
"t": "2025-07-21 00:00:00",
"i": 3.649,
"a": 3.676,
"g": 3.665
},
{
"t": "2025-07-20 00:00:00",
"i": 3.649,
"a": 3.672,
"g": 3.665
},
{
"t": "2025-07-19 00:00:00",
"i": 3.65,
"a": 3.682,
"g": 3.67
},
{
"t": "2025-07-18 00:00:00",
"i": 3.661,
"a": 3.682,
"g": 3.671
},
{
"t": "2025-07-17 00:00:00",
"i": 3.667,
"a": 3.683,
"g": 3.674
},
{
"t": "2025-07-16 00:00:00",
"i": 3.659,
"a": 3.671,
"g": 3.666
},
{
"t": "2025-07-15 00:00:00",
"i": 3.659,
"a": 3.673,
"g": 3.666
},
{
"t": "2025-07-14 00:00:00",
"i": 3.657,
"a": 3.681,
"g": 3.667
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 10,
"a": 11,
"g": 10.486
},
{
"t": "2025-08-12 00:00:00",
"i": 10,
"a": 11,
"g": 10.5
},
{
"t": "2025-08-11 00:00:00",
"i": 10,
"a": 11,
"g": 10.474
},
{
"t": "2025-08-10 00:00:00",
"i": 10,
"a": 11,
"g": 10.314
},
{
"t": "2025-08-09 00:00:00",
"i": 10,
"a": 11,
"g": 10.197
},
{
"t": "2025-08-08 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.179
},
{
"t": "2025-08-07 00:00:00",
"i": 10,
"a": 11,
"g": 10.258
},
{
"t": "2025-08-06 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-08-05 00:00:00",
"i": 10,
"a": 11,
"g": 10.099
},
{
"t": "2025-08-04 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.084
},
{
"t": "2025-08-03 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.039
},
{
"t": "2025-08-02 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-08-01 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-31 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.182
},
{
"t": "2025-07-30 00:00:00",
"i": 10,
"a": 11,
"g": 10.469
},
{
"t": "2025-07-29 00:00:00",
"i": 10,
"a": 11,
"g": 10.453
},
{
"t": "2025-07-28 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.234
},
{
"t": "2025-07-27 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-26 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.153
},
{
"t": "2025-07-25 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.339
},
{
"t": "2025-07-24 00:00:00",
"i": 10,
"a": 11,
"g": 10.321
},
{
"t": "2025-07-23 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.005
},
{
"t": "2025-07-22 00:00:00",
"i": 10,
"a": 11,
"g": 10.177
},
{
"t": "2025-07-21 00:00:00",
"i": 10,
"a": 11,
"g": 10.447
},
{
"t": "2025-07-20 00:00:00",
"i": 9.5,
"a": 11,
"g": 10.311
},
{
"t": "2025-07-19 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.037
},
{
"t": "2025-07-18 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.182
},
{
"t": "2025-07-17 00:00:00",
"i": 10,
"a": 11,
"g": 10.292
},
{
"t": "2025-07-16 00:00:00",
"i": 10,
"a": 11,
"g": 10.4
},
{
"t": "2025-07-15 00:00:00",
"i": 10,
"a": 11,
"g": 10.379
},
{
"t": "2025-07-14 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.057
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 3.708,
"a": 3.725,
"g": 3.714
},
{
"t": "2025-08-12 00:00:00",
"i": 3.711,
"a": 3.739,
"g": 3.723
},
{
"t": "2025-08-11 00:00:00",
"i": 3.711,
"a": 3.733,
"g": 3.723
},
{
"t": "2025-08-10 00:00:00",
"i": 3.705,
"a": 3.728,
"g": 3.719
},
{
"t": "2025-08-09 00:00:00",
"i": 3.705,
"a": 3.726,
"g": 3.715
},
{
"t": "2025-08-08 00:00:00",
"i": 3.705,
"a": 3.722,
"g": 3.716
},
{
"t": "2025-08-07 00:00:00",
"i": 3.704,
"a": 3.729,
"g": 3.716
},
{
"t": "2025-08-06 00:00:00",
"i": 3.698,
"a": 3.725,
"g": 3.708
},
{
"t": "2025-08-05 00:00:00",
"i": 3.7,
"a": 3.716,
"g": 3.708
},
{
"t": "2025-08-04 00:00:00",
"i": 3.703,
"a": 3.734,
"g": 3.711
},
{
"t": "2025-08-03 00:00:00",
"i": 3.705,
"a": 3.734,
"g": 3.714
},
{
"t": "2025-08-02 00:00:00",
"i": 3.699,
"a": 3.71,
"g": 3.705
},
{
"t": "2025-08-01 00:00:00",
"i": 3.699,
"a": 3.722,
"g": 3.709
},
{
"t": "2025-07-31 00:00:00",
"i": 3.704,
"a": 3.721,
"g": 3.713
},
{
"t": "2025-07-30 00:00:00",
"i": 3.698,
"a": 3.733,
"g": 3.72
},
{
"t": "2025-07-29 00:00:00",
"i": 3.695,
"a": 3.722,
"g": 3.712
},
{
"t": "2025-07-28 00:00:00",
"i": 3.713,
"a": 3.722,
"g": 3.716
},
{
"t": "2025-07-27 00:00:00",
"i": 3.715,
"a": 3.737,
"g": 3.725
},
{
"t": "2025-07-26 00:00:00",
"i": 3.709,
"a": 3.727,
"g": 3.716
},
{
"t": "2025-07-25 00:00:00",
"i": 3.7,
"a": 3.73,
"g": 3.722
},
{
"t": "2025-07-24 00:00:00",
"i": 3.699,
"a": 3.731,
"g": 3.717
},
{
"t": "2025-07-23 00:00:00",
"i": 3.687,
"a": 3.729,
"g": 3.706
},
{
"t": "2025-07-22 00:00:00",
"i": 3.687,
"a": 3.724,
"g": 3.71
},
{
"t": "2025-07-21 00:00:00",
"i": 3.701,
"a": 3.728,
"g": 3.711
},
{
"t": "2025-07-20 00:00:00",
"i": 3.705,
"a": 3.728,
"g": 3.717
},
{
"t": "2025-07-19 00:00:00",
"i": 3.704,
"a": 3.734,
"g": 3.716
},
{
"t": "2025-07-18 00:00:00",
"i": 3.702,
"a": 3.735,
"g": 3.721
},
{
"t": "2025-07-17 00:00:00",
"i": 3.702,
"a": 3.723,
"g": 3.714
},
{
"t": "2025-07-16 00:00:00",
"i": 3.717,
"a": 3.73,
"g": 3.724
},
{
"t": "2025-07-15 00:00:00",
"i": 3.7,
"a": 3.723,
"g": 3.714
},
{
"t": "2025-07-14 00:00:00",
"i": 3.705,
"a": 3.749,
"g": 3.726
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 10,
"a": 11,
"g": 10.473
},
{
"t": "2025-08-12 00:00:00",
"i": 10,
"a": 11,
"g": 10.3
},
{
"t": "2025-08-11 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.063
},
{
"t": "2025-08-10 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.17
},
{
"t": "2025-08-09 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.101
},
{
"t": "2025-08-08 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.085
},
{
"t": "2025-08-07 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.073
},
{
"t": "2025-08-06 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.25
},
{
"t": "2025-08-05 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.333
},
{
"t": "2025-08-04 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.068
},
{
"t": "2025-08-03 00:00:00",
"i": 10,
"a": 11,
"g": 10.183
},
{
"t": "2025-08-02 00:00:00",
"i": 10,
"a": 11,
"g": 10.395
},
{
"t": "2025-08-01 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.216
},
{
"t": "2025-07-31 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.099
},
{
"t": "2025-07-30 00:00:00",
"i": 10,
"a": 11,
"g": 10.474
},
{
"t": "2025-07-29 00:00:00",
"i": 10,
"a": 11,
"g": 10.635
},
{
"t": "2025-07-28 00:00:00",
"i": 9.5,
"a": 10.5,
"g": 10.01
},
{
"t": "2025-07-27 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.062
},
{
"t": "2025-07-26 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.079
},
{
"t": "2025-07-25 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.13
},
{
"t": "2025-07-24 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.137
},
{
"t": "2025-07-23 00:00:00",
"i": 10,
"a": 11,
"g": 10.359
},
{
"t": "2025-07-22 00:00:00",
"i": 10,
"a": 11,
"g": 10.411
},
{
"t": "2025-07-21 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.17
},
{
"t": "2025-07-20 00:00:00",
"i": 10,
"a": 11,
"g": 10.168
},
{
"t": "2025-07-19 00:00:00",
"i": 9.5,
"a": 11,
"g": 10.195
},
{
"t": "2025-07-18 00:00:00",
"i": 9.5,
"a": 11,
"g": 10.182
},
{
"t": "2025-07-17 00:00:00",
"i": 9.5,
"a": 11,
"g": 10.203
},
{
"t": "2025-07-16 00:00:00",
"i": 10,
"a": 10.5,
"g": 10
},
{
"t": "2025-07-15 00:00:00",
"i": 10,
"a": 11,
"g": 10.179
},
{
"t": "2025-07-14 00:00:00",
"i": 10,
"a": 10.5,
"g": 10.208
}
]

View File

@@ -1,188 +0,0 @@
[
{
"t": "2025-08-13 00:00:00",
"i": 3.663,
"a": 3.671,
"g": 3.669
},
{
"t": "2025-08-12 00:00:00",
"i": 3.661,
"a": 3.671,
"g": 3.665
},
{
"t": "2025-08-11 00:00:00",
"i": 3.661,
"a": 3.675,
"g": 3.669
},
{
"t": "2025-08-10 00:00:00",
"i": 3.648,
"a": 3.67,
"g": 3.661
},
{
"t": "2025-08-09 00:00:00",
"i": 3.658,
"a": 3.67,
"g": 3.663
},
{
"t": "2025-08-08 00:00:00",
"i": 3.657,
"a": 3.669,
"g": 3.662
},
{
"t": "2025-08-07 00:00:00",
"i": 3.66,
"a": 3.669,
"g": 3.664
},
{
"t": "2025-08-06 00:00:00",
"i": 3.655,
"a": 3.669,
"g": 3.662
},
{
"t": "2025-08-05 00:00:00",
"i": 3.66,
"a": 3.677,
"g": 3.669
},
{
"t": "2025-08-04 00:00:00",
"i": 3.657,
"a": 3.671,
"g": 3.663
},
{
"t": "2025-08-03 00:00:00",
"i": 3.658,
"a": 3.671,
"g": 3.664
},
{
"t": "2025-08-02 00:00:00",
"i": 3.657,
"a": 3.667,
"g": 3.661
},
{
"t": "2025-08-01 00:00:00",
"i": 3.648,
"a": 3.672,
"g": 3.662
},
{
"t": "2025-07-31 00:00:00",
"i": 3.651,
"a": 3.668,
"g": 3.658
},
{
"t": "2025-07-30 00:00:00",
"i": 3.655,
"a": 3.671,
"g": 3.662
},
{
"t": "2025-07-29 00:00:00",
"i": 3.66,
"a": 3.671,
"g": 3.666
},
{
"t": "2025-07-28 00:00:00",
"i": 3.653,
"a": 3.669,
"g": 3.658
},
{
"t": "2025-07-27 00:00:00",
"i": 3.652,
"a": 3.669,
"g": 3.659
},
{
"t": "2025-07-26 00:00:00",
"i": 3.652,
"a": 3.676,
"g": 3.668
},
{
"t": "2025-07-25 00:00:00",
"i": 3.652,
"a": 3.671,
"g": 3.661
},
{
"t": "2025-07-24 00:00:00",
"i": 3.655,
"a": 3.673,
"g": 3.667
},
{
"t": "2025-07-23 00:00:00",
"i": 3.659,
"a": 3.664,
"g": 3.661
},
{
"t": "2025-07-22 00:00:00",
"i": 3.654,
"a": 3.677,
"g": 3.665
},
{
"t": "2025-07-21 00:00:00",
"i": 3.662,
"a": 3.675,
"g": 3.667
},
{
"t": "2025-07-20 00:00:00",
"i": 3.668,
"a": 3.681,
"g": 3.673
},
{
"t": "2025-07-19 00:00:00",
"i": 3.659,
"a": 3.681,
"g": 3.668
},
{
"t": "2025-07-18 00:00:00",
"i": 3.654,
"a": 3.667,
"g": 3.656
},
{
"t": "2025-07-17 00:00:00",
"i": 3.659,
"a": 3.669,
"g": 3.665
},
{
"t": "2025-07-16 00:00:00",
"i": 3.659,
"a": 3.667,
"g": 3.662
},
{
"t": "2025-07-15 00:00:00",
"i": 3.655,
"a": 3.67,
"g": 3.663
},
{
"t": "2025-07-14 00:00:00",
"i": 3.652,
"a": 3.666,
"g": 3.66
}
]

Some files were not shown because too many files have changed in this diff Show More