ruoyi-vue-nocode/ruoyi-ui/ruoyi-bpmnjs/resources/properties-panel/provider/activiti/parts/ServiceTaskDelegateProps.js

151 lines
4.4 KiB
JavaScript
Raw Normal View History

2022-08-11 16:10:41 +08:00
'use strict';
var ImplementationTypeHelper = require('../../../helper/ImplementationTypeHelper'),
InputOutputHelper = require('../../../helper/InputOutputHelper');
var utils = require('../../../Utils'),
escapeHTML = utils.escapeHTML,
triggerClickEvent = utils.triggerClickEvent;
var implementationType = require('./implementation/ImplementationType'),
delegate = require('./implementation/Delegate'),
external = require('./implementation/External'),
callable = require('./implementation/Callable'),
resultVariable = require('./implementation/ResultVariable');
var entryFactory = require('../../../factory/EntryFactory');
var domQuery = require('min-dom').query,
domClosest = require('min-dom').closest,
domClasses = require('min-dom').classes;
function getImplementationType(element) {
return ImplementationTypeHelper.getImplementationType(element);
}
function getBusinessObject(element) {
return ImplementationTypeHelper.getServiceTaskLikeBusinessObject(element);
}
function isDmnCapable(element) {
return ImplementationTypeHelper.isDmnCapable(element);
}
function isExternalCapable(element) {
return ImplementationTypeHelper.isExternalCapable(element);
}
function isServiceTaskLike(element) {
return ImplementationTypeHelper.isServiceTaskLike(element);
}
module.exports = function(group, element, bpmnFactory, translate) {
if (!isServiceTaskLike(getBusinessObject(element))) {
return;
}
var hasDmnSupport = isDmnCapable(element);
var hasExternalSupport = isExternalCapable(getBusinessObject(element));
// implementation type ////////////////////////////////////
group.entries = group.entries.concat(implementationType(element, bpmnFactory, {
getBusinessObject: getBusinessObject,
getImplementationType: getImplementationType,
hasDmnSupport: hasDmnSupport,
hasExternalSupport: hasExternalSupport,
hasServiceTaskLikeSupport: true
}, translate));
// delegate (class, expression, delegateExpression) //////////
group.entries = group.entries.concat(delegate(element, bpmnFactory, {
getBusinessObject: getBusinessObject,
getImplementationType: getImplementationType
}, translate));
// result variable /////////////////////////////////////////
group.entries = group.entries.concat(resultVariable(element, bpmnFactory, {
getBusinessObject: getBusinessObject,
getImplementationType: getImplementationType,
hideResultVariable: function(element, node) {
return getImplementationType(element) !== 'expression';
}
}, translate));
// external //////////////////////////////////////////////////
if (hasExternalSupport) {
group.entries = group.entries.concat(external(element, bpmnFactory, {
getBusinessObject: getBusinessObject,
getImplementationType: getImplementationType
}, translate));
}
// dmn ////////////////////////////////////////////////////////
if (hasDmnSupport) {
group.entries = group.entries.concat(callable(element, bpmnFactory, {
getCallableType: getImplementationType
}, translate));
}
// connector ////////////////////////////////////////////////
var isConnector = function(element) {
return getImplementationType(element) === 'connector';
};
group.entries.push(entryFactory.link({
id: 'configureConnectorLink',
label: translate('Configure Connector'),
handleClick: function(element, node, event) {
var connectorTabEl = getTabNode(node, 'connector');
if (connectorTabEl) {
triggerClickEvent(connectorTabEl);
}
// suppress actual link click
return false;
},
showLink: function(element, node) {
var link = domQuery('a', node);
link.textContent = '';
domClasses(link).remove('bpp-error-message');
if (isConnector(element)) {
var connectorId = InputOutputHelper.getConnector(element).get('connectorId');
if (connectorId) {
link.textContent = translate('Configure Connector');
} else {
link.innerHTML = '<span class="bpp-icon-warning"></span> ' + escapeHTML(translate('Must configure Connector'));
domClasses(link).add('bpp-error-message');
}
return true;
}
return false;
}
}));
};
// helpers ///////////////////////////
function getTabNode(el, id) {
var containerEl = domClosest(el, '.bpp-properties-panel');
return domQuery('a[data-tab-target="' + id + '"]', containerEl);
}