index.ts 1.9 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. constructor(config: any, eventBus: any, styles: any, pathMap: any, canvas: any, textRenderer: any, flowInfo: any, priority: number) {
  9. super(
  10. (config = {
  11. defaultLabelColor: 'rgb(102,102,102)',
  12. defaultStrokeColor: '#A2B9D5',
  13. ...config,
  14. }),
  15. eventBus,
  16. styles,
  17. pathMap,
  18. canvas,
  19. textRenderer,
  20. priority,
  21. );
  22. jnpfCanvas = canvas;
  23. jnpfFlowInfo = flowInfo;
  24. }
  25. canRender(element: any) {
  26. return super.canRender(element);
  27. }
  28. // 绘制画布上元素
  29. drawShape(parentNode: any, element: any) {
  30. if (element) return CustomizeRenderer(parentNode, element, jnpfFlowInfo) || super.drawShape(parentNode, element);
  31. return super.drawShape(parentNode, element);
  32. }
  33. drawConnection(parentGfx: any, element: any) {
  34. let source = element.source;
  35. let target = element.target;
  36. let nodeMap = jnpfFlowInfo?.nodeList;
  37. let stroke = '';
  38. if (nodeMap.has(source?.id) && nodeMap.has(target?.id)) {
  39. if (nodeMap.get(source.id)?.type === '0' && nodeMap.get(target.id)?.type === '0') {
  40. stroke = '#4ED587';
  41. }
  42. if (nodeMap.get(source.id)?.type === '0' && nodeMap.get(target.id)?.type === '1') {
  43. stroke = '#1eaceb';
  44. }
  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', 'eventBus', 'styles', 'pathMap', 'canvas', 'textRenderer', 'config.flowInfo'];
  56. export default YmRenderer;