fix(ui): align telemetry and laboratory navigation

This commit is contained in:
DCCONSTRUCTIONS
2026-07-28 03:18:27 +03:00
parent 6db5ac05ef
commit e35f81ac34
13 changed files with 195 additions and 55 deletions
@@ -2,6 +2,7 @@ interface TelemetrySeriesProps {
label: string;
values: Array<number | null>;
value: string;
resource?: string | null;
ceiling?: number;
}
@@ -24,13 +25,17 @@ export function TelemetrySeries({
label,
values,
value,
resource,
ceiling,
}: TelemetrySeriesProps) {
const points = linePoints(values, ceiling);
return (
<div className="system-telemetry-series">
<div>
<span>{label}</span>
<span className="system-telemetry-series__label">
<span>{label}</span>
{resource ? <small>{resource}</small> : null}
</span>
<strong>{value}</strong>
</div>
<svg
@@ -8,7 +8,7 @@ interface ComputeContourSettingsController {
canEdit: boolean;
openCreate: () => void;
openEdit: () => void;
utilityAction: ApplicationPanelUtilityAction;
utilityActions: readonly ApplicationPanelUtilityAction[];
window: ReactNode;
}
@@ -24,18 +24,30 @@ export function useComputeContourSettings(): ComputeContourSettingsController {
setMode("edit");
setOpen(true);
}, []);
const utilityAction = useMemo<ApplicationPanelUtilityAction>(() => ({
label: "Настроить выбранный вычислительный контур",
icon: "settings",
disabled: contours.selectedContour === null,
onClick: openEdit,
}), [contours.selectedContour, openEdit]);
const utilityActions = useMemo<readonly ApplicationPanelUtilityAction[]>(() => [
{
label: "Обновить телеметрию выбранного контура",
icon: "refresh",
disabled: contours.selectedContour?.contour_id !== "worker-006",
onClick: contours.refreshTelemetry,
},
{
label: "Настроить выбранный вычислительный контур",
icon: "settings",
disabled: contours.selectedContour === null,
onClick: openEdit,
},
], [
contours.refreshTelemetry,
contours.selectedContour,
openEdit,
]);
return {
canEdit: contours.selectedContour !== null,
openCreate,
openEdit,
utilityAction,
utilityActions,
window: (
<ComputeContourSettingsWindow
open={open}
@@ -8,7 +8,7 @@ interface ApplicationPanelActionsOptions {
refreshRuntime: () => void;
saveWorkspaceLayout: () => Promise<void>;
workspaceLayoutSaving: boolean;
systemUtilityAction: ApplicationPanelUtilityAction;
systemUtilityActions: readonly ApplicationPanelUtilityAction[];
}
export function useApplicationPanelActions({
@@ -16,7 +16,7 @@ export function useApplicationPanelActions({
refreshRuntime,
saveWorkspaceLayout,
workspaceLayoutSaving,
systemUtilityAction,
systemUtilityActions,
}: ApplicationPanelActionsOptions): ApplicationPanelUtilityAction[] {
return useMemo(() => {
const actions: ApplicationPanelUtilityAction[] = [];
@@ -35,13 +35,13 @@ export function useApplicationPanelActions({
onClick: () => void saveWorkspaceLayout(),
});
}
if (definition?.root === "system") actions.push(systemUtilityAction);
if (definition?.root === "system") actions.push(...systemUtilityActions);
return actions;
}, [
definition,
refreshRuntime,
saveWorkspaceLayout,
systemUtilityAction,
systemUtilityActions,
workspaceLayoutSaving,
]);
}