^noJgZOKS&
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
CNZ-r=
diff --git a/ebts-ui/src/views/tool/top/packages/assets/images/server.png b/ebts-ui/src/views/tool/top/packages/assets/images/server.png
deleted file mode 100644
index 0e49219ad8c0958451ec50be2ee49a6c9be55455..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1555
zcmaKsc~BEq9LKkWLqSAQ3@RWVD2HSd5&|qBZcGLuO$^~iMMAP9E997DX$a~_iKrkb
z1r*d^qk|j*-W230S|I}rD5&Eo6c0oN6;w*=h*r8`I#cRQJ3GJqz4!fne&6@rAMa)J
zxWU$z%Pau^ux5ua`FIX7#vF6}A31g<7*D2Rm;(dAr6X3K1!nl%Ss23S06_X$0La(}
z08_Y>F#-UoWB_=T002-401y?r#;^dqV4fHn%mk*5pT4D{5LYZPHiu>L?3=kJE-Raq
zmjnPn$YC?#h_wDO-R@ZyZtJ5(|5;2VDl@dT`EJ&z(H%8)H5Ys&b^W{I_fC$SkJdG8Tv7hLM(-3Asi0@Do@_s5
zIF*_Hc$}uNX`qkvttcqIZgTO>0PjS;X713iH4rhujzF
zuuG+l|43gHD;}PF-E*AS_*Nr-Ohzb%Y&nyl-kt>!)-I7sMdum
z+&~JnYP4uayVLfZgJ6K|8O?aLY<}0ypD)yywe)yYSLNmMN8O^5Y`0^6MSU-yc4>3X
z>|R(sXab|XwKdO!Rn&{Rab?KiEna?m<~p+A#1reEy*@;wsp%fw+M1`I?#C%$gFRR0
zB;5Jke%~syE^U9a=67AKygF+_zw+9lqp=RIO9qn7-JElBB2b%y)wC}6{sGSAvhXyX
zz5{YBie!fIx38_m+G76Pt$-7<@08daDV{o{Y+n_(smO3|9mpG{>@dtT;bCH4W%#3h
zS-0zE%XT;MRZZA}Zk~RRw88YDf?#E52+j8#EvYx~gLWNLU7@xfQ)FI|5x3uC3+@4eQD)X*TW^4)2@J*z*
zXVG=L#-MuA`pUB4@XDy_LDNSj15c(UIon#?o_%zT3~0I;eHgzeRrG
zeoOuB}$mCW?=JBrvsa%96Y5u$6
zmiT@#-muBIf=Zr*sRc>|08>>;FhwpDq=2YYAV%;&g~^~wf)_!NTnMs_DrZLZ^Z`Ls
zCPLCk5=@%XQl~LKVD?742uZ3m5rUXdWO?*WZ^8Ia5Nn!$X*o2zO8O=@nYhvVkDmpB%vt?1cIPME=54KTCJ4J
zF;Ir6RVX$yCm{lr1{KO>BpHH%LXpf9m5Tong)-3SpaLlriZQ4(I+=v;cIx#04tzC$
M&Ehi8GZHfY0;Tk7SO5S3
diff --git a/ebts-ui/src/views/tool/top/packages/assets/logo.png b/ebts-ui/src/views/tool/top/packages/assets/logo.png
deleted file mode 100644
index fb8384357c5f9fb233e5d7e67263bd08380b54cc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5691
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
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/elements/checkbox.vue b/ebts-ui/src/views/tool/top/packages/elements/checkbox.vue
deleted file mode 100644
index aa36f62..0000000
--- a/ebts-ui/src/views/tool/top/packages/elements/checkbox.vue
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/elements/dropdown.vue b/ebts-ui/src/views/tool/top/packages/elements/dropdown.vue
deleted file mode 100644
index fc71705..0000000
--- a/ebts-ui/src/views/tool/top/packages/elements/dropdown.vue
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
- {{edgeItem.label}}
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/elements/index.js b/ebts-ui/src/views/tool/top/packages/elements/index.js
deleted file mode 100644
index 81367e7..0000000
--- a/ebts-ui/src/views/tool/top/packages/elements/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/11/14
- * @description: ClayTop内部的通用组件
- */
-
-import Checkbox from './checkbox'
-import Button from './button'
-import Dropdown from './dropdown'
-import Loading from './loading'
-
-export {
- Checkbox,
- Button,
- Dropdown,
- Loading
-}
diff --git a/ebts-ui/src/views/tool/top/packages/elements/loading.vue b/ebts-ui/src/views/tool/top/packages/elements/loading.vue
deleted file mode 100644
index f410a92..0000000
--- a/ebts-ui/src/views/tool/top/packages/elements/loading.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-
-
{{ loadingText }}
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/dice-er-node.js b/ebts-ui/src/views/tool/top/packages/topology/src/behavior/dice-er-node.js
deleted file mode 100644
index f927f0e..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/dice-er-node.js
+++ /dev/null
@@ -1,249 +0,0 @@
-import utils from '../utils'
-
-/**
- * @author: clay
- * @data: 2021/5/14 23:20
- * @email: clay@hchyun.com
- * @description: node
- */
-const isInBBox = (point, bbox) => {
- const {
- x,
- y
- } = point;
- const {
- minX,
- minY,
- maxX,
- maxY
- } = bbox;
-
- return x < maxX && x > minX && y > minY && y < maxY;
-};
-
-let vm = null;
-
-const sendThis = (_this) => {
- vm = _this;
-};
-
-export default {
- sendThis,
- name: 'dice-er-node',
- options: {
- getDefaultCfg() {
- return {
- multiple: true,
- start:0,
- };
- },
- getEvents() {
- return {
- itemHeight: 50,
- wheel: "scroll",
- "node:click": "onNodeClick",
- "edge:click": "onEdgeClick",
- "node:contextmenu": "onNodeRightClick",
- "edge:contextmenu": "onEdgeRightClick",
- "canvas:click": "onCanvasClick",
- };
- },
- scroll(e) {
- e.preventDefault()
- const {
- graph
- } = this;
- const nodes = graph.getNodes().filter((n) => {
- const bbox = n.getBBox();
-
- return isInBBox(graph.getPointByClient(e.clientX, e.clientY), bbox);
- });
- if (nodes) {
- nodes.forEach((node) => {
- const model = node.getModel();
- if (model.columns.length < 9 ) {
- return;
- }
- const idx = model.startIndex || 0;
- this.start=idx
- let startX = model.startX || 0.5;
- let startIndex = idx + e.deltaY * 0.02;
- if ((model.columns.length-idx)<10 && startIndex > idx){
- return;
- }
- startX -= e.deltaX;
- if (startIndex < 0) {
- startIndex = 0;
- }
- if (startX > 0) {
- startX = 0;
- }
- if (startIndex > model.columns.length - 1) {
- startIndex = model.columns.length - 1;
- }
- graph.update(node, {
- startIndex,
- startX,
- });
- });
- }
-
-
- },
- onNodeClick(event) {
- this.shrinkage(event)
- vm.currentFocus = "node";
- vm.rightMenuShow = false;
- this.updateVmData(event);
- },
- /**
- * 点击连线
- * @param event
- */
- onEdgeClick(event) {
- let clickEdge = event.item;
- clickEdge.setState("selected", !clickEdge.hasState("selected"));
- vm.currentFocus = "edge";
-
- this.updateVmData(event);
- },
- onNodeRightClick(event) {
- let graph = vm.graph;
- let clickNode = event.item;
- let clickNodeModel = clickNode.getModel();
- let selectedNodes = graph.findAllByState("node", "selected");
- let selectedNodeIds = selectedNodes.map(item => {
- return item.getModel().id;
- });
- vm.selectedNode = clickNode;
- // 如果当前点击节点是之前选中的某个节点,就进行下面的处理
- if (selectedNodes.length > 1 && selectedNodeIds.indexOf(clickNodeModel.id) > -1) {
- vm.rightMenuShow = true;
- let rightMenu = vm.$refs.rightMenu;
- rightMenu.style.left = event.clientX + "px";
- rightMenu.style.top = event.clientY + "px";
- } else {
- // 隐藏右键菜单
- vm.rightMenuShow = false;
- // 先取消所有节点的选中状态
- selectedNodes.forEach(node => {
- node.setState("selected", false);
- });
- // 再添加该节点的选中状态
- clickNode.setState("selected", true);
- vm.currentFocus = "node";
- this.updateVmData(event);
- }
- graph.paint();
- },
- /**
- *
- * @param event
- */
- onEdgeRightClick(event) {
- let graph = vm.graph;
- let clickEdge = event.item;
- let clickEdgeModel = clickEdge.getModel();
- let selectedEdges = graph.findAllByState("edge", "selected");
- // 如果当前点击节点不是之前选中的单个节点,才进行下面的处理
- if (!(selectedEdges.length === 1 && clickEdgeModel.id === selectedEdges[0].getModel().id)) {
- // 先取消所有节点的选中状态
- graph.findAllByState("edge", "selected").forEach(edge => {
- edge.setState("selected", false);
- });
- // 再添加该节点的选中状态
- clickEdge.setState("selected", true);
- vm.currentFocus = "edge";
- this.updateVmData(event);
- }
- let point = { x: event.x, y: event.y };
- },
- onCanvasClick() {
- vm.currentFocus = "canvas";
- vm.rightMenuShow = false;
- },
- updateVmData(event) {
- if (event.item._cfg.type === "node") {
- let clickNode = event.item;
- if (clickNode.hasState("selected")) {
- let clickNodeModel = clickNode.getModel();
- vm.selectedNode = clickNode;
- let nodeAppConfig = { ...vm.nodeAppConfig };
- Object.keys(nodeAppConfig).forEach(function(key) {
- nodeAppConfig[key] = "";
- });
- vm.selectedNodeParams = {
- label: clickNodeModel.label || "",
- columns:clickNodeModel.columns,
- appConfig: { ...nodeAppConfig, ...clickNodeModel.appConfig }
- };
- }
- } else if (event.item._cfg.type === "edge") {
- // 更新vm的data: selectedEdge 和 selectedEdgeParams
- let clickEdge = event.item;
- if (clickEdge.hasState("selected")) {
- let clickEdgeModel = clickEdge.getModel();
- vm.selectedEdge = clickEdge;
- let edgeAppConfig = { ...vm.edgeAppConfig };
- Object.keys(edgeAppConfig).forEach(function(key) {
- edgeAppConfig[key] = "";
- });
- vm.selectedEdgeParams = {
- label: clickEdgeModel.label || "",
- relationalItem: clickEdgeModel.relationalItem,
- sourceColumn:clickEdgeModel.sourceColumn,
- targetColumn:clickEdgeModel.targetColumn,
- appConfig: { ...edgeAppConfig, ...clickEdgeModel.appConfig }
- };
- }
- }
- },
- shrinkage(e){
- const {
- graph
- } = this;
- const item = e.item;
- const shape = e.shape;
- if (!item) {
- return;
- }
- if (shape.get("name") === "collapse") {
- graph.updateItem(item, {
- collapsed: true,
- size: [300, 50],
- height:44,
- });
- setTimeout(() => graph.layout(), 100);
- } else if (shape.get("name") === "expand") {
- let updateGraph = graph.updateItem(item, {
- collapsed: false,
- size: [300, 500],
- height:316,
- });
- // utils.anchor.update({height:100,}, graph)
- setTimeout(() => graph.layout(), 100);
- }else {
- // eslint-disable-next-line no-unused-vars
- const model = item.getModel();
- // console.log(JSON.stringify(model));
- // console.log(model.style.default.fill = '#4eb922');
- // console.log(model.style.selected.shadowColor = '#4eb922');
- }
- },
- moves(e) {
- const name = e.shape.get("name");
- const item = e.item;
- if (!name.startsWith("marker")){
- if (name && name.startsWith("item")) {
- this.graph.updateItem(item, {
- selectedIndex: Number(name.split("-")[1]),
- });
- } else {
- this.graph.updateItem(item, {
- selectedIndex: NaN,
- });
- }
- }
- },
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/drag-add-edge.js b/ebts-ui/src/views/tool/top/packages/topology/src/behavior/drag-add-edge.js
deleted file mode 100644
index de77291..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/drag-add-edge.js
+++ /dev/null
@@ -1,220 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/16
- * @description: edit mode: 通过拖拽节点上的锚点添加连线
- */
-import utils from "../utils";
-
-// 用来获取调用此js的vue组件实例(this)
-let vm = null;
-
-const sendThis = (_this) => {
- vm = _this;
-};
-
-import G6 from "@antv/g6";
-import theme from "../theme";
-
-export default {
- sendThis, // 暴露函数
- name: "drag-add-edge",
- options: {
- getEvents() {
- return {
- "node:mousedown": "onNodeMousedown",
- "node:mouseup": "onNodeMouseup",
- "edge:mouseup": "onEdgeMouseup",
- "mousemove": "onMousemove"
- };
- },
- onNodeMousedown(event) {
- let self = this;
- // 交互过程中的信息
- self.evtInfo = {
- action: null,
- node: event.item,
- target: event.target,
- };
- if (self.evtInfo.target && self.evtInfo.target.attrs.name) {
- // todo...未来可能针对锚点增加其它功能(例如拖拽调整大小)
- switch (self.evtInfo.target.attrs.name) {
- case "anchor":
- self.evtInfo.action = "drawEdge";
- break;
- }
- }
- if (self.evtInfo && self.evtInfo.action) {
- self[self.evtInfo.action].start.call(self, event);
- }
- },
- onNodeMouseup(event) {
- let self = this;
- if (self.evtInfo && self.evtInfo.action) {
- self[self.evtInfo.action].stop.call(self, event);
- }
- },
- onEdgeMouseup(event) {
- let self = this;
- if (self.evtInfo && self.evtInfo.action === "drawEdge") {
- self[self.evtInfo.action].stop.call(self, event);
- }
- },
- onMousemove(event) {
- let self = this;
- if (self.evtInfo && self.evtInfo.action) {
- self[self.evtInfo.action].move.call(self, event);
- }
- },
- drawEdge: {
- isMoving: false,
- currentLine: null,
- start: function(event) {
- let self = this;
- let themeStyle = theme.defaultStyle; // todo...先使用默认主题,后期可能增加其它风格的主体
-
- // ************** 暂存【连线】前的数据状态 start **************
- let graph = vm.graph;
- self.historyData = JSON.stringify(graph.save());
- // ************** 暂存【连线】前的数据状态 end **************
-
- let sourceAnchor = self.evtInfo.node.getAnchorPoints();
- let sourceNodeModel = self.evtInfo.node.getModel();
- // 锚点数据
- let anchorPoints = self.evtInfo.node.getAnchorPoints();
- // 处理线条目标点
- if (anchorPoints && anchorPoints.length) {
- // 获取距离指定坐标最近的一个锚点
- sourceAnchor = self.evtInfo.node.getLinkPoint({
- x: event.x,
- y: event.y
- })
- }
- let relational = vm.relationalMap.map(item => {
- if (item.mainId === sourceNodeModel.tableId) {
- return item
- }
- })
- //item.columnName+':'+item.columnComment
- let columns = []
- for (let i = 0; i < sourceNodeModel.columns.length; i++) {
- let column = {
- columnName:sourceNodeModel.columns[i].columnName,
- columnComment:sourceNodeModel.columns[i].columnComment
- }
- columns.push(column)
- }
-
- self.drawEdge.currentLine = self.graph.addItem("edge", {
- // id: G6.Util.uniqueId(), // 这种生成id的方式有bug,会重复
- id: utils.generateUUID(),
- // 起始节点
- source: sourceNodeModel.id,
- sourceColumn:columns,
- sourceAnchor: sourceAnchor ? sourceAnchor.anchorIndex : "",
- // 终止节点/位置
- relational: relational,
- target: {
- x: event.x,
- y: event.y
- },
- type: self.graph.$C.edge.type || "top-cubic",
- style: themeStyle.edgeStyle.default|| self.graph.$C.edge.style
- });
- self.drawEdge.isMoving = true;
- },
-
- move(event) {
- let self = this;
- if (self.drawEdge.isMoving && self.drawEdge.currentLine) {
- self.graph.updateItem(self.drawEdge.currentLine, {
- target: {
- x: event.x,
- y: event.y
- }
- });
- }
- },
- stop(event) {
- let self = this;
- if (self.drawEdge.isMoving) {
- if (self.drawEdge.currentLine === event.item) {
- // 画线过程中点击则移除当前画线
- self.graph.removeItem(event.item);
- } else {
- let targetNode = event.item;
- let targetNodeModel = targetNode.getModel();
- let targetAnchor = null;
- // 锚点数据
- let anchorPoints = targetNode.getAnchorPoints();
- // 处理线条目标点
- let relational = self.drawEdge.currentLine.getModel().relational
- let starts = false;
- let relationalItem = null;
- relational.map(item => {
- if (item){
- if (item.childId === targetNodeModel.tableId) {
- starts = true
- relationalItem = item
- }
- }
- })
- if (starts) {
- if (anchorPoints && anchorPoints.length) {
- // 获取距离指定坐标最近的一个锚点
- targetAnchor = targetNode.getLinkPoint({
- x: event.x,
- y: event.y
- });
- }
- let columns = []
- for (let i = 0; i < targetNodeModel.columns.length; i++) {
- let column = {
- columnName:targetNodeModel.columns[i].columnName,
- columnComment:targetNodeModel.columns[i].columnComment
- }
- columns.push(column)
- }
- self.graph.updateItem(self.drawEdge.currentLine, {
- target: targetNodeModel.id,
- relationalItem:relationalItem,
- targetAnchor: targetAnchor ? targetAnchor.anchorIndex : "",
- targetColumn: columns,
- });
-
- // ************** 记录historyData的逻辑 start **************
- if (this.historyData) {
- let graph = this.graph;
- // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能
- // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录
- if (vm.undoCount > 0) {
- vm.historyIndex = vm.historyIndex - vm.undoCount; // 此时的historyIndex应当更新为【撤销】后所在的索引位置
- for (let i = 1; i <= vm.undoCount; i++) {
- let key = `graph_history_${vm.historyIndex + i}`;
- vm.removeHistoryData(key);
- }
- vm.undoCount = 0;
- } else {
- // 正常顺序执行的情况,记录拖拽前的数据状态
- let key = `graph_history_${vm.historyIndex}`;
- vm.addHistoryData(key, this.historyData);
- }
- // 记录拖拽后的数据状态
- vm.historyIndex += 1;
- let key = `graph_history_${vm.historyIndex}`;
- let currentData = JSON.stringify(graph.save());
- vm.addHistoryData(key, currentData);
- }
- }else {
- self.graph.removeItem(self.drawEdge.currentLine);
- vm.msgError("两表之间无关联关系")
- }
- // ************** 记录historyData的逻辑 end **************
- }
- }
- self.drawEdge.currentLine = null;
- self.drawEdge.isMoving = false;
- self.evtInfo = null;
- }
- }
- }
-};
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/drag-event-edit.js b/ebts-ui/src/views/tool/top/packages/topology/src/behavior/drag-event-edit.js
deleted file mode 100644
index 08ebc57..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/drag-event-edit.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/16
- * @description: edit mode: 鼠标拖动节点的交互(记录拖拽前后的数据,用于【撤销】和【重做】)
- */
-
-// 用来获取调用此js的vue组件实例(this)
-let vm = null
-
-const sendThis = (_this) => {
- vm = _this
-}
-
-export default {
- sendThis, // 暴露函数
- name: 'drag-event-edit',
- options: {
- getEvents() {
- return {
- 'node:dragstart': 'onNodeDragstart',
- 'node:dragend': 'onNodeDragend'
- }
- },
- onNodeDragstart() {
- let graph = vm.graph
- this.historyData = JSON.stringify(graph.save())
- },
- onNodeDragend() {
- if (this.historyData) {
- let graph = this.graph
- // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能
- // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录
- if (vm.undoCount > 0) {
- vm.historyIndex = vm.historyIndex - vm.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置
- for (let i = 1; i <= vm.undoCount; i++) {
- let key = `graph_history_${vm.historyIndex + i}`
- vm.removeHistoryData(key)
- }
- vm.undoCount = 0
- } else {
- // 正常顺序执行的情况,记录拖拽前的数据状态
- let key = `graph_history_${vm.historyIndex}`
- vm.addHistoryData(key, this.historyData)
- }
- // 记录拖拽后的数据状态
- vm.historyIndex += 1
- let key = `graph_history_${vm.historyIndex}`
- let currentData = JSON.stringify(graph.save())
- vm.addHistoryData(key, currentData)
- }
- }
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/hover-event-edit.js b/ebts-ui/src/views/tool/top/packages/topology/src/behavior/hover-event-edit.js
deleted file mode 100644
index ba59728..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/hover-event-edit.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/16
- * @description: edit mode: 悬浮交互
- */
-// 用来获取调用此js的vue组件实例(this)
-let vm = null;
-var hourItem = null;
-const sendThis = (_this) => {
- vm = _this;
-};
-export default {
- sendThis, // 暴露函数
- name: "hover-event-edit",
- options: {
- getEvents() {
- return {
- "node:mouseover": "onNodeHover",
- "node:mouseout": "onNodeOut",
- "node:mouseleave":"onNodeLeave",
- };
- },
- onNodeHover(event) {
- let graph = vm.graph;
- let hoverNode = event.item;
-
- const name = event.shape.get("name");
- const item = event.item;
-
- if (name && name.startsWith("item")) {
- graph.updateItem(item, {
- selectedIndex: Number(name.split("-")[1])
- });
- } else {
- graph.updateItem(item, {
- selectedIndex: NaN
- });
- }
- if (name && name.startsWith("marker")) {
- hoverNode.setState("hover", true, graph);
- hourItem=hoverNode;
- }else {
- if (hourItem!=null){
- try {
- hourItem.setState("hover", false)
- }catch (e){
- }
- }
- }
- },
- onNodeOut(event) {
- const name = event.shape.get("name");
- let hoverNode = event.item;
- if (name && name.startsWith("marker")) {
- hoverNode.setState("hover", false);
- }
- if (hourItem!=null&&hourItem.destroyed){
- try {
- hourItem.setState("hover", false)
- }catch (e){
- }
- }
- hoverNode.setState("hover", false);
- },
- onNodeLeave(event) {
- if (hourItem!=null){
- try {
- hourItem.setState("hover", false)
- }catch (e){
- }
- }
- }
- }
-};
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/behavior/index.js
deleted file mode 100644
index 748e43b..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/16
- * @description: register behaviors
- */
-
-import dragAddEdge from './drag-add-edge'
-import hoverEventEdit from './hover-event-edit'
-import dragEventEdit from './drag-event-edit'
-import keyupEventEdit from './keyup-event-edit'
-import diceErNode from './dice-er-node'
-
-const obj = {
- dragAddEdge,
- hoverEventEdit,
- dragEventEdit,
- keyupEventEdit,
- diceErNode,
-}
-
-export default {
- obj,
- register(G6) {
- Object.values(obj).map(item => {
- G6.registerBehavior(item.name, item.options)
- })
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/keyup-event-edit.js b/ebts-ui/src/views/tool/top/packages/topology/src/behavior/keyup-event-edit.js
deleted file mode 100644
index cdb6af3..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/behavior/keyup-event-edit.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/16
- * @description: edit mode: 键盘事件的交互,主要是删除节点和连线(记录删除前后的数据,用于【撤销】和【重做】)
- */
-
-// 用来获取调用此js的vue组件实例(this)
-let vm = null
-
-const sendThis = (_this) => {
- vm = _this
-}
-
-export default {
- sendThis, // 暴露函数
- name: 'keyup-event-edit',
- options: {
- getEvents() {
- return {
- 'keyup': 'onKeyup'
- }
- },
- onKeyup(event) {
- let graph = this.graph
- let selectedNodes = graph.findAllByState('node', 'selected')
- let selectedEdges = graph.findAllByState('edge', 'selected')
- if (event.keyCode === 46 && (selectedNodes.length > 0 || selectedEdges.length > 0)) {
-
- // ************** 记录【删除】前的数据状态 start **************
- let historyData = JSON.stringify(graph.save())
- let key = `graph_history_${vm.historyIndex}`
- vm.addHistoryData(key, historyData)
- // ************** 记录【删除】前的数据状态 end **************
-
- // 开始删除
- for (let i = 0; i < selectedNodes.length; i++) {
- graph.removeItem(selectedNodes[i])
- }
- for (let i = 0; i < selectedEdges.length; i++) {
- graph.removeItem(selectedEdges[i])
- }
-
- // ************** 记录【删除】后的数据状态 start **************
- // 如果当前点过【撤销】了,拖拽节点后将取消【重做】功能
- // 重置undoCount,【删除】后的数据状态给(当前所在historyIndex + 1),且清空这个时间点之后的记录
- if (vm.undoCount > 0) {
- vm.historyIndex = vm.historyIndex - vm.undoCount // 此时的historyIndex应当更新为【撤销】后所在的索引位置
- for (let i = 1; i <= vm.undoCount; i++) {
- let key = `graph_history_${vm.historyIndex + i}`
- vm.removeHistoryData(key)
- }
- vm.undoCount = 0
- }
- // 记录【删除】后的数据状态
- vm.historyIndex += 1
- key = `graph_history_${vm.historyIndex}`
- let currentData = JSON.stringify(graph.save())
- vm.addHistoryData(key, currentData)
- // ************** 记录【删除】后的数据状态 end **************
- }
- }
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/config/edge.js b/ebts-ui/src/views/tool/top/packages/topology/src/config/edge.js
deleted file mode 100644
index e908144..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/config/edge.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/16
- * @description: 线条的后期设置
- */
-
-export default {
- type: 'top-cubic',
- style: {
- startArrow: false,
- endArrow: true
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/config/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/config/index.js
deleted file mode 100644
index abed973..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/config/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/16
- * @description: 配置
- */
-
-import edge from './edge'
-
-export default {
- edge
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/edge/base.js b/ebts-ui/src/views/tool/top/packages/topology/src/edge/base.js
deleted file mode 100644
index b93b5bb..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/edge/base.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * @author: Clay
- * @data: 2019/07/18
- * @description: 线公共方法
- */
-
-import utils from '../utils'
-
-export default {
- draw(cfg, group) {
- const { startPoint, endPoint } = cfg
- const keyShape = group.addShape('path', {
- className: 'edge-shape',
- attrs: {
- ...cfg.style,
- path: [
- ['M', startPoint.x, startPoint.y],
- ['L', endPoint.x, endPoint.y]
- ]
- },
- name: 'edge-shape'
- })
- keyShape.attrs.endArrow = true
- return keyShape
- },
- setState(name, value, item) {
- // 设置边状态
- utils.edge.setState(name, value, item)
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/edge/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/edge/index.js
deleted file mode 100644
index bcbbbe4..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/edge/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/18
- * @description: register edges
- */
-
-
-import topCubic from './top-cubic'
-
-const obj = {
- topCubic
-}
-
-export default function(G6) {
- Object.values(obj).map(item => {
- G6.registerEdge(item.name, item.options, item.extendName)
- })
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/edge/top-cubic.js b/ebts-ui/src/views/tool/top/packages/topology/src/edge/top-cubic.js
deleted file mode 100644
index c53d53f..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/edge/top-cubic.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * @author: Clay
- * @data: 2019/07/18
- * @description: 曲线
- */
-
-import base from './base'
-export default {
- name: 'top-cubic',
- extendName: 'cubic',
- options: {
- ...base
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/graph/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/graph/index.js
deleted file mode 100644
index 928ff74..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/graph/index.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/05
- * @description: 图的布局方式/图的初始化
- */
-
-import d3 from '../plugins/d3-installer'
-import theme from '../theme'
-
-/**
- * 图的布局方式/图的初始化
- * @type {{commonGraph: (function(*, *): G6.Graph)}}
- */
-const initGraph = {
- /**
- * 一般布局
- * @param G6
- * @param options
- * @returns {G6.Graph}
- */
- commonGraph: function(G6, options) {
- let graphData = options.graphData
- let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体
- // 生成G6实例
- let graph = new G6.Graph({
- plugins: options.plugins,
- container: options.container,
- width: options.width,
- height: options.height,
- // layout: {
- // type: 'random',
- // width: options.width,
- // height: options.height
- // },
- defaultNode: {
- type: 'dice-er-box',
- labelCfg: {
- position: 'bottom'
- }
- },
- defaultEdge: {
- type: 'top-cubic',
- labelCfg: {
- position: 'center',
- autoRotate: false
- }
- },
- nodeStateStyles: themeStyle.nodeStyle,
- // nodeStyle: {
- // selected: {
- // shadowColor: '#626262',
- // shadowBlur: 8,
- // shadowOffsetX: -1,
- // shadowOffsetY: 3
- // }
- // },
- edgeStateStyles:{
- edgeStyle: {
- default: {
- stroke: '#e2e2e2',
- lineWidth: 3,
- lineAppendWidth: 10
- },
- selected: {
- shadowColor: '#626262',
- shadowBlur: 3
- }
- },
- },
- modes: options.modes
- })
- // 将 read 方法分解成 data() 和 render 方法,便于整个生命周期的管理
- graph.read(graphData)
- graph.render()
- // 返回G6实例
- return graph
- },
- /**
- * 力导布局
- * @param G6
- * @param options
- * @returns {*}
- */
- forceLayoutGraph: function(resolve, G6, options) {
- let graphData = options.graphData
- let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体
- // 生成G6实例
- let graph = new G6.Graph({
- container: options.container,
- width: options.width,
- height: options.height,
- nodeStateStyles: themeStyle.nodeStyle,
- edgeStateStyles: themeStyle.edgeStyle
- })
- // 初始化力导布局
- let simulation = d3
- .forceSimulation()
- .force(
- 'link',
- d3
- .forceLink()
- .id(function(d) {
- return d.id
- })
- .distance(linkDistance)
- .strength(0.5)
- )
- .force('charge', d3.forceManyBody().strength(-500).distanceMax(500).distanceMin(100))
- .force('center', d3.forceCenter(options.width / 2, options.height / 2))
- // 定义节点数据
- simulation.nodes(graphData.nodes).on('tick', ticked)
- // 定义连线数据
- let edges = []
- for (let i = 0; i < graphData.edges.length; i++) {
- edges.push({
- id: graphData.edges[i].id,
- source: graphData.edges[i].source,
- target: graphData.edges[i].target
- })
- }
- simulation.force('link').links(edges)
- graph.data(graphData)
- graph.render()
-
- function linkDistance(d) {
- return 150
- }
-
- function ticked() {
- // protect: planA: 移除事件监听器 planB: 手动停止力模拟
- if (graph.destroyed) {
- // simulation.nodes(graphData.nodes).on('tick', null)
- simulation.stop()
- return
- }
- if (!graph.get('data')) {
- // 若是第一次渲染,定义数据,渲染
- graph.data(graphData)
- graph.render()
- } else {
- // 后续渲染,直接刷新所有点和边的位置
- graph.refreshPositions()
- }
- }
-
- // 控制时间: 只布局10秒
- let t = setTimeout(function() {
- simulation.stop()
- resolve(graph)
- }, 10000)
-
- // 判断force-layout结束
- simulation.on('end', () => {
- clearTimeout(t)
- resolve(graph)
- })
- }
-}
-
-export default initGraph
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/node/dice-er-box.js b/ebts-ui/src/views/tool/top/packages/topology/src/node/dice-er-box.js
deleted file mode 100644
index 6a450c6..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/node/dice-er-box.js
+++ /dev/null
@@ -1,286 +0,0 @@
-/**
- * @author: clay
- * @data: 2021/5/15 0:16
- * @email: clay@hchyun.com
- * @description: node
- */
-import utils from '../utils/index'
-
-let vm = null;
-const sendThis = (_this) => {
- vm = _this;
-};
-const itemHeight = 30;
-export default {
- sendThis,
- name: 'dice-er-box',
- options: {
- setState(name, value, item) {
- // 设置节点状态
- utils.node.setState(name, value, item)
- // 设置锚点状态
- // if (vm.graphMode === 'edit') {
- utils.anchor.setState(name, value, item)
- // }
- },
- draw(cfg, group) {
- const width = 250;
- const height = 316;
- const itemCount = 10;
- const boxStyle = {
- stroke: "#096DD9",
- radius: 4,
- };
-
- const {
- columns = [],
- startIndex = 0,
- selectedIndex,
- collapsed,
- icon,
- } = cfg;
- const list = columns;
- const afterList = list.slice(
- Math.floor(startIndex),
- Math.floor(startIndex + itemCount - 1)
- );
- const offsetY = (0.5 - (startIndex % 1)) * itemHeight + 30;
-
- group.addShape("rect", {
- attrs: {
- fill: boxStyle.stroke,
- height: 30,
- width,
- radius: [boxStyle.radius, boxStyle.radius, 0, 0],
- },
- draggable: true,
- });
-
- let fontLeft = 12;
-
- if (icon && icon.show !== false) {
- group.addShape("image", {
- attrs: {
- x: 8,
- y: 8,
- height: 16,
- width: 16,
- ...icon,
- },
- });
- fontLeft += 18;
- }
-
- group.addShape("text", {
- attrs: {
- y: 22,
- x: fontLeft,
- fill: "#fff",
- text: cfg.label,
- fontSize: 12,
- fontWeight: 500,
- },
- });
-
- group.addShape("rect", {
- attrs: {
- x: 0,
- y: collapsed ? 30 : 300,
- height: 15,
- width,
- fill: "#eee",
- radius: [0, 0, boxStyle.radius, boxStyle.radius],
- cursor: "pointer",
- },
- name: collapsed ? "expand" : "collapse",
- });
-
- group.addShape("text", {
- attrs: {
- x: width / 2 - 6,
- y: (collapsed ? 30 : 300) + 12,
- text: collapsed ? "+" : "-",
- width,
- fill: "#000",
- radius: [0, 0, boxStyle.radius, boxStyle.radius],
- cursor: "pointer",
- },
- name: collapsed ? "expand" : "collapse",
- });
-
- const keyshape = group.addShape("rect", {
- attrs: {
- x: 0,
- y: 0,
- width,
- height: collapsed ? 45 : height,
- ...boxStyle,
- },
- draggable: true,
- });
-
- if (collapsed) {
- return keyshape;
- }
-
- const listContainer = group.addGroup({});
- listContainer.setClip({
- type: "rect",
- attrs: {
- x: -8,
- y: 30,
- width: width + 16,
- height: 300 - 30,
- },
- });
- listContainer.addShape({
- type: "rect",
- attrs: {
- x: 1,
- y: 30,
- width: width - 2,
- height: 300 - 30,
- fill: "#fff",
- },
- draggable: true,
- });
-
- if (list.length > itemCount) {
- const barStyle = {
- width: 4,
- padding: 0,
- boxStyle: {
- stroke: "#00000022",
- },
- innerStyle: {
- fill: "#00000022",
- },
- };
-
- listContainer.addShape("rect", {
- attrs: {
- y: 30,
- x: width - barStyle.padding - barStyle.width,
- width: barStyle.width,
- height: height - 30,
- ...barStyle.boxStyle,
- },
- });
-
- const indexHeight =
- afterList.length > itemCount ?
- (afterList.length / list.length) * height :
- 10;
-
- listContainer.addShape("rect", {
- attrs: {
- y: 30 +
- barStyle.padding +
- (startIndex / (list.length-8)) * (height - 30),
- x: width - barStyle.padding - barStyle.width,
- width: barStyle.width,
- height: Math.min(height, indexHeight),
- ...barStyle.innerStyle,
- },
- });
- }
- if (afterList) {
- afterList.forEach((e, i) => {
- const isSelected =
- Math.floor(startIndex) + i === Number(selectedIndex);
- let {
- columnName = "", columnType,columnComment
- } = e;
- if (columnComment){
- columnName+= " : " + columnComment
- }
- if (columnType) {
- columnName += " - " + columnType;
- }
- const label = columnName.length > 26 ? columnName.slice(0, 24) + "..." : columnName;
-
- listContainer.addShape("rect", {
- attrs: {
- x: 1,
- y: i * itemHeight - itemHeight / 2 + offsetY,
- width: width - 4,
- height: itemHeight,
- radius: 2,
- lineWidth: 1,
- cursor: "pointer",
- },
- name: `item-${Math.floor(startIndex) + i}-content`,
- draggable: true,
- });
- //未来设置字段之间有锚点
- // if (!cfg.hideDot) {
- // utils.anchor.erDrawLeft(group, label, 0, i * itemHeight + offsetY)
- // utils.anchor.erDrawLeft(group,label,width,i * itemHeight + offsetY)
- // listContainer.addShape("marker", {
- // attrs: {
- // x: 0,
- // y: i * itemHeight + offsetY,
- // r: 3,
- // stroke: boxStyle.stroke,
- // fill: "white",
- // radius: 2,
- // lineWidth: 1,
- // cursor: "crosshair",
- // },
- //
- // name: 'marker-shape'
- // });
- // listContainer.addShape("marker", {
- // attrs: {
- // x: width,
- // y: i * itemHeight + offsetY,
- // r: 3,
- // stroke: boxStyle.stroke,
- // fill: "white",
- // radius: 2,
- // lineWidth: 1,
- // cursor: "crosshair",
- //
- //
- // },
- // name: 'marker-shape'
- // });
- // }
-
- listContainer.addShape("text", {
- attrs: {
- x: 12,
- y: i * itemHeight + offsetY + 6,
- text: label,
- fontSize: 12,
- fill: "#000",
- fontFamily: "Avenir,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol",
- full: e,
- fontWeight: isSelected ? 500 : 100,
- cursor: "pointer",
- },
- name: `item-${Math.floor(startIndex) + i}`,
- });
- });
- }
- return keyshape;
- },
- // getAnchorPoints() {
- // return [
- // [0, 0],
- // [1, 0],
- // ];
- // },
- // 绘制后附加锚点
- afterDraw(cfg, group) {
- // 绘制锚点
- utils.anchor.drawMark(cfg, group)
- },
-
- }
-}
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/node/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/node/index.js
deleted file mode 100644
index 7ed5492..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/node/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/05
- * @description: register nodes
- */
-
-
-import diceErBox from './dice-er-box'
-const obj = {
- diceErBox
-}
-
-export default {
- obj,
- register(G6) {
- Object.values(obj).map(item => {
- G6.registerNode(item.name, item.options, item.extendName)
- })
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/plugins/d3-installer.js b/ebts-ui/src/views/tool/top/packages/topology/src/plugins/d3-installer.js
deleted file mode 100644
index 5991259..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/plugins/d3-installer.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/07/05
- * @description: install 3rd plugins
- */
-
-import * as d3 from 'd3-force/dist/d3-force'
-
-export default d3
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/theme/dark-style.js b/ebts-ui/src/views/tool/top/packages/topology/src/theme/dark-style.js
deleted file mode 100644
index b7c1832..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/theme/dark-style.js
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/11/20
- * @description: dark style
- */
-
-export default {
- // 节点样式
- nodeStyle: {
- default: {
- stroke: '#CED4D9',
- fill: 'transparent',
- shadowOffsetX: 0,
- shadowOffsetY: 4,
- shadowBlur: 10,
- shadowColor: 'rgba(13, 26, 38, 0.08)',
- lineWidth: 1,
- radius: 4,
- strokeOpacity: 0.7
- },
- selected: {
- shadowColor: '#ff240b',
- shadowBlur: 4,
- shadowOffsetX: 0,
- shadowOffsetY: 0
- // shadowColor: '#626262',
- // shadowBlur: 8,
- // shadowOffsetX: -1,
- // shadowOffsetY: 3
- },
- unselected: {
- shadowColor: ''
- }
- },
- // 节点标签样式
- nodeLabelCfg: {
- positions: 'center',
- style: {
- fill: '#FFF'
- }
- },
- // 连线样式
- edgeStyle: {
- default: {
- stroke: '#53da3a',
- lineWidth: 2,
- strokeOpacity: 0.92,
- lineAppendWidth: 10
- // endArrow: true
- },
- active: {
- shadowColor: 'red',
- shadowBlur: 4,
- shadowOffsetX: 0,
- shadowOffsetY: 0
- },
- inactive: {
- shadowColor: ''
- },
- selected: {
- shadowColor: '#ff240b',
- shadowBlur: 4,
- shadowOffsetX: 0,
- shadowOffsetY: 0
- },
- unselected: {
- shadowColor: ''
- }
- },
- // 锚点样式
- anchorStyle: {
- default: {
- radius: 3,
- symbol: 'circle',
- fill: '#FFFFFF',
- fillOpacity: 0,
- stroke: '#1890FF',
- strokeOpacity: 0,
- cursor: 'crosshair'
- },
- hover: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- unhover: {
- fillOpacity: 0,
- strokeOpacity: 0
- },
- active: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- inactive: {
- fillOpacity: 0,
- strokeOpacity: 0
- }
- },
- // 锚点背景样式
- anchorBgStyle: {
- default: {
- radius: 10,
- symbol: 'circle',
- fill: '#1890FF',
- fillOpacity: 0,
- stroke: '#1890FF',
- strokeOpacity: 0,
- cursor: 'crosshair'
- },
- hover: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- unhover: {
- fillOpacity: 0,
- strokeOpacity: 0
- },
- active: {
- fillOpacity: 0.3,
- strokeOpacity: 0.5
- },
- inactive: {
- fillOpacity: 0,
- strokeOpacity: 0
- }
- },
-
-
- nodeActivedOutterStyle: { lineWidth: 0 },
- groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 },
- nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 },
- edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 },
- nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' },
- groupActivedStyle: { stroke: '#1890FF' },
- edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' },
- nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 },
- groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 },
-
- groupBackgroundPadding: [40, 10, 10, 10],
- groupLabelOffsetX: 10,
- groupLabelOffsetY: 10,
- edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' },
- edgeLabelRectPadding: 4,
- edgeLabelRectStyle: { fill: 'white' },
- nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' },
- groupStyle: { stroke: '#CED4D9', radius: 4 },
- groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' },
- multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 },
- dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 },
- dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 },
- anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 },
- anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 },
- anchorHotsoptActivedStyle: { radius: 14 },
- anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' },
- nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' },
- edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 },
- nodeSelectedBoxStyle: { stroke: '#C2C2C2' },
- cursor: {
- panningCanvas: '-webkit-grabbing',
- beforePanCanvas: '-webkit-grab',
- hoverNode: 'move',
- hoverEffectiveAnchor: 'crosshair',
- hoverEdge: 'default',
- hoverGroup: 'move',
- hoverUnEffectiveAnchor: 'default',
- hoverEdgeControllPoint: 'crosshair',
- multiSelect: 'crosshair'
- },
- nodeDelegationStyle: {
- stroke: '#1890FF',
- fill: '#1890FF',
- fillOpacity: .08,
- lineDash: [4, 4],
- radius: 4,
- lineWidth: 1
- },
- edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/theme/default-style.js b/ebts-ui/src/views/tool/top/packages/topology/src/theme/default-style.js
deleted file mode 100644
index 7838462..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/theme/default-style.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: default style
- */
-
-export default {
- // 节点样式
- nodeStyle: {
- default: {
- stroke: '#CED4D9',
- fill: 'transparent',
- // shadowOffsetX: 0,
- // shadowOffsetY: 4,
- shadowBlur: 10,
- shadowColor: 'rgba(13, 26, 38, 0.08)',
- lineWidth: 1,
- radius: 4,
- strokeOpacity: 0.7
- },
- selected: {
- shadowColor: '#ff240b',
- shadowBlur: 2,
- // shadowOffsetX: 0,
- // shadowOffsetY: 0,
- // fontSize:'50'
- // shadowColor: '#626262',
- // shadowBlur: 8,
- // shadowOffsetX: -1,
- // shadowOffsetY: 3
- },
- unselected: {
- shadowColor: ''
- }
- },
- // 节点标签样式
- nodeLabelCfg: {
- positions: 'center',
- style: {
- fill: '#000'
- }
- },
- // 连线样式
- edgeStyle: {
- default: {
- stroke: '#A3B1BF',
- lineWidth: 2,
- strokeOpacity: 0.92,
- lineAppendWidth: 10
- // endArrow: true
- },
- active: {
- shadowColor: 'red',
- shadowBlur: 4,
- shadowOffsetX: 0,
- shadowOffsetY: 0
- },
- inactive: {
- shadowColor: ''
- },
- selected: {
- shadowColor: '#ff240b',
- shadowBlur: 4,
- shadowOffsetX: 0,
- shadowOffsetY: 0
- },
- unselected: {
- shadowColor: ''
- }
- },
- // 锚点样式
- anchorStyle: {
- default: {
- r: 3,
- symbol: 'circle',
- lineWidth: 1,
- fill: '#FFFFFF',
- fillOpacity: 1,
- stroke: '#096DD9',
- strokeOpacity: 1,
- cursor: 'crosshair'
- },
- hover: {
- fillOpacity: 0.3,
- strokeOpacity: 0.5
- },
- unhover: {
- fillOpacity: 0,
- strokeOpacity: 0
- },
- active: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- inactive: {
- fillOpacity: 0,
- strokeOpacity: 0
- }
- },
- // 锚点背景样式
- anchorBgStyle: {
- default: {
- r: 10,
- symbol: 'circle',
- fill: '#1890FF',
- fillOpacity: 0,
- stroke: '#1890FF',
- strokeOpacity: 0,
- cursor: 'crosshair'
- },
- hover: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- unhover: {
- fillOpacity: 0,
- strokeOpacity: 0
- },
- active: {
- fillOpacity: 0.3,
- strokeOpacity: 0.5
- },
- inactive: {
- fillOpacity: 0,
- strokeOpacity: 0
- }
- },
-
-
- nodeActivedOutterStyle: { lineWidth: 0 },
- groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 },
- nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 },
- edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 },
- nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' },
- groupActivedStyle: { stroke: '#1890FF' },
- edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' },
- nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 },
- groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 },
-
- groupBackgroundPadding: [40, 10, 10, 10],
- groupLabelOffsetX: 10,
- groupLabelOffsetY: 10,
- edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' },
- edgeLabelRectPadding: 4,
- edgeLabelRectStyle: { fill: 'white' },
- nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' },
- groupStyle: { stroke: '#CED4D9', radius: 4 },
- groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' },
- multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 },
- dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 },
- dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 },
- anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 },
- anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 },
- anchorHotsoptActivedStyle: { radius: 14 },
- anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' },
- nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' },
- edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 },
- nodeSelectedBoxStyle: { stroke: '#C2C2C2' },
- cursor: {
- panningCanvas: '-webkit-grabbing',
- beforePanCanvas: '-webkit-grab',
- hoverNode: 'move',
- hoverEffectiveAnchor: 'crosshair',
- hoverEdge: 'default',
- hoverGroup: 'move',
- hoverUnEffectiveAnchor: 'default',
- hoverEdgeControllPoint: 'crosshair',
- multiSelect: 'crosshair'
- },
- nodeDelegationStyle: {
- stroke: '#1890FF',
- fill: '#1890FF',
- fillOpacity: .08,
- lineDash: [4, 4],
- radius: 4,
- lineWidth: 1
- },
- edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/theme/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/theme/index.js
deleted file mode 100644
index 02e514a..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/theme/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: 编辑器主题样式 - 节点、连线的预设样式
- */
-
-import defaultStyle from './default-style'
-import darkStyle from './dark-style'
-import officeStyle from './office-style'
-
-export default {
- defaultStyle,
- darkStyle,
- officeStyle
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/theme/office-style.js b/ebts-ui/src/views/tool/top/packages/topology/src/theme/office-style.js
deleted file mode 100644
index b1e21a7..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/theme/office-style.js
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/11/21
- * @description: office style
- */
-
-export default {
- // 节点样式
- nodeStyle: {
- default: {
- stroke: '#CED4D9',
- fill: '#FFFFFF',
- shadowOffsetX: 0,
- shadowOffsetY: 4,
- shadowBlur: 10,
- shadowColor: 'rgba(13, 26, 38, 0.08)',
- lineWidth: 1,
- radius: 4,
- strokeOpacity: 0.7
- },
- selected: {
- shadowColor: '#ff240b',
- shadowBlur: 4,
- shadowOffsetX: 1,
- shadowOffsetY: 1
- // shadowColor: '#626262',
- // shadowBlur: 8,
- // shadowOffsetX: -1,
- // shadowOffsetY: 3
- },
- unselected: {
- shadowColor: ''
- }
- },
- // 节点标签样式
- nodeLabelCfg: {
- positions: 'center',
- style: {
- fill: '#000'
- }
- },
- // 连线样式
- edgeStyle: {
- default: {
- stroke: '#41c23a',
- lineWidth: 2,
- strokeOpacity: 0.92,
- lineAppendWidth: 10
- // endArrow: true
- },
- active: {
- shadowColor: 'red',
- shadowBlur: 4,
- shadowOffsetX: 0,
- shadowOffsetY: 0
- },
- inactive: {
- shadowColor: ''
- },
- selected: {
- shadowColor: '#ff240b',
- shadowBlur: 4,
- shadowOffsetX: 0,
- shadowOffsetY: 0
- },
- unselected: {
- shadowColor: ''
- }
- },
- // 锚点样式
- anchorStyle: {
- default: {
- radius: 3,
- symbol: 'circle',
- fill: '#FFFFFF',
- fillOpacity: 0,
- stroke: '#1890FF',
- strokeOpacity: 0,
- cursor: 'crosshair'
- },
- hover: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- unhover: {
- fillOpacity: 0,
- strokeOpacity: 0
- },
- active: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- inactive: {
- fillOpacity: 0,
- strokeOpacity: 0
- }
- },
- // 锚点背景样式
- anchorBgStyle: {
- default: {
- radius: 10,
- symbol: 'circle',
- fill: '#1890FF',
- fillOpacity: 0,
- stroke: '#1890FF',
- strokeOpacity: 0,
- cursor: 'crosshair'
- },
- hover: {
- fillOpacity: 1,
- strokeOpacity: 1
- },
- unhover: {
- fillOpacity: 0,
- strokeOpacity: 0
- },
- active: {
- fillOpacity: 0.3,
- strokeOpacity: 0.5
- },
- inactive: {
- fillOpacity: 0,
- strokeOpacity: 0
- }
- },
-
-
- nodeActivedOutterStyle: { lineWidth: 0 },
- groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 },
- nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 },
- edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 },
- nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' },
- groupActivedStyle: { stroke: '#1890FF' },
- edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' },
- nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 },
- groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 },
-
- groupBackgroundPadding: [40, 10, 10, 10],
- groupLabelOffsetX: 10,
- groupLabelOffsetY: 10,
- edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' },
- edgeLabelRectPadding: 4,
- edgeLabelRectStyle: { fill: 'white' },
- nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' },
- groupStyle: { stroke: '#CED4D9', radius: 4 },
- groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' },
- multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 },
- dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 },
- dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 },
- anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 },
- anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 },
- anchorHotsoptActivedStyle: { radius: 14 },
- anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' },
- nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' },
- edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 },
- nodeSelectedBoxStyle: { stroke: '#C2C2C2' },
- cursor: {
- panningCanvas: '-webkit-grabbing',
- beforePanCanvas: '-webkit-grab',
- hoverNode: 'move',
- hoverEffectiveAnchor: 'crosshair',
- hoverEdge: 'default',
- hoverGroup: 'move',
- hoverUnEffectiveAnchor: 'default',
- hoverEdgeControllPoint: 'crosshair',
- multiSelect: 'crosshair'
- },
- nodeDelegationStyle: {
- stroke: '#1890FF',
- fill: '#1890FF',
- fillOpacity: .08,
- lineDash: [4, 4],
- radius: 4,
- lineWidth: 1
- },
- edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/toolbar-edit.vue b/ebts-ui/src/views/tool/top/packages/topology/src/toolbar-edit.vue
deleted file mode 100644
index bba3420..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/toolbar-edit.vue
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/toolbar-preview.vue b/ebts-ui/src/views/tool/top/packages/topology/src/toolbar-preview.vue
deleted file mode 100644
index c0c7a0d..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/toolbar-preview.vue
+++ /dev/null
@@ -1,171 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/topology.vue b/ebts-ui/src/views/tool/top/packages/topology/src/topology.vue
deleted file mode 100644
index a6c0611..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/topology.vue
+++ /dev/null
@@ -1,1639 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
![]()
-
{{nodeType.tableComment}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
节点
-
-
节点标签
-
-
-
- 修改
-
-
-
-
-
- {{ value }}
-
-
-
-
-
-
连线
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- C
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/draw_mark.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/draw_mark.js
deleted file mode 100644
index fd9a524..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/draw_mark.js
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-import theme from '../../theme'
-export default function(cfg, group) {
- const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体
- // console.log("cfg",cfg)
- let { anchorPoints, width, height, id } = cfg
- // console.log("基础信息",anchorPoints,"宽",width,"高",height,"节点id",id)
- if (anchorPoints && anchorPoints.length) {
- for (let i = 0, len = anchorPoints.length; i < len; i++) {
- let [x, y] = anchorPoints[i]
- // 计算Marker中心点坐标
- let anchorX = x * width
- let anchorY = y * height
- // 添加锚点背景
- let anchorBgShape = group.addShape('marker', {
- id: id + '_anchor_bg_' + i,
- attrs: {
- name: 'anchorBg',
- x: anchorX,
- y: anchorY,
- // 锚点默认样式
- ...themeStyle.anchorBgStyle.default
- },
- draggable: false,
- name: 'markerBg-shape'
- })
- // 添加锚点Marker形状
- // eslint-disable-next-line no-unused-vars
- let anchorShape = group.addShape('marker', {
- id: id + '_anchor_' + i,
- attrs: {
- name: 'anchor',
- x: anchorX,
- y: anchorY,
- // 锚点默认样式
- ...themeStyle.anchorStyle.default
- },
- draggable: false,
- name: 'marker-shape'
- })
-
- anchorShape.on('mouseenter', function() {
- anchorBgShape.attr({
- ...themeStyle.anchorBgStyle.active
- })
- })
- anchorShape.on('mouseleave', function() {
- anchorBgShape.attr({
- ...themeStyle.anchorBgStyle.inactive
- })
- })
- }
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/er-draw-left.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/er-draw-left.js
deleted file mode 100644
index b56b459..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/er-draw-left.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import theme from '../../theme'
-
-
-
-
-export default function(group,label,x,y,i) {
- const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体
- let anchorBgShape = group.addShape('marker', {
- id: label+ '_anchor_bg_lift_' + i,
- attrs: {
- name: 'anchorBg',
- x: x,
- y: y,
- ...themeStyle.anchorBgStyle.default
- },
- draggable: false,
- name: 'markerBg-shape'
- })
-
- let anchorShape = group.addShape('marker', {
- id: label+ '_anchor_bg_lift_' + i,
- attrs: {
- name: 'anchor',
- x: x,
- y: y,
- ...themeStyle.anchorStyle.default
- },
- draggable: false,
- name: 'marker-shape'
- })
-
- anchorShape.on('mouseenter', function() {
- anchorBgShape.attr({
- ...themeStyle.anchorBgStyle.active
- })
- })
- anchorShape.on('mouseleave', function() {
- anchorBgShape.attr({
- ...themeStyle.anchorBgStyle.inactive
- })
- })
-
-
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/index.js
deleted file mode 100644
index 1b94cd3..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: anchor
- */
-
-import erDrawLeft from './er-draw-left'
-import setState from './set-state'
-import drawMark from './draw_mark'
-import update from './update'
-
-export default {
- setState,
- erDrawLeft,
- drawMark,
- update
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/set-state.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/set-state.js
deleted file mode 100644
index fa3fd65..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/set-state.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: set anchor state
- */
-import theme from '../../theme'
-
-export default function(name, value, item) {
-
- const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体
- if (name === 'hover') {
- // console.log(item)
- let group = item.getContainer()
- let children = group.get('children')
- for (let i = 0, len = children.length; i < len; i++) {
- let child = children[i]
- // 处理锚点状态
- // console.log(child.attrs.name)
- if (child.attrs.name === 'anchorBg') {
- if (value) {
- child.attr(themeStyle.anchorStyle.hover)
- } else {
- child.attr(themeStyle.anchorStyle.unhover)
- }
- }
- }
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/update.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/update.js
deleted file mode 100644
index 1509f05..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/anchor/update.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: update anchor
- */
-
-export default function(cfg, group) {
- let { anchorPoints, width, height, id } = cfg
- if (anchorPoints && anchorPoints.length) {
- for (let i = 0, len = anchorPoints.length; i < len; i++) {
- let [x, y] = anchorPoints[i]
- // 计算Marker中心点坐标
- let originX = -width / 2
- let originY = -height / 2
- let anchorX = x * width + originX
- let anchorY = y * height + originY
- // 锚点背景
- let anchorBgShape = group.findById(id + '_anchor_bg_' + i)
- // 锚点
- let anchorShape = group.findById(id + '_anchor_' + i)
- anchorBgShape.attr({
- x: anchorX,
- y: anchorY
- })
- anchorShape.attr({
- x: anchorX,
- y: anchorY
- })
- }
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/collapse/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/collapse/index.js
deleted file mode 100644
index d43dc28..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/collapse/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * @author: clay
- * @data: 2021/5/11 17:28
- * @email: clay@hchyun.com
- * @description: node
- */
-import setState from './set-state'
-
-export default {
- setState
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/collapse/set-state.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/collapse/set-state.js
deleted file mode 100644
index c946239..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/collapse/set-state.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @author: clay
- * @data: 2021/5/11 17:28
- * @email: clay@hchyun.com
- * @description: node
- */
-export default function(e){
- const {
- graph
- } = this;
- const {
- y
- } = e;
- const item = e.item;
- const shape = e.shape;
- if (!item) {
- return;
- }
-
- if (shape.get("name") === "collapse") {
- graph.updateItem(item, {
- collapsed: true,
- size: [300, 50],
- });
- setTimeout(() => graph.layout(), 100);
- } else if (shape.get("name") === "expand") {
- graph.updateItem(item, {
- collapsed: false,
- size: [300, 500],
- });
- setTimeout(() => graph.layout(), 100);
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/edge/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/edge/index.js
deleted file mode 100644
index 8002373..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/edge/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: edge
- */
-
-import setState from './set-state'
-
-export default {
- setState
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/edge/set-state.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/edge/set-state.js
deleted file mode 100644
index 9090426..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/edge/set-state.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: set edge state
- */
-
-import theme from '../../theme'
-
-export default function(name, value, item) {
- const group = item.getContainer()
- const shape = group.get('children')[0] // 顺序根据 draw 时确定
- const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体
- if (name === 'active') {
- if (value) {
- shape.attr(themeStyle.edgeStyle.active)
- } else {
- shape.attr(themeStyle.edgeStyle.inactive)
- }
- } else if (name === 'selected') {
- if (value) {
- shape.attr(themeStyle.edgeStyle.selected)
- } else {
- shape.attr(themeStyle.edgeStyle.unselected)
- }
- }
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/index.js
deleted file mode 100644
index 2b33f54..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: graph utils
- */
-
-import node from './node'
-import anchor from './anchor'
-import edge from './edge'
-import collapse from './collapse'
-
-/**
- * 比较两个对象的内容是否相同(两个对象的键值都相同)
- * @param obj1
- * @param obj2
- * @returns {*}
- */
-const isObjectValueEqual = function(obj1, obj2) {
- let o1 = obj1 instanceof Object
- let o2 = obj2 instanceof Object
- // 不是对象的情况
- if (!o1 || !o2) {
- return obj1 === obj2
- }
- // 对象的属性(key值)个数不相等
- if (Object.keys(obj1).length !== Object.keys(obj2).length) {
- return false
- }
- // 判断每个属性(如果属性值也是对象则需要递归)
- for (let attr in obj1) {
- let t1 = obj1[attr] instanceof Object
- let t2 = obj2[attr] instanceof Object
- if (t1 && t2) {
- return isObjectValueEqual(obj1[attr], obj2[attr])
- } else if (obj1[attr] !== obj2[attr]) {
- return false
- }
- }
- return true
-}
-
-
-/**
- * 生成uuid算法,碰撞率低于1/2^^122
- * @returns {string}
- */
-const generateUUID = function() {
- let d = new Date().getTime()
- // x 是 0-9 或 a-f 范围内的一个32位十六进制数
- let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
- let r = (d + Math.random() * 16) % 16 | 0
- d = Math.floor(d / 16)
- return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)
- })
- return uuid
-}
-
-export default {
- node,
- anchor,
- edge,
- collapse,
- // 通用工具类函数
- isObjectValueEqual,
- generateUUID
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/node/index.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/node/index.js
deleted file mode 100644
index 61e5741..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/node/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: node
- */
-
-import setState from './set-state'
-
-export default {
- setState
-}
diff --git a/ebts-ui/src/views/tool/top/packages/topology/src/utils/node/set-state.js b/ebts-ui/src/views/tool/top/packages/topology/src/utils/node/set-state.js
deleted file mode 100644
index 4b60368..0000000
--- a/ebts-ui/src/views/tool/top/packages/topology/src/utils/node/set-state.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * @author: clay
- * @data: 2019/08/15
- * @description: set node state
- */
-
-import theme from '../../theme'
-
-export default function(name, value, item) {
- const group = item.getContainer()
- const shape = group.get('children')[0] // 顺序根据 draw 时确定
- const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体
- if (name === 'active') {
- if (value) {
- shape.attr(themeStyle.nodeStyle.active)
- } else {
- shape.attr(themeStyle.nodeStyle.inactive)
- }
- } else if (name === 'selected') {
- if (value) {
- group.attr(themeStyle.nodeStyle.selected)
- } else {
- group.attr(themeStyle.nodeStyle.default)
- }
- }
-
-}
diff --git a/ebts-ui/src/views/tool/top/topology.vue b/ebts-ui/src/views/tool/top/topology.vue
deleted file mode 100644
index a64308e..0000000
--- a/ebts-ui/src/views/tool/top/topology.vue
+++ /dev/null
@@ -1,300 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
-
-
-
-
- 导出
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ebts-ui/src/views/tool/top/utils/index.js b/ebts-ui/src/views/tool/top/utils/index.js
deleted file mode 100644
index 21ebc8c..0000000
--- a/ebts-ui/src/views/tool/top/utils/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Created by clay on 2019/10/14
- * Description: common utils
- */
-
-/**
- * This is just a simple version of deep copy
- * Has a lot of edge cases bug
- * If you want to use a perfect deep copy, use lodash's _.cloneDeep
- * @param {Object} source
- * @returns {Object} targetObj
- */
-export function deepClone(source) {
- if (!source && typeof source !== 'object') {
- throw new Error('error arguments: deepClone')
- }
- let targetObj = source.constructor === Array ? [] : {}
- Object.keys(source).forEach(key => {
- if (source[key] && typeof source[key] === 'object') {
- targetObj[key] = deepClone(source[key])
- } else {
- targetObj[key] = source[key]
- }
- })
- return targetObj
-}
-
-/**
- * Randomly extract one or more elements from an array
- * If you want to use a perfect solution, use lodash's _.sample or _.sampleSize
- * @param {Array} arr
- * @param {number} count
- * @returns {Array} arr
- */
-export function getRandomArrayElements(arr, count = 1) {
- if (count > arr.length) {
- throw new Error('error arguments: count is greater than length of array')
- }
- let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index
- while (i-- > min) {
- index = Math.floor((i + 1) * Math.random())
- temp = shuffled[index]
- shuffled[index] = shuffled[i]
- shuffled[i] = temp
- }
- return shuffled.slice(min)
-}