Spaces:
Sleeping
Sleeping
| import { defineStore } from 'pinia' | |
| export const useCalibrationStore = defineStore('calibration', { | |
| state: () => ({ | |
| // Flux principal | |
| mode: null, // 'auto' ou 'manual' | |
| currentStep: 'mode-selection', // 'mode-selection', 'upload', 'video-type', 'processing', 'results' | |
| // Traitement | |
| processing: false, | |
| processingProgress: 0, | |
| processingTask: '', | |
| // Résultats | |
| results: null, | |
| error: null, | |
| // Configuration manuelle | |
| manualLines: {}, | |
| // Configuration vidéo dynamique | |
| videoProcessingParams: { | |
| kpThreshold: 0.15, | |
| lineThreshold: 0.15, | |
| frameStep: 10 | |
| } | |
| }), | |
| getters: { | |
| isAutoMode: (state) => state.mode === 'auto', | |
| isManualMode: (state) => state.mode === 'manual', | |
| hasResults: (state) => state.results !== null, | |
| isProcessing: (state) => state.processing, | |
| // Étapes actives | |
| isModeSelection: (state) => state.currentStep === 'mode-selection', | |
| isUploadStep: (state) => state.currentStep === 'upload', | |
| isVideoTypeStep: (state) => state.currentStep === 'video-type', | |
| isProcessingStep: (state) => state.currentStep === 'processing', | |
| isResultsStep: (state) => state.currentStep === 'results' | |
| }, | |
| actions: { | |
| // Navigation entre étapes | |
| setMode(mode) { | |
| this.mode = mode | |
| this.currentStep = 'upload' | |
| }, | |
| setCurrentStep(step) { | |
| this.currentStep = step | |
| }, | |
| // Traitement | |
| setProcessing(processing, task = '') { | |
| this.processing = processing | |
| this.processingTask = task | |
| if (processing) { | |
| this.currentStep = 'processing' | |
| } | |
| }, | |
| updateProgress(progress, task = '') { | |
| this.processingProgress = progress | |
| if (task) this.processingTask = task | |
| }, | |
| setResults(results) { | |
| this.results = results | |
| this.processing = false | |
| this.error = null | |
| this.currentStep = 'results' | |
| }, | |
| setError(error) { | |
| this.error = error | |
| this.processing = false | |
| }, | |
| // Configuration | |
| setVideoParams(params) { | |
| this.videoProcessingParams = { ...this.videoProcessingParams, ...params } | |
| }, | |
| setManualLines(lines) { | |
| this.manualLines = lines | |
| }, | |
| // Réinitialisation | |
| reset() { | |
| this.mode = null | |
| this.currentStep = 'mode-selection' | |
| this.processing = false | |
| this.processingProgress = 0 | |
| this.processingTask = '' | |
| this.results = null | |
| this.error = null | |
| this.manualLines = {} | |
| }, | |
| // Passer en mode manuel depuis les résultats | |
| switchToManual() { | |
| this.mode = 'manual' | |
| // On garde les autres données pour permettre le retour | |
| } | |
| } | |
| }) |