mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
feat: Add workflow data reset action (#4618)
* feat: add workflow data reset action * fix: remove console.log * chore: fix linting issues
This commit is contained in:
parent
f7a9ef9116
commit
0daa36c197
|
@ -9,8 +9,6 @@ import {useSettingsStore} from "@/stores/settings";
|
||||||
import {defineStore} from "pinia";
|
import {defineStore} from "pinia";
|
||||||
import {useWorkflowsStore} from "@/stores/workflows";
|
import {useWorkflowsStore} from "@/stores/workflows";
|
||||||
|
|
||||||
// @TODO Move to workflows store as part of workflows store refactoring
|
|
||||||
//
|
|
||||||
export const useWorkflowsEEStore = defineStore(STORES.WORKFLOWS_EE, {
|
export const useWorkflowsEEStore = defineStore(STORES.WORKFLOWS_EE, {
|
||||||
state() { return {}; },
|
state() { return {}; },
|
||||||
actions: {
|
actions: {
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
import { DEFAULT_NEW_WORKFLOW_NAME, DUPLICATE_POSTFFIX, MAX_WORKFLOW_NAME_LENGTH, PLACEHOLDER_EMPTY_WORKFLOW_ID, STORES } from "@/constants";
|
import {
|
||||||
|
DEFAULT_NEW_WORKFLOW_NAME,
|
||||||
|
DUPLICATE_POSTFFIX,
|
||||||
|
EnterpriseEditionFeature,
|
||||||
|
MAX_WORKFLOW_NAME_LENGTH,
|
||||||
|
PLACEHOLDER_EMPTY_WORKFLOW_ID,
|
||||||
|
STORES,
|
||||||
|
} from "@/constants";
|
||||||
import {
|
import {
|
||||||
IExecutionResponse,
|
IExecutionResponse,
|
||||||
IExecutionsCurrentSummaryExtended,
|
IExecutionsCurrentSummaryExtended,
|
||||||
|
@ -13,34 +20,59 @@ import {
|
||||||
IWorkflowsMap,
|
IWorkflowsMap,
|
||||||
WorkflowsState,
|
WorkflowsState,
|
||||||
} from "@/Interface";
|
} from "@/Interface";
|
||||||
import { defineStore } from "pinia";
|
import {defineStore} from "pinia";
|
||||||
import { IConnection, IConnections, IDataObject, INode, INodeConnections, INodeCredentials, INodeCredentialsDetails, INodeExecutionData, INodeIssueData, IPinData, IRunData, ITaskData, IWorkflowSettings } from 'n8n-workflow';
|
import {
|
||||||
|
IConnection,
|
||||||
|
IConnections,
|
||||||
|
IDataObject,
|
||||||
|
INode,
|
||||||
|
INodeConnections,
|
||||||
|
INodeCredentials,
|
||||||
|
INodeCredentialsDetails,
|
||||||
|
INodeExecutionData,
|
||||||
|
INodeIssueData,
|
||||||
|
IPinData,
|
||||||
|
IRunData,
|
||||||
|
ITaskData,
|
||||||
|
IWorkflowSettings,
|
||||||
|
} from 'n8n-workflow';
|
||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
import { useRootStore } from "./n8nRootStore";
|
import {useRootStore} from "./n8nRootStore";
|
||||||
import { getActiveWorkflows, getCurrentExecutions, getFinishedExecutions, getNewWorkflow, getWorkflows } from "@/api/workflows";
|
import {
|
||||||
import { useUIStore } from "./ui";
|
getActiveWorkflows,
|
||||||
import { getPairedItemsMapping } from "@/pairedItemUtils";
|
getCurrentExecutions,
|
||||||
import { dataPinningEventBus } from "@/event-bus/data-pinning-event-bus";
|
getFinishedExecutions,
|
||||||
import { isJsonKeyObject } from "@/utils";
|
getNewWorkflow,
|
||||||
import { stringSizeInBytes } from "@/components/helpers";
|
getWorkflows,
|
||||||
import { useNDVStore } from "./ndv";
|
} from "@/api/workflows";
|
||||||
import { useNodeTypesStore } from "./nodeTypes";
|
import {useUIStore} from "./ui";
|
||||||
|
import {getPairedItemsMapping} from "@/pairedItemUtils";
|
||||||
|
import {dataPinningEventBus} from "@/event-bus/data-pinning-event-bus";
|
||||||
|
import {isJsonKeyObject} from "@/utils";
|
||||||
|
import {stringSizeInBytes} from "@/components/helpers";
|
||||||
|
import {useNDVStore} from "./ndv";
|
||||||
|
import {useNodeTypesStore} from "./nodeTypes";
|
||||||
|
import {useWorkflowsEEStore} from "@/stores/workflows.ee";
|
||||||
|
import {useUsersStore} from "@/stores/users";
|
||||||
|
import {useSettingsStore} from "@/stores/settings";
|
||||||
|
|
||||||
|
const createEmptyWorkflow = (): IWorkflowDb => ({
|
||||||
|
id: PLACEHOLDER_EMPTY_WORKFLOW_ID,
|
||||||
|
name: '',
|
||||||
|
active: false,
|
||||||
|
createdAt: -1,
|
||||||
|
updatedAt: -1,
|
||||||
|
connections: {},
|
||||||
|
nodes: [],
|
||||||
|
settings: {},
|
||||||
|
tags: [],
|
||||||
|
pinData: {},
|
||||||
|
hash: '',
|
||||||
|
});
|
||||||
|
|
||||||
export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, {
|
export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, {
|
||||||
state: (): WorkflowsState => ({
|
state: (): WorkflowsState => ({
|
||||||
workflow: {
|
workflow: createEmptyWorkflow(),
|
||||||
id: PLACEHOLDER_EMPTY_WORKFLOW_ID,
|
|
||||||
name: '',
|
|
||||||
active: false,
|
|
||||||
createdAt: -1,
|
|
||||||
updatedAt: -1,
|
|
||||||
connections: {},
|
|
||||||
nodes: [],
|
|
||||||
settings: {},
|
|
||||||
tags: [],
|
|
||||||
pinData: {},
|
|
||||||
hash: '',
|
|
||||||
},
|
|
||||||
activeWorkflows: [],
|
activeWorkflows: [],
|
||||||
activeExecutions: [],
|
activeExecutions: [],
|
||||||
currentWorkflowExecutions: [],
|
currentWorkflowExecutions: [],
|
||||||
|
@ -199,6 +231,8 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, {
|
||||||
},
|
},
|
||||||
|
|
||||||
async getNewWorkflowData(name?: string): Promise<INewWorkflowData> {
|
async getNewWorkflowData(name?: string): Promise<INewWorkflowData> {
|
||||||
|
const workflowsEEStore = useWorkflowsEEStore();
|
||||||
|
|
||||||
let workflowData = {
|
let workflowData = {
|
||||||
name: '',
|
name: '',
|
||||||
onboardingFlowEnabled: false,
|
onboardingFlowEnabled: false,
|
||||||
|
@ -213,9 +247,21 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setWorkflowName({ newName: workflowData.name, setStateDirty: false });
|
this.setWorkflowName({ newName: workflowData.name, setStateDirty: false });
|
||||||
|
|
||||||
return workflowData;
|
return workflowData;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
resetWorkflow() {
|
||||||
|
const usersStore = useUsersStore();
|
||||||
|
const settingsStore = useSettingsStore();
|
||||||
|
|
||||||
|
this.workflow = createEmptyWorkflow();
|
||||||
|
|
||||||
|
if (settingsStore.isEnterpriseFeatureEnabled(EnterpriseEditionFeature.WorkflowSharing)) {
|
||||||
|
Vue.set(this.workflow, 'ownedBy', usersStore.currentUser);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
setWorkflowId (id: string): void {
|
setWorkflowId (id: string): void {
|
||||||
this.workflow.id = id === 'new' ? PLACEHOLDER_EMPTY_WORKFLOW_ID : id;
|
this.workflow.id = id === 'new' ? PLACEHOLDER_EMPTY_WORKFLOW_ID : id;
|
||||||
},
|
},
|
||||||
|
|
|
@ -841,7 +841,6 @@ export default mixins(
|
||||||
this.workflowsStore.setWorkflowPinData(data.pinData || {});
|
this.workflowsStore.setWorkflowPinData(data.pinData || {});
|
||||||
this.workflowsStore.setWorkflowHash(data.hash);
|
this.workflowsStore.setWorkflowHash(data.hash);
|
||||||
|
|
||||||
// @TODO
|
|
||||||
this.workflowsStore.addWorkflow({
|
this.workflowsStore.addWorkflow({
|
||||||
id: data.id,
|
id: data.id,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
|
@ -853,15 +852,22 @@ export default mixins(
|
||||||
updatedAt: data.updatedAt,
|
updatedAt: data.updatedAt,
|
||||||
nodes: data.nodes,
|
nodes: data.nodes,
|
||||||
connections: data.connections,
|
connections: data.connections,
|
||||||
|
hash: '',
|
||||||
});
|
});
|
||||||
this.workflowsEEStore.setWorkflowOwnedBy({
|
|
||||||
workflowId: data.id,
|
if (data.ownedBy) {
|
||||||
ownedBy: data.ownedBy,
|
this.workflowsEEStore.setWorkflowOwnedBy({
|
||||||
});
|
workflowId: data.id,
|
||||||
this.workflowsEEStore.setWorkflowSharedWith({
|
ownedBy: data.ownedBy,
|
||||||
workflowId: data.id,
|
});
|
||||||
sharedWith: data.sharedWith,
|
}
|
||||||
});
|
|
||||||
|
if (data.sharedWith) {
|
||||||
|
this.workflowsEEStore.setWorkflowSharedWith({
|
||||||
|
workflowId: data.id,
|
||||||
|
sharedWith: data.sharedWith,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (data.usedCredentials) {
|
if (data.usedCredentials) {
|
||||||
this.credentialsStore.addCredentials(data.usedCredentials);
|
this.credentialsStore.addCredentials(data.usedCredentials);
|
||||||
|
@ -3084,6 +3090,8 @@ export default mixins(
|
||||||
return Promise.resolve(data);
|
return Promise.resolve(data);
|
||||||
},
|
},
|
||||||
resetWorkspace() {
|
resetWorkspace() {
|
||||||
|
this.workflowsStore.resetWorkflow();
|
||||||
|
|
||||||
// Reset nodes
|
// Reset nodes
|
||||||
this.deleteEveryEndpoint();
|
this.deleteEveryEndpoint();
|
||||||
|
|
||||||
|
@ -3104,7 +3112,6 @@ export default mixins(
|
||||||
this.workflowsStore.resetAllNodesIssues();
|
this.workflowsStore.resetAllNodesIssues();
|
||||||
// vm.$forceUpdate();
|
// vm.$forceUpdate();
|
||||||
|
|
||||||
this.workflowsStore.$patch({ workflow: {} });
|
|
||||||
this.workflowsStore.setActive(false);
|
this.workflowsStore.setActive(false);
|
||||||
this.workflowsStore.setWorkflowId(PLACEHOLDER_EMPTY_WORKFLOW_ID);
|
this.workflowsStore.setWorkflowId(PLACEHOLDER_EMPTY_WORKFLOW_ID);
|
||||||
this.workflowsStore.setWorkflowName({ newName: '', setStateDirty: false });
|
this.workflowsStore.setWorkflowName({ newName: '', setStateDirty: false });
|
||||||
|
|
Loading…
Reference in a new issue