korkece fve predikce, grafy predikci
This commit is contained in:
@@ -31,11 +31,18 @@ function sumW(a: number | null, b: number | null): number | null {
|
||||
return (a ?? 0) + (b ?? 0)
|
||||
}
|
||||
|
||||
export type EnergyLegendItem = { key: string; label: string; color: string; dashed?: boolean }
|
||||
export type EnergyLegendItem = {
|
||||
key: string
|
||||
label: string
|
||||
color: string
|
||||
dashed?: boolean
|
||||
dashStyle?: 'dashed' | 'dotted'
|
||||
}
|
||||
|
||||
export const ENERGY_LEGEND: EnergyLegendItem[] = [
|
||||
{ key: 'fve_real', label: 'FVE skutečnost', color: COL.fve },
|
||||
{ key: 'fve_pred', label: 'FVE předpověď', color: COL.fve, dashed: true },
|
||||
{ key: 'fve_corr', label: 'FVE korigovaná', color: COL.fve, dashed: true, dashStyle: 'dotted' },
|
||||
{ key: 'baz_real', label: 'Spotřeba skutečnost', color: COL.baz },
|
||||
{ key: 'baz_pred', label: 'Spotřeba předpověď', color: COL.baz, dashed: true },
|
||||
{ key: 'ev', label: 'EV plán', color: COL.ev },
|
||||
@@ -93,6 +100,9 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
const series = useMemo(() => {
|
||||
const fveReal = slots.map((s, i) => (i <= nowIndex ? kwFromW(s.pv_power_w) : null))
|
||||
const fvePred = slots.map((s) => kwFromW(sumW(s.pv_a_forecast_w, s.pv_b_forecast_w)))
|
||||
const fveCorr = slots.map((s) =>
|
||||
kwFromW(s.pv_forecast_corrected_w ?? sumW(s.pv_a_forecast_w, s.pv_b_forecast_w)),
|
||||
)
|
||||
const bazReal = slots.map((s, i) => (i <= nowIndex ? kwFromW(s.load_power_w) : null))
|
||||
const bazPred = slots.map((s) => kwFromW(s.load_baseline_w))
|
||||
const ev = slots.map((s) => kwFromW(sumW(s.ev1_setpoint_w, s.ev2_setpoint_w)))
|
||||
@@ -105,7 +115,7 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
)
|
||||
const buy = slots.map((s) => (s.buy_price == null ? null : s.buy_price))
|
||||
const sell = slots.map((s) => (s.sell_price == null ? null : s.sell_price))
|
||||
return { fveReal, fvePred, bazReal, bazPred, ev, tc, bat, sit, buy, sell }
|
||||
return { fveReal, fvePred, fveCorr, bazReal, bazPred, ev, tc, bat, sit, buy, sell }
|
||||
}, [slots, nowIndex])
|
||||
|
||||
const bgPlugin = useMemo(
|
||||
@@ -126,6 +136,7 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
opts: {
|
||||
fill?: boolean | 'origin'
|
||||
dashed?: boolean
|
||||
dash?: number[]
|
||||
yAxisID?: string
|
||||
order: number
|
||||
borderWidth?: number
|
||||
@@ -137,7 +148,7 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
backgroundColor:
|
||||
opts.fill === true ? `${color}33` : opts.fill === 'origin' ? `${color}40` : undefined,
|
||||
fill: opts.fill ?? false,
|
||||
borderDash: opts.dashed ? [5, 4] : undefined,
|
||||
borderDash: opts.dash ?? (opts.dashed ? [5, 4] : undefined),
|
||||
borderWidth: opts.borderWidth ?? (opts.dashed ? 1 : 1.2),
|
||||
pointRadius: 0,
|
||||
hitRadius: 6,
|
||||
@@ -161,6 +172,12 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
mkDs('fve_real', 'FVE ■', series.fveReal, COL.fve, { fill: true, order: 7 }),
|
||||
mkDs('baz_pred', 'Spotřeba ···', series.bazPred, COL.baz, { dashed: true, order: 8 }),
|
||||
mkDs('fve_pred', 'FVE ···', series.fvePred, COL.fve, { dashed: true, order: 9 }),
|
||||
mkDs('fve_corr', 'FVE (korig.)', series.fveCorr, COL.fve, {
|
||||
dashed: true,
|
||||
dash: [2, 3],
|
||||
order: 9,
|
||||
borderWidth: 1,
|
||||
}),
|
||||
mkDs('buy_price', 'Nákup', series.buy, COL.buy, {
|
||||
dashed: true,
|
||||
yAxisID: 'y1',
|
||||
@@ -267,6 +284,7 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
s.fveReal,
|
||||
s.bazPred,
|
||||
s.fvePred,
|
||||
s.fveCorr,
|
||||
s.buy,
|
||||
s.sell,
|
||||
]
|
||||
@@ -290,6 +308,7 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
'fve_real',
|
||||
'baz_pred',
|
||||
'fve_pred',
|
||||
'fve_corr',
|
||||
'buy_price',
|
||||
'sell_price',
|
||||
] as const
|
||||
@@ -326,7 +345,7 @@ export function EnergyChart({ slots, nowIndex, hidden, onToggle, onChartArea }:
|
||||
className="h-2.5 w-4 shrink-0 rounded-sm border border-white/10"
|
||||
style={{
|
||||
backgroundColor: off ? 'transparent' : item.color,
|
||||
borderStyle: item.dashed ? 'dashed' : 'solid',
|
||||
borderStyle: item.dashStyle === 'dotted' ? 'dotted' : item.dashed ? 'dashed' : 'solid',
|
||||
}}
|
||||
/>
|
||||
{item.label}
|
||||
|
||||
Reference in New Issue
Block a user