84 lines
2.0 KiB
JavaScript
84 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
var entryFactory = require('../../../../factory/EntryFactory'),
|
|
cmdHelper = require('../../../../helper/CmdHelper');
|
|
|
|
var DELEGATE_TYPES = [
|
|
'class',
|
|
'expression',
|
|
'delegateExpression'
|
|
];
|
|
|
|
var PROPERTIES = {
|
|
class: 'activiti:class',
|
|
expression: 'activiti:expression',
|
|
delegateExpression: 'activiti:delegateExpression'
|
|
};
|
|
|
|
function isDelegate(type) {
|
|
return DELEGATE_TYPES.indexOf(type) !== -1;
|
|
}
|
|
|
|
function getAttribute(type) {
|
|
return PROPERTIES[type];
|
|
}
|
|
|
|
|
|
module.exports = function(element, bpmnFactory, options, translate) {
|
|
|
|
var getImplementationType = options.getImplementationType,
|
|
getBusinessObject = options.getBusinessObject;
|
|
|
|
function getDelegationLabel(type) {
|
|
switch (type) {
|
|
case 'class':
|
|
return translate('Java Class');
|
|
case 'expression':
|
|
return translate('Expression');
|
|
case 'delegateExpression':
|
|
return translate('Delegate Expression');
|
|
default:
|
|
return '';
|
|
}
|
|
}
|
|
|
|
var delegateEntry = entryFactory.textField({
|
|
id: 'delegate',
|
|
label: translate('Value'),
|
|
dataValueLabel: 'delegationLabel',
|
|
modelProperty: 'delegate',
|
|
|
|
get: function(element, node) {
|
|
var bo = getBusinessObject(element);
|
|
var type = getImplementationType(element);
|
|
var attr = getAttribute(type);
|
|
var label = getDelegationLabel(type);
|
|
return {
|
|
delegate: bo.get(attr),
|
|
delegationLabel: label
|
|
};
|
|
},
|
|
|
|
set: function(element, values, node) {
|
|
var bo = getBusinessObject(element);
|
|
var type = getImplementationType(element);
|
|
var attr = getAttribute(type);
|
|
var prop = {};
|
|
prop[attr] = values.delegate || '';
|
|
return cmdHelper.updateBusinessObject(element, bo, prop);
|
|
},
|
|
|
|
validate: function(element, values, node) {
|
|
return isDelegate(getImplementationType(element)) && !values.delegate ? { delegate: translate('Must provide a value') } : {};
|
|
},
|
|
|
|
hidden: function(element, node) {
|
|
return !isDelegate(getImplementationType(element));
|
|
}
|
|
|
|
});
|
|
|
|
return [ delegateEntry ];
|
|
|
|
};
|