¶Ô±ÈÐÂÎļþ |
| | |
| | | import { assign } from 'min-dash'; |
| | | import PaletteProvider from 'bpmn-js/lib/features/palette/PaletteProvider'; |
| | | import ElementFactory from 'bpmn-js/lib/features/modeling/ElementFactory'; |
| | | import Create from 'diagram-js/lib/features/create/Create'; |
| | | import SpaceTool from 'diagram-js/lib/features/space-tool/SpaceTool'; |
| | | import LassoTool from 'diagram-js/lib/features/lasso-tool/LassoTool'; |
| | | import HandTool from 'diagram-js/lib/features/hand-tool/HandTool'; |
| | | import GlobalConnect from 'diagram-js/lib/features/global-connect/GlobalConnect'; |
| | | import Palette from 'diagram-js/lib/features/palette/Palette'; |
| | | import modeler from '@/store/modules/modeler'; |
| | | import BpmnFactory from 'bpmn-js/lib/features/modeling/BpmnFactory'; |
| | | |
| | | // @Description: å¢å¼ºå·¦ä¾§é¢æ¿ |
| | | class CustomPaletteProvider extends PaletteProvider { |
| | | private readonly _palette: Palette; |
| | | private readonly _create: Create; |
| | | private readonly _elementFactory: ElementFactory; |
| | | private readonly _spaceTool: SpaceTool; |
| | | private readonly _lassoTool: LassoTool; |
| | | private readonly _handTool: HandTool; |
| | | private readonly _globalConnect: GlobalConnect; |
| | | private readonly _translate: any; |
| | | |
| | | constructor(palette, create, elementFactory, spaceTool, lassoTool, handTool, globalConnect, translate) { |
| | | super(palette, create, elementFactory, spaceTool, lassoTool, handTool, globalConnect, translate); |
| | | this._palette = palette; |
| | | this._create = create; |
| | | this._elementFactory = elementFactory; |
| | | this._spaceTool = spaceTool; |
| | | this._lassoTool = lassoTool; |
| | | this._handTool = handTool; |
| | | this._globalConnect = globalConnect; |
| | | this._translate = translate; |
| | | } |
| | | |
| | | getPaletteEntries() { |
| | | const actions = {}, |
| | | create = this._create, |
| | | elementFactory = this._elementFactory, |
| | | translate = this._translate; |
| | | |
| | | function createAction(type: string, group: string, className: string, title: string, options?: object) { |
| | | function createListener(event) { |
| | | const shape = elementFactory.createShape(assign({ type: type }, options)); |
| | | if (options) { |
| | | !shape.businessObject.di && (shape.businessObject.di = {}); |
| | | shape.businessObject.di.isExpanded = (options as { [key: string]: any }).isExpanded; |
| | | } |
| | | create.start(event, shape, null); |
| | | } |
| | | const shortType = type.replace(/^bpmn:/, ''); |
| | | return { |
| | | group: group, |
| | | className: className, |
| | | title: title || translate('Create {type}', { type: shortType }), |
| | | action: { |
| | | dragstart: createListener, |
| | | click: createListener |
| | | } |
| | | }; |
| | | } |
| | | |
| | | function createMultiInstanceUserTask(event) { |
| | | const bpmnFactory: BpmnFactory | undefined = modeler().getBpmnFactory(); |
| | | // å建ä¸ä¸ª bpmn:UserTask |
| | | const userTask = bpmnFactory.create('bpmn:UserTask', { |
| | | // name: 'å¤å®ä¾ç¨æ·ä»»å¡', // å¨ç»æ¿ä¸æ¾ç¤ºå段 |
| | | isForCompensation: false |
| | | }); |
| | | // å°å¤å®ä¾å±æ§åé
ç» bpmn:UserTask ç loopCharacteristics |
| | | userTask.loopCharacteristics = bpmnFactory.create('bpmn:MultiInstanceLoopCharacteristics'); |
| | | const customUserTask = elementFactory.createShape({ |
| | | type: 'bpmn:UserTask', |
| | | businessObject: userTask // åé
å建ç userTask å° businessObject |
| | | }); |
| | | create.start(event, customUserTask, {}); |
| | | } |
| | | |
| | | assign(actions, { |
| | | 'create.parallel-gateway': createAction('bpmn:ParallelGateway', 'gateway', 'bpmn-icon-gateway-parallel', 'å¹¶è¡ç½å
³'), |
| | | 'create.event-base-gateway': createAction('bpmn:EventBasedGateway', 'gateway', 'bpmn-icon-gateway-eventbased', 'äºä»¶ç½å
³'), |
| | | // åç»çº¿ |
| | | 'gateway-separator': { |
| | | group: 'gateway', |
| | | separator: true |
| | | }, |
| | | 'create.user-task': createAction('bpmn:UserTask', 'activity', 'bpmn-icon-user-task', 'åå»ºç¨æ·ä»»å¡'), |
| | | 'create.multi-instance-user-task': { |
| | | group: 'activity', |
| | | type: 'bpmn:UserTask', |
| | | className: 'bpmn-icon-user task-multi-instance', |
| | | title: 'å建å¤å®ä¾ç¨æ·ä»»å¡', |
| | | action: { |
| | | click: createMultiInstanceUserTask, |
| | | dragstart: createMultiInstanceUserTask |
| | | } |
| | | }, |
| | | 'task-separator': { |
| | | group: 'activity', |
| | | separator: true |
| | | } |
| | | }); |
| | | return actions; |
| | | } |
| | | } |
| | | |
| | | CustomPaletteProvider['$inject'] = ['palette', 'create', 'elementFactory', 'spaceTool', 'lassoTool', 'handTool', 'globalConnect', 'translate']; |
| | | |
| | | export default CustomPaletteProvider; |