feat(workbench): integrate runtime data and map tooling
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
export const ARTIFACT_PANE_MIN_WIDTH = 640;
|
||||
import type { FeatureCollection, Geometry } from "geojson";
|
||||
|
||||
export const ARTIFACT_PANE_MIN_WIDTH = 600;
|
||||
export const ARTIFACT_MAP_SPLIT_MIN_WIDTH = ARTIFACT_PANE_MIN_WIDTH * 2 + 1;
|
||||
|
||||
export type ArtifactType = "diagnosis" | "simulation" | "metric_analysis";
|
||||
@@ -80,6 +82,7 @@ export type AnalysisArtifactAction = {
|
||||
|
||||
export type AnalysisArtifact = {
|
||||
id: string;
|
||||
origin?: "agent" | "backend" | "demo";
|
||||
type: ArtifactType;
|
||||
lifecycle: ArtifactLifecycle;
|
||||
revision: number;
|
||||
@@ -92,6 +95,7 @@ export type AnalysisArtifact = {
|
||||
analyticalTimeRange: { start: string; end: string };
|
||||
preferredView: ArtifactViewMode;
|
||||
mapRelation: ArtifactMapRelation;
|
||||
spatialOverlay?: FeatureCollection<Geometry>;
|
||||
blocks: AnalysisBlock[];
|
||||
sources: string[];
|
||||
limitations: string[];
|
||||
@@ -128,6 +132,17 @@ export function openPendingArtifact(state: ArtifactWorkspaceState): ArtifactWork
|
||||
};
|
||||
}
|
||||
|
||||
export function openAnalysisArtifact(
|
||||
state: ArtifactWorkspaceState,
|
||||
artifact: AnalysisArtifact
|
||||
): ArtifactWorkspaceState {
|
||||
return {
|
||||
pendingArtifact: null,
|
||||
activeArtifact: artifact,
|
||||
requestedView: getPreferredArtifactView(artifact)
|
||||
};
|
||||
}
|
||||
|
||||
export function collapseActiveArtifact(state: ArtifactWorkspaceState): ArtifactWorkspaceState {
|
||||
if (!state.activeArtifact) return state;
|
||||
return {
|
||||
@@ -162,7 +177,7 @@ export function resolveWorkbenchSurfaceMode(
|
||||
const artifact = state.activeArtifact;
|
||||
if (!artifact) return "default";
|
||||
if (state.requestedView === "map_only") return "map_only";
|
||||
if (artifact.mapRelation === "none" || state.requestedView === "focus") return "focus";
|
||||
if (state.requestedView === "focus") return "focus";
|
||||
return businessWorkspaceWidth >= ARTIFACT_MAP_SPLIT_MIN_WIDTH ? "map_split" : "focus";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user