• react使用gg-editor编写拓扑编辑器


    标题需求开发过程中使用文档地址

    准备工作

    • 运行ant pro查看代码

    地址引导
    因为需要查看完整功能,因此选择完整版代码
    在这里插入图片描述

    • 查看代码:核心实现是gg-editor,版本号是2.0.2
      在这里插入图片描述
      在这里插入图片描述
    • 准备数据结构
      捕获数据结构在这里插入图片描述
      回显数据结构:
      在这里插入图片描述

    项目中加载跟ant pro同版本的项目,因此代码可以参考ant pro

    在开发过程中需额外增加的功能

    • 保存图谱
    • 下载图谱缩略图,png jpg 透明以及白底
    • 鼠标移入时,显示对应节点详情
    • 显示列表图谱小图翻阅,具体效果如下
      在这里插入图片描述
      具体功能实现:
      1.保存图谱+redux
    import React from 'react';
    import { withPropsAPI } from 'gg-editor';
    import { Button } from 'antd';
    import { connect } from 'react-redux'; 
    import { RootState } from '../../../redux/rootReducer'; 
    import { asyncActionsCreator } from '../../../pages/relationship_graph/action';
    
    export interface EditorCommand {
      relationResourceDatas: any;
      relataBtn: any;
      addGraphData: any;
      editGraphData: any;
      [key: string]: any;
      editorTag: any;
    }
    class Save extends React.Component {
      constructor(EditorCommand) {
        super(EditorCommand);
      }
    
      handleClick = () => {
        const { propsAPI } = this.props as any;
        const { relationResourceDatas, editGraphData, inputval, editorTag, isFisrt } = this.props;
        propsAPI.save();
        const graphData = JSON.parse(JSON.stringify(propsAPI.save())); //保存下来的数据
      };
    
      render() {
        return (
          
        );
      }
    }
    
    const mapStateToProps = (state: RootState) => {
      const {redux方法 } = state.ReliationShipGraph;
    
    
      return {
      redux方法 
      };
    };
    
    const mapDispatchToProps = (dispatch: any) => {
      return {
       redux值: (val) => dispatch(asyncActionsCreator.addGraphRelation(val)),
      };
    };
    
    export default connect(mapStateToProps, mapDispatchToProps)(withPropsAPI(Save as any)); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    方法来源:
    在这里插入图片描述在这里插入图片描述

    2.下载图谱缩略图,png jpg 透明以及白底

    function downloadImg(type: string, state?: boolean) {
        //绘制画布
        const divCanvas: Element | any = document.getElementsByClassName('graph-container')[0];
        //缩略画布
        const minicanvas = divCanvas.getElementsByTagName('canvas')[0];
        if (minicanvas) {
          let src = '';
          const ctx = minicanvas.getContext('2d');
          const imgW = minicanvas.width;
          const imgH = minicanvas.height;
          const imageData = ctx.getImageData(0, 0, imgW, imgH);
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    深度学习实践3:多层感知机
    肿瘤NGS测序行业背景介绍
    【ArcGIS】渔网A和不规则栅格B算面积比
    [附源码]java毕业设计旅游管理系统
    【配电网重构】基于粒子群算法求解配电网重构问题附matlab代码
    接口--抽象方法
    真的卷不动了...
    ConcurrentHashMap--addCount()
    【计算机毕业设计】002基于weixin小程序家庭记账本
    数据结构绪论,基本概念
  • 原文地址:https://blog.csdn.net/ZhaoYulin6/article/details/126992015