fix(ElementFactory): fix JSDoc

This commit is contained in:
Philipp
2023-04-11 14:29:12 +02:00
committed by Philipp Fromme
parent a1022bfe07
commit 42790fef48
3 changed files with 115 additions and 30 deletions

View File

@ -33,36 +33,52 @@ import {
} from '../../util/CompatibilityUtil';
/**
* @typedef {import('diagram-js/lib/model').Base} Base
* @typedef {import('diagram-js/lib/model').Element} Element
* @typedef {import('diagram-js/lib/model').Connection} Connection
* @typedef {import('diagram-js/lib/model').Label} Label
* @typedef {import('diagram-js/lib/model').Root} Root
* @typedef {import('diagram-js/lib/model').Shape} Shape
* @typedef {import('diagram-js/lib/model').ModelAttrs} ModelAttrs
* @typedef {import('diagram-js/lib/model').ModelAttrsConnection} ModelAttrsConnection
* @typedef {import('diagram-js/lib/model').ModelAttrsRoot} ModelAttrsRoot
* @typedef {import('diagram-js/lib/model').ModelAttrsShape} ModelAttrsShape
* @typedef {import('diagram-js/lib/model').ModelType} ModelType
* @typedef {import('diagram-js/lib/model').ModelTypeConnection} ModelTypeConnection
* @typedef {import('diagram-js/lib/model').ModelTypeRoot} ModelTypeRoot
* @typedef {import('diagram-js/lib/model').ModelTypeShape} ModelTypeShape
*
* @typedef {import('diagram-js/lib/i18n/translate/translate').TranslateFunction} TranslateFunction
* @typedef {import('diagram-js/lib/i18n/translate/translate').default} Translate
*
* @typedef {import('diagram-js/lib/util/Types').Dimensions} Dimensions
*
* @typedef {import('./BpmnFactory').default} BpmnFactory
* @typedef {import('./ElementFactory').ModelAttrsBPMN} ModelAttrsBPMN
*
* @typedef {import('../../BaseModeler').Moddle} Moddle
* @typedef {import('../../BaseViewer').ModdleElement} ModdleElement
*/
/**
* @typedef { {
* businessObject: any;
* di: any;
* type: string;
* } & Element } BpmnElement
*
* @typedef { {
* associationDirection: 'None' | 'One' | 'Both';
* cancelActivity: boolean;
* eventDefinitionType: string;
* isExpanded: boolean;
* isForCompensation: boolean;
* isInterrupting: boolean;
* processRef: ModdleElement;
* triggeredByEvent: boolean;
* } } BpmnAttributes
*
* @typedef {Connection & BpmnElement} BpmnConnection
* @typedef {Label & BpmnElement} BpmnLabel
* @typedef {Root & BpmnElement} BpmnRoot
* @typedef {Shape & BpmnElement} BpmnShape
*/
/**
* A BPMN-aware factory for diagram elements.
*
* @param {BpmnFactory} bpmnFactory
* @param {Moddle} moddle
* @param {TranslateFunction} translate
* @param {Translate} translate
*/
export default function ElementFactory(bpmnFactory, moddle, translate) {
BaseElementFactory.call(this);
@ -80,15 +96,41 @@ ElementFactory.$inject = [
'translate'
];
ElementFactory.prototype.baseCreate = BaseElementFactory.prototype.create;
ElementFactory.prototype._baseCreate = BaseElementFactory.prototype.create;
/**
* Create an element.
* Create a root element.
*
* @param {ModelType} elementType The type of the element to be created.
* @param {ModelAttrs} attrs The attributes to create the element with.
* @overlord
* @param {'root'} type
* @param {Partial<BpmnRoot> & Partial<BpmnAttributes>} [attrs]
* @return {BpmnRoot}
*/
/**
* Create a shape.
*
* @returns {Base} The created diagram element.
* @overlord
* @param {'shape'} type
* @param {Partial<BpmnShape> & Partial<BpmnAttributes>} [attrs]
* @return {BpmnShape}
*/
/**
* Create a connection.
*
* @overlord
* @param {'connection'} type
* @param {Partial<BpmnConnection> & Partial<BpmnAttributes>} [attrs]
* @return {BpmnConnection}
*/
/**
* Create a label.
*
* @param {'label'} type
* @param {Partial<BpmnLabel> & Partial<BpmnAttributes>} [attrs]
* @return {BpmnLabel}
*/
ElementFactory.prototype.create = function(elementType, attrs) {
@ -97,19 +139,36 @@ ElementFactory.prototype.create = function(elementType, attrs) {
// and wired via attrs
if (elementType === 'label') {
var di = attrs.di || this._bpmnFactory.createDiLabel();
return this.baseCreate(elementType, assign({ type: 'label', di: di }, DEFAULT_LABEL_SIZE, attrs));
return this._baseCreate(elementType, assign({ type: 'label', di: di }, DEFAULT_LABEL_SIZE, attrs));
}
return this.createBpmnElement(elementType, attrs);
};
/**
* Create a BPMN-specific element.
* Create a BPMN root element.
*
* @param {ModelTypeConnection|ModelTypeRoot|ModelTypeShape} elementType The type of the element to be created.
* @param {ModelAttrsConnection|ModelAttrsRoot|ModelAttrsShape} attrs The attributes to create the element with.
* @overlord
* @param {'root'} elementType
* @param {Partial<BpmnRoot> & Partial<BpmnAttributes>} [attrs]
* @return {BpmnRoot}
*/
/**
* Create a BPMN shape.
*
* @returns {Connection|Root|Shape} The created diagram element.
* @overlord
* @param {'shape'} elementType
* @param {Partial<BpmnShape> & Partial<BpmnAttributes>} [attrs]
* @return {BpmnShape}
*/
/**
* Create a BPMN connection.
*
* @param {'connection'} elementType
* @param {Partial<BpmnConnection> & Partial<BpmnAttributes>} [attrs]
* @return {BpmnConnection}
*/
ElementFactory.prototype.createBpmnElement = function(elementType, attrs) {
var size,
@ -210,13 +269,13 @@ ElementFactory.prototype.createBpmnElement = function(elementType, attrs) {
di: di
});
return this.baseCreate(elementType, attrs);
return this._baseCreate(elementType, attrs);
};
/**
* Get the default size of a diagram element.
*
* @param {Base} element The element.
* @param {BpmnElement} element The element.
* @param {ModdleElement} di The DI.
*
* @returns {Dimensions} Default width and height of the element.
@ -281,10 +340,10 @@ ElementFactory.prototype.getDefaultSize = function(element, di) {
/**
* Create participant.
*
* @param {boolean|Object} [attrs] Attributes or whether the participant is
* @param {boolean|Partial<BpmnShape> & Partial<BpmnAttributes>} [attrs] Attributes or whether the participant is
* expanded.
*
* @returns {Shape} The created participant.
* @returns {BpmnShape} The created participant.
*/
ElementFactory.prototype.createParticipantShape = function(attrs) {
@ -309,7 +368,7 @@ ElementFactory.prototype.createParticipantShape = function(attrs) {
* Apply attributes from a map to the given element,
* remove attribute from the map on application.
*
* @param {Base} element
* @param {Element} element
* @param {Object} attrs (in/out map of attributes)
* @param {Array<string>} attributeNames name of attributes to apply
*
@ -328,7 +387,7 @@ function applyAttributes(element, attrs, attributeNames) {
* Apply named property to element and drain it from the attrs
* collection.
*
* @param {Base} element
* @param {Element} element
* @param {Object} attrs (in/out map of attributes)
* @param {string} attributeName to apply
*

View File

@ -58,6 +58,32 @@ elementFactory.create('label', {
type: 'bpmn:Task'
});
elementFactory.create('connection', {
type: 'bpmn:Association',
associationDirection: 'One'
});
elementFactory.create('shape', {
type: 'bpmn:BoundaryEvent',
cancelActivity: true,
eventDefinitionType: 'bpmn:ErrorEventDefinition'
});
elementFactory.create('shape', {
type: 'bpmn:Task',
isForCompensation: false
});
elementFactory.create('shape', {
type: 'bpmn:Participant',
processRef: {}
});
elementFactory.create('shape', {
type: 'bpmn:SubProcess',
triggeredByEvent: true
});
elementFactory.createBpmnElement('connection', {
type: 'bpmn:SequenceFlow'
});

View File

@ -22,7 +22,7 @@ export default function CustomElementFactory(injector) {
size;
if (elementType === 'label') {
return self.baseCreate(elementType, assign({ type: 'label' }, DEFAULT_LABEL_SIZE, attrs));
return self._baseCreate(elementType, assign({ type: 'label' }, DEFAULT_LABEL_SIZE, attrs));
}
if (/^custom:/.test(type)) {
@ -32,7 +32,7 @@ export default function CustomElementFactory(injector) {
size = self._getCustomElementSize(type);
return self.baseCreate(elementType,
return self._baseCreate(elementType,
assign({ type: elementType, businessObject: businessObject }, attrs, size));
}