lct-11: таймеры ГОСТ и баннер режима на АРМ курсанта
Опрос (75 с) — крупным индикатором: это центральная метрика продукта, и она обязана быть видна курсанту, преподавателю и залу одновременно. Три состояния норматива — единственное место, где цвет несёт смысл. Фронт время не считает и рисует ровно те цифры, что прислал сервер: метрика по часам браузера недоказуема. Баннер режима определяет доступность подсказки: в контрольном режиме кнопки нет, и это часть нормы контроля.
This commit is contained in:
parent
48c936ea6e
commit
78f66cf3b5
5 changed files with 101 additions and 1 deletions
17
frontend/src/features/mode-banner/ModeBanner.tsx
Normal file
17
frontend/src/features/mode-banner/ModeBanner.tsx
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// Баннер режима. Виден на всех четырёх экранах и определяет доступность подсказки:
|
||||
// в контрольном режиме опоры нет, и это часть нормы контроля (docs/product/MODES.md).
|
||||
|
||||
import type { SessionMode } from "@/shared/types/generated";
|
||||
|
||||
const LABELS: Record<SessionMode, string> = {
|
||||
training: "Тренировочный режим — подсказки доступны",
|
||||
exam: "Контрольный режим — подсказки недоступны",
|
||||
self: "Самостоятельная работа — подсказки доступны",
|
||||
};
|
||||
|
||||
export const hintsAllowed = (mode: SessionMode | undefined): boolean => mode !== "exam";
|
||||
|
||||
export function ModeBanner({ mode }: { mode: SessionMode | undefined }) {
|
||||
if (!mode) return null;
|
||||
return <div className={`mode-banner mode-${mode}`}>{LABELS[mode]}</div>;
|
||||
}
|
||||
Loading…
Reference in a new issue