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,13 +443,28 @@ export default mixins(
} else if (key === 'workflow-settings') {
this.workflowSettingsDialogVisible = true;
} else if (key === 'workflow-new') {
this.$router.push({ name: 'NodeViewNew' });
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.$showMessage({
title: 'Workflow created',
message: 'A new workflow got created!',
type: 'success',
});
this.$showMessage({
title: 'Workflow created',
message: 'A new workflow got created!',
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') {
this.credentialOpenDialogVisible = true;
} else if (key === 'credentials-new') {

View file

@ -33,6 +33,7 @@ import WorkflowActivator from '@/components/WorkflowActivator.vue';
import { restApi } from '@/components/mixins/restApi';
import { genericHelpers } from '@/components/mixins/genericHelpers';
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
import { showMessage } from '@/components/mixins/showMessage';
import { IWorkflowShortResponse } from '@/Interface';
@ -42,6 +43,7 @@ export default mixins(
genericHelpers,
restApi,
showMessage,
workflowHelpers,
).extend({
name: 'WorkflowOpen',
props: [
@ -87,9 +89,20 @@ export default mixins(
this.$emit('closeDialog');
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') {
this.$emit('openWorkflow', data.id);
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);
}
} else {
this.$emit('openWorkflow', data.id);
}
}
},
openDialog () {

View file

@ -22,6 +22,7 @@ import {
INodeTypesMaxCount,
INodeUi,
IWorkflowData,
IWorkflowDb,
IWorkflowDataUpdate,
XYPositon,
} from '../../Interface';
@ -30,6 +31,8 @@ import { restApi } from '@/components/mixins/restApi';
import { nodeHelpers } from '@/components/mixins/nodeHelpers';
import { showMessage } from '@/components/mixins/showMessage';
import { isEqual } from 'lodash';
import mixins from 'vue-typed-mixins';
export const workflowHelpers = mixins(
@ -478,5 +481,31 @@ export const workflowHelpers = mixins(
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 { debounce } from 'lodash';
import { debounce, isEqual } from 'lodash';
import axios from 'axios';
import {
IConnection,
@ -330,6 +330,8 @@ export default mixins(
this.$store.commit('setWorkflowSettings', data.settings || {});
await this.addNodes(data.nodes, data.connections);
return data;
},
mouseDown (e: MouseEvent) {
// Save the location of the mouse click
@ -1309,6 +1311,7 @@ export default mixins(
if (this.$route.name === 'ExecutionById') {
// Load an execution
const executionId = this.$route.params.id;
await this.openExecution(executionId);
} else {
// Load a workflow
@ -1316,7 +1319,6 @@ export default mixins(
if (this.$route.params.name) {
workflowId = this.$route.params.name;
}
if (workflowId !== null) {
// Open existing workflow
await this.openWorkflow(workflowId);
@ -1328,10 +1330,22 @@ export default mixins(
document.addEventListener('keydown', this.keyDown);
document.addEventListener('keyup', this.keyUp);
window.onbeforeunload = this.confirmSave;
},
async confirmSave(e: Event) {
window.confirm();
window.addEventListener("beforeunload", (e) => {
let workflowId = null as string | null;
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) {
if (addVisualConnection === true) {
@ -1876,13 +1890,13 @@ export default mixins(
async mounted () {
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) => {
const workflowData = await this.getWorkflowDataFromUrl(data.url as string);
if (workflowData !== undefined) {
await this.importWorkflowData(workflowData);
const resData = await this.importWorkflowData(workflowData);
}
});