/**
* 清掃詳細ログ(`CleanLogTable`)の「事前チェック1回目 / 2回目」のセルの中身(D-171 / D-178)。
*
* ★列は「何分前か」ではなく「その清掃の何回目の事前チェックか」★(早い方が1回目。ユーザー判断 2026-10-16「案1」。D-178)。
* 事前チェックの時刻は設定で変わる(例 60/30 → 60/10)ため、何分前かはセルの中に出す(`precheckMinutesLabel()`)。
* ★旧見出し「1h前ST / 30分前ST」★は分数を固定した名前で、設定を変えると中身と食い違うため廃止した。
*
* ★`null` = その回の事前チェックの予定が無い★(`CleanLogItem.status_1h` / `status_30m`。
* ユーザー指示 2026-10-07「事前チェックがないものは-にしてください」)。
* ★null は Pill を出さず「-」★(色なし)。★文字列(`"Standby."` を含む)は今までどおり Pill★。
*
* ★ここで分岐する理由★: `statusColor()`(`lib/theme-status.ts`)に null が届く経路を作らないため。
* 画面は `kind` で分岐し、`"pill"` のときだけ `statusColor()` を呼ぶ(`text` は `string` に絞られている)。
* ★「-」は JP/EN 共通の記号なので `t()` に通さない★。
* ★CSV は「-」ではなく空のセル★(`lib/clean-logs/csv.ts`。`csvCell()` で `'-` になるため。D-164)。
* ★「-」にするのは null だけ★ — 空文字や値そのものが `"-"` の行は予定ありとして Pill で出す(DB の値を変換しない。D-077)。
*/
import type { Lang } from "@/lib/i18n";
/** 事前チェックの予定が無い列に出す記号(JP/EN 共通) */
export const PRECHECK_STATUS_NONE = "-";
export type PrecheckStatusCell =
| { kind: "none"; text: typeof PRECHECK_STATUS_NONE }
| { kind: "pill"; text: string };
export function precheckStatusCell(status: string | null): PrecheckStatusCell {
return status === null
? { kind: "none", text: PRECHECK_STATUS_NONE }
: { kind: "pill", text: status };
}
/**
* セルの Pill の横に出す「何分前か」の文字(D-178)。JP「60分前」/ EN「60 min」。
* ★`minutes` が null なら null★(画面は Pill だけを出す。`status_*` が null のときは呼ぶ前に「-」で分岐する)。
* ★分数は生値のまま★(`clean_timetables.precheck`。旧コード値 `1` / `2` も「1分前」「2分前」。D-077 と同じ考え方)。
*
* ★辞書(`lib/i18n.ts`)の `"{n}分前"` を使わない理由★: そのキーの EN はシステム管理画面の
* "{n} min before" で、表のセルには長すぎる。辞書のキーは日本語原文そのものなので、
* 同じ「{n}分前」に別の英語を当てられない。ここでは言語を受け取って組み立てる。
*/
export function precheckMinutesLabel(lang: Lang, minutes: number | null): string | null {
if (minutes === null) return null;
return lang === "en" ? `${minutes} min` : `${minutes}分前`;
}