lct-17: пульт преподавателя — сценарий, наблюдение, пометки, ссылки
Компоновка от того, по чему пульт оценит действующий преподаватель: задать сценарий и не вмешиваться, видеть работу курсанта вживую, получить готовый разбор, показать группе. Кнопка запуска одна и крупная, ссылки на АРМ курсанта и монитор печатаются рядом. Разделение прав архитектурное и здесь: пульт смотрит через observe, пишет через control, карточка курсанта у него только для чтения. Две ловушки запуска: scenario.start уходил из эффекта и мог повториться при перерисовке, а открытая из истории ссылка на идущее занятие запустила бы его заново и сбросила. Запускается только занятие, созданное кнопкой.
This commit is contained in:
parent
fadfa3e479
commit
978d7dc1aa
5 changed files with 269 additions and 1 deletions
|
|
@ -59,6 +59,17 @@ export const useHealth = () =>
|
|||
export const useScenarios = () =>
|
||||
useQuery({ queryKey: ["scenarios"], queryFn: () => request<ScenarioSummary[]>("/api/scenarios") });
|
||||
|
||||
export const useSessions = (params: { trainee?: string; group?: string; mode?: SessionMode } = {}) => {
|
||||
const query = new URLSearchParams(
|
||||
Object.entries(params).filter(([, value]) => value) as [string, string][],
|
||||
).toString();
|
||||
return useQuery({
|
||||
queryKey: ["sessions", query],
|
||||
queryFn: () => request<SessionInfo[]>(`/api/sessions${query ? `?${query}` : ""}`),
|
||||
refetchInterval: 15_000,
|
||||
});
|
||||
};
|
||||
|
||||
export const useCreateSession = () =>
|
||||
useMutation({
|
||||
mutationFn: (body: { scenario_id: string; mode: SessionMode; trainee?: string; group?: string }) =>
|
||||
|
|
|
|||
Loading…
Reference in a new issue