1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- // 删除无用字段
- const deletsNoUseKey = (node) => {
- delete node.id;
- delete node.preNodeId;
- delete node.x;
- delete node.y;
- delete node.style;
- delete node.size;
- delete node.depth;
- delete node.selected;
- delete node.anchorPoints;
- delete node.contentHover;
- return node;
- };
- // 给节点添加结构id
- function setNodeIdByList(nodeList, preNodeId, nodeMap) {
- if (!Array.isArray(nodeList) || nodeList.length <= 0) return;
- for (let i = 0; i < nodeList.length; i++) {
- const node = nodeList[i];
- // 把节点存入 nodeMap
- nodeMap.set(String(node.id), node);
- node.nodeId = preNodeId ? preNodeId + "-" + i : i + "";
- setNodeIdByList(node.children, String(node.nodeId), nodeMap);
- }
- }
- // 修改节点的data数据中指向节点
- const setNextNodeId = (node, nodeMap) => {
- const nodeData = node.data;
- // 修改选项的对应节点
- if (node.nodeType === "root-node" || node.nodeType === "plot-node") {
- const optionsList = nodeData.optionsList || [];
- optionsList.forEach((optionItem) => {
- const nextNode = nodeMap.get(optionItem.nodeId) || {};
- optionItem.nextNodeId = nextNode.nodeId;
- });
- } else if (node.nodeType === "jumpNodeId") {
- const nextNode = nodeMap.get(node.jumpNodeId) || {};
- node.nextNodeId = nextNode.nodeId;
- }
- };
- // 对节点的自定义数据 data 进行修改
- function transformNodeDataByList(nodeList, nodeMap) {
- if (!Array.isArray(nodeList) || nodeList.length <= 0) return;
- for (let i = 0; i < nodeList.length; i++) {
- const node = nodeList[i];
- node.nodeType = node.type;
- node.data.nodeName = node.data.name;
- setNextNodeId(node, nodeMap);
- transformNodeDataByList(node.children, nodeMap);
- }
- }
- // 修改数据
- export const transformGraphdata = (graphData) => {
- // 记录id和节点的映射
- let nodeMap = new Map();
- // 先给所有数据添加 nodeId
- setNodeIdByList([graphData], "", nodeMap);
- // 处理节点的 data 数据
- transformNodeDataByList([graphData], nodeMap);
- // nodeMap 里面有所有的节点,在这里把所有节点的无用字段去除一下
- nodeMap.forEach((node) => {
- deletsNoUseKey(node);
- });
- return graphData;
- };
- export const transfromReturnGraphdata = (graphData) => {
- // 记录id和节点的映射
- let nodeMap = new Map();
- // 先给所有数据添加 nodeId
- setNodeIdByList([graphData], "", nodeMap);
- // 处理节点的 data 数据
- transformReturnNodeDataByList([graphData], nodeMap);
- return graphData;
- };
- // 对节点的自定义数据 data 进行修改
- function transformReturnNodeDataByList(nodeList, nodeMap) {
- if (!Array.isArray(nodeList) || nodeList.length <= 0) return;
- for (let i = 0; i < nodeList.length; i++) {
- const node = nodeList[i];
- node.id = String(node.id);
- node.type = node.nodeType;
- node.data.name = node.data.nodeName;
- setNextNodeId(node, nodeMap);
- transformReturnNodeDataByList(node.children, nodeMap);
- }
- }
|