feat(editor): Add workflow action to switch between new and old canvas (no-changelog) (#9969)

This commit is contained in:
Alex Grozav
2024-07-09 15:58:36 +03:00
committed by GitHub
parent b5b96eb43e
commit 4e2f0adb2a
7 changed files with 79 additions and 54 deletions

View File

@@ -3,6 +3,7 @@ import {
DUPLICATE_MODAL_KEY,
EnterpriseEditionFeature,
MAX_WORKFLOW_NAME_LENGTH,
MODAL_CLOSE,
MODAL_CONFIRM,
PLACEHOLDER_EMPTY_WORKFLOW_ID,
SOURCE_CONTROL_PUSH_MODAL_KEY,
@@ -55,6 +56,7 @@ import { useI18n } from '@/composables/useI18n';
import { useTelemetry } from '@/composables/useTelemetry';
import type { BaseTextKey } from '../../plugins/i18n';
import { useNpsSurveyStore } from '@/stores/npsSurvey.store';
import { useLocalStorage } from '@vueuse/core';
const props = defineProps<{
workflow: IWorkflowDb;
@@ -93,6 +95,9 @@ const importFileRef = ref<HTMLInputElement | undefined>();
const tagsEventBus = createEventBus();
const sourceControlModalEventBus = createEventBus();
const nodeViewSwitcher = useLocalStorage('NodeView.switcher', '');
const nodeViewVersion = useLocalStorage('NodeView.version', '1');
const hasChanged = (prev: string[], curr: string[]) => {
if (prev.length !== curr.length) {
return true;
@@ -178,6 +183,17 @@ const workflowMenuItems = computed<ActionDropdownItem[]>(() => {
disabled: !onWorkflowPage.value || isNewWorkflow.value,
});
if (nodeViewSwitcher.value === 'true') {
actions.push({
id: WORKFLOW_MENU_ACTIONS.SWITCH_NODE_VIEW_VERSION,
label:
nodeViewVersion.value === '2'
? locale.baseText('menuActions.switchToOldNodeViewVersion')
: locale.baseText('menuActions.switchToNewNodeViewVersion'),
disabled: !onWorkflowPage.value,
});
}
if ((workflowPermissions.value.delete && !props.readOnly) || isNewWorkflow.value) {
actions.push({
id: WORKFLOW_MENU_ACTIONS.DELETE,
@@ -488,6 +504,38 @@ async function onWorkflowMenuSelect(action: WORKFLOW_MENU_ACTIONS): Promise<void
uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);
break;
}
case WORKFLOW_MENU_ACTIONS.SWITCH_NODE_VIEW_VERSION: {
if (uiStore.stateIsDirty) {
const confirmModal = await message.confirm(
locale.baseText('generic.unsavedWork.confirmMessage.message'),
{
title: locale.baseText('generic.unsavedWork.confirmMessage.headline'),
type: 'warning',
confirmButtonText: locale.baseText(
'generic.unsavedWork.confirmMessage.confirmButtonText',
),
cancelButtonText: locale.baseText(
'generic.unsavedWork.confirmMessage.cancelButtonText',
),
showClose: true,
},
);
if (confirmModal === MODAL_CONFIRM) {
await onSaveButtonClick();
} else if (confirmModal === MODAL_CLOSE) {
return;
}
}
if (nodeViewVersion.value === '1') {
nodeViewVersion.value = '2';
} else {
nodeViewVersion.value = '1';
}
break;
}
case WORKFLOW_MENU_ACTIONS.DELETE: {
const deleteConfirmed = await message.confirm(
locale.baseText('mainSidebar.confirmMessage.workflowDelete.message', {