81 lines
2.4 KiB
TypeScript
81 lines
2.4 KiB
TypeScript
"use client";
|
|
|
|
import type { useDashboardStore } from "@/hooks/useDashboardStore";
|
|
import type { useI18n } from "@/hooks/useI18n";
|
|
import type { getFutureModalView } from "@/lib/dashboard-utils";
|
|
import {
|
|
FutureModelForecastPanel,
|
|
FutureProbabilityPanel,
|
|
FutureTemperaturePathChart,
|
|
} from "./FutureForecastModalPanels";
|
|
|
|
type DashboardDetail = NonNullable<
|
|
ReturnType<typeof useDashboardStore>["selectedDetail"]
|
|
>;
|
|
type FutureModalView = ReturnType<typeof getFutureModalView>;
|
|
type TranslationFn = ReturnType<typeof useI18n>["t"];
|
|
|
|
export function FutureForecastForwardView({
|
|
dateStr,
|
|
detail,
|
|
t,
|
|
view,
|
|
}: {
|
|
dateStr: string;
|
|
detail: DashboardDetail;
|
|
t: TranslationFn;
|
|
view: FutureModalView;
|
|
}) {
|
|
return (
|
|
<>
|
|
<div className="future-forward-stats">
|
|
<div className="future-forward-stat-card">
|
|
<span className="label">{t("future.targetForecast")}</span>
|
|
<span className="val">
|
|
{view.forecastEntry?.max_temp ?? "--"}
|
|
{detail.temp_symbol}
|
|
</span>
|
|
</div>
|
|
<div className="future-forward-stat-card">
|
|
<span className="label">{t("future.deb")}</span>
|
|
<span className="val">
|
|
{view.deb ?? "--"}
|
|
{detail.temp_symbol}
|
|
</span>
|
|
</div>
|
|
<div className="future-forward-stat-card">
|
|
<span className="label">{t("future.mu")}</span>
|
|
<span className="val">
|
|
{view.mu != null
|
|
? `${view.mu.toFixed(1)}${detail.temp_symbol}`
|
|
: "--"}
|
|
</span>
|
|
</div>
|
|
<div className="future-forward-stat-card">
|
|
<span className="label">{t("future.score")}</span>
|
|
<span className="val">
|
|
{view.front.score > 0 ? "+" : ""}
|
|
{view.front.score}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<section className="future-modal-section">
|
|
<h3>{t("future.targetTempTrend")}</h3>
|
|
<FutureTemperaturePathChart dateStr={dateStr} forceToday={false} />
|
|
</section>
|
|
|
|
<div className="future-modal-grid">
|
|
<section className="future-modal-section">
|
|
<h3>{t("future.probability")}</h3>
|
|
<FutureProbabilityPanel detail={detail} targetDate={dateStr} hideTitle />
|
|
</section>
|
|
<section className="future-modal-section">
|
|
<h3>{t("future.models")}</h3>
|
|
<FutureModelForecastPanel detail={detail} targetDate={dateStr} hideTitle />
|
|
</section>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|