ServiceTaskDelegateProps.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. 'use strict';
  2. var ImplementationTypeHelper = require('../../../helper/ImplementationTypeHelper'),
  3. InputOutputHelper = require('../../../helper/InputOutputHelper');
  4. var utils = require('../../../Utils'),
  5. escapeHTML = utils.escapeHTML,
  6. triggerClickEvent = utils.triggerClickEvent;
  7. var implementationType = require('./implementation/ImplementationType'),
  8. delegate = require('./implementation/Delegate'),
  9. external = require('./implementation/External'),
  10. callable = require('./implementation/Callable'),
  11. resultVariable = require('./implementation/ResultVariable');
  12. var entryFactory = require('../../../factory/EntryFactory');
  13. var domQuery = require('min-dom').query,
  14. domClosest = require('min-dom').closest,
  15. domClasses = require('min-dom').classes;
  16. function getImplementationType(element) {
  17. return ImplementationTypeHelper.getImplementationType(element);
  18. }
  19. function getBusinessObject(element) {
  20. return ImplementationTypeHelper.getServiceTaskLikeBusinessObject(element);
  21. }
  22. function isDmnCapable(element) {
  23. return ImplementationTypeHelper.isDmnCapable(element);
  24. }
  25. function isExternalCapable(element) {
  26. return ImplementationTypeHelper.isExternalCapable(element);
  27. }
  28. function isServiceTaskLike(element) {
  29. return ImplementationTypeHelper.isServiceTaskLike(element);
  30. }
  31. module.exports = function(group, element, bpmnFactory, translate) {
  32. if (!isServiceTaskLike(getBusinessObject(element))) {
  33. return;
  34. }
  35. var hasDmnSupport = isDmnCapable(element);
  36. var hasExternalSupport = isExternalCapable(getBusinessObject(element));
  37. // implementation type ////////////////////////////////////
  38. group.entries = group.entries.concat(implementationType(element, bpmnFactory, {
  39. getBusinessObject: getBusinessObject,
  40. getImplementationType: getImplementationType,
  41. hasDmnSupport: hasDmnSupport,
  42. hasExternalSupport: hasExternalSupport,
  43. hasServiceTaskLikeSupport: true
  44. }, translate));
  45. // delegate (class, expression, delegateExpression) //////////
  46. group.entries = group.entries.concat(delegate(element, bpmnFactory, {
  47. getBusinessObject: getBusinessObject,
  48. getImplementationType: getImplementationType
  49. }, translate));
  50. // result variable /////////////////////////////////////////
  51. group.entries = group.entries.concat(resultVariable(element, bpmnFactory, {
  52. getBusinessObject: getBusinessObject,
  53. getImplementationType: getImplementationType,
  54. hideResultVariable: function(element, node) {
  55. return getImplementationType(element) !== 'expression';
  56. }
  57. }, translate));
  58. // external //////////////////////////////////////////////////
  59. if (hasExternalSupport) {
  60. group.entries = group.entries.concat(external(element, bpmnFactory, {
  61. getBusinessObject: getBusinessObject,
  62. getImplementationType: getImplementationType
  63. }, translate));
  64. }
  65. // dmn ////////////////////////////////////////////////////////
  66. if (hasDmnSupport) {
  67. group.entries = group.entries.concat(callable(element, bpmnFactory, {
  68. getCallableType: getImplementationType
  69. }, translate));
  70. }
  71. // connector ////////////////////////////////////////////////
  72. var isConnector = function(element) {
  73. return getImplementationType(element) === 'connector';
  74. };
  75. group.entries.push(entryFactory.link({
  76. id: 'configureConnectorLink',
  77. label: translate('Configure Connector'),
  78. handleClick: function(element, node, event) {
  79. var connectorTabEl = getTabNode(node, 'connector');
  80. if (connectorTabEl) {
  81. triggerClickEvent(connectorTabEl);
  82. }
  83. // suppress actual link click
  84. return false;
  85. },
  86. showLink: function(element, node) {
  87. var link = domQuery('a', node);
  88. link.textContent = '';
  89. domClasses(link).remove('bpp-error-message');
  90. if (isConnector(element)) {
  91. var connectorId = InputOutputHelper.getConnector(element).get('connectorId');
  92. if (connectorId) {
  93. link.textContent = translate('Configure Connector');
  94. } else {
  95. link.innerHTML = '<span class="bpp-icon-warning"></span> ' + escapeHTML(translate('Must configure Connector'));
  96. domClasses(link).add('bpp-error-message');
  97. }
  98. return true;
  99. }
  100. return false;
  101. }
  102. }));
  103. };
  104. // helpers ///////////////////////////
  105. function getTabNode(el, id) {
  106. var containerEl = domClosest(el, '.bpp-properties-panel');
  107. return domQuery('a[data-tab-target="' + id + '"]', containerEl);
  108. }