Everything works except refresh

This commit is contained in:
Erin 2020-07-09 16:54:50 -04:00
parent f4022c6cd5
commit ad1228e0ea
4 changed files with 87 additions and 16 deletions

View file

@ -443,6 +443,11 @@ export default mixins(
} else if (key === 'workflow-settings') { } else if (key === 'workflow-settings') {
this.workflowSettingsDialogVisible = true; this.workflowSettingsDialogVisible = true;
} else if (key === 'workflow-new') { } else if (key === 'workflow-new') {
const workflowId = this.$store.getters.workflowId;
const result = await this.dataHasChanged(workflowId);
if(result) {
const importConfirm = await this.confirmMessage(`When you switch workflows your current workflow changes will be lost.`, 'Save your Changes?', 'warning', 'Yes, switch workflows and forget changes');
if (importConfirm === true) {
this.$router.push({ name: 'NodeViewNew' }); this.$router.push({ name: 'NodeViewNew' });
this.$showMessage({ this.$showMessage({
@ -450,6 +455,16 @@ export default mixins(
message: 'A new workflow got created!', message: 'A new workflow got created!',
type: 'success', type: 'success',
}); });
}
} else {
this.$router.push({ name: 'NodeViewNew' });
this.$showMessage({
title: 'Workflow created',
message: 'A new workflow got created!',
type: 'success',
});
}
} else if (key === 'credentials-open') { } else if (key === 'credentials-open') {
this.credentialOpenDialogVisible = true; this.credentialOpenDialogVisible = true;
} else if (key === 'credentials-new') { } else if (key === 'credentials-new') {

View file

@ -33,6 +33,7 @@ import WorkflowActivator from '@/components/WorkflowActivator.vue';
import { restApi } from '@/components/mixins/restApi'; import { restApi } from '@/components/mixins/restApi';
import { genericHelpers } from '@/components/mixins/genericHelpers'; import { genericHelpers } from '@/components/mixins/genericHelpers';
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
import { showMessage } from '@/components/mixins/showMessage'; import { showMessage } from '@/components/mixins/showMessage';
import { IWorkflowShortResponse } from '@/Interface'; import { IWorkflowShortResponse } from '@/Interface';
@ -42,6 +43,7 @@ export default mixins(
genericHelpers, genericHelpers,
restApi, restApi,
showMessage, showMessage,
workflowHelpers,
).extend({ ).extend({
name: 'WorkflowOpen', name: 'WorkflowOpen',
props: [ props: [
@ -87,10 +89,21 @@ export default mixins(
this.$emit('closeDialog'); this.$emit('closeDialog');
return false; return false;
}, },
openWorkflow (data: IWorkflowShortResponse, column: any) { // tslint:disable-line:no-any async openWorkflow (data: IWorkflowShortResponse, column: any) { // tslint:disable-line:no-any
if (column.label !== 'Active') { if (column.label !== 'Active') {
const workflowId = this.$store.getters.workflowId;
const result = await this.dataHasChanged(workflowId);
if(result) {
const importConfirm = await this.confirmMessage(`When you switch workflows your current workflow changes will be lost.`, 'Save your Changes?', 'warning', 'Yes, switch workflows and forget changes');
if (importConfirm === false) {
return;
} else {
this.$emit('openWorkflow', data.id); this.$emit('openWorkflow', data.id);
} }
} else {
this.$emit('openWorkflow', data.id);
}
}
}, },
openDialog () { openDialog () {
this.isDataLoading = true; this.isDataLoading = true;

View file

@ -22,6 +22,7 @@ import {
INodeTypesMaxCount, INodeTypesMaxCount,
INodeUi, INodeUi,
IWorkflowData, IWorkflowData,
IWorkflowDb,
IWorkflowDataUpdate, IWorkflowDataUpdate,
XYPositon, XYPositon,
} from '../../Interface'; } from '../../Interface';
@ -30,6 +31,8 @@ import { restApi } from '@/components/mixins/restApi';
import { nodeHelpers } from '@/components/mixins/nodeHelpers'; import { nodeHelpers } from '@/components/mixins/nodeHelpers';
import { showMessage } from '@/components/mixins/showMessage'; import { showMessage } from '@/components/mixins/showMessage';
import { isEqual } from 'lodash';
import mixins from 'vue-typed-mixins'; import mixins from 'vue-typed-mixins';
export const workflowHelpers = mixins( export const workflowHelpers = mixins(
@ -478,5 +481,31 @@ export const workflowHelpers = mixins(
node.position[1] += offsetPosition[1]; node.position[1] += offsetPosition[1];
} }
}, },
async dataHasChanged(id: string) {
const currentData = await this.getWorkflowDataToSave();
let data: IWorkflowDb;
data = await this.restApi().getWorkflow(id);
if(data !== undefined) {
console.log(currentData);
console.log(data);
const x = {
nodes: data.nodes,
connections: data.connections,
settings: data.settings,
name: data.name
};
const y = {
nodes: currentData.nodes,
connections: currentData.connections,
settings: currentData.settings,
name: currentData.name
};
return !isEqual(x, y);
}
return true;
},
}, },
}); });

View file

@ -126,7 +126,7 @@ import RunData from '@/components/RunData.vue';
import mixins from 'vue-typed-mixins'; import mixins from 'vue-typed-mixins';
import { debounce } from 'lodash'; import { debounce, isEqual } from 'lodash';
import axios from 'axios'; import axios from 'axios';
import { import {
IConnection, IConnection,
@ -330,6 +330,8 @@ export default mixins(
this.$store.commit('setWorkflowSettings', data.settings || {}); this.$store.commit('setWorkflowSettings', data.settings || {});
await this.addNodes(data.nodes, data.connections); await this.addNodes(data.nodes, data.connections);
return data;
}, },
mouseDown (e: MouseEvent) { mouseDown (e: MouseEvent) {
// Save the location of the mouse click // Save the location of the mouse click
@ -1309,6 +1311,7 @@ export default mixins(
if (this.$route.name === 'ExecutionById') { if (this.$route.name === 'ExecutionById') {
// Load an execution // Load an execution
const executionId = this.$route.params.id; const executionId = this.$route.params.id;
await this.openExecution(executionId); await this.openExecution(executionId);
} else { } else {
// Load a workflow // Load a workflow
@ -1316,7 +1319,6 @@ export default mixins(
if (this.$route.params.name) { if (this.$route.params.name) {
workflowId = this.$route.params.name; workflowId = this.$route.params.name;
} }
if (workflowId !== null) { if (workflowId !== null) {
// Open existing workflow // Open existing workflow
await this.openWorkflow(workflowId); await this.openWorkflow(workflowId);
@ -1328,10 +1330,22 @@ export default mixins(
document.addEventListener('keydown', this.keyDown); document.addEventListener('keydown', this.keyDown);
document.addEventListener('keyup', this.keyUp); document.addEventListener('keyup', this.keyUp);
window.onbeforeunload = this.confirmSave;
}, window.addEventListener("beforeunload", (e) => {
async confirmSave(e: Event) { let workflowId = null as string | null;
window.confirm(); if (this.$route.params.name) {
workflowId = this.$route.params.name;
}
if(workflowId !== null) {
//const dataHasChanged = await this.dataHasChanged(workflowId);
}
const confirmationMessage = 'It looks like you have been editing something. '
+ 'If you leave before saving, your changes will be lost.';
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc.
});
}, },
__addConnection (connection: [IConnection, IConnection], addVisualConnection = false) { __addConnection (connection: [IConnection, IConnection], addVisualConnection = false) {
if (addVisualConnection === true) { if (addVisualConnection === true) {
@ -1876,13 +1890,13 @@ export default mixins(
async mounted () { async mounted () {
this.$root.$on('importWorkflowData', async (data: IDataObject) => { this.$root.$on('importWorkflowData', async (data: IDataObject) => {
await this.importWorkflowData(data.data as IWorkflowDataUpdate); const resData = await this.importWorkflowData(data.data as IWorkflowDataUpdate);
}); });
this.$root.$on('importWorkflowUrl', async (data: IDataObject) => { this.$root.$on('importWorkflowUrl', async (data: IDataObject) => {
const workflowData = await this.getWorkflowDataFromUrl(data.url as string); const workflowData = await this.getWorkflowDataFromUrl(data.url as string);
if (workflowData !== undefined) { if (workflowData !== undefined) {
await this.importWorkflowData(workflowData); const resData = await this.importWorkflowData(workflowData);
} }
}); });