| | |
| | | import { Clipboard } from '@antv/x6-plugin-clipboard'; |
| | | import { Stencil } from '@antv/x6-plugin-stencil'; |
| | | import { History } from '@antv/x6-plugin-history' |
| | | import { commonGraphPorts, commonGraphAttrs } from "./GraphConfig"; |
| | | |
| | | import { Transform } from '@antv/x6-plugin-transform' |
| | | import { commonGraphPorts, commonGraphAttrs, initGraphConnecting, initNodeData } from "./GraphConfig"; |
| | | |
| | | export const GraphComponent = React.forwardRef((props, ref) => { |
| | | const container = useRef(null); |
| | |
| | | function initGrap() { |
| | | ref.current = new Graph({ |
| | | container: container.current, |
| | | // width: document.documentElement.clientWidth, |
| | | // height: document.documentElement.clientHeight, |
| | | width: 200, |
| | | height: 500, |
| | | // grid: 1, |
| | | connecting: { |
| | | snap: true, |
| | | createEdge() { |
| | | return new Shape.Edge({ |
| | | attrs: { |
| | | line: { |
| | | stroke: '#a0a0a0', |
| | | strokeWidth: 1, |
| | | targetMarker: { |
| | | name: 'classic', |
| | | size: 8, |
| | | }, |
| | | }, |
| | | }, |
| | | }) |
| | | }, |
| | | connector: 'smooth', |
| | | allowMulti: true, |
| | | allowPort: true, |
| | | } |
| | | width: document.documentElement.clientWidth, |
| | | height: document.documentElement.clientHeight - 100, |
| | | // width: 200, |
| | | // height: 500, |
| | | connecting: initGraphConnecting, |
| | | }); |
| | | |
| | | const graph = ref.current; |
| | |
| | | label: '订单管理', |
| | | ports: commonGraphPorts, |
| | | attrs: commonGraphAttrs, |
| | | data: initNodeData, |
| | | }); |
| | | |
| | | const rect2 = graph.addNode({ |
| | |
| | | label: '库存管理', |
| | | ports: commonGraphPorts, |
| | | attrs: commonGraphAttrs, |
| | | data: initNodeData, |
| | | }); |
| | | |
| | | graph.use( |
| | |
| | | }), |
| | | ) |
| | | |
| | | graph.use( |
| | | new Transform({ |
| | | resizing: { |
| | | enabled: true |
| | | }, |
| | | }), |
| | | ) |
| | | |
| | | |
| | | graph.fromJSON({ |
| | | "cells": [ |
| | | { |
| | | "shape": "edge", |
| | | "attrs": { |
| | | "line": { |
| | | "stroke": "#A2B1C3", |
| | | "targetMarker": { |
| | | "name": "block", |
| | | "width": 12, |
| | | "height": 8 |
| | | } |
| | | } |
| | | }, |
| | | "id": "2475ea4f-f0e3-4b44-add4-7d4950ddea45", |
| | | "zIndex": 0, |
| | | "source": { |
| | | "cell": "71d8bc90-558f-489f-b432-a03d7af27cdc", |
| | | "port": "port2" |
| | | }, |
| | | "target": { |
| | | "cell": "c5798537-a8a0-4d79-bd76-a4f663492126", |
| | | "port": "port1" |
| | | }, |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "labels": [ |
| | | { |
| | | "attrs": { |
| | | "label": { |
| | | "text": "" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "shape": "edge", |
| | | "attrs": { |
| | | "line": { |
| | | "stroke": "#A2B1C3", |
| | | "targetMarker": { |
| | | "name": "block", |
| | | "width": 12, |
| | | "height": 8 |
| | | } |
| | | } |
| | | }, |
| | | "id": "2c3744b4-45ce-44a6-b169-402eaec24174", |
| | | "zIndex": 0, |
| | | "source": { |
| | | "cell": "c5798537-a8a0-4d79-bd76-a4f663492126", |
| | | "port": "port2" |
| | | }, |
| | | "target": { |
| | | "cell": "3ca188b2-9ffe-4528-ba6e-c1568b6d7fe6", |
| | | "port": "port1" |
| | | }, |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "labels": [ |
| | | { |
| | | "attrs": { |
| | | "label": { |
| | | "text": "" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "shape": "edge", |
| | | "attrs": { |
| | | "line": { |
| | | "stroke": "#A2B1C3", |
| | | "targetMarker": { |
| | | "name": "block", |
| | | "width": 12, |
| | | "height": 8 |
| | | } |
| | | } |
| | | }, |
| | | "id": "56181ccf-a41c-4cd8-82d6-e2a4bde31ba9", |
| | | "zIndex": 0, |
| | | "source": { |
| | | "cell": "3ca188b2-9ffe-4528-ba6e-c1568b6d7fe6", |
| | | "port": "port2" |
| | | }, |
| | | "target": { |
| | | "cell": "63db5ce0-b916-44e4-a924-a79b35afe1d1", |
| | | "port": "port1" |
| | | }, |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": true, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "labels": [ |
| | | { |
| | | "attrs": { |
| | | "label": { |
| | | "text": "true" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "shape": "edge", |
| | | "attrs": { |
| | | "line": { |
| | | "stroke": "#A2B1C3", |
| | | "targetMarker": { |
| | | "name": "block", |
| | | "width": 12, |
| | | "height": 8 |
| | | } |
| | | } |
| | | }, |
| | | "id": "73ca24ef-e9d4-4f18-9f06-ca49ac65962a", |
| | | "zIndex": 0, |
| | | "source": { |
| | | "cell": "cc993d9b-ce11-409d-92c6-7208682dcc8b", |
| | | "port": "port4" |
| | | }, |
| | | "target": { |
| | | "cell": "06d450fc-474e-4b23-b40d-c89fde446b28", |
| | | "port": "port3" |
| | | }, |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "labels": [ |
| | | { |
| | | "attrs": { |
| | | "label": { |
| | | "text": "false" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "shape": "edge", |
| | | "attrs": { |
| | | "line": { |
| | | "stroke": "#A2B1C3", |
| | | "targetMarker": { |
| | | "name": "block", |
| | | "width": 12, |
| | | "height": 8 |
| | | } |
| | | } |
| | | }, |
| | | "id": "84a3a77c-79e8-4cf8-9bab-a72bbfc77f1d", |
| | | "zIndex": 0, |
| | | "source": { |
| | | "cell": "cc993d9b-ce11-409d-92c6-7208682dcc8b", |
| | | "port": "port2" |
| | | }, |
| | | "target": { |
| | | "cell": "cd9da0a4-5c2d-4f1b-9c51-403b32f1ad51", |
| | | "port": "port1" |
| | | }, |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": true, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "labels": [ |
| | | { |
| | | "attrs": { |
| | | "label": { |
| | | "text": "true" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "shape": "edge", |
| | | "attrs": { |
| | | "line": { |
| | | "stroke": "#A2B1C3", |
| | | "targetMarker": { |
| | | "name": "block", |
| | | "width": 12, |
| | | "height": 8 |
| | | } |
| | | } |
| | | }, |
| | | "id": "93d65ae7-f170-466a-92ea-f69614002800", |
| | | "zIndex": 0, |
| | | "source": { |
| | | "cell": "c844f3d1-02a3-47d3-bcb9-51027c1deb1c", |
| | | "port": "port2" |
| | | }, |
| | | "target": { |
| | | "cell": "cc993d9b-ce11-409d-92c6-7208682dcc8b", |
| | | "port": "port1" |
| | | }, |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "labels": [ |
| | | { |
| | | "attrs": { |
| | | "label": { |
| | | "text": "" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "shape": "edge", |
| | | "attrs": { |
| | | "line": { |
| | | "stroke": "#A2B1C3", |
| | | "targetMarker": { |
| | | "name": "block", |
| | | "width": 12, |
| | | "height": 8 |
| | | } |
| | | } |
| | | }, |
| | | "id": "de85103e-80ac-4c88-92de-5bb1a131788c", |
| | | "zIndex": 0, |
| | | "source": { |
| | | "cell": "63db5ce0-b916-44e4-a924-a79b35afe1d1", |
| | | "port": "port2" |
| | | }, |
| | | "target": { |
| | | "cell": "c844f3d1-02a3-47d3-bcb9-51027c1deb1c", |
| | | "port": "port1" |
| | | }, |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "labels": [ |
| | | { |
| | | "attrs": { |
| | | "label": { |
| | | "text": "" |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 60, |
| | | "y": 60 |
| | | }, |
| | | "size": { |
| | | "width": 120, |
| | | "height": 40 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "订单管理" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "strokeWidth": 2, |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "rect", |
| | | "id": "a4962b5d-6ef0-4217-bbf8-742652ffc0ee", |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 1, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 260, |
| | | "y": 390 |
| | | }, |
| | | "size": { |
| | | "width": 120, |
| | | "height": 40 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "库存管理" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "strokeWidth": 2, |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "rect", |
| | | "id": "63db5ce0-b916-44e4-a924-a79b35afe1d1", |
| | | "data": { |
| | | "codeContent": "2222", |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 2, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 270, |
| | | "y": 265 |
| | | }, |
| | | "size": { |
| | | "width": 100, |
| | | "height": 60 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "逻辑判断1" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "path", |
| | | "id": "3ca188b2-9ffe-4528-ba6e-c1568b6d7fe6", |
| | | "data": { |
| | | "codeContent": "逻辑判断1", |
| | | "root": false, |
| | | "isLogic": true, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 3, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 300, |
| | | "y": 30 |
| | | }, |
| | | "size": { |
| | | "width": 80, |
| | | "height": 40 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "程序入口" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "strokeWidth": 2, |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "rect", |
| | | "id": "71d8bc90-558f-489f-b432-a03d7af27cdc", |
| | | "data": { |
| | | "codeContent": null, |
| | | "root": true, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 4, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 300, |
| | | "y": 110 |
| | | }, |
| | | "size": { |
| | | "width": 80, |
| | | "height": 40 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "常用组件" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "strokeWidth": 2, |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "rect", |
| | | "id": "c5798537-a8a0-4d79-bd76-a4f663492126", |
| | | "data": { |
| | | "codeContent": "1111", |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 5, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 280, |
| | | "y": 511 |
| | | }, |
| | | "size": { |
| | | "width": 80, |
| | | "height": 40 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "常用组件2" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "strokeWidth": 2, |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "rect", |
| | | "id": "c844f3d1-02a3-47d3-bcb9-51027c1deb1c", |
| | | "data": { |
| | | "codeContent": "常用组件2", |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 6, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 270, |
| | | "y": 620 |
| | | }, |
| | | "size": { |
| | | "width": 100, |
| | | "height": 60 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "逻辑判断2" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "path", |
| | | "id": "cc993d9b-ce11-409d-92c6-7208682dcc8b", |
| | | "data": { |
| | | "codeContent": "逻辑判断2", |
| | | "root": false, |
| | | "isLogic": true, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 7, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 280, |
| | | "y": 781 |
| | | }, |
| | | "size": { |
| | | "width": 80, |
| | | "height": 40 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "常用组件3" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "strokeWidth": 2, |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "rect", |
| | | "id": "cd9da0a4-5c2d-4f1b-9c51-403b32f1ad51", |
| | | "data": { |
| | | "codeContent": "常用组件3", |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 8, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | { |
| | | "position": { |
| | | "x": 472, |
| | | "y": 640 |
| | | }, |
| | | "size": { |
| | | "width": 80, |
| | | "height": 40 |
| | | }, |
| | | "attrs": { |
| | | "text": { |
| | | "text": "常用组件4" |
| | | }, |
| | | "body": { |
| | | "fill": "#efefef", |
| | | "stroke": "#4d4d4d", |
| | | "strokeWidth": 2, |
| | | "refD": "M 50 0 L 100 50 L 50 100 L 0 50 Z" |
| | | } |
| | | }, |
| | | "visible": true, |
| | | "shape": "rect", |
| | | "id": "06d450fc-474e-4b23-b40d-c89fde446b28", |
| | | "data": { |
| | | "codeContent": "常用组件4", |
| | | "root": false, |
| | | "isLogic": false, |
| | | "logicBool": false, |
| | | "searchLogicId": 1, |
| | | "searchLogicBool": true, |
| | | "searchIndex": 0 |
| | | }, |
| | | "zIndex": 9, |
| | | "ports": { |
| | | "groups": { |
| | | "top": { |
| | | "position": "top", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "bottom": { |
| | | "position": "bottom", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "left": { |
| | | "position": "left", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "right": { |
| | | "position": "right", |
| | | "attrs": { |
| | | "circle": { |
| | | "r": 5, |
| | | "magnet": true, |
| | | "stroke": "#5F95FF", |
| | | "strokeWidth": 1, |
| | | "fill": "#fff", |
| | | "style": { |
| | | "visibility": "hidden" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "items": [ |
| | | { |
| | | "id": "port1", |
| | | "group": "top" |
| | | }, |
| | | { |
| | | "id": "port2", |
| | | "group": "bottom" |
| | | }, |
| | | { |
| | | "id": "port3", |
| | | "group": "left" |
| | | }, |
| | | { |
| | | "id": "port4", |
| | | "group": "right" |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | }) |
| | | |
| | | |
| | | props.initHandle();//通知父组件初始化完成 |
| | | return graph; |
| | | } |
| | |
| | | { |
| | | name: 'group1', |
| | | title: '常用组件', |
| | | }, |
| | | { |
| | | name: 'group2', |
| | | title: '逻辑组件' |
| | | } |
| | | ], |
| | | }) |
| | | |
| | | stencilContainer.current.appendChild(stencil.container) |
| | | |
| | | |
| | | |
| | | const n1Data = JSON.parse(JSON.stringify(initNodeData)) |
| | | n1Data.root = true;//设置为根节点 |
| | | const n1 = graph.createNode({ |
| | | shape: "rect", |
| | | width: 80, |
| | | height: 40, |
| | | label: "默认组件", |
| | | label: "程序入口", |
| | | attrs: commonGraphAttrs, |
| | | ports: commonGraphPorts, |
| | | data: n1Data, |
| | | }) |
| | | |
| | | const n2 = graph.createNode({ |
| | | shape: "rect", |
| | | width: 80, |
| | | height: 40, |
| | | label: "测试组件", |
| | | label: "常用组件", |
| | | attrs: commonGraphAttrs, |
| | | ports: commonGraphPorts, |
| | | data: initNodeData, |
| | | }) |
| | | |
| | | stencil.load([n1, n2], 'group1') |
| | | const crnData = JSON.parse(JSON.stringify(initNodeData)) |
| | | crnData.type = "crn"; |
| | | const crnStencil = graph.createNode({ |
| | | shape: "rect", |
| | | width: 80, |
| | | height: 40, |
| | | label: "堆垛机组件", |
| | | attrs: commonGraphAttrs, |
| | | ports: commonGraphPorts, |
| | | data: crnData, |
| | | }) |
| | | |
| | | const shuttleData = JSON.parse(JSON.stringify(initNodeData)) |
| | | shuttleData.type = "shuttle"; |
| | | const shuttleStencil = graph.createNode({ |
| | | shape: "rect", |
| | | width: 80, |
| | | height: 40, |
| | | label: "四向车组件", |
| | | attrs: commonGraphAttrs, |
| | | ports: commonGraphPorts, |
| | | data: shuttleData, |
| | | }) |
| | | |
| | | const liftData = JSON.parse(JSON.stringify(initNodeData)) |
| | | liftData.type = "lift"; |
| | | const liftStencil = graph.createNode({ |
| | | shape: "rect", |
| | | width: 80, |
| | | height: 40, |
| | | label: "提升机组件", |
| | | attrs: commonGraphAttrs, |
| | | ports: commonGraphPorts, |
| | | data: liftData, |
| | | }) |
| | | |
| | | const devpData = JSON.parse(JSON.stringify(initNodeData)) |
| | | devpData.type = "devp"; |
| | | const devpStencil = graph.createNode({ |
| | | shape: "rect", |
| | | width: 80, |
| | | height: 40, |
| | | label: "输送线组件", |
| | | attrs: commonGraphAttrs, |
| | | ports: commonGraphPorts, |
| | | data: devpData, |
| | | }) |
| | | |
| | | const logicStencilData = JSON.parse(JSON.stringify(initNodeData)) |
| | | logicStencilData.isLogic = true;//逻辑判断 |
| | | const logicStencil = graph.createNode({ |
| | | shape: 'path', |
| | | width: 100, |
| | | height: 60, |
| | | // https://www.svgrepo.com/svg/13653/like |
| | | path: 'M 50 0 L 100 50 L 50 100 L 0 50 Z', |
| | | attrs: commonGraphAttrs, |
| | | label: '逻辑判断', |
| | | ports: commonGraphPorts, |
| | | data: logicStencilData, |
| | | }) |
| | | |
| | | stencil.load([n1, n2, crnStencil, shuttleStencil, liftStencil, devpStencil], 'group1') |
| | | stencil.load([logicStencil], 'group2') |
| | | } |
| | | |
| | | function initBind(graph) { |
| | |
| | | }) |
| | | |
| | | graph.bindKey('ctrl+z', () => { |
| | | graph.undo() |
| | | if (graph.canUndo()) { |
| | | graph.undo() |
| | | } |
| | | return false |
| | | }) |
| | | |
| | | graph.bindKey('ctrl+y', () => { |
| | | graph.redo() |
| | | if (graph.canRedo()) { |
| | | graph.redo() |
| | | } |
| | | return false |
| | | }) |
| | | |
| | |
| | | }) |
| | | return false |
| | | }) |
| | | |
| | | graph.on('node:mouseenter', ({ node }) => { |
| | | const ports = document.querySelectorAll(".x6-port-body") |
| | | for (let i = 0, len = ports.length; i < len; i += 1) { |
| | | ports[i].style.visibility = 'visible' |
| | | } |
| | | }) |
| | | |
| | | graph.on('node:mouseleave', ({ node }) => { |
| | | const ports = document.querySelectorAll(".x6-port-body") |
| | | for (let i = 0, len = ports.length; i < len; i += 1) { |
| | | ports[i].style.visibility = 'hidden' |
| | | } |
| | | }) |
| | | |
| | | } |
| | | |
| | | return ( |