@kineticdata/react 6.0.5 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +110 -110
  2. package/assets/task/icons/defer.svg +12 -12
  3. package/assets/task/icons/drag-handle.svg +3 -3
  4. package/assets/task/icons/filter.svg +11 -11
  5. package/assets/task/icons/loop.svg +10 -10
  6. package/assets/task/icons/plus_small.svg +5 -5
  7. package/assets/task/icons/routine.svg +9 -9
  8. package/assets/task/icons/scale-minus.svg +11 -11
  9. package/assets/task/icons/scale-plus.svg +13 -13
  10. package/assets/task/icons/start.svg +11 -11
  11. package/assets/task/icons/stop.svg +8 -8
  12. package/lib/apis/core/activity.js +4 -4
  13. package/lib/apis/core/attributeDefinitions.js +64 -6
  14. package/lib/apis/core/attributeDefinitions.test.js +7 -4
  15. package/lib/apis/core/authentication.js +12 -1
  16. package/lib/apis/core/bridgeModels.test.js +46 -23
  17. package/lib/apis/core/bridgedresources.js +41 -41
  18. package/lib/apis/core/fileResources.js +2 -6
  19. package/lib/apis/core/forms.js +51 -2
  20. package/lib/apis/core/forms.test.js +32 -19
  21. package/lib/apis/core/integrations.js +61 -0
  22. package/lib/apis/core/kapps.js +49 -0
  23. package/lib/apis/core/kapps.test.js +16 -10
  24. package/lib/apis/core/notices.js +7 -0
  25. package/lib/apis/core/securityPolicyDefinitions.test.js +7 -4
  26. package/lib/apis/core/space.js +18 -0
  27. package/lib/apis/core/space.test.js +16 -10
  28. package/lib/apis/core/submissionActivities.js +38 -0
  29. package/lib/apis/core/submissions.js +114 -15
  30. package/lib/apis/core/translations.test.js +126 -55
  31. package/lib/apis/core/userPreferences.js +59 -0
  32. package/lib/apis/core/webApis.js +32 -2
  33. package/lib/apis/core/webhooks.test.js +7 -4
  34. package/lib/apis/http.js +30 -5
  35. package/lib/apis/index.js +48 -0
  36. package/lib/apis/integrator/index.js +337 -0
  37. package/lib/apis/system/index.js +64 -12
  38. package/lib/apis/task/index.js +9 -2
  39. package/lib/components/agent/filestore/FilestoreForm.js +1 -1
  40. package/lib/components/common/AttributeSelect.js +11 -2
  41. package/lib/components/common/BridgeSelect.js +3 -1
  42. package/lib/components/common/ConnectionSelect.js +73 -0
  43. package/lib/components/common/FormSelect.js +3 -1
  44. package/lib/components/common/NodeSelect.js +1 -0
  45. package/lib/components/common/StaticSelect.js +16 -6
  46. package/lib/components/common/TableInput.js +4 -1
  47. package/lib/components/common/TeamSelect.js +3 -1
  48. package/lib/components/common/ToastContainer.js +34 -10
  49. package/lib/components/common/Typeahead.js +62 -23
  50. package/lib/components/common/UserSelect.js +3 -1
  51. package/lib/components/common/authentication/AuthenticationContainer.js +121 -55
  52. package/lib/components/common/authentication/RequestInterceptor.js +1 -1
  53. package/lib/components/common/preferences/PreferencesProvider.js +461 -0
  54. package/lib/components/core/attribute_definition/AttributeDefinitionForm.js +10 -7
  55. package/lib/components/core/bridge_model/BridgeModelTable.js +19 -0
  56. package/lib/components/core/bridge_model_attribute/BridgeModelAttributeForm.js +6 -9
  57. package/lib/components/core/bridge_model_attribute/BridgeModelAttributeTable.js +0 -4
  58. package/lib/components/core/bridge_model_qualification/BridgeModelQualificationForm.js +7 -10
  59. package/lib/components/core/bridge_model_qualification/BridgeModelQualificationTable.js +2 -15
  60. package/lib/components/core/category/CategoryForm.js +4 -1
  61. package/lib/components/core/category/CategoryTable.js +2 -2
  62. package/lib/components/core/core_form/CoreForm.js +18 -10
  63. package/lib/components/core/field_definition/FieldDefinitionForm.js +3 -3
  64. package/lib/components/core/file_resource/FileResourceForm.js +2 -1
  65. package/lib/components/core/file_resource/FileResourceTable.js +14 -7
  66. package/lib/components/core/form/FormForm.js +42 -19
  67. package/lib/components/core/form/FormTable.js +13 -14
  68. package/lib/components/core/form_type/FormTypeForm.js +3 -0
  69. package/lib/components/core/i18n/Moment.js +1 -0
  70. package/lib/components/core/integration/IntegrationForm.js +232 -0
  71. package/lib/components/core/integration/IntegrationTable.js +142 -0
  72. package/lib/components/core/kapp/KappForm.js +18 -5
  73. package/lib/components/core/kapp/KappTable.js +3 -3
  74. package/lib/components/core/log/LogTable.js +1 -1
  75. package/lib/components/core/security_definition/SecurityDefinitionForm.js +48 -10
  76. package/lib/components/core/space/SpaceForm.js +17 -36
  77. package/lib/components/core/submission/DatastoreSubmissionTable.js +4 -4
  78. package/lib/components/core/submission/FormSubmissionTable.js +12 -7
  79. package/lib/components/core/submission/KappSubmissionTable.js +4 -4
  80. package/lib/components/core/submission/SubmissionActivityForm.js +79 -0
  81. package/lib/components/core/submission/SubmissionForm.js +15 -3
  82. package/lib/components/core/team/TeamTable.js +17 -7
  83. package/lib/components/core/translation/EntryTable.js +8 -7
  84. package/lib/components/core/user/UserForm.js +2 -0
  85. package/lib/components/core/user/UserTable.js +22 -22
  86. package/lib/components/core/webapi/WebApiForm.js +5 -2
  87. package/lib/components/core/webapi/WebApiTable.js +2 -2
  88. package/lib/components/core/webhook/WebhookForm.js +43 -33
  89. package/lib/components/core/webhook/WebhookTable.js +16 -16
  90. package/lib/components/core/webhook_job/WebhookJobTable.js +17 -6
  91. package/lib/components/form/Form.helpers.js +10 -4
  92. package/lib/components/form/Form.js +264 -171
  93. package/lib/components/form/Form.models.js +6 -1
  94. package/lib/components/form/FormState.js +9 -5
  95. package/lib/components/form/SimpleForm.js +2 -2
  96. package/lib/components/form/defaults/CodeField.js +44 -1
  97. package/lib/components/index.js +152 -3
  98. package/lib/components/integrator/connection/ConnectionForm.js +156 -0
  99. package/lib/components/integrator/connection/ConnectionTable.js +82 -0
  100. package/lib/components/integrator/connection/config_fields/http.js +570 -0
  101. package/lib/components/integrator/connection/config_fields/sql.js +123 -0
  102. package/lib/components/integrator/integrationTypes.js +120 -0
  103. package/lib/components/integrator/operation/OperationForm.js +148 -0
  104. package/lib/components/integrator/operation/OperationTable.js +62 -0
  105. package/lib/components/integrator/operation/config_fields/http.js +185 -0
  106. package/lib/components/integrator/operation/config_fields/sql.js +81 -0
  107. package/lib/components/system/SystemSecurityForm.js +1 -1
  108. package/lib/components/system/SystemTaskAdapterForm.js +9 -9
  109. package/lib/components/system/SystemUserForm.js +2 -0
  110. package/lib/components/system/helpers.js +123 -100
  111. package/lib/components/system/spaces/SystemSpaceForm.js +9 -37
  112. package/lib/components/system/spaces/SystemTenantForm.js +276 -104
  113. package/lib/components/system/spaces/SystemTenantMigrateForm.js +449 -0
  114. package/lib/components/system/spaces/SystemTenantTable.js +20 -16
  115. package/lib/components/table/Table.js +75 -15
  116. package/lib/components/table/Table.redux.js +297 -73
  117. package/lib/components/table/defaults/FilterControl.js +24 -0
  118. package/lib/components/table/defaults/index.js +2 -0
  119. package/lib/components/table/tests/Table.test.js +22 -22
  120. package/lib/components/table/tests/components.js +9 -2
  121. package/lib/components/task/builder/Connector.js +51 -41
  122. package/lib/components/task/builder/ConnectorForm.js +11 -7
  123. package/lib/components/task/builder/Node.js +31 -35
  124. package/lib/components/task/builder/NodeForm.js +93 -22
  125. package/lib/components/task/builder/NodeParametersForm.js +29 -17
  126. package/lib/components/task/builder/SvgCanvas.js +3 -17
  127. package/lib/components/task/builder/TaskDefinitionConfigForm.js +18 -50
  128. package/lib/components/task/builder/TreeBuilder.js +23 -3
  129. package/lib/components/task/builder/builder.redux.js +342 -197
  130. package/lib/components/task/builder/constants.js +10 -2
  131. package/lib/components/task/builder/helpers.js +231 -81
  132. package/lib/components/task/builder/models.js +7 -6
  133. package/lib/components/task/category/TaskCategoryTable.js +3 -3
  134. package/lib/components/task/common/UsageTable.js +9 -2
  135. package/lib/components/task/handlers/HandlerTable.js +44 -37
  136. package/lib/components/task/policy_rule/PolicyRuleTable.js +3 -3
  137. package/lib/components/task/runs/CreateManualTriggerForm.js +2 -0
  138. package/lib/components/task/runs/RunTable.js +10 -14
  139. package/lib/components/task/runs/RunTaskTable.js +1 -1
  140. package/lib/components/task/sources/SourceTable.js +2 -2
  141. package/lib/components/task/triggers/TriggerTable.js +2 -2
  142. package/lib/components/task/workflows/LinkedWorkflowTable.js +16 -11
  143. package/lib/components/task/workflows/WorkflowForm.js +27 -8
  144. package/lib/components/task/workflows/WorkflowTable.js +27 -26
  145. package/lib/helpers/index.js +307 -74
  146. package/lib/index.js +2 -1
  147. package/lib/saga.js +4 -4
  148. package/lib/store.js +2 -1
  149. package/package.json +7 -6
  150. package/proxyhelper.js +201 -176
  151. package/CHANGELOG.md +0 -94
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.THROTTLE_ZOOM = exports.THROTTLE_DRAG = exports.NODE_WIDTH = exports.NODE_TOP_BAR_PATH = exports.NODE_STROKE_WIDTH = exports.NODE_START_RADIUS = exports.NODE_RADIUS = exports.NODE_PADDING = exports.NODE_NAME_PADDING = exports.NODE_LEFT_TOP_BAR_PATH = exports.NODE_LEFT_BOTTOM_BAR_PATH = exports.NODE_LEFT_BAR_PATH = exports.NODE_JOIN_JUNCTION_HEIGHT = exports.NODE_JOIN_JUNCTION_CENTER_Y = exports.NODE_HEIGHT = exports.NODE_DECORATION_STROKE_WIDTH = exports.NODE_CORNER_TAB_PATH = exports.NODE_CENTER_Y = exports.NODE_CENTER_X = exports.NODE_BOTTOM_BAR_PATH = exports.NODE_BAR_THICKNESS = exports.NODE_BADGE_OFFSET = exports.NEW_TASK_DY = exports.NEW_TASK_DX = exports.ICON_SIZE = exports.ICON_CENTER = exports.CONNECTOR_TAIL_RADIUS = exports.CONNECTOR_STROKE_WIDTH = exports.CONNECTOR_LABEL_WIDTH = exports.CONNECTOR_LABEL_RADIUS = exports.CONNECTOR_LABEL_PADDING = exports.CONNECTOR_LABEL_HEIGHT = exports.CONNECTOR_LABEL_CENTER_Y = exports.CONNECTOR_LABEL_CENTER_X = exports.CONNECTOR_HEAD_POINTS = exports.CANVAS_ZOOM_MODIFIER = exports.CANVAS_ZOOM_DURATION = exports.CANVAS_SCALE_OPTIONS = void 0;
6
+ exports.THROTTLE_ZOOM = exports.THROTTLE_DRAG = exports.NODE_WIDTH = exports.NODE_TOP_BAR_PATH = exports.NODE_STROKE_WIDTH = exports.NODE_START_RADIUS = exports.NODE_RADIUS = exports.NODE_PLUG_SPACE_HEIGHT = exports.NODE_PLUG_PRONG_HEIGHT = exports.NODE_PLUG_HEIGHT = exports.NODE_PLUG_BAR_PATH = exports.NODE_PADDING = exports.NODE_NAME_PADDING = exports.NODE_LEFT_TOP_BAR_PATH = exports.NODE_LEFT_BOTTOM_BAR_PATH = exports.NODE_LEFT_BAR_PATH = exports.NODE_JOIN_JUNCTION_HEIGHT = exports.NODE_JOIN_JUNCTION_CENTER_Y = exports.NODE_HEIGHT = exports.NODE_DECORATION_STROKE_WIDTH = exports.NODE_CORNER_TAB_PATH = exports.NODE_CENTER_Y = exports.NODE_CENTER_X = exports.NODE_BOTTOM_BAR_PATH = exports.NODE_BAR_THICKNESS = exports.NODE_BADGE_OFFSET = exports.NEW_TASK_DY = exports.NEW_TASK_DX = exports.ICON_SIZE = exports.ICON_CENTER = exports.CONNECTOR_TAIL_RADIUS = exports.CONNECTOR_STROKE_WIDTH = exports.CONNECTOR_LABEL_WIDTH = exports.CONNECTOR_LABEL_RADIUS = exports.CONNECTOR_LABEL_PADDING = exports.CONNECTOR_LABEL_HEIGHT = exports.CONNECTOR_LABEL_CENTER_Y = exports.CONNECTOR_LABEL_CENTER_X = exports.CONNECTOR_HEAD_POINTS = exports.CANVAS_ZOOM_MODIFIER = exports.CANVAS_ZOOM_DURATION = exports.CANVAS_SCALE_OPTIONS = exports.ADVANCED_HANDLER_NAME_SUBMISSION_CREATE = exports.ADVANCED_HANDLER_NAME_INTEGRATION = void 0;
7
7
  var _immutable = require("immutable");
8
8
  var CANVAS_SCALE_OPTIONS = exports.CANVAS_SCALE_OPTIONS = _immutable.List.of(0.25, 0.5, 0.75, 1, 1.33);
9
9
  var CANVAS_ZOOM_DURATION = exports.CANVAS_ZOOM_DURATION = 200;
@@ -24,6 +24,9 @@ var NODE_BADGE_OFFSET = exports.NODE_BADGE_OFFSET = 6;
24
24
  var NODE_BAR_THICKNESS = exports.NODE_BAR_THICKNESS = 8;
25
25
  var NODE_RADIUS = exports.NODE_RADIUS = 8;
26
26
  var NODE_HEIGHT = exports.NODE_HEIGHT = 45;
27
+ var NODE_PLUG_PRONG_HEIGHT = exports.NODE_PLUG_PRONG_HEIGHT = 4;
28
+ var NODE_PLUG_SPACE_HEIGHT = exports.NODE_PLUG_SPACE_HEIGHT = 3;
29
+ var NODE_PLUG_HEIGHT = exports.NODE_PLUG_HEIGHT = NODE_PLUG_PRONG_HEIGHT * 2 + NODE_PLUG_SPACE_HEIGHT;
27
30
  var NODE_JOIN_JUNCTION_HEIGHT = exports.NODE_JOIN_JUNCTION_HEIGHT = 45;
28
31
  var NODE_START_RADIUS = exports.NODE_START_RADIUS = 28;
29
32
  var NODE_STROKE_WIDTH = exports.NODE_STROKE_WIDTH = 1;
@@ -61,7 +64,12 @@ var ARC_DOWN_LEFT = " ".concat(NODE_RADIUS, " ").concat(NODE_RADIUS, " 0 0 1 -")
61
64
  var ARC_UP_LEFT = " ".concat(NODE_RADIUS, " ").concat(NODE_RADIUS, " 0 0 1 -").concat(NODE_RADIUS, " -").concat(NODE_RADIUS);
62
65
  var NODE_BOTTOM_BAR_PATH = exports.NODE_BOTTOM_BAR_PATH = "\n M ".concat(MIN, " ").concat(MAX_Y - NODE_BAR_THICKNESS, "\n h ").concat(OUTER_WIDTH, "\n v ").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n a ").concat(ARC_DOWN_LEFT, "\n h -").concat(OUTER_WIDTH - NODE_RADIUS * 2, "\n a ").concat(ARC_UP_LEFT, "\n v -").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n");
63
66
  var NODE_LEFT_BAR_PATH = exports.NODE_LEFT_BAR_PATH = "\n M ".concat(MIN + NODE_BAR_THICKNESS, " ").concat(MIN, "\n v ").concat(OUTER_HEIGHT, "\n h -").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n a ").concat(ARC_UP_LEFT, "\n v -").concat(OUTER_HEIGHT - NODE_RADIUS * 2, "\n a ").concat(ARC_UP_RIGHT, "\n h ").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n ");
67
+ var NODE_PLUG_BAR_PATH = exports.NODE_PLUG_BAR_PATH = "\n M ".concat(MIN + NODE_BAR_THICKNESS, " ").concat(MIN, "\n v ").concat(OUTER_HEIGHT, "\n h -").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n a ").concat(ARC_UP_LEFT, "\n v -").concat((OUTER_HEIGHT - NODE_RADIUS * 2 - NODE_PLUG_HEIGHT) / 2, "\n h ").concat(NODE_BAR_THICKNESS * 0.625, "\n v -").concat(NODE_PLUG_PRONG_HEIGHT, "\n h -").concat(NODE_BAR_THICKNESS * 0.625, "\n v -").concat(NODE_PLUG_SPACE_HEIGHT, "\n h ").concat(NODE_BAR_THICKNESS * 0.625, "\n v -").concat(NODE_PLUG_PRONG_HEIGHT, "\n h -").concat(NODE_BAR_THICKNESS * 0.625, "\n v -").concat((OUTER_HEIGHT - NODE_RADIUS * 2 - NODE_PLUG_HEIGHT) / 2, "\n a ").concat(ARC_UP_RIGHT, "\n h ").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n ");
64
68
  var NODE_LEFT_TOP_BAR_PATH = exports.NODE_LEFT_TOP_BAR_PATH = "\n M ".concat(MIN + NODE_BAR_THICKNESS, " ").concat(MIN, "\n v ").concat(OUTER_HEIGHT / 2, "\n h -").concat(NODE_BAR_THICKNESS, "\n v -").concat(OUTER_HEIGHT / 2 - NODE_RADIUS, "\n a ").concat(ARC_UP_RIGHT, "\n h ").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n ");
65
69
  var NODE_LEFT_BOTTOM_BAR_PATH = exports.NODE_LEFT_BOTTOM_BAR_PATH = "\n M ".concat(MIN + NODE_BAR_THICKNESS, " ").concat(MIN + OUTER_HEIGHT / 2, "\n v ").concat(OUTER_HEIGHT / 2, "\n h -").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n a ").concat(ARC_UP_LEFT, "\n v -").concat(OUTER_HEIGHT / 2 - NODE_RADIUS, "\n h ").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n ");
66
70
  var NODE_TOP_BAR_PATH = exports.NODE_TOP_BAR_PATH = "\n M ".concat(MIN, " ").concat(MIN + NODE_BAR_THICKNESS, "\n v -").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n a ").concat(ARC_UP_RIGHT, "\n h ").concat(OUTER_WIDTH - NODE_RADIUS * 2, "\n a ").concat(ARC_DOWN_RIGHT, "\n v ").concat(NODE_BAR_THICKNESS - NODE_RADIUS, "\n h -").concat(OUTER_WIDTH, "\n");
67
- var NODE_CORNER_TAB_PATH = exports.NODE_CORNER_TAB_PATH = "\n M ".concat(MAX_X - NODE_BAR_THICKNESS * 3, " ").concat(MIN, "\n h ").concat(NODE_BAR_THICKNESS * 3 - NODE_RADIUS, "\n a ").concat(ARC_DOWN_RIGHT, "\n v ").concat(NODE_BAR_THICKNESS * 3 - NODE_RADIUS, "\n L ").concat(MAX_X - NODE_BAR_THICKNESS * 3, " ").concat(MIN, "\n");
71
+ var NODE_CORNER_TAB_PATH = exports.NODE_CORNER_TAB_PATH = "\n M ".concat(MAX_X - NODE_BAR_THICKNESS * 3, " ").concat(MIN, "\n h ").concat(NODE_BAR_THICKNESS * 3 - NODE_RADIUS, "\n a ").concat(ARC_DOWN_RIGHT, "\n v ").concat(NODE_BAR_THICKNESS * 3 - NODE_RADIUS, "\n L ").concat(MAX_X - NODE_BAR_THICKNESS * 3, " ").concat(MIN, "\n");
72
+
73
+ // Advanced handler definition names
74
+ var ADVANCED_HANDLER_NAME_INTEGRATION = exports.ADVANCED_HANDLER_NAME_INTEGRATION = 'system_integration';
75
+ var ADVANCED_HANDLER_NAME_SUBMISSION_CREATE = exports.ADVANCED_HANDLER_NAME_SUBMISSION_CREATE = 'system_submission_create';
@@ -5,10 +5,12 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.treeReturnTask = exports.searchNodeResultDependencies = exports.replace = exports.renameDependencies = exports.parseNodeResultDependencies = exports.normalizeParameter = exports.isPointInNode = exports.isIE11 = exports.getRectIntersections = exports.getNodeType = exports.getNodeShape = exports.getNodeDependencies = exports.getNodeCenter = exports.getNewNodePosition = exports.getConnectorDependencies = exports.getAncestors = exports.buildBindings = exports.addNewTask = void 0;
8
+ exports.treeReturnTask = exports.searchNodeResultDependencies = exports.replace = exports.renameDependencies = exports.parseNodeResultDependencies = exports.normalizeParameter = exports.isPointInNode = exports.isNodeMissingIntegration = exports.getRectIntersections = exports.getNodeType = exports.getNodeShape = exports.getNodeDependencies = exports.getNodeCenter = exports.getNewNodePosition = exports.getConnectorDependencies = exports.getAncestors = exports.generateSubmissionCreateTaskDefinition = exports.generateIntegrationTaskDefinition = exports.checkOmittedParametersForAdvancedHandlers = exports.buildBindings = exports.addNewTask = void 0;
9
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
12
+ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toArray"));
13
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
12
14
  var _immutable = require("immutable");
13
15
  var _lodashEs = require("lodash-es");
14
16
  var _kldIntersections = require("kld-intersections");
@@ -18,8 +20,8 @@ var _store = require("../../../store");
18
20
  var _languageHelpers = require("../../common/code_input/languageHelpers");
19
21
  var _models = require("./models");
20
22
  var _excluded = ["name", "id", "defaultValue"];
21
- var isIE11 = exports.isIE11 = document.documentMode === 11;
22
23
  var getRectIntersections = exports.getRectIntersections = function getRectIntersections(_ref) {
24
+ var _nodeIntersection$poi;
23
25
  var dragging = _ref.dragging,
24
26
  head = _ref.head,
25
27
  headType = _ref.headType,
@@ -43,7 +45,10 @@ var getRectIntersections = exports.getRectIntersections = function getRectInters
43
45
  var tailShape = getNodeShape(tailType, tail);
44
46
  var headIntersection = _kldIntersections.Intersection.intersect(headShape, line).points[0];
45
47
  var tailIntersection = _kldIntersections.Intersection.intersect(tailShape, line).points[0];
46
- return [dragging === 'tail' ? tail : tailIntersection || tailCenter, dragging === 'head' ? head : headIntersection || headCenter];
48
+ var nodeIntersection = _kldIntersections.Intersection.intersect(headShape, tailShape);
49
+ return [dragging === 'tail' ? tail : tailIntersection || tailCenter, dragging === 'head' ? head : headIntersection || headCenter,
50
+ // Return a boolean for whether the two nodes overlap
51
+ dragging ? false : (nodeIntersection === null || nodeIntersection === void 0 ? void 0 : (_nodeIntersection$poi = nodeIntersection.points) === null || _nodeIntersection$poi === void 0 ? void 0 : _nodeIntersection$poi.length) > 0];
47
52
  };
48
53
  var isPointInNode = exports.isPointInNode = function isPointInNode(point) {
49
54
  return function (node) {
@@ -106,54 +111,94 @@ var getAncestors = exports.getAncestors = function getAncestors(tree, node) {
106
111
  );
107
112
  };
108
113
 
109
- // recursive helper that calls bindify if the current raw value is an object
110
- // or returns the leaf value object if not (removing the erb tags at the same
111
- // time)
114
+ // Converts the bindings data from the server and the generated Results
115
+ // bindings into the correct structure needed for the code editor
112
116
  var bindify = function bindify(raw) {
113
- return (0, _immutable.Map)(raw).sortBy(function (_, key) {
114
- return key;
115
- }).map(function (value) {
116
- return (0, _immutable.isImmutable)(value) ? value : (0, _lodashEs.isObject)(value) ? (0, _immutable.Map)({
117
- children: bindify(value)
117
+ var flatBindings = flattenBindings(raw).map(function (binding) {
118
+ var _binding$match;
119
+ return binding === null || binding === void 0 ? void 0 : (_binding$match = binding.match(/^<?%?=?\s*(.*)\s*%?>?$/i)) === null || _binding$match === void 0 ? void 0 : _binding$match[1];
120
+ }).filter(Boolean).map(function (binding) {
121
+ return parseBinding(binding);
122
+ });
123
+ var groupedBindings = groupBindings(flatBindings);
124
+ return finalizeBindings(groupedBindings);
125
+ };
126
+
127
+ // Takes the bindings data from the server and the generated Results bindings,
128
+ // and flattens them all into a list of the binding strings
129
+ var flattenBindings = function flattenBindings(data) {
130
+ return (0, _lodashEs.isObject)(data) ? Object.values(data).flatMap(flattenBindings) : data;
131
+ };
132
+
133
+ // Parses each flattened bindings string to an array of its parts
134
+ var parseBinding = function parseBinding(binding, parsedSoFar) {
135
+ var match = binding === null || binding === void 0 ? void 0 : binding.match(/^(?:(@\w+)|\[\'(.+?)\'\])(.*)$/i);
136
+ if (match) {
137
+ var parsedNext = [].concat((0, _toConsumableArray2["default"])(parsedSoFar || []), [match[1] || match[2]]).filter(Boolean);
138
+ return match[3] ? parseBinding(match[3], parsedNext) : parsedNext;
139
+ }
140
+ return parsedSoFar;
141
+ };
142
+
143
+ // Recursively groups the flattened and parsed bindings into maps with the
144
+ // parts as keys, with the final leaf having a value of null
145
+ var groupBindings = function groupBindings(flatBindings) {
146
+ return Array.isArray(flatBindings) ? (0, _immutable.List)(flatBindings).groupBy(function (bindingArray) {
147
+ return bindingArray[0];
148
+ }).map(function (childBindings) {
149
+ var updatedBindings = childBindings.map(function (_ref4) {
150
+ var _ref5 = (0, _toArray2["default"])(_ref4),
151
+ children = _ref5.slice(1);
152
+ return children.length > 0 ? children : null;
153
+ }).filter(Boolean);
154
+ return updatedBindings.size > 0 ? groupBindings(updatedBindings.toArray()) : null;
155
+ }) : flatBindings;
156
+ };
157
+
158
+ // Recursively converts the grouped bindings into the format needed for the
159
+ // code editor
160
+ var finalizeBindings = function finalizeBindings(bindingsMap) {
161
+ return bindingsMap.map(function (children, label) {
162
+ return !!children ? (0, _immutable.Map)({
163
+ label: label,
164
+ type: 'object',
165
+ children: finalizeBindings(children)
118
166
  }) : (0, _immutable.Map)({
119
- value: value.replace(/^<%=(.*)%>$/, '$1')
167
+ label: label
120
168
  });
121
- });
169
+ }).toList();
122
170
  };
123
- var buildBindings = exports.buildBindings = function buildBindings(tree, tasks, node) {
124
- var Results = (0, _immutable.Map)({
125
- children: tree.nodes
126
- // convert the node map to use the name as the key
127
- .mapKeys(function (_, node) {
128
- return node.name;
129
- }).sortBy(function (value, key) {
130
- return key;
131
- })
132
- // normalize the outputs / results property (routine / handler
133
- // respectively)
134
- .map(function (node) {
135
- var task = tasks.get(node.definitionId);
136
- return task && (task.results || task.outputs) || [];
137
- })
138
- // filter out any nodes that have no outputs / results
139
- .filter(function (results) {
140
- return results.length > 0;
141
- })
142
- // convert the results list to the bindings map using the name property
143
- // of each result object
144
- .map(function (results, nodeNode) {
145
- return (0, _immutable.Map)({
146
- children: (0, _immutable.OrderedMap)(results.map(function (result) {
147
- return [result.name, (0, _immutable.Map)({
148
- value: "@results['".concat(nodeNode, "']['").concat(result.name, "']")
149
- })];
150
- }))
151
- });
152
- })
171
+ var buildBindings = exports.buildBindings = function buildBindings(_ref6) {
172
+ var tree = _ref6.tree,
173
+ tasks = _ref6.tasks,
174
+ connections = _ref6.connections,
175
+ node = _ref6.node;
176
+ var Results = tree.nodes.reduce(function (results, node) {
177
+ var isIntegration = node.definitionId.startsWith("".concat(_constants.ADVANCED_HANDLER_NAME_INTEGRATION, "_v"));
178
+ if (isIntegration) {
179
+ var _node$parameters$find, _node$parameters$find2;
180
+ var outputs = connections === null || connections === void 0 ? void 0 : connections.getIn([(_node$parameters$find = node.parameters.find(function (p) {
181
+ return p.id === 'connection';
182
+ })) === null || _node$parameters$find === void 0 ? void 0 : _node$parameters$find.value, 'operations', (_node$parameters$find2 = node.parameters.find(function (p) {
183
+ return p.id === 'operation';
184
+ })) === null || _node$parameters$find2 === void 0 ? void 0 : _node$parameters$find2.value, 'outputs']);
185
+ if (outputs) {
186
+ return results.set(node.name, outputs.reduce(function (res, _, name) {
187
+ return res.set(name, "@results['".concat(node.name, "']['").concat(name, "']"));
188
+ }, (0, _immutable.Map)()));
189
+ }
190
+ }
191
+ var task = tasks.get(node.definitionId);
192
+ return results.set(node.name, (task && (task.results || task.outputs) || []).reduce(function (res, output) {
193
+ return res.set(output.name, "@results['".concat(node.name, "']['").concat(output.name, "']"));
194
+ }, (0, _immutable.Map)()));
195
+ }, (0, _immutable.Map)()).filter(function (results) {
196
+ return !results.isEmpty();
153
197
  });
154
- return bindify(Results.get('children').isEmpty() ? tree.bindings : (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, tree.bindings), {}, {
155
- Results: Results
156
- }));
198
+ var bindings = Results.isEmpty() ? tree.bindings : (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, tree.bindings), {}, {
199
+ Results: Results.toJS()
200
+ });
201
+ return bindify(bindings);
157
202
  };
158
203
 
159
204
  // implements the process of adding a new task node and connector to the tree,
@@ -162,10 +207,11 @@ var buildBindings = exports.buildBindings = function buildBindings(tree, tasks,
162
207
  // should be called with a task definition, then it stubs out a node and
163
208
  // connector and passes a complete function which should be called with the
164
209
  // fully configured node and connector
165
- var addNewTask = exports.addNewTask = function addNewTask(treeKey, tree, parent, position, reset) {
210
+ var addNewTask = exports.addNewTask = function addNewTask(treeKey, tree, connections, parent, position, reset) {
166
211
  return {
167
212
  cancel: reset,
168
213
  tree: tree,
214
+ connections: connections,
169
215
  selectCloneNode: function selectCloneNode(cloneNode) {
170
216
  return addNewTaskNext({
171
217
  cloneNode: cloneNode,
@@ -188,14 +234,14 @@ var addNewTask = exports.addNewTask = function addNewTask(treeKey, tree, parent,
188
234
  }
189
235
  };
190
236
  };
191
- var addNewTaskNext = function addNewTaskNext(_ref4) {
192
- var cloneNode = _ref4.cloneNode,
193
- parent = _ref4.parent,
194
- position = _ref4.position,
195
- reset = _ref4.reset,
196
- task = _ref4.task,
197
- tree = _ref4.tree,
198
- treeKey = _ref4.treeKey;
237
+ var addNewTaskNext = function addNewTaskNext(_ref7) {
238
+ var cloneNode = _ref7.cloneNode,
239
+ parent = _ref7.parent,
240
+ position = _ref7.position,
241
+ reset = _ref7.reset,
242
+ task = _ref7.task,
243
+ tree = _ref7.tree,
244
+ treeKey = _ref7.treeKey;
199
245
  var connectors = tree.connectors,
200
246
  nextConnectorId = tree.nextConnectorId,
201
247
  nextNodeId = tree.nextNodeId,
@@ -225,7 +271,7 @@ var addNewTaskNext = function addNewTaskNext(_ref4) {
225
271
  })
226
272
  });
227
273
  // add the stubbed connector and node to the current tree, this is done to
228
- // accommodate the <CodeInput> bindings helper in <ConnectorForm> and
274
+ // accommodate the code bindings helper in <ConnectorForm> and
229
275
  // <NodeForm>
230
276
  var stagedTree = tree.merge({
231
277
  connectors: connectors.set(connector.id, connector),
@@ -242,10 +288,28 @@ var addNewTaskNext = function addNewTaskNext(_ref4) {
242
288
  connector: connector,
243
289
  node: node,
244
290
  stagedTree: stagedTree,
245
- complete: function complete(_ref5) {
246
- var connector = _ref5.connector,
247
- node = _ref5.node;
291
+ complete: function complete(_ref8) {
292
+ var connector = _ref8.connector,
293
+ node = _ref8.node;
248
294
  reset();
295
+ if (node.definitionId.startsWith("".concat(_constants.ADVANCED_HANDLER_NAME_INTEGRATION, "_v"))) {
296
+ var _node$parameters$find3;
297
+ var operationId = (_node$parameters$find3 = node.parameters.find(function (p) {
298
+ return p.id === 'operation';
299
+ })) === null || _node$parameters$find3 === void 0 ? void 0 : _node$parameters$find3.value;
300
+ if (operationId) {
301
+ var _node$parameters$find4;
302
+ (0, _store.dispatch)('TREE_LOAD_OPERATIONS', {
303
+ treeKey: treeKey,
304
+ operations: [{
305
+ id: operationId,
306
+ connectionId: (_node$parameters$find4 = node.parameters.find(function (p) {
307
+ return p.id === 'connection';
308
+ })) === null || _node$parameters$find4 === void 0 ? void 0 : _node$parameters$find4.value
309
+ }]
310
+ });
311
+ }
312
+ }
249
313
  return (0, _store.dispatch)('TREE_UPDATE', {
250
314
  treeKey: treeKey,
251
315
  tree: stagedTree.setIn(['connectors', connector.id], connector).setIn(['nodes', node.id], node)
@@ -261,12 +325,12 @@ var STRING_CONTENT_REGEX = /((?:%[qQiIwWxs]?)?.)(.*)(.)/;
261
325
  // takes a erb / ruby strings and checks for references to @results['Node name']
262
326
  // using the language helpers,
263
327
  var parseNodeResultDependencies = exports.parseNodeResultDependencies = function parseNodeResultDependencies(context, value, erb) {
264
- return (erb ? _languageHelpers.processErbTemplate : _languageHelpers.processRuby)(value).reduce(function (_ref6, token) {
265
- var _ref7 = (0, _slicedToArray2["default"])(_ref6, 4),
266
- reduction = _ref7[0],
267
- index = _ref7[1],
268
- last1 = _ref7[2],
269
- last2 = _ref7[3];
328
+ return (erb ? _languageHelpers.processErbTemplate : _languageHelpers.processRuby)(value).reduce(function (_ref9, token) {
329
+ var _ref10 = (0, _slicedToArray2["default"])(_ref9, 4),
330
+ reduction = _ref10[0],
331
+ index = _ref10[1],
332
+ last1 = _ref10[2],
333
+ last2 = _ref10[3];
270
334
  var _token = (0, _slicedToArray2["default"])(token, 2),
271
335
  content = _token[0],
272
336
  type = _token[1];
@@ -290,20 +354,20 @@ var parseNodeResultDependencies = exports.parseNodeResultDependencies = function
290
354
  return [newReduction, index + content.length, token, last1];
291
355
  }, [(0, _immutable.List)(), 0, null, null])[0];
292
356
  };
293
- var getConnectorDependencies = exports.getConnectorDependencies = function getConnectorDependencies(_ref8) {
294
- var condition = _ref8.condition,
295
- id = _ref8.id;
357
+ var getConnectorDependencies = exports.getConnectorDependencies = function getConnectorDependencies(_ref11) {
358
+ var condition = _ref11.condition,
359
+ id = _ref11.id;
296
360
  return parseNodeResultDependencies(['connectors', id, 'condition'], condition);
297
361
  };
298
- var getNodeDependencies = exports.getNodeDependencies = function getNodeDependencies(_ref9) {
299
- var id = _ref9.id,
300
- messages = _ref9.messages,
301
- parameters = _ref9.parameters;
302
- return (0, _immutable.List)().concat(messages.flatMap(function (_ref10, i) {
303
- var value = _ref10.value;
362
+ var getNodeDependencies = exports.getNodeDependencies = function getNodeDependencies(_ref12) {
363
+ var id = _ref12.id,
364
+ messages = _ref12.messages,
365
+ parameters = _ref12.parameters;
366
+ return (0, _immutable.List)().concat(messages.flatMap(function (_ref13, i) {
367
+ var value = _ref13.value;
304
368
  return parseNodeResultDependencies(['nodes', id, 'messages', i, 'value'], value, true);
305
- }), parameters.flatMap(function (_ref11, i) {
306
- var value = _ref11.value;
369
+ }), parameters.flatMap(function (_ref14, i) {
370
+ var value = _ref14.value;
307
371
  return parseNodeResultDependencies(['nodes', id, 'parameters', i, 'value'], value, true);
308
372
  }));
309
373
  };
@@ -341,11 +405,11 @@ var renameDependencies = exports.renameDependencies = function renameDependencie
341
405
  // routines have `inputs` and handlers have `parameters` with slightly different
342
406
  // properties so this is a helper function to take one or the other and return
343
407
  // a consistent object
344
- var normalizeParameter = exports.normalizeParameter = function normalizeParameter(_ref12) {
345
- var name = _ref12.name,
346
- id = _ref12.id,
347
- defaultValue = _ref12.defaultValue,
348
- rest = (0, _objectWithoutProperties2["default"])(_ref12, _excluded);
408
+ var normalizeParameter = exports.normalizeParameter = function normalizeParameter(_ref15) {
409
+ var name = _ref15.name,
410
+ id = _ref15.id,
411
+ defaultValue = _ref15.defaultValue,
412
+ rest = (0, _objectWithoutProperties2["default"])(_ref15, _excluded);
349
413
  return (0, _objectSpread2["default"])({
350
414
  id: id || name,
351
415
  label: name,
@@ -411,4 +475,90 @@ var getNewNodePosition = exports.getNewNodePosition = function getNewNodePositio
411
475
  return y + _constants.NEW_TASK_DY;
412
476
  });
413
477
  }
478
+ };
479
+ var generateSubmissionCreateTaskDefinition = exports.generateSubmissionCreateTaskDefinition = function generateSubmissionCreateTaskDefinition(task, _ref16) {
480
+ var _form$fields;
481
+ var form = _ref16.form;
482
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, task), {}, {
483
+ parameters: [].concat((0, _toConsumableArray2["default"])(task.parameters
484
+ // Remove previous form's field parameters
485
+ .filter(function (parameter) {
486
+ return !parameter.id.startsWith('values.');
487
+ }).map(function (parameter) {
488
+ var _form$kapp;
489
+ return parameter.id === 'kappSlug' ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, parameter), {}, {
490
+ defaultValue: form === null || form === void 0 ? void 0 : (_form$kapp = form.kapp) === null || _form$kapp === void 0 ? void 0 : _form$kapp.slug
491
+ }) : parameter.id === 'formSlug' ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, parameter), {}, {
492
+ defaultValue: form === null || form === void 0 ? void 0 : form.slug
493
+ }) : parameter;
494
+ })), (0, _toConsumableArray2["default"])(form === null || form === void 0 ? void 0 : (_form$fields = form.fields) === null || _form$fields === void 0 ? void 0 : _form$fields.map(function (field) {
495
+ return {
496
+ name: field.name,
497
+ defaultValue: '',
498
+ dependsOnId: null,
499
+ dependsOnValue: null,
500
+ description: '',
501
+ id: "values.".concat(field.name),
502
+ required: false
503
+ };
504
+ })))
505
+ });
506
+ };
507
+ var generateIntegrationTaskDefinition = exports.generateIntegrationTaskDefinition = function generateIntegrationTaskDefinition(task, _ref17) {
508
+ var connection = _ref17.connection,
509
+ operation = _ref17.operation,
510
+ detectedInputs = _ref17.detectedInputs;
511
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, task), {}, {
512
+ parameters: [].concat((0, _toConsumableArray2["default"])(task.parameters
513
+ // Remove previous operation's parameters
514
+ .filter(function (parameter) {
515
+ return !parameter.id.startsWith('parameters.');
516
+ }).map(function (parameter) {
517
+ return parameter.id === 'connection' ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, parameter), {}, {
518
+ defaultValue: connection.id
519
+ }) : parameter.id === 'operation' ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, parameter), {}, {
520
+ defaultValue: operation.id
521
+ }) : parameter;
522
+ })), (0, _toConsumableArray2["default"])(detectedInputs.map(function (input) {
523
+ return {
524
+ name: input,
525
+ defaultValue: '',
526
+ dependsOnId: null,
527
+ dependsOnValue: null,
528
+ description: '',
529
+ id: "parameters.".concat(input),
530
+ required: false
531
+ };
532
+ })))
533
+ });
534
+ };
535
+ var checkOmittedParametersForAdvancedHandlers = exports.checkOmittedParametersForAdvancedHandlers = function checkOmittedParametersForAdvancedHandlers(node, parameter) {
536
+ if (node.definitionId.startsWith("".concat(_constants.ADVANCED_HANDLER_NAME_SUBMISSION_CREATE, "_v"))) {
537
+ return !['kappSlug', 'formSlug'].includes(parameter.id);
538
+ } else if (node.definitionId.startsWith("".concat(_constants.ADVANCED_HANDLER_NAME_INTEGRATION, "_v"))) {
539
+ return !['connection', 'operation'].includes(parameter.id);
540
+ } else {
541
+ return true;
542
+ }
543
+ };
544
+ var isNodeMissingIntegration = exports.isNodeMissingIntegration = function isNodeMissingIntegration(node, connections) {
545
+ // Only check integration data if the node is an integration node
546
+ if (node.definitionId.startsWith("".concat(_constants.ADVANCED_HANDLER_NAME_INTEGRATION, "_v"))) {
547
+ var _node$parameters$find5, _node$parameters$find6, _node$parameters$find7;
548
+ // If connection doesn't exist in the list, return true
549
+ if (connections && !connections.has((_node$parameters$find5 = node.parameters.find(function (p) {
550
+ return p.id === 'connection';
551
+ })) === null || _node$parameters$find5 === void 0 ? void 0 : _node$parameters$find5.value)) {
552
+ return true;
553
+ }
554
+ // If operation is null, return true. Undefined is fine because it means
555
+ // the data has not yet been fetched, so we don't want to error yet.
556
+ var operation = connections === null || connections === void 0 ? void 0 : connections.getIn([(_node$parameters$find6 = node.parameters.find(function (p) {
557
+ return p.id === 'connection';
558
+ })) === null || _node$parameters$find6 === void 0 ? void 0 : _node$parameters$find6.value, 'operations', (_node$parameters$find7 = node.parameters.find(function (p) {
559
+ return p.id === 'operation';
560
+ })) === null || _node$parameters$find7 === void 0 ? void 0 : _node$parameters$find7.value]);
561
+ return operation === null;
562
+ }
563
+ return false;
414
564
  };
@@ -9,8 +9,8 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/
9
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
10
10
  var _immutable = require("immutable");
11
11
  var _excluded = ["id", "messages", "parameters", "position"];
12
- /*******************************************************************************
13
- * Immutable records *
12
+ /*******************************************************************************
13
+ * Immutable records *
14
14
  ******************************************************************************/
15
15
 
16
16
  var Point = exports.Point = (0, _immutable.Record)({
@@ -89,6 +89,7 @@ var Connector = exports.Connector = (0, _immutable.Record)({
89
89
  });
90
90
  var TreeBuilderState = exports.TreeBuilderState = (0, _immutable.Record)({
91
91
  categories: (0, _immutable.OrderedMap)(),
92
+ connections: (0, _immutable.OrderedMap)(),
92
93
  error: null,
93
94
  formSlug: null,
94
95
  kappSlug: null,
@@ -112,10 +113,10 @@ var NodeResultDependency = exports.NodeResultDependency = (0, _immutable.Record)
112
113
  index: 0
113
114
  });
114
115
 
115
- /*******************************************************************************
116
- * Serialization functions *
117
- * Should take native objects that are returned from the API endpoints and *
118
- * convert them to immutable records used by the builder implementation *
116
+ /*******************************************************************************
117
+ * Serialization functions *
118
+ * Should take native objects that are returned from the API endpoints and *
119
+ * convert them to immutable records used by the builder implementation *
119
120
  ******************************************************************************/
120
121
 
121
122
  var deserializeNodeId = function deserializeNodeId(id) {
@@ -47,11 +47,11 @@ var columns = [{
47
47
  sortable: true
48
48
  }, {
49
49
  value: 'id',
50
- title: 'Id',
50
+ title: 'ID',
51
51
  sortable: true
52
52
  }, {
53
53
  value: 'createdAt',
54
- title: 'Created',
54
+ title: 'Created At',
55
55
  sortable: true
56
56
  }, {
57
57
  value: 'createdBy',
@@ -59,7 +59,7 @@ var columns = [{
59
59
  sortable: true
60
60
  }, {
61
61
  value: 'updatedAt',
62
- title: 'Updated',
62
+ title: 'Updated At',
63
63
  sortable: true
64
64
  }, {
65
65
  value: 'updatedBy',
@@ -33,12 +33,19 @@ var dataSource = function dataSource(_ref) {
33
33
  }
34
34
  };
35
35
  };
36
+ var RUN_TYPES = ['Tree', 'Global Routine'].map(function (v) {
37
+ return {
38
+ label: v,
39
+ value: v
40
+ };
41
+ });
36
42
  var filters = function filters() {
37
43
  return function () {
38
44
  return [{
39
45
  name: 'type',
40
46
  label: 'Type',
41
- type: 'text'
47
+ type: 'select',
48
+ options: RUN_TYPES
42
49
  }, {
43
50
  name: 'source',
44
51
  label: 'Source',
@@ -76,7 +83,7 @@ var columns = [{
76
83
  sortable: true
77
84
  }, {
78
85
  value: 'updatedAt',
79
- title: 'Updated',
86
+ title: 'Updated At',
80
87
  sortable: true
81
88
  }];
82
89
  var UsageTable = exports.UsageTable = (0, _Table.generateTable)({