UNPKG

mldong-flow-designer-plus

Version:

本项目包含了作者为B站课堂视频[《工作流设计器开发最佳实践》](https://www.bilibili.com/cheese/play/ss24484)的过程源码。教程中开发的组件也可用于实际生产环境中。以下是和使用文档和课程章节说明。 ## 实战项目 [演示地址](https://flow-pro.mldong.com/)

71 lines (67 loc) 1.71 kB
// Fork.ts import { ColorEnum, NodeStateEnum } from "../types/enums"; import { DiamondNode, DiamondNodeModel, h } from "@logicflow/core"; import forkSvgStr from '../assets/fork.svg?raw' import { parseSvg } from '../tool' const paths = parseSvg(forkSvgStr) class ForkModel extends DiamondNodeModel { setAttributes(): void { this.text.value = ""; this.rx = 28; this.ry = 28; this.text.draggable = false; this.text.editable = false; } getNodeStyle() { const theme = this.graphModel.props.theme; const style = super.getNodeStyle(); if(this.properties.state == NodeStateEnum.history) { style.stroke = theme.historyColor || ColorEnum.historyColor; } else if(this.properties.state == NodeStateEnum.active) { style.stroke = theme.activeColor || ColorEnum.activeColor; } else { style.stroke = theme.primaryColor || ColorEnum.primaryColor; } // style.strokeDasharray = "3 3"; return style; } } class ForkView extends DiamondNode { private getLabelShape() { const { model } = this.props; const { x, y} = model; const style = model.getNodeStyle(); const innerWH = 28; return h( "svg", { x: x - innerWH/2, y: y - innerWH/2, width: innerWH, height: innerWH, viewBox: "0 0 1024 1024" }, ...paths.map(d=>{ return h("path", { fill: style.stroke, d }) }), ); } /** * 完全自定义节点外观方法 */ getShape() { const outCircle = super.getShape(); return h("g", {}, [ outCircle, this.getLabelShape() ]); } } export default { type: "fork", view: ForkView, model: ForkModel, };