| | |
| | | import { defineStore } from "pinia"; |
| | | import { loadDetectionArtifacts, loadTrajectoryArtifacts, type DetectionCase, type TrajectoryCase } from "@/api/artifacts"; |
| | | |
| | | interface ArtifactState { detectionCases: Record<string, DetectionCase>; trajectoryCases: Record<string, TrajectoryCase>; loading: boolean; error: string | null; } |
| | | import { |
| | | loadDetectionArtifacts, |
| | | loadChangeArtifacts, |
| | | loadSemanticArtifacts, |
| | | loadMeasurementArtifacts, |
| | | loadTrajectoryArtifacts, |
| | | loadAnomalyArtifacts, |
| | | type DetectionCase, |
| | | type ChangeCase, |
| | | type SemanticCase, |
| | | type MeasurementCase, |
| | | type TrajectoryCase, |
| | | type AnomalyCase |
| | | } from "@/api/artifacts"; |
| | | |
| | | interface ArtifactState { |
| | | detectionCases: Record<string, DetectionCase>; |
| | | trajectoryCases: Record<string, TrajectoryCase>; |
| | | semanticCases: Record<string, SemanticCase>; |
| | | measurementCases: Record<string, MeasurementCase>; |
| | | changeCases: Record<string, ChangeCase>; |
| | | anomalyCases: Record<string, AnomalyCase>; |
| | | loading: boolean; |
| | | error: string | null; |
| | | } |
| | | |
| | | export const useArtifactStore = defineStore("artifacts", { |
| | | getters: { |
| | | detectionRun: (state) => Object.values(state.detectionCases)[0]?.run ?? null, |
| | | detectionImages: (state) => Object.values(state.detectionCases)[0]?.images ?? [] |
| | | }, |
| | | state: (): ArtifactState => ({ detectionCases: {}, trajectoryCases: {}, loading: false, error: null }), |
| | | state: (): ArtifactState => ({ detectionCases: {}, trajectoryCases: {}, semanticCases: {}, measurementCases: {}, changeCases: {}, anomalyCases: {}, loading: false, error: null }), |
| | | actions: { |
| | | async loadDetection(force = false) { if (!force && Object.keys(this.detectionCases).length) return; this.loading = true; this.error = null; try { this.detectionCases = await loadDetectionArtifacts(); } catch (error) { this.error = error instanceof Error ? error.message : "目标检测结果读取失败"; } finally { this.loading = false; } }, |
| | | async loadTrajectory(force = false) { if (!force && Object.keys(this.trajectoryCases).length) return; this.loading = true; this.error = null; try { this.trajectoryCases = await loadTrajectoryArtifacts(); } catch (error) { this.error = error instanceof Error ? error.message : "轨迹分析结果读取失败"; } finally { this.loading = false; } } |
| | | async loadChange(force = false) { |
| | | if (!force && Object.keys(this.changeCases).length) return; |
| | | this.loading = true; this.error = null; |
| | | try { this.changeCases = await loadChangeArtifacts(); } |
| | | catch (error) { this.error = error instanceof Error ? error.message : "变化检测结果读取失败"; } |
| | | finally { this.loading = false; } |
| | | }, |
| | | async loadDetection(force = false) { |
| | | if (!force && Object.keys(this.detectionCases).length) return; |
| | | this.loading = true; this.error = null; |
| | | try { this.detectionCases = await loadDetectionArtifacts(); } |
| | | catch (error) { this.error = error instanceof Error ? error.message : "目标检测结果读取失败"; } |
| | | finally { this.loading = false; } |
| | | }, |
| | | async loadTrajectory(force = false) { |
| | | if (!force && Object.keys(this.trajectoryCases).length) return; |
| | | this.loading = true; this.error = null; |
| | | try { this.trajectoryCases = await loadTrajectoryArtifacts(); } |
| | | catch (error) { this.error = error instanceof Error ? error.message : "轨迹分析结果读取失败"; } |
| | | finally { this.loading = false; } |
| | | }, |
| | | async loadSemantic(force = false) { |
| | | if (!force && Object.keys(this.semanticCases).length) return; |
| | | this.loading = true; this.error = null; |
| | | try { this.semanticCases = await loadSemanticArtifacts(); } |
| | | catch (error) { this.error = error instanceof Error ? error.message : "语义分割结果读取失败"; } |
| | | finally { this.loading = false; } |
| | | }, |
| | | async loadMeasurement(force = false) { |
| | | if (!force && Object.keys(this.measurementCases).length) return; |
| | | this.loading = true; this.error = null; |
| | | try { this.measurementCases = await loadMeasurementArtifacts(); } |
| | | catch (error) { this.error = error instanceof Error ? error.message : "空间测量结果读取失败"; } |
| | | finally { this.loading = false; } |
| | | }, |
| | | async loadAnomaly(force = false) { |
| | | if (!force && Object.keys(this.anomalyCases).length) return; |
| | | this.loading = true; this.error = null; |
| | | try { this.anomalyCases = await loadAnomalyArtifacts(); } |
| | | catch (error) { this.error = error instanceof Error ? error.message : "异常检测结果读取失败"; } |
| | | finally { this.loading = false; } |
| | | } |
| | | } |
| | | }); |