41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import {
|
|
API_BASE_URL,
|
|
CURRENT_PROJECT_ID_KEY,
|
|
ROUTES,
|
|
type RoutePath,
|
|
} from "@config/config_frontend";
|
|
import type { WorkflowStage } from "@ui/ui_template_workflow_layout";
|
|
import { navigateTo } from "./router";
|
|
|
|
export interface WorkflowState {
|
|
project_id: string;
|
|
current_stage: number;
|
|
stages: WorkflowStage[];
|
|
}
|
|
|
|
export const WORKFLOW_STEP_ROUTES: readonly RoutePath[] = [
|
|
ROUTES.B03_FILE_INPUT,
|
|
ROUTES.B04_WF1_SURFACE,
|
|
ROUTES.B05_WF2_ROUTE,
|
|
ROUTES.B06_WF3_PROFILE_CROSS,
|
|
ROUTES.B07_WF4_DESIGN_DETAIL,
|
|
ROUTES.B08_WF5_QUANTITY,
|
|
ROUTES.B09_WF6_ESTIMATION,
|
|
];
|
|
|
|
export async function fetchWorkflowState(projectId: string): Promise<WorkflowState> {
|
|
const response = await fetch(`${API_BASE_URL}/projects/${projectId}/workflow-state`, {
|
|
credentials: "include",
|
|
});
|
|
if (!response.ok) {
|
|
throw new Error(`Workflow state request failed: ${response.status}`);
|
|
}
|
|
const data = await response.json();
|
|
return data.workflow_state ?? data;
|
|
}
|
|
|
|
export function goToWorkflowStage(projectId: string, route: RoutePath): void {
|
|
localStorage.setItem(CURRENT_PROJECT_ID_KEY, projectId);
|
|
navigateTo(route);
|
|
}
|