diff --git a/OrangeFormsOpen-VUE3/src/pages/workflow/components/ProcessDesigner.vue b/OrangeFormsOpen-VUE3/src/pages/workflow/components/ProcessDesigner.vue index 675c2836..dfde495f 100644 --- a/OrangeFormsOpen-VUE3/src/pages/workflow/components/ProcessDesigner.vue +++ b/OrangeFormsOpen-VUE3/src/pages/workflow/components/ProcessDesigner.vue @@ -36,9 +36,9 @@ import { ANY_OBJECT } from '@/types/generic'; import ProcessDesigner from '../package/process-designer/ProcessDesigner.vue'; import PropertiesPanel from '../package/refactor/PropertiesPanel.vue'; // 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务) -//import CustomContentPadProvider from '../package/process-designer/plugins/content-pad'; +import CustomContentPadProvider from '../package/process-designer/plugins/content-pad'; // 自定义左侧菜单(修改 默认任务 为 用户任务) -//import CustomPaletteProvider from '../package/process-designer/plugins/palette'; +import CustomPaletteProvider from '../package/process-designer/plugins/palette'; // Then register the languages you need //hljs.registerLanguage('javascript', javascript); @@ -60,7 +60,7 @@ const controlForm = ref({ labelVisible: false, prefix: 'flowable', headerButtonSize: 'default', - //additionalModel: [CustomContentPadProvider, CustomPaletteProvider], + additionalModel: [CustomContentPadProvider, CustomPaletteProvider], }); const elementClick = (element: ANY_OBJECT) => { diff --git a/OrangeFormsOpen-VUE3/src/pages/workflow/package/process-designer/plugins/palette/index.js b/OrangeFormsOpen-VUE3/src/pages/workflow/package/process-designer/plugins/palette/index.js new file mode 100644 index 00000000..c44874f1 --- /dev/null +++ b/OrangeFormsOpen-VUE3/src/pages/workflow/package/process-designer/plugins/palette/index.js @@ -0,0 +1,15 @@ +import PaletteModule from "diagram-js/lib/features/palette"; +import CreateModule from "diagram-js/lib/features/create"; +import SpaceToolModule from "diagram-js/lib/features/space-tool"; +import LassoToolModule from "diagram-js/lib/features/lasso-tool"; +import HandToolModule from "diagram-js/lib/features/hand-tool"; +import GlobalConnectModule from "diagram-js/lib/features/global-connect"; +import translate from "diagram-js/lib/i18n/translate"; + +import PaletteProvider from "./paletteProvider"; + +export default { + __depends__: [PaletteModule, CreateModule, SpaceToolModule, LassoToolModule, HandToolModule, GlobalConnectModule, translate], + __init__: ["paletteProvider"], + paletteProvider: ["type", PaletteProvider] +}; diff --git a/OrangeFormsOpen-VUE3/src/pages/workflow/package/process-designer/plugins/palette/paletteProvider.js b/OrangeFormsOpen-VUE3/src/pages/workflow/package/process-designer/plugins/palette/paletteProvider.js new file mode 100644 index 00000000..e0c32380 --- /dev/null +++ b/OrangeFormsOpen-VUE3/src/pages/workflow/package/process-designer/plugins/palette/paletteProvider.js @@ -0,0 +1,160 @@ +import { assign } from "min-dash"; + +/** + * A palette provider for BPMN 2.0 elements. + */ +export default function PaletteProvider(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; + + palette.registerProvider(this); +} + +PaletteProvider.$inject = ["palette", "create", "elementFactory", "spaceTool", "lassoTool", "handTool", "globalConnect", "translate"]; + +PaletteProvider.prototype.getPaletteEntries = function() { + var actions = {}, + create = this._create, + elementFactory = this._elementFactory, + spaceTool = this._spaceTool, + lassoTool = this._lassoTool, + handTool = this._handTool, + globalConnect = this._globalConnect, + translate = this._translate; + + function createAction(type, group, className, title, options) { + function createListener(event) { + var shape = elementFactory.createShape(assign({ type: type }, options)); + + if (options) { + shape.businessObject.di.isExpanded = options.isExpanded; + } + + create.start(event, shape); + } + + var shortType = type.replace(/^bpmn:/, ""); + + return { + group: group, + className: className, + title: title || translate("Create {type}", { type: shortType }), + action: { + dragstart: createListener, + click: createListener + } + }; + } + + function createSubprocess(event) { + var subProcess = elementFactory.createShape({ + type: "bpmn:SubProcess", + x: 0, + y: 0, + isExpanded: true + }); + + var startEvent = elementFactory.createShape({ + type: "bpmn:StartEvent", + x: 40, + y: 82, + parent: subProcess + }); + + create.start(event, [subProcess, startEvent], { + hints: { + autoSelect: [startEvent] + } + }); + } + + function createParticipant(event) { + create.start(event, elementFactory.createParticipantShape()); + } + + assign(actions, { + "hand-tool": { + group: "tools", + className: "bpmn-icon-hand-tool", + title: translate("Activate the hand tool"), + action: { + click: function(event) { + handTool.activateHand(event); + } + } + }, + "lasso-tool": { + group: "tools", + className: "bpmn-icon-lasso-tool", + title: translate("Activate the lasso tool"), + action: { + click: function(event) { + lassoTool.activateSelection(event); + } + } + }, + "space-tool": { + group: "tools", + className: "bpmn-icon-space-tool", + title: translate("Activate the create/remove space tool"), + action: { + click: function(event) { + spaceTool.activateSelection(event); + } + } + }, + "global-connect-tool": { + group: "tools", + className: "bpmn-icon-connection-multi", + title: translate("Activate the global connect tool"), + action: { + click: function(event) { + globalConnect.toggle(event); + } + } + }, + "tool-separator": { + group: "tools", + separator: true + }, + "create.start-event": createAction("bpmn:StartEvent", "event", "bpmn-icon-start-event-none", translate("Create StartEvent")), + "create.intermediate-event": createAction( + "bpmn:IntermediateThrowEvent", + "event", + "bpmn-icon-intermediate-event-none", + translate("Create Intermediate/Boundary Event") + ), + "create.end-event": createAction("bpmn:EndEvent", "event", "bpmn-icon-end-event-none", translate("Create EndEvent")), + "create.exclusive-gateway": createAction("bpmn:ExclusiveGateway", "gateway", "bpmn-icon-gateway-none", translate("Create Gateway")), + "create.user-task": createAction("bpmn:UserTask", "activity", "bpmn-icon-user-task", translate("Create User Task")), + "create.data-object": createAction("bpmn:DataObjectReference", "data-object", "bpmn-icon-data-object", translate("Create DataObjectReference")), + "create.data-store": createAction("bpmn:DataStoreReference", "data-store", "bpmn-icon-data-store", translate("Create DataStoreReference")), + "create.subprocess-expanded": { + group: "activity", + className: "bpmn-icon-subprocess-expanded", + title: translate("Create expanded SubProcess"), + action: { + dragstart: createSubprocess, + click: createSubprocess + } + }, + "create.participant-expanded": { + group: "collaboration", + className: "bpmn-icon-participant", + title: translate("Create Pool/Participant"), + action: { + dragstart: createParticipant, + click: createParticipant + } + }, + "create.group": createAction("bpmn:Group", "artifact", "bpmn-icon-group", translate("Create Group")) + }); + + return actions; +};