From b6a4da0036f077f399337f2eb6ed07829c7e19cc Mon Sep 17 00:00:00 2001 From: wangqi Date: Sat, 6 Jan 2024 11:43:56 +0800 Subject: [PATCH] feature: add seatunnel shape --- .../src/locales/zh-CN/pages/project.ts | 6 ++ .../DI/DiJobFlow/Dag/menubar/index.tsx | 74 ++++++++++++++ .../DI/DiJobFlow/Dag/toolbar/index.tsx | 98 ++++++++++++++----- .../Workspace/Artifact/DI/DiJobFlow/index.tsx | 9 +- 4 files changed, 160 insertions(+), 27 deletions(-) create mode 100644 scaleph-ui-react2/src/pages/Project/Workspace/Artifact/DI/DiJobFlow/Dag/menubar/index.tsx diff --git a/scaleph-ui-react2/src/locales/zh-CN/pages/project.ts b/scaleph-ui-react2/src/locales/zh-CN/pages/project.ts index acd266080..591f4c2bf 100644 --- a/scaleph-ui-react2/src/locales/zh-CN/pages/project.ts +++ b/scaleph-ui-react2/src/locales/zh-CN/pages/project.ts @@ -82,6 +82,7 @@ export default { 'pages.project.di.flow.dag.stop': '停止', 'pages.project.di.flow.dag.save': '保存', 'pages.project.di.flow.dag.publish': '发布', + 'pages.project.di.flow.dag.debug': 'Debug', 'pages.project.di.flow.dag.preview': '预览', 'pages.project.di.flow.dag.submit': '提交', 'pages.project.di.flow.dag.port.in': '输入桩', @@ -91,6 +92,11 @@ export default { 'pages.project.di.flow.dag.prop.jobProp': '作业属性', 'pages.project.di.flow.dag.prop.engineProp': '引擎属性', 'pages.project.di.flow.dag.prop.placeholder': '按照key=value格式配置属性,每个属性一行', + 'pages.project.di.flow.dag.undo': '撤销', + 'pages.project.di.flow.dag.redo': '恢复', + 'pages.project.di.flow.dag.copy': '复制', + 'pages.project.di.flow.dag.paste': '粘贴', + 'pages.project.di.flow.dag.delete': '删除', 'pages.project.di.flow.dag.help': '帮助', 'pages.project.di.flow.dag.help.key': '快捷键', 'pages.project.di.flow.dag.help.key.ctrlc': '复制', diff --git a/scaleph-ui-react2/src/pages/Project/Workspace/Artifact/DI/DiJobFlow/Dag/menubar/index.tsx b/scaleph-ui-react2/src/pages/Project/Workspace/Artifact/DI/DiJobFlow/Dag/menubar/index.tsx new file mode 100644 index 000000000..d264f4bde --- /dev/null +++ b/scaleph-ui-react2/src/pages/Project/Workspace/Artifact/DI/DiJobFlow/Dag/menubar/index.tsx @@ -0,0 +1,74 @@ +import React from 'react'; +import {Button, Space, Tooltip} from 'antd'; +import {CalculatorOutlined, EyeOutlined, SaveOutlined} from '@ant-design/icons'; +import {useIntl} from "@umijs/max"; +import type {Edge} from '@antv/xflow'; +import {useGraphEvent, useGraphInstance, useGraphStore,} from '@antv/xflow'; +import {Menubar} from "@antv/x6-react-components"; + +const CustomMenubar: React.FC = () => { + const intl = useIntl(); + const graph = useGraphInstance(); + const nodes = useGraphStore((state) => state.nodes); + const updateEdge = useGraphStore((state) => state.updateEdge); + const removeNodes = useGraphStore((state) => state.removeNodes); + + useGraphEvent('node:change:data', ({node}) => { + if (graph) { + const edges = graph.getIncomingEdges(node); + const {status} = node.data; + edges?.forEach((edge: Edge) => { + if (status === 'running') { + updateEdge(edge.id, { + animated: true, + }); + } else { + updateEdge(edge.id, { + animated: false, + }); + } + }); + } + }); + + const onPreview = () => { + console.log('onPreview', graph) + }; + + const onDebug = () => { + console.log('onDebug', graph) + }; + + const onSave = () => { + console.log('onSave', graph) + }; + + return ( + + + - - - + + +