import BaseRenderer from 'diagram-js/lib/draw/BaseRenderer'; import { append as svgAppend, attr as svgAttr, create as svgCreate, select as svgSelect, selectAll as svgSelectAll, clone as svgClone, clear as svgClear, remove as svgRemove } from 'tiny-svg'; const HIGH_PRIORITY = 1500; export default class CustomRenderer extends BaseRenderer { bpmnRenderer: BaseRenderer; modeling: any; constructor(eventBus, bpmnRenderer, modeling) { super(eventBus, HIGH_PRIORITY); this.bpmnRenderer = bpmnRenderer; this.modeling = modeling; } canRender(element) { // ignore labels return !element.labelTarget; } /** * 自定义节点图形 * @param {*} parentNode 当前元素的svgNode * @param {*} element * @returns */ drawShape(parentNode, element) { const shape = this.bpmnRenderer.drawShape(parentNode, element); const { type, width, height } = element; // 开始 填充绿色 if (type === 'bpmn:StartEvent') { svgAttr(shape, { fill: '#77DF6D' }); return shape; } if (type === 'bpmn:EndEvent') { svgAttr(shape, { fill: '#EE7B77' }); return shape; } if (type === 'bpmn:UserTask') { svgAttr(shape, { fill: '#A9C4F8' }); return shape; } return shape; } getShapePath(shape) { return this.bpmnRenderer.getShapePath(shape); } } CustomRenderer['$inject'] = ['eventBus', 'bpmnRenderer'];