Delegate.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. 'use strict';
  2. var entryFactory = require('../../../../factory/EntryFactory'),
  3. cmdHelper = require('../../../../helper/CmdHelper');
  4. var DELEGATE_TYPES = [
  5. 'class',
  6. 'expression',
  7. 'delegateExpression'
  8. ];
  9. var PROPERTIES = {
  10. class: 'activiti:class',
  11. expression: 'activiti:expression',
  12. delegateExpression: 'activiti:delegateExpression'
  13. };
  14. function isDelegate(type) {
  15. return DELEGATE_TYPES.indexOf(type) !== -1;
  16. }
  17. function getAttribute(type) {
  18. return PROPERTIES[type];
  19. }
  20. module.exports = function(element, bpmnFactory, options, translate) {
  21. var getImplementationType = options.getImplementationType,
  22. getBusinessObject = options.getBusinessObject;
  23. function getDelegationLabel(type) {
  24. switch (type) {
  25. case 'class':
  26. return translate('Java Class');
  27. case 'expression':
  28. return translate('Expression');
  29. case 'delegateExpression':
  30. return translate('Delegate Expression');
  31. default:
  32. return '';
  33. }
  34. }
  35. var delegateEntry = entryFactory.textField({
  36. id: 'delegate',
  37. label: translate('Value'),
  38. dataValueLabel: 'delegationLabel',
  39. modelProperty: 'delegate',
  40. get: function(element, node) {
  41. var bo = getBusinessObject(element);
  42. var type = getImplementationType(element);
  43. var attr = getAttribute(type);
  44. var label = getDelegationLabel(type);
  45. return {
  46. delegate: bo.get(attr),
  47. delegationLabel: label
  48. };
  49. },
  50. set: function(element, values, node) {
  51. var bo = getBusinessObject(element);
  52. var type = getImplementationType(element);
  53. var attr = getAttribute(type);
  54. var prop = {};
  55. prop[attr] = values.delegate || '';
  56. return cmdHelper.updateBusinessObject(element, bo, prop);
  57. },
  58. validate: function(element, values, node) {
  59. return isDelegate(getImplementationType(element)) && !values.delegate ? { delegate: translate('Must provide a value') } : {};
  60. },
  61. hidden: function(element, node) {
  62. return !isDelegate(getImplementationType(element));
  63. }
  64. });
  65. return [ delegateEntry ];
  66. };