diff --git a/packages/editor-ui/src/Interface.ts b/packages/editor-ui/src/Interface.ts
index 881e938b60..2f3973b848 100644
--- a/packages/editor-ui/src/Interface.ts
+++ b/packages/editor-ui/src/Interface.ts
@@ -417,3 +417,5 @@ export interface ITimeoutHMS {
minutes: number;
seconds: number;
}
+
+export type WorkflowTitleStatus = 'EXECUTING' | 'IDLE' | 'ERROR';
diff --git a/packages/editor-ui/src/components/MainHeader.vue b/packages/editor-ui/src/components/MainHeader.vue
index ae4aac9c49..a6d5710156 100644
--- a/packages/editor-ui/src/components/MainHeader.vue
+++ b/packages/editor-ui/src/components/MainHeader.vue
@@ -84,20 +84,20 @@ import { genericHelpers } from '@/components/mixins/genericHelpers';
import { pushConnection } from '@/components/mixins/pushConnection';
import { restApi } from '@/components/mixins/restApi';
import { showMessage } from '@/components/mixins/showMessage';
+import { titleChange } from '@/components/mixins/titleChange';
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
import { saveAs } from 'file-saver';
import mixins from 'vue-typed-mixins';
-import titleChange from './mixins/titleChange';
export default mixins(
genericHelpers,
pushConnection,
restApi,
showMessage,
+ titleChange,
workflowHelpers,
- titleChange
)
.extend({
name: 'MainHeader',
@@ -157,7 +157,7 @@ export default mixins(
},
methods: {
async openWorkflow (workflowId: string) {
- titleChange.set(workflowId, 'IDLE');
+ this.$titleSet(this.workflowName, 'IDLE');
// Change to other workflow
this.$router.push({
name: 'NodeViewExisting',
diff --git a/packages/editor-ui/src/components/MainSidebar.vue b/packages/editor-ui/src/components/MainSidebar.vue
index 85455c1f37..a54b530588 100644
--- a/packages/editor-ui/src/components/MainSidebar.vue
+++ b/packages/editor-ui/src/components/MainSidebar.vue
@@ -179,6 +179,7 @@ import WorkflowSettings from '@/components/WorkflowSettings.vue';
import { genericHelpers } from '@/components/mixins/genericHelpers';
import { restApi } from '@/components/mixins/restApi';
import { showMessage } from '@/components/mixins/showMessage';
+import { titleChange } from '@/components/mixins/titleChange';
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
import { workflowSave } from '@/components/mixins/workflowSave';
import { workflowRun } from '@/components/mixins/workflowRun';
@@ -186,16 +187,15 @@ import { workflowRun } from '@/components/mixins/workflowRun';
import { saveAs } from 'file-saver';
import mixins from 'vue-typed-mixins';
-import titleChange from './mixins/titleChange';
export default mixins(
genericHelpers,
restApi,
showMessage,
+ titleChange,
workflowHelpers,
workflowRun,
workflowSave,
- titleChange
)
.extend({
name: 'MainHeader',
@@ -420,7 +420,7 @@ export default mixins(
return;
}
// Reset tab title since workflow is deleted.
- titleChange.reset();
+ this.$titleReset();
this.$showMessage({
title: 'Workflow got deleted',
message: `The workflow "${this.workflowName}" got deleted!`,
diff --git a/packages/editor-ui/src/components/WorkflowOpen.vue b/packages/editor-ui/src/components/WorkflowOpen.vue
index 9383363b80..abedea5b4c 100644
--- a/packages/editor-ui/src/components/WorkflowOpen.vue
+++ b/packages/editor-ui/src/components/WorkflowOpen.vue
@@ -34,16 +34,16 @@ import WorkflowActivator from '@/components/WorkflowActivator.vue';
import { restApi } from '@/components/mixins/restApi';
import { genericHelpers } from '@/components/mixins/genericHelpers';
import { showMessage } from '@/components/mixins/showMessage';
+import { titleChange } from '@/components/mixins/titleChange';
import { IWorkflowShortResponse } from '@/Interface';
import mixins from 'vue-typed-mixins';
-import titleChange from './mixins/titleChange';
export default mixins(
genericHelpers,
restApi,
showMessage,
- titleChange
+ titleChange,
).extend({
name: 'WorkflowOpen',
props: [
@@ -91,7 +91,7 @@ export default mixins(
},
openWorkflow (data: IWorkflowShortResponse, column: any) { // tslint:disable-line:no-any
if (column.label !== 'Active') {
- titleChange.set(data.name, 'IDLE');
+ this.$titleSet(data.name, 'IDLE');
this.$emit('openWorkflow', data.id);
}
},
diff --git a/packages/editor-ui/src/components/mixins/pushConnection.ts b/packages/editor-ui/src/components/mixins/pushConnection.ts
index bfc7318204..ebda8f837a 100644
--- a/packages/editor-ui/src/components/mixins/pushConnection.ts
+++ b/packages/editor-ui/src/components/mixins/pushConnection.ts
@@ -10,14 +10,14 @@ import {
import { nodeHelpers } from '@/components/mixins/nodeHelpers';
import { showMessage } from '@/components/mixins/showMessage';
+import { titleChange } from '@/components/mixins/titleChange';
import mixins from 'vue-typed-mixins';
-import titleChange from './titleChange';
export const pushConnection = mixins(
nodeHelpers,
showMessage,
- titleChange
+ titleChange,
)
.extend({
data () {
@@ -149,7 +149,6 @@ export const pushConnection = mixins(
*/
pushMessageReceived (event: Event, isRetry?: boolean): boolean {
const retryAttempts = 5;
- const workflow = this.getWorkflow();
let receivedData: IPushData;
try {
// @ts-ignore
@@ -203,13 +202,19 @@ export const pushConnection = mixins(
const runDataExecuted = pushData.data;
+ console.log('..pushData..');
+ console.log(pushData);
+
+
+ // @ts-ignore
+ const workflow = this.getWorkflow();
if (runDataExecuted.finished !== true) {
// There was a problem with executing the workflow
let errorMessage = 'There was a problem executing the workflow!';
if (runDataExecuted.data.resultData.error && runDataExecuted.data.resultData.error.message) {
errorMessage = `There was a problem executing the workflow:
"${runDataExecuted.data.resultData.error.message}"`;
}
- titleChange.set(workflow.name, 'ERROR');
+ this.$titleSet(workflow.name, 'ERROR');
this.$showMessage({
title: 'Problem executing workflow',
message: errorMessage,
@@ -217,7 +222,7 @@ export const pushConnection = mixins(
});
} else {
// Workflow did execute without a problem
- titleChange.set(workflow.name, 'IDLE');
+ this.$titleSet(workflow.name, 'IDLE');
this.$showMessage({
title: 'Workflow got executed',
message: 'Workflow did get executed successfully!',
diff --git a/packages/editor-ui/src/components/mixins/titleChange.ts b/packages/editor-ui/src/components/mixins/titleChange.ts
index eb931b2449..0f7a0bd788 100644
--- a/packages/editor-ui/src/components/mixins/titleChange.ts
+++ b/packages/editor-ui/src/components/mixins/titleChange.ts
@@ -1,25 +1,31 @@
-type Status = 'EXECUTING' | 'IDLE' | 'ERROR';
+import Vue from 'vue';
-export default {
- /**
- * Change title of n8n tab
- * @param workflow Name of workflow
- * @param status Status of workflow
- */
- set (workflow : string, status : Status) {
- if (status === 'EXECUTING') {
- window.document.title = `n8n - 🔄 ${workflow}}`;
- }
- else if (status === 'IDLE') {
- window.document.title = `n8n - ▶️ ${workflow}`;
- }
- else {
- window.document.title = `n8n - ⚠️ ${workflow}`;
- }
-
- },
+import {
+ WorkflowTitleStatus,
+} from '../../Interface';
- reset () {
- document.title = `n8n - Workflow Automation`;
- }
-};
\ No newline at end of file
+export const titleChange = Vue.extend({
+ methods: {
+ /**
+ * Change title of n8n tab
+ *
+ * @param {string} workflow Name of workflow
+ * @param {WorkflowTitleStatus} status Status of workflow
+ */
+ $titleSet(workflow: string, status: WorkflowTitleStatus) {
+ let icon = '⚠️';
+ if (status === 'EXECUTING') {
+ icon = '🔄';
+ } else if (status === 'IDLE') {
+ icon = '▶️';
+ }
+
+ window.document.title = `n8n - ${icon} ${workflow}`;
+ },
+
+ $titleReset() {
+ document.title = `n8n - Workflow Automation`;
+ },
+
+ },
+});
diff --git a/packages/editor-ui/src/components/mixins/workflowRun.ts b/packages/editor-ui/src/components/mixins/workflowRun.ts
index 5b064a308c..08ac66a110 100644
--- a/packages/editor-ui/src/components/mixins/workflowRun.ts
+++ b/packages/editor-ui/src/components/mixins/workflowRun.ts
@@ -14,13 +14,12 @@ import { restApi } from '@/components/mixins/restApi';
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
import mixins from 'vue-typed-mixins';
-import titleChange from './titleChange';
-import { title } from 'process';
+import { titleChange } from './titleChange';
export const workflowRun = mixins(
restApi,
workflowHelpers,
- titleChange
+ titleChange,
).extend({
methods: {
// Starts to executes a workflow on server.
@@ -59,8 +58,8 @@ export const workflowRun = mixins(
}
const workflow = this.getWorkflow();
- titleChange.set(workflow.name, 'EXECUTING');
-
+ this.$titleSet(workflow.name as string, 'EXECUTING');
+
try {
// Check first if the workflow has any issues before execute it
const issuesExist = this.$store.getters.nodesIssuesExist;
@@ -83,7 +82,7 @@ export const workflowRun = mixins(
type: 'error',
duration: 0,
});
- titleChange.set(workflow.name, 'ERROR');
+ this.$titleSet(workflow.name as string, 'ERROR');
return;
}
}
@@ -170,10 +169,10 @@ export const workflowRun = mixins(
},
};
this.$store.commit('setWorkflowExecutionData', executionData);
-
+
return await this.runWorkflowApi(startRunData);
} catch (error) {
- titleChange.set(workflow.name, 'ERROR');
+ this.$titleSet(workflow.name as string, 'ERROR');
this.$showError(error, 'Problem running workflow', 'There was a problem running the workflow:');
return undefined;
}
diff --git a/packages/editor-ui/src/main.ts b/packages/editor-ui/src/main.ts
index 0caf2905cb..37784f7e89 100644
--- a/packages/editor-ui/src/main.ts
+++ b/packages/editor-ui/src/main.ts
@@ -15,8 +15,6 @@ import './n8n-theme.scss';
import App from '@/App.vue';
import router from './router';
-import titleChange from './components/mixins/titleChange';
-
import { library } from '@fortawesome/fontawesome-svg-core';
import {
faAngleDoubleLeft,
@@ -94,7 +92,6 @@ import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
import { store } from './store';
Vue.use(ElementUI, { locale });
-Vue.mixin(titleChange);
library.add(faAngleDoubleLeft);
library.add(faAngleDown);
diff --git a/packages/editor-ui/src/views/NodeView.vue b/packages/editor-ui/src/views/NodeView.vue
index b16d4933ac..dd4c756557 100644
--- a/packages/editor-ui/src/views/NodeView.vue
+++ b/packages/editor-ui/src/views/NodeView.vue
@@ -115,6 +115,8 @@ import { mouseSelect } from '@/components/mixins/mouseSelect';
import { moveNodeWorkflow } from '@/components/mixins/moveNodeWorkflow';
import { restApi } from '@/components/mixins/restApi';
import { showMessage } from '@/components/mixins/showMessage';
+import { titleChange } from '@/components/mixins/titleChange';
+
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
import { workflowRun } from '@/components/mixins/workflowRun';
@@ -157,7 +159,6 @@ import {
IWorkflowDataUpdate,
XYPositon,
} from '../Interface';
-import titleChange from '../components/mixins/titleChange';
export default mixins(
copyPaste,
@@ -166,9 +167,9 @@ export default mixins(
moveNodeWorkflow,
restApi,
showMessage,
+ titleChange,
workflowHelpers,
workflowRun,
- titleChange
)
.extend({
name: 'NodeView',
@@ -1326,8 +1327,8 @@ export default mixins(
}
if (workflowId !== null) {
- let workflow = await this.restApi().getWorkflow(workflowId);
- titleChange.set(workflow.name, 'IDLE');
+ const workflow = await this.restApi().getWorkflow(workflowId);
+ this.$titleSet(workflow.name, 'IDLE');
// Open existing workflow
await this.openWorkflow(workflowId);
} else {