index.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import BpmnRenderer from 'bpmn-js/lib/draw/BpmnRenderer';
  2. import CustomizeRenderer from './CustomizeRenderer';
  3. import { getRectPath } from 'bpmn-js/lib/draw/BpmnRenderUtil';
  4. import createAddMarkerSelect from '../../simpleModeler/renderer/connect/marker';
  5. let jnpfCanvas: any;
  6. let jnpfFlowInfo: any;
  7. class YmRenderer extends BpmnRenderer {
  8. _injector: any;
  9. constructor(config: any, injector: any, eventBus: any, styles: any, pathMap: any, canvas: any, textRenderer: any, flowInfo: any, priority: number) {
  10. super(
  11. (config = {
  12. defaultLabelColor: 'rgb(102,102,102)',
  13. defaultStrokeColor: '#A2B9D5',
  14. ...config,
  15. }),
  16. eventBus,
  17. styles,
  18. pathMap,
  19. canvas,
  20. textRenderer,
  21. priority,
  22. );
  23. jnpfCanvas = canvas;
  24. jnpfFlowInfo = flowInfo;
  25. this._injector = injector;
  26. }
  27. canRender(element: any) {
  28. return super.canRender(element);
  29. }
  30. // 绘制画布上元素
  31. drawShape(parentNode: any, element: any) {
  32. if (element) return CustomizeRenderer(parentNode, element, jnpfFlowInfo, this._injector) || super.drawShape(parentNode, element);
  33. return super.drawShape(parentNode, element);
  34. }
  35. drawConnection(parentGfx: any, element: any) {
  36. let source = element.source;
  37. let target = element.target;
  38. let nodeMap = jnpfFlowInfo?.nodeList;
  39. let stroke = '';
  40. if (nodeMap.has(source?.id) && nodeMap.has(target?.id)) {
  41. const targetType = nodeMap.get(target.id)?.type;
  42. const sourceType = nodeMap.get(source.id)?.type;
  43. if (sourceType === '0' && (targetType === '0' || targetType === '3')) stroke = '#4ED587';
  44. if (sourceType === '0' && targetType === '1') stroke = '#1eaceb';
  45. }
  46. let connect = super.drawConnection(parentGfx, element, { stroke });
  47. createAddMarkerSelect(element, jnpfCanvas);
  48. return connect;
  49. }
  50. // 绘制
  51. getShapePath(shape: any) {
  52. return getRectPath(shape);
  53. }
  54. }
  55. YmRenderer.$inject = ['config.bpmnRenderer', 'injector', 'eventBus', 'styles', 'pathMap', 'canvas', 'textRenderer', 'config.flowInfo'];
  56. export default YmRenderer;