mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-02 07:01:30 -08:00
clean up impl
This commit is contained in:
parent
97280329b2
commit
1461a50ee5
|
@ -62,3 +62,5 @@ export const REQUEST_NODE_FORM_URL = 'https://n8n-community.typeform.com/to/K1fB
|
||||||
// General
|
// General
|
||||||
export const INSTANCE_ID_HEADER = 'n8n-instance-id';
|
export const INSTANCE_ID_HEADER = 'n8n-instance-id';
|
||||||
export const WAIT_TIME_UNLIMITED = '3000-01-01T00:00:00.000Z';
|
export const WAIT_TIME_UNLIMITED = '3000-01-01T00:00:00.000Z';
|
||||||
|
|
||||||
|
export const JSPLUMB_FLOWCHART_STUB = 60;
|
||||||
|
|
|
@ -111,7 +111,7 @@ import {
|
||||||
} from 'jsplumb';
|
} from 'jsplumb';
|
||||||
import { MessageBoxInputData } from 'element-ui/types/message-box';
|
import { MessageBoxInputData } from 'element-ui/types/message-box';
|
||||||
import { jsPlumb, Endpoint, OnConnectionBindInfo } from 'jsplumb';
|
import { jsPlumb, Endpoint, OnConnectionBindInfo } from 'jsplumb';
|
||||||
import { NODE_NAME_PREFIX, PLACEHOLDER_EMPTY_WORKFLOW_ID, START_NODE_TYPE } from '@/constants';
|
import { JSPLUMB_FLOWCHART_STUB, NODE_NAME_PREFIX, PLACEHOLDER_EMPTY_WORKFLOW_ID, START_NODE_TYPE } from '@/constants';
|
||||||
import { copyPaste } from '@/components/mixins/copyPaste';
|
import { copyPaste } from '@/components/mixins/copyPaste';
|
||||||
import { externalHooks } from '@/components/mixins/externalHooks';
|
import { externalHooks } from '@/components/mixins/externalHooks';
|
||||||
import { genericHelpers } from '@/components/mixins/genericHelpers';
|
import { genericHelpers } from '@/components/mixins/genericHelpers';
|
||||||
|
@ -132,7 +132,7 @@ import NodeCreator from '@/components/NodeCreator/NodeCreator.vue';
|
||||||
import NodeSettings from '@/components/NodeSettings.vue';
|
import NodeSettings from '@/components/NodeSettings.vue';
|
||||||
import RunData from '@/components/RunData.vue';
|
import RunData from '@/components/RunData.vue';
|
||||||
|
|
||||||
import { getLeftmostTopNode, getWorkflowCorners, scaleSmaller, scaleBigger, scaleReset, addOrRemoveMidpointArrow } from './helpers';
|
import { getLeftmostTopNode, getWorkflowCorners, scaleSmaller, scaleBigger, scaleReset, addOrRemoveMidpointArrow, addEndpointArrow, getDefaultOverlays } from './helpers';
|
||||||
|
|
||||||
import mixins from 'vue-typed-mixins';
|
import mixins from 'vue-typed-mixins';
|
||||||
import { v4 as uuidv4} from 'uuid';
|
import { v4 as uuidv4} from 'uuid';
|
||||||
|
@ -1312,27 +1312,7 @@ export default mixins(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
initNodeView () {
|
initNodeView () {
|
||||||
const connectionOverlays: OverlaySpec[] = [
|
|
||||||
[
|
|
||||||
'Arrow',
|
|
||||||
{
|
|
||||||
id: 'endpoint-arrow',
|
|
||||||
location: 1,
|
|
||||||
width: 12,
|
|
||||||
foldback: 1,
|
|
||||||
length: 10,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'Label',
|
|
||||||
{
|
|
||||||
id: 'drop-add-node',
|
|
||||||
label: 'Drop connection<br />to create node',
|
|
||||||
cssClass: 'drop-add-node-label',
|
|
||||||
location: 0.5,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
this.instance.importDefaults({
|
this.instance.importDefaults({
|
||||||
Connector: ['Bezier', { curviness: 150 }],
|
Connector: ['Bezier', { curviness: 150 }],
|
||||||
|
@ -1342,7 +1322,7 @@ export default mixins(
|
||||||
EndpointStyle: { radius: 9, fill: '#acd', stroke: 'red' },
|
EndpointStyle: { radius: 9, fill: '#acd', stroke: 'red' },
|
||||||
HoverPaintStyle: { stroke: '#ff6d5a', lineWidth: 4 },
|
HoverPaintStyle: { stroke: '#ff6d5a', lineWidth: 4 },
|
||||||
EndpointHoverStyle: { fill: '#ff6d5a', stroke: '#acd' },
|
EndpointHoverStyle: { fill: '#ff6d5a', stroke: '#acd' },
|
||||||
ConnectionOverlays: connectionOverlays,
|
ConnectionOverlays: getDefaultOverlays(),
|
||||||
Container: '#node-view',
|
Container: '#node-view',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1362,17 +1342,9 @@ export default mixins(
|
||||||
});
|
});
|
||||||
|
|
||||||
this.instance.bind('connection', (info: OnConnectionBindInfo) => {
|
this.instance.bind('connection', (info: OnConnectionBindInfo) => {
|
||||||
info.connection.setConnector(['Flowchart', { cornerRadius: 8, stub: 60, gap: 5, alwaysRespectStubs: false}]);
|
info.connection.setConnector(['Flowchart', { cornerRadius: 8, stub: JSPLUMB_FLOWCHART_STUB, gap: 5, alwaysRespectStubs: true}]);
|
||||||
info.connection.addOverlay([
|
|
||||||
'Arrow',
|
addEndpointArrow(info.connection);
|
||||||
{
|
|
||||||
id: 'endpoint-arrow',
|
|
||||||
location: 1,
|
|
||||||
width: 12,
|
|
||||||
foldback: 1,
|
|
||||||
length: 10,
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
addOrRemoveMidpointArrow(info.connection);
|
addOrRemoveMidpointArrow(info.connection);
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
import { JSPLUMB_FLOWCHART_STUB } from "@/constants";
|
||||||
import { INodeUi, IZoomConfig } from "@/Interface";
|
import { INodeUi, IZoomConfig } from "@/Interface";
|
||||||
import { Connection } from "jsplumb";
|
import { Connection, OverlaySpec } from "jsplumb";
|
||||||
|
|
||||||
interface ICorners {
|
interface ICorners {
|
||||||
minX: number;
|
minX: number;
|
||||||
|
@ -85,10 +86,48 @@ export const scaleReset = (config: IZoomConfig): IZoomConfig => {
|
||||||
return config;
|
return config;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getDefaultOverlays = (): OverlaySpec[] => ([
|
||||||
|
[
|
||||||
|
'Arrow',
|
||||||
|
{
|
||||||
|
id: 'endpoint-arrow',
|
||||||
|
location: 1,
|
||||||
|
width: 12,
|
||||||
|
foldback: 1,
|
||||||
|
length: 10,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'Label',
|
||||||
|
{
|
||||||
|
id: 'drop-add-node',
|
||||||
|
label: 'Drop connection<br />to create node',
|
||||||
|
cssClass: 'drop-add-node-label',
|
||||||
|
location: 0.5,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
export const addEndpointArrow = (connection: Connection) => {
|
||||||
|
const hasArrow = !!connection.getOverlay('midpoint-arrow');
|
||||||
|
if (!hasArrow) {
|
||||||
|
connection.addOverlay([
|
||||||
|
'Arrow',
|
||||||
|
{
|
||||||
|
id: 'endpoint-arrow',
|
||||||
|
location: 1,
|
||||||
|
width: 12,
|
||||||
|
foldback: 1,
|
||||||
|
length: 10,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const addOrRemoveMidpointArrow = (connection: Connection) => {
|
export const addOrRemoveMidpointArrow = (connection: Connection) => {
|
||||||
const sourceEndpoint = connection.endpoints[0];
|
const sourceEndpoint = connection.endpoints[0];
|
||||||
const targetEndpoint = connection.endpoints[1];
|
const targetEndpoint = connection.endpoints[1];
|
||||||
const requiresArrow = sourceEndpoint.anchor.lastReturnValue[0] >= targetEndpoint.anchor.lastReturnValue[0];
|
const requiresArrow = sourceEndpoint.anchor.lastReturnValue[0] >= (targetEndpoint.anchor.lastReturnValue[0] - JSPLUMB_FLOWCHART_STUB);
|
||||||
|
|
||||||
const hasArrow = !!connection.getOverlay('midpoint-arrow');
|
const hasArrow = !!connection.getOverlay('midpoint-arrow');
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue