Create workflow version show page (#7466)
In this PR: - Refactored components to clarify their behavior. For example, I renamed the `Workflow` component to `WorkflowVisualizer`. This moved forward the issue #7010. - Create two variants of several workflow-related components: one version for editing and another for viewing. For instance, there is `WorkflowDiagramCanvasEditable.tsx` and `WorkflowDiagramCanvasReadonly.tsx` - Implement the show page for workflow versions. On this page, we display a readonly workflow visualizer. Users can click on nodes and it will expand the right drawer. - I added buttons in the header of the RecordShowPage for workflow versions: users can activate, deactivate or use the currently viewed version as the next draft. **There are many cache desynchronisation and I'll fix them really soon.** ## Demo (Turn sound on) https://github.com/user-attachments/assets/97fafa48-8902-4dab-8b39-f40848bf041e
This commit is contained in:
committed by
GitHub
parent
d5bd320b8d
commit
1863636003
@ -0,0 +1,45 @@
|
||||
import { TRIGGER_STEP_ID } from '@/workflow/constants/TriggerStepId';
|
||||
import { WorkflowVersion } from '@/workflow/types/Workflow';
|
||||
import { findStepPosition } from '@/workflow/utils/findStepPosition';
|
||||
import { isDefined } from 'twenty-ui';
|
||||
|
||||
export const getStepDefinitionOrThrow = ({
|
||||
stepId,
|
||||
workflowVersion,
|
||||
}: {
|
||||
stepId: string;
|
||||
workflowVersion: WorkflowVersion;
|
||||
}) => {
|
||||
if (stepId === TRIGGER_STEP_ID) {
|
||||
if (!isDefined(workflowVersion.trigger)) {
|
||||
return {
|
||||
type: 'trigger',
|
||||
definition: undefined,
|
||||
} as const;
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'trigger',
|
||||
definition: workflowVersion.trigger,
|
||||
} as const;
|
||||
}
|
||||
|
||||
if (!isDefined(workflowVersion.steps)) {
|
||||
throw new Error(
|
||||
'Malformed workflow version: missing steps information; be sure to create at least one step before trying to edit one',
|
||||
);
|
||||
}
|
||||
|
||||
const selectedNodePosition = findStepPosition({
|
||||
steps: workflowVersion.steps,
|
||||
stepId: stepId,
|
||||
});
|
||||
if (!isDefined(selectedNodePosition)) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'action',
|
||||
definition: selectedNodePosition.steps[selectedNodePosition.index],
|
||||
} as const;
|
||||
};
|
||||
Reference in New Issue
Block a user