1.2.20 • Published 2 years ago

eigen-gojs v1.2.20

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

eigen-gojs

基于gojs封装的编辑器组件,参考AntV g6-editor设计,目前仅提供react版本

引用方式及使用方法

import React, { Component } from 'react'
import { GojsEditor } from 'eigen-gojs'

class Demo extends Component {
  render() {
    return <GojsEditor
      width={int}
      height={int}
      page={object}
      palette={object}
      detail={object}
      toolbar={object}
      onEvent={function}
      name={string}
    />
  }
}

props(*为必填项)

名称类型含义
*widthint编辑器宽度
*heightint编辑器高度度
*pageobject主视图参数,用于初始化节点信息及页面布局等
paletteobject左侧边栏参数,用于定义被拖拽节点信息等,为空则不显示
detailobject右侧自定义业务区域参数,该区域用于展示节点、连线等信息,为空则不显示
toolbarobject工具栏参数,该区域用于展示默认工具及自定义业务,为空则不显示
onEventfunction事件响应函数,入参为(name, data),其中name值为事件名,如page.initReady/page.selectionDeleted/page.click/page.rightClick/page.ChangedSelection/palette.click/palette.rightClick,data为事件参数值
nodeTemplateMapfunction自定义节点类型,入参为gojsprops:(props)
namestring自定义 Eigen-editor的名稱(用於在一個頁面有多個diagram)

page 主视图

名称类型含义
nodeDataArrayarray初始化节点数据,后文进行详细介绍
linkDataArrayarray初始化连线数据,后文进行详细介绍
toolTipfunction节点提示函数,输出为string
getToolTipfunction自定义节点提示函数,返回reactDom
inputToolTipfunction输入节点提示函数,输出为string
outputToolTipfunction输出节点提示函数,输出为string
iconsarray长度为2,分别为节点preIcon和icon的点击响应事件,目前仅支持click,如{click:(nodeData)=>{...}}, {click:(nodeData)=>{...}}
layoutstring节点布局结构,默认为自动,若为'tree'则为树形布局结构,需配合nodeDataArray格式
allowMovebool是否允许拖动节点,默认为true
allowDeletebool是否允许删除节点,默认为true
allowZoombool是否允许放大缩小,默认为false
contentAlignmentstring内容自动排列对齐方式,每次更新布局后会重新排列,可选值为Default\Center等...可选值请参考go.Spot.[Constants],默认值为Center,如果不希望自动排列,可设置为Default,此时画布可实现拖拽功能
showExpanderButtonbool是否显示展开/缩起按钮,nodeDataArray为树形结构方有效
directionint节点排列方式,默认为纵向direction=0,若为横向则节点排列方式,默认为纵向direction=90
autoLinkValidationfunction是否允许初始化自动连线校验函数,入参为(inputNode, input, ouputNode, ouput)
linkValidationfunction是否允许手动连线校验函数,入参为(inputNode, input, ouputNode, ouput)
onDragChangefunction从palette拖动节点到page的响应函数,入参为(dragData)
getMenufunction右键构造函数,输出为reactDom
diagramfunction自定义初始化diagram,入参为gojsprops:(props)
nodeTemplatefunction自定义默认节点,入参为gojsprops:(props)
linkTemplatefunction自定义节点类型,入参为gojsprops:(props)

其中gojsprops如下

名称类型含义
onEventfunction触发onEvent事件,具体参数请参考上文中props的onEvent
storeobject包含palette、page、toolbar、detail对应的props
setStorefunctiongojs回调,使用方式为:this.setStore('page' | 'palette' | 'toolbar' | 'detail', { key: value })

palette 左侧边栏

名称类型含义
*nodeDataArrayarray节点数据,后文进行详细介绍
linkDataArrayarray连线数据,后文进行详细介绍
widthint宽度
layoutstring布局方式,layout='tree'为树形布局
getMenufunction右键构造函数,输出为reactDom

detail 定义业务区域

名称类型含义
widthint业务区域宽度
navHeightint缩略图高度,可通过设置该值为0隐藏缩略图
templatereactDom定义业务区域组件,返回react节点

toolbar 工具栏

名称类型含义
defaultMenusarray显示默认的工具栏,不设置默认显示全部,默认有:'undo','redo','paste','copy','delete','hideLeft','hideRight','hideBoth','zoomToFit', 'decreaseZoom', 'increaseZoom','search', 'select'
menusarray定义业务区域组件,返回react节点数组,长度为3,第1~2分别为默认搜索栏前后区域的自定义组件,第3个为隐藏菜单自定义组件,为null则不显示

nodeDataArray 节点数组

分两种格式:默认和树型(tree)

名称类型含义
*keystring\int用于标识节点的id
*namestring\int节点名称
preIconstring节点名称前面的icon,可用值为success/warn/error/loading/plus/minus/upgrade/swap
iconstring节点名称后面的icon,可用值同上
highlightbool用于高亮当前节点
bgColorstring背景颜色值,同background-color,优先级大于高亮和选中属性
colorstring字体颜色,同color
parentstring\int父节点key值,适用于只有一个父节点的树形结构,默认初始化时自动连线,与parents不能同时出现
parentsarray所有父节点的key值数组,适用于多个父节点的树形结构,默认初始化时自动连线,与parent不能同时出现
inputarray输入节点,下文进行详细介绍
outputarray输出节点,下文进行详细介绍
categorystring自定义类型,跟nodeTemplateMap搭配使用

eg:

[
  { key: '1', name: '1', parents: ['5'] },
  { key: '2', name: '2', preIcon: 'plus' },
  { key: '3', name: '3', parents: ['2'] },
  { key: '4', name: '4', parents: ['3'] },
  { key: '5', name: '5', parents: ['4'] },
  { key: '6', name: '6', parents: ['3', '4'] },
  { key: '7', name: '7', parents: ['6'], icon: 'minus' }
  { key: '7', name: '7', parents: ['6'], icon: 'minus', category: 'mind' }
]

input/output 输入输出节点

名称类型含义
typestring用于校验两个input/output是否可以相连,若自定义linkValidation则该判断失效
valueany节点值

linkDataArray 连线数组

一般不需要设置该值,组件会自动连线nodeDataArray中parent指定的节点 分两种格式:默认和树型(tree)

名称类型含义
*fromstring\int输入节点key值
*tostring\int输出节点key值
*fromPortstring\int输入input的id
*toPortstring\int输出output的id

nodeTemplateMap 自定义节点类型

对于默认节点类型不适用的情况下可以自行定义节点,返回为nodeTemplate数组,具体含义请参考 GOJS官网说明。特别注意:默认右键需要在对应节点增加 contextMenu 属性,使用方式如下:

eg:

import { config } from 'eigen-gojs'
const nodeDataArray = {
  { category: 'mind', ... }
}
...
page.nodeTemplateMap = (props) => {
  return [{
    $(go.Node, "Spot",
      contextMenu: config.contextMenu(props, 'page-rightClick'),
      ...
    )
  }]
}

eggo 全局对象

为了便于管理gojs对象,我们将部分对象挂载到window下:window.eggo,如果 GojsEditor 有了屬性name,将部分对象挂载到window下:window.eggosname 去使用用户可以通过这些对象直接操作gojs对象

注意: 使用nodeTemplate 自定义节点类型 需要加上給所有id字段加上defalut 例如:eggo-page-diagram-default

名称类型含义
pageDiagramobject主视图gojs对象
paletteDiagramobject左侧边栏gojs对象
removePageLinkDatafunction移除连线,同eggo.pageDiagram.model.removeLinkData
updatePageDiagramfunction更新主视图gojs对象数据,入参为(nodeKey,data)其中nodeKey为节点key,data为该节点需要更新的值

demo

请查看demo.js