stash
This commit is contained in:
parent
7c91661be2
commit
796fef81be
37 changed files with 3404 additions and 108 deletions
110
frontend/src/components/workflow/ComponentRegistry.js
Normal file
110
frontend/src/components/workflow/ComponentRegistry.js
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
/**
|
||||
* Workflow Step Component Registry
|
||||
*
|
||||
* This module handles the dynamic loading and registration of workflow step components.
|
||||
* It provides a centralized way to map workflow types and steps to their corresponding Vue components.
|
||||
*/
|
||||
|
||||
// Import all step components
|
||||
import FotoFirstStep1 from './steps/FotoFirstStep1.vue';
|
||||
import FotoFirstStep2 from './steps/FotoFirstStep2.vue';
|
||||
import FotoFirstStep3 from './steps/FotoFirstStep3.vue';
|
||||
import FotoFirstStep4 from './steps/FotoFirstStep4.vue';
|
||||
import BulkImportStep1 from './steps/BulkImportStep1.vue';
|
||||
|
||||
/**
|
||||
* Component registry mapping workflow types and steps to components
|
||||
* Format: 'workflowType-step' -> Component
|
||||
*/
|
||||
const componentRegistry = {
|
||||
// Foto First Import Workflow components
|
||||
'foto-first-bulk-import-1': FotoFirstStep1,
|
||||
'foto-first-bulk-import-2': FotoFirstStep2,
|
||||
'foto-first-bulk-import-3': FotoFirstStep3,
|
||||
'foto-first-bulk-import-4': FotoFirstStep4,
|
||||
|
||||
// Bulk Item Import Workflow components
|
||||
'import-items-1': BulkImportStep1,
|
||||
// Additional steps can be added as needed
|
||||
// 'import-items-2': BulkImportStep2,
|
||||
// 'import-items-3': BulkImportStep3,
|
||||
// ... etc
|
||||
};
|
||||
|
||||
/**
|
||||
* Get a step component for a given workflow type and step
|
||||
* @param {string} workflowType - The workflow type identifier
|
||||
* @param {string|number} step - The step identifier
|
||||
* @returns {Object|null} Vue component or null if not found
|
||||
*/
|
||||
export function getStepComponent(workflowType, step) {
|
||||
const componentKey = `${workflowType}-${step}`;
|
||||
return componentRegistry[componentKey] || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a new step component
|
||||
* @param {string} workflowType - The workflow type identifier
|
||||
* @param {string|number} step - The step identifier
|
||||
* @param {Object} component - The Vue component
|
||||
*/
|
||||
export function registerStepComponent(workflowType, step, component) {
|
||||
const componentKey = `${workflowType}-${step}`;
|
||||
componentRegistry[componentKey] = component;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all registered components for a workflow type
|
||||
* @param {string} workflowType - The workflow type identifier
|
||||
* @returns {Object} Object with step numbers as keys and components as values
|
||||
*/
|
||||
export function getWorkflowComponents(workflowType) {
|
||||
const workflowComponents = {};
|
||||
|
||||
Object.keys(componentRegistry).forEach(key => {
|
||||
if (key.startsWith(`${workflowType}-`)) {
|
||||
const step = key.replace(`${workflowType}-`, '');
|
||||
workflowComponents[step] = componentRegistry[key];
|
||||
}
|
||||
});
|
||||
|
||||
return workflowComponents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a step component exists for a workflow type and step
|
||||
* @param {string} workflowType - The workflow type identifier
|
||||
* @param {string|number} step - The step identifier
|
||||
* @returns {boolean} True if component exists, false otherwise
|
||||
*/
|
||||
export function hasStepComponent(workflowType, step) {
|
||||
const componentKey = `${workflowType}-${step}`;
|
||||
return componentKey in componentRegistry;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all registered workflow types
|
||||
* @returns {Array<string>} Array of workflow type identifiers
|
||||
*/
|
||||
export function getRegisteredWorkflowTypes() {
|
||||
const workflowTypes = new Set();
|
||||
|
||||
Object.keys(componentRegistry).forEach(key => {
|
||||
const parts = key.split('-');
|
||||
if (parts.length >= 2) {
|
||||
// Reconstruct workflow type (everything except the last part which is the step)
|
||||
const workflowType = parts.slice(0, -1).join('-');
|
||||
workflowTypes.add(workflowType);
|
||||
}
|
||||
});
|
||||
|
||||
return Array.from(workflowTypes);
|
||||
}
|
||||
|
||||
export default {
|
||||
getStepComponent,
|
||||
registerStepComponent,
|
||||
getWorkflowComponents,
|
||||
hasStepComponent,
|
||||
getRegisteredWorkflowTypes
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue