ruoyi-vue-nocode/ruoyi-ui/ruoyi-bpmnjs/resources/properties-panel/provider/bpmn/parts/implementation/ElementReferenceProperty.js
2022-08-11 16:10:41 +08:00

68 lines
2.1 KiB
JavaScript

'use strict';
var entryFactory = require('../../../../factory/EntryFactory');
var cmdHelper = require('../../../../helper/CmdHelper');
/**
* Create an entry to modify a property of an element which
* is referenced by a event definition.
*
* @param {djs.model.Base} element
* @param {ModdleElement} definition
* @param {BpmnFactory} bpmnFactory
* @param {Object} options
* @param {string} options.id the id of the entry
* @param {string} options.label the label of the entry
* @param {string} options.referenceProperty the name of referencing property
* @param {string} options.modelProperty the name of property to modify
* @param {string} options.shouldValidate a flag indicate whether to validate or not
*
* @return {Array<Object>} return an array containing the entries
*/
module.exports = function(element, definition, bpmnFactory, options) {
var id = options.id || 'element-property';
var label = options.label;
var referenceProperty = options.referenceProperty;
var modelProperty = options.modelProperty || 'name';
var shouldValidate = options.shouldValidate || false;
var entry = entryFactory.textField({
id: id,
label: label,
modelProperty: modelProperty,
get: function(element, node) {
var reference = definition.get(referenceProperty);
var props = {};
props[modelProperty] = reference && reference.get(modelProperty);
return props;
},
set: function(element, values, node) {
var reference = definition.get(referenceProperty);
var props = {};
props[modelProperty] = values[modelProperty] || undefined;
return cmdHelper.updateBusinessObject(element, reference, props);
},
hidden: function(element, node) {
return !definition.get(referenceProperty);
}
});
if (shouldValidate) {
entry.validate = function(element, values, node) {
var reference = definition.get(referenceProperty);
if (reference && !values[modelProperty]) {
var validationErrors = {};
validationErrors[modelProperty] = 'Must provide a value';
return validationErrors;
}
};
}
return [ entry ];
};