import { changeTypeByTaskShape, typeConfig } from '../../config'; import { append as svgAppend, create as svgCreate } from 'tiny-svg'; import { bpmnChoose, bpmnEnd, bpmnExclusive, bpmnGroup, bpmnInclusive, bpmnLabel, bpmnOutside, bpmnParallel, bpmnProcessing, bpmnStart, bpmnSubFlow, bpmnTask, bpmnTrigger, typeChoose, typeCondition, typeConfluence, typeOutside, typeProcessing, typeSubFlow, typeTrigger, } from '../../config/variableName'; /** * svg重画bpmn节点 */ export default (parentNode: any, element: any, jnpfFlowInfo: any, injector: any) => { let type = element.type; // 获取到类型 let data = jnpfFlowInfo?.flowNodes[element.id]; let wnType = element.wnType || data?.type; if (typeConfig && typeConfig[type]) { if (type === bpmnGroup) return null; const typeMap = { [typeSubFlow]: bpmnSubFlow, [typeProcessing]: bpmnProcessing, [typeTrigger]: bpmnTrigger, [typeOutside]: bpmnOutside, }; let matchedType = typeMap[data?.type] || typeMap[element.wnType]; if(matchedType) type = matchedType; if (changeTypeByTaskShape[data?.type] || changeTypeByTaskShape[element?.wnType]) type = changeTypeByTaskShape[element?.wnType || data?.type]; if (type === bpmnInclusive && wnType === typeChoose) type = bpmnChoose; let { renderer } = typeConfig[type]; let { icon, iconColor, rendererName, background, titleColor, attr, bodyDefaultText } = renderer; // 直接修改元素的宽高 element['width'] = wnType === typeConfluence ? 1 : element.isPreview ? 1 : attr.width; element['height'] = wnType === typeConfluence ? 1 : element.isPreview ? 1 : attr.height; let nodeName = element.nodeName != null ? element.nodeName : data?.nodeName != null ? data.nodeName : rendererName; let nodeContent = element.elementBodyName || data?.content || bodyDefaultText; let foreignObject: any = svgCreate('foreignObject', { width: wnType === typeConfluence ? 0 : element.isPreview ? 1 : wnType === typeCondition ? 128 : attr.width, height: wnType === typeConfluence ? 0 : element.isPreview ? 1 : wnType === typeCondition ? 28 : attr.height, class: type === bpmnStart || type === bpmnEnd ? 'begin-or-end-node' : 'task-node', }); // 开始节点 if (type === bpmnStart) { foreignObject.innerHTML = `