feat(control-station): add compute contour workspace

This commit is contained in:
DCCONSTRUCTIONS
2026-07-28 00:54:49 +03:00
parent 1f4c960cc4
commit 1c0181297d
16 changed files with 987 additions and 262 deletions
@@ -0,0 +1,47 @@
import { useMemo } from "react";
import type { ApplicationPanelUtilityAction } from "@nodedc/ui-react";
import type { WorkspaceDefinition } from "../productModel";
interface ApplicationPanelActionsOptions {
definition: WorkspaceDefinition | null;
refreshRuntime: () => void;
saveWorkspaceLayout: () => Promise<void>;
workspaceLayoutSaving: boolean;
systemUtilityAction: ApplicationPanelUtilityAction;
}
export function useApplicationPanelActions({
definition,
refreshRuntime,
saveWorkspaceLayout,
workspaceLayoutSaving,
systemUtilityAction,
}: ApplicationPanelActionsOptions): ApplicationPanelUtilityAction[] {
return useMemo(() => {
const actions: ApplicationPanelUtilityAction[] = [];
if (definition?.kind === "device") {
actions.push({
label: "Обновить состояние локального контура",
icon: "refresh",
onClick: refreshRuntime,
});
}
if (definition && ["spatial", "recordings"].includes(definition.kind)) {
actions.push({
label: workspaceLayoutSaving ? "Сохраняем компоновку" : "Сохранить компоновку",
icon: "save",
disabled: workspaceLayoutSaving,
onClick: () => void saveWorkspaceLayout(),
});
}
if (definition?.root === "system") actions.push(systemUtilityAction);
return actions;
}, [
definition,
refreshRuntime,
saveWorkspaceLayout,
systemUtilityAction,
workspaceLayoutSaving,
]);
}