@kineticdata/react 5.1.0-rc.1 → 5.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.
- package/lib/apis/core/attributeDefinitions.js +11 -9
- package/lib/apis/core/attributeDefinitions.test.js +1 -1
- package/lib/apis/core/authentication.js +13 -5
- package/lib/apis/core/backgroundJobs.js +2 -1
- package/lib/apis/core/bridgeModelAttributeMappings.js +1 -1
- package/lib/apis/core/bridgeModelAttributes.js +15 -12
- package/lib/apis/core/bridgeModelMappings.js +1 -1
- package/lib/apis/core/bridgeModelQualificationMappings.js +2 -2
- package/lib/apis/core/bridgeModelQualifications.js +2 -2
- package/lib/apis/core/bridgeModels.js +14 -8
- package/lib/apis/core/bridgedresources.js +3 -2
- package/lib/apis/core/fileResources.js +36 -0
- package/lib/apis/core/filestores.js +40 -0
- package/lib/apis/core/formTypes.js +18 -21
- package/lib/apis/core/oauthClients.js +11 -5
- package/lib/apis/core/securityPolicyDefinitions.js +1 -1
- package/lib/apis/core/securityPolicyDefinitions.test.js +4 -4
- package/lib/apis/core/submissions.js +68 -0
- package/lib/apis/core/webhooks.js +1 -1
- package/lib/apis/core/webhooks.test.js +2 -2
- package/lib/apis/http.js +17 -3
- package/lib/apis/index.js +2 -0
- package/lib/apis/system/index.js +86 -1
- package/lib/apis/task/index.js +20 -13
- package/lib/components/agent/filestore/FilestoreForm.js +132 -0
- package/lib/components/agent/filestore/FilestoreTable.js +53 -0
- package/lib/components/common/BridgeSelect.js +2 -1
- package/lib/components/common/FormSelect.js +2 -1
- package/lib/components/common/Scroller.js +6 -6
- package/lib/components/common/TableInput.js +74 -29
- package/lib/components/common/TeamSelect.js +2 -1
- package/lib/components/common/Typeahead.js +7 -4
- package/lib/components/common/UserSelect.js +2 -1
- package/lib/components/common/authentication/AuthenticationContainer.js +50 -27
- package/lib/components/core/core_form/CoreForm.js +10 -10
- package/lib/components/core/file_resource/FileResourceForm.js +180 -0
- package/lib/components/core/file_resource/FileResourceTable.js +71 -0
- package/lib/components/core/i18n/I18n.js +14 -14
- package/lib/components/core/security_definition/SecurityDefinitionForm.js +1 -1
- package/lib/components/core/space/SpaceForm.js +37 -8
- package/lib/components/core/submission/FormSubmissionFilters.js +3 -11
- package/lib/components/core/submission/FormSubmissionTable.js +4 -2
- package/lib/components/core/submission/SubmissionForm.js +124 -0
- package/lib/components/core/submission/helpers.js +2 -2
- package/lib/components/core/user/UserForm.js +2 -2
- package/lib/components/core/webapi/WebApiForm.js +111 -126
- package/lib/components/form/Form.helpers.js +1 -1
- package/lib/components/form/Form.js +200 -144
- package/lib/components/index.js +14 -6
- package/lib/components/system/SystemBackgroundTasksTable.js +83 -0
- package/lib/components/system/SystemSecurityForm.js +69 -0
- package/lib/components/system/helpers.js +2 -2
- package/lib/components/system/spaces/SystemSpaceForm.js +44 -16
- package/lib/components/system/spaces/SystemTenantForm.js +15 -9
- package/lib/components/system/spaces/SystemTenantTable.js +15 -10
- package/lib/components/table/Table.js +9 -6
- package/lib/components/task/builder/Connector.js +21 -10
- package/lib/components/task/builder/ConnectorForm.js +1 -1
- package/lib/components/task/builder/Node.js +10 -3
- package/lib/components/task/builder/NodeForm.js +51 -22
- package/lib/components/task/builder/NodeParametersForm.js +5 -2
- package/lib/components/task/builder/SvgCanvas.js +13 -4
- package/lib/components/task/builder/TaskDefinitionConfigForm.js +113 -0
- package/lib/components/task/builder/TreeBuilder.js +27 -9
- package/lib/components/task/builder/builder.redux.js +159 -52
- package/lib/components/task/builder/helpers.js +5 -3
- package/lib/components/task/builder/models.js +84 -12
- package/lib/components/task/errors/RunErrorTable.js +1 -1
- package/lib/components/task/runs/CreateManualTriggerForm.js +15 -24
- package/lib/components/task/runs/RunTable.js +5 -3
- package/lib/components/task/workflows/WorkflowForm.js +67 -85
- package/lib/helpers/index.js +4 -1
- package/lib/index.js +1 -0
- package/package.json +2 -2
- package/proxyhelper.js +19 -6
|
@@ -2,6 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
|
2
2
|
import { generateForm } from '../../form/Form';
|
|
3
3
|
import { buildBindings, normalizeParameter } from './helpers';
|
|
4
4
|
import { NodeParameter } from './models';
|
|
5
|
+
import { checkOmittedParameters } from './TaskDefinitionConfigForm';
|
|
5
6
|
|
|
6
7
|
var getOptions = function getOptions(menu) {
|
|
7
8
|
return menu.split(',').filter(function (value) {
|
|
@@ -54,7 +55,8 @@ var fields = function fields(_ref2) {
|
|
|
54
55
|
initialValue: parameter.value,
|
|
55
56
|
options: parameter.menu ? getOptions(parameter.menu) : bindings,
|
|
56
57
|
"transient": true,
|
|
57
|
-
enabled: false
|
|
58
|
+
enabled: false,
|
|
59
|
+
visible: checkOmittedParameters(node, parameter)
|
|
58
60
|
};
|
|
59
61
|
})), _toConsumableArray(parameters.map(function (parameter) {
|
|
60
62
|
var matchingParameter = node.parameters.find(function (oldParameter) {
|
|
@@ -68,7 +70,8 @@ var fields = function fields(_ref2) {
|
|
|
68
70
|
helpText: parameter.description,
|
|
69
71
|
initialValue: matchingParameter ? matchingParameter.value : parameter.defaultValue,
|
|
70
72
|
options: parameter.menu ? getOptions(parameter.menu) : bindings,
|
|
71
|
-
"transient": true
|
|
73
|
+
"transient": true,
|
|
74
|
+
visible: checkOmittedParameters(node, parameter)
|
|
72
75
|
};
|
|
73
76
|
})), [{
|
|
74
77
|
name: 'parameters',
|
|
@@ -245,11 +245,20 @@ export var SvgCanvas = /*#__PURE__*/function (_Component) {
|
|
|
245
245
|
x = _this$viewport.x,
|
|
246
246
|
y = _this$viewport.y;
|
|
247
247
|
|
|
248
|
-
if (
|
|
249
|
-
|
|
250
|
-
|
|
248
|
+
if (isIE11) {
|
|
249
|
+
// this.transformer.current.setAttribute(
|
|
250
|
+
// 'transform',
|
|
251
|
+
// `translate(${x} ${y}) scale(${scale})`,
|
|
252
|
+
// );
|
|
253
|
+
this.transformer.current.transform = "translate(".concat(x, " ").concat(y, ") scale(").concat(scale, ")");
|
|
251
254
|
} else {
|
|
252
|
-
|
|
255
|
+
var transition = duration ? "transform ".concat(duration, "ms ").concat(ease) : ''; // this.transformer.current.setAttribute(
|
|
256
|
+
// 'style',
|
|
257
|
+
// `transform: translate(${x}px, ${y}px) scale(${scale});${transition}`,
|
|
258
|
+
// );
|
|
259
|
+
|
|
260
|
+
this.transformer.current.style.transform = "translate(".concat(x, "px, ").concat(y, "px) scale(").concat(scale, ")");
|
|
261
|
+
this.transformer.current.style.transition = transition;
|
|
253
262
|
}
|
|
254
263
|
|
|
255
264
|
if (this.viewport.scale < 0.26 && this.transformer.current.className.baseVal !== 'min-detail') {
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
|
+
import { List, Map } from 'immutable';
|
|
4
|
+
import { generateForm } from '../../form/Form';
|
|
5
|
+
import { fetchForm, fetchKapps } from '../../../apis';
|
|
6
|
+
export var checkOmittedParameters = function checkOmittedParameters(node, parameter) {
|
|
7
|
+
if (node.definitionId === 'system_submission_create_v1') {
|
|
8
|
+
return !['kappSlug', 'formSlug'].includes(parameter.id);
|
|
9
|
+
} else {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export var generateTaskDefinition = function generateTaskDefinition(taskDefinition) {
|
|
14
|
+
if (taskDefinition.definitionName === 'system_submission_create') {
|
|
15
|
+
return function (_ref) {
|
|
16
|
+
var form = _ref.form;
|
|
17
|
+
return _objectSpread(_objectSpread({}, taskDefinition), {}, {
|
|
18
|
+
parameters: [].concat(_toConsumableArray(taskDefinition.parameters.map(function (parameter) {
|
|
19
|
+
return parameter.id === 'kappSlug' ? _objectSpread(_objectSpread({}, parameter), {}, {
|
|
20
|
+
defaultValue: form.kapp.slug
|
|
21
|
+
}) : parameter.id === 'formSlug' ? _objectSpread(_objectSpread({}, parameter), {}, {
|
|
22
|
+
defaultValue: form.slug
|
|
23
|
+
}) : parameter;
|
|
24
|
+
})), _toConsumableArray(form.fields.map(function (field) {
|
|
25
|
+
return {
|
|
26
|
+
name: field.name,
|
|
27
|
+
defaultValue: '',
|
|
28
|
+
dependsOnId: null,
|
|
29
|
+
dependsOnValue: null,
|
|
30
|
+
description: '',
|
|
31
|
+
id: "values.".concat(field.name),
|
|
32
|
+
required: false
|
|
33
|
+
};
|
|
34
|
+
})))
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
} else {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
var dataSources = function dataSources() {
|
|
43
|
+
return {
|
|
44
|
+
kapps: {
|
|
45
|
+
fn: fetchKapps,
|
|
46
|
+
params: [],
|
|
47
|
+
transform: function transform(data) {
|
|
48
|
+
return data.kapps;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
var fields = function fields() {
|
|
55
|
+
return function () {
|
|
56
|
+
return [{
|
|
57
|
+
name: 'kappSlug',
|
|
58
|
+
label: 'Kapp',
|
|
59
|
+
type: 'select',
|
|
60
|
+
required: true,
|
|
61
|
+
options: function options(_ref2) {
|
|
62
|
+
var kapps = _ref2.kapps;
|
|
63
|
+
return kapps ? kapps.map(function (kapp) {
|
|
64
|
+
return Map({
|
|
65
|
+
value: kapp.get('slug'),
|
|
66
|
+
label: kapp.get('name')
|
|
67
|
+
});
|
|
68
|
+
}) : List();
|
|
69
|
+
},
|
|
70
|
+
onChange: function onChange(_ref3, actions) {
|
|
71
|
+
var values = _ref3.values;
|
|
72
|
+
|
|
73
|
+
if (!!values.get('form')) {
|
|
74
|
+
actions.setValue('form', null);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}, {
|
|
78
|
+
name: 'form',
|
|
79
|
+
label: 'Form',
|
|
80
|
+
type: 'form',
|
|
81
|
+
required: true,
|
|
82
|
+
enabled: function enabled(_ref4) {
|
|
83
|
+
var values = _ref4.values;
|
|
84
|
+
return values.get('kappSlug') !== '';
|
|
85
|
+
},
|
|
86
|
+
search: function search(_ref5) {
|
|
87
|
+
var values = _ref5.values;
|
|
88
|
+
return values.get('kappSlug') !== '' ? {
|
|
89
|
+
kappSlug: values.get('kappSlug')
|
|
90
|
+
} : {};
|
|
91
|
+
}
|
|
92
|
+
}];
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
var handleSubmit = function handleSubmit(_ref6) {
|
|
97
|
+
var taskDefinition = _ref6.taskDefinition;
|
|
98
|
+
return function (values) {
|
|
99
|
+
return fetchForm({
|
|
100
|
+
kappSlug: values.get('kappSlug'),
|
|
101
|
+
formSlug: values.getIn(['form', 'slug'], ''),
|
|
102
|
+
include: 'fields,kapp'
|
|
103
|
+
}).then(generateTaskDefinition(taskDefinition));
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export var TaskDefinitionConfigForm = generateForm({
|
|
108
|
+
formOptions: ['taskDefinition'],
|
|
109
|
+
dataSources: dataSources,
|
|
110
|
+
fields: fields,
|
|
111
|
+
handleSubmit: handleSubmit
|
|
112
|
+
});
|
|
113
|
+
TaskDefinitionConfigForm.displayName = 'TaskDefinitionConfigForm';
|
|
@@ -155,7 +155,7 @@ export var TreeBuilderComponent = /*#__PURE__*/function (_Component) {
|
|
|
155
155
|
};
|
|
156
156
|
|
|
157
157
|
_this.isDirty = function (treeBuilderState) {
|
|
158
|
-
return treeBuilderState && !is(treeBuilderState.lastSave, treeBuilderState.tree);
|
|
158
|
+
return treeBuilderState && (!is(treeBuilderState.lastSave, treeBuilderState.tree) || !is(treeBuilderState.lastWebApi, treeBuilderState.webApi));
|
|
159
159
|
};
|
|
160
160
|
|
|
161
161
|
_this.state = {
|
|
@@ -202,7 +202,7 @@ export var TreeBuilderComponent = /*#__PURE__*/function (_Component) {
|
|
|
202
202
|
// placeholder then we will call configureTreeBuilder with the component's
|
|
203
203
|
// props at that time
|
|
204
204
|
if (this.props.treeBuilderState === null) {
|
|
205
|
-
configureTreeBuilder(pick(this.props, ['treeKey', 'sourceName', 'sourceGroup', 'name']));
|
|
205
|
+
configureTreeBuilder(pick(this.props, ['treeKey', 'sourceName', 'sourceGroup', 'name', 'platformSourceName']));
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
}, {
|
|
@@ -218,8 +218,8 @@ export var TreeBuilderComponent = /*#__PURE__*/function (_Component) {
|
|
|
218
218
|
} // otherwise check for changes to the highlight prop and focus if it changes
|
|
219
219
|
// and its a truthy value
|
|
220
220
|
else if (this.props.highlight && !this.props.highlight.equals(prevProps.highlight)) {
|
|
221
|
-
|
|
222
|
-
|
|
221
|
+
this.panTo(this.props.highlight);
|
|
222
|
+
}
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
}, {
|
|
@@ -239,11 +239,14 @@ export var TreeBuilderComponent = /*#__PURE__*/function (_Component) {
|
|
|
239
239
|
highlightId = _ref4[1];
|
|
240
240
|
|
|
241
241
|
if (treeBuilderState) {
|
|
242
|
-
var
|
|
242
|
+
var lastSave = treeBuilderState.lastSave,
|
|
243
|
+
lastWebApi = treeBuilderState.lastWebApi,
|
|
244
|
+
redoStack = treeBuilderState.redoStack,
|
|
243
245
|
saving = treeBuilderState.saving,
|
|
244
246
|
tasks = treeBuilderState.tasks,
|
|
245
247
|
tree = treeBuilderState.tree,
|
|
246
|
-
undoStack = treeBuilderState.undoStack
|
|
248
|
+
undoStack = treeBuilderState.undoStack,
|
|
249
|
+
webApi = treeBuilderState.webApi;
|
|
247
250
|
return this.props.children({
|
|
248
251
|
actions: {
|
|
249
252
|
deleteConnector: function deleteConnector(id) {
|
|
@@ -270,6 +273,18 @@ export var TreeBuilderComponent = /*#__PURE__*/function (_Component) {
|
|
|
270
273
|
dependencies: dependencies
|
|
271
274
|
}));
|
|
272
275
|
},
|
|
276
|
+
updateSettings: function updateSettings(values) {
|
|
277
|
+
return dispatch('TREE_UPDATE_SETTINGS', {
|
|
278
|
+
treeKey: treeKey,
|
|
279
|
+
values: values
|
|
280
|
+
});
|
|
281
|
+
},
|
|
282
|
+
updateWebApi: function updateWebApi(values) {
|
|
283
|
+
return dispatch('TREE_UPDATE_WEB_API', {
|
|
284
|
+
treeKey: treeKey,
|
|
285
|
+
values: values
|
|
286
|
+
});
|
|
287
|
+
},
|
|
273
288
|
save: function save(_ref5) {
|
|
274
289
|
var _ref5$overwrite = _ref5.overwrite,
|
|
275
290
|
overwrite = _ref5$overwrite === void 0 ? false : _ref5$overwrite,
|
|
@@ -305,12 +320,14 @@ export var TreeBuilderComponent = /*#__PURE__*/function (_Component) {
|
|
|
305
320
|
}
|
|
306
321
|
},
|
|
307
322
|
dirty: this.isDirty(treeBuilderState),
|
|
308
|
-
|
|
323
|
+
lastTree: lastSave,
|
|
324
|
+
lastWebApi: lastWebApi,
|
|
325
|
+
name: tree ? tree.name : null,
|
|
309
326
|
saving: saving,
|
|
310
327
|
sidebarRef: this.sidebarRef,
|
|
311
328
|
tasks: tasks,
|
|
312
329
|
tree: tree,
|
|
313
|
-
treeBuilder: /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SvgCanvas, {
|
|
330
|
+
treeBuilder: tree && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SvgCanvas, {
|
|
314
331
|
ref: this.canvasRef
|
|
315
332
|
}, tree.connectors.map(function (connector) {
|
|
316
333
|
return /*#__PURE__*/React.createElement(Connector, {
|
|
@@ -350,7 +367,8 @@ export var TreeBuilderComponent = /*#__PURE__*/function (_Component) {
|
|
|
350
367
|
tasks: tasks,
|
|
351
368
|
tree: tree
|
|
352
369
|
});
|
|
353
|
-
}).toList()))
|
|
370
|
+
}).toList())),
|
|
371
|
+
webApi: webApi
|
|
354
372
|
});
|
|
355
373
|
}
|
|
356
374
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
-
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
4
4
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
5
5
|
import { all, call, put, select, takeEvery } from 'redux-saga/effects';
|
|
6
6
|
import { List, OrderedMap } from 'immutable';
|
|
7
7
|
import { isFunction } from 'lodash-es';
|
|
8
8
|
import { action, dispatch, regHandlers, regSaga } from '../../../store';
|
|
9
|
-
import { deserializeTree, serializeTree, Connector, TreeBuilderState } from './models';
|
|
10
|
-
import { cloneTree, fetchTaskCategories, fetchTree, updateTree } from '../../../apis
|
|
9
|
+
import { deserializeTree, serializeTree, Connector, TreeBuilderState, deserializeWebApi } from './models';
|
|
10
|
+
import { cloneTree, fetchTaskCategories, fetchTree, fetchWebApi, updateTree, updateWebApi } from '../../../apis';
|
|
11
11
|
import { renameDependencies, treeReturnTask } from './helpers';
|
|
12
12
|
export var mountTreeBuilder = function mountTreeBuilder(treeKey) {
|
|
13
13
|
return dispatch('TREE_MOUNT', {
|
|
@@ -26,12 +26,15 @@ export var configureTreeBuilder = function configureTreeBuilder(props) {
|
|
|
26
26
|
|
|
27
27
|
var remember = function remember(state, treeKey) {
|
|
28
28
|
return state.updateIn(['trees', treeKey, 'undoStack'], function (stack) {
|
|
29
|
-
return stack.push(
|
|
29
|
+
return stack.push({
|
|
30
|
+
tree: state.getIn(['trees', treeKey, 'tree']),
|
|
31
|
+
webApi: state.getIn(['trees', treeKey, 'webApi'])
|
|
32
|
+
});
|
|
30
33
|
}).deleteIn(['trees', treeKey, 'redoStack']);
|
|
31
34
|
};
|
|
32
35
|
|
|
33
36
|
regSaga(takeEvery('TREE_CONFIGURE', /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
34
|
-
var payload, name, sourceGroup, sourceName, treeKey, _yield$all, _yield$all2, tree, categories;
|
|
37
|
+
var payload, name, sourceGroup, sourceName, treeKey, webApiProps, _yield$all, _yield$all2, tree, categories, webApi;
|
|
35
38
|
|
|
36
39
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
37
40
|
while (1) {
|
|
@@ -40,46 +43,52 @@ regSaga(takeEvery('TREE_CONFIGURE', /*#__PURE__*/_regeneratorRuntime.mark(functi
|
|
|
40
43
|
payload = _ref.payload;
|
|
41
44
|
_context.prev = 1;
|
|
42
45
|
name = payload.name, sourceGroup = payload.sourceGroup, sourceName = payload.sourceName, treeKey = payload.treeKey;
|
|
43
|
-
|
|
46
|
+
webApiProps = getWebApiProps(payload);
|
|
47
|
+
_context.next = 6;
|
|
44
48
|
return all([call(fetchTree, {
|
|
45
49
|
name: name,
|
|
46
50
|
sourceGroup: sourceGroup,
|
|
47
51
|
sourceName: sourceName,
|
|
48
|
-
include: 'bindings,details,treeJson'
|
|
52
|
+
include: 'bindings,categories,details,treeJson,inputs,outputs'
|
|
49
53
|
}), call(fetchTaskCategories, {
|
|
50
54
|
include: 'handlers.results,handlers.parameters,trees.parameters,trees.inputs,trees.outputs'
|
|
51
|
-
})
|
|
55
|
+
}), webApiProps ? call(fetchWebApi, _objectSpread(_objectSpread({}, webApiProps), {}, {
|
|
56
|
+
include: 'details,securityPolicies'
|
|
57
|
+
})) : {}]);
|
|
52
58
|
|
|
53
|
-
case
|
|
59
|
+
case 6:
|
|
54
60
|
_yield$all = _context.sent;
|
|
55
|
-
_yield$all2 = _slicedToArray(_yield$all,
|
|
61
|
+
_yield$all2 = _slicedToArray(_yield$all, 3);
|
|
56
62
|
tree = _yield$all2[0].tree;
|
|
57
63
|
categories = _yield$all2[1].categories;
|
|
58
|
-
|
|
64
|
+
webApi = _yield$all2[2].webApi;
|
|
65
|
+
_context.next = 13;
|
|
59
66
|
return put(action('TREE_LOADED', {
|
|
60
67
|
categories: categories,
|
|
68
|
+
kappSlug: webApiProps && webApiProps.kappSlug,
|
|
61
69
|
treeKey: treeKey,
|
|
62
|
-
tree: deserializeTree(tree)
|
|
70
|
+
tree: deserializeTree(tree),
|
|
71
|
+
webApi: webApiProps && deserializeWebApi(webApi, webApiProps.kappSlug)
|
|
63
72
|
}));
|
|
64
73
|
|
|
65
|
-
case
|
|
66
|
-
_context.next =
|
|
74
|
+
case 13:
|
|
75
|
+
_context.next = 18;
|
|
67
76
|
break;
|
|
68
77
|
|
|
69
|
-
case
|
|
70
|
-
_context.prev =
|
|
78
|
+
case 15:
|
|
79
|
+
_context.prev = 15;
|
|
71
80
|
_context.t0 = _context["catch"](1);
|
|
72
81
|
console.error('Caught error loading tree', _context.t0);
|
|
73
82
|
|
|
74
|
-
case
|
|
83
|
+
case 18:
|
|
75
84
|
case "end":
|
|
76
85
|
return _context.stop();
|
|
77
86
|
}
|
|
78
87
|
}
|
|
79
|
-
}, _callee, null, [[1,
|
|
88
|
+
}, _callee, null, [[1, 15]]);
|
|
80
89
|
})));
|
|
81
90
|
regSaga(takeEvery('TREE_SAVE', /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref2) {
|
|
82
|
-
var payload, newName, onError, onSave, overwrite, treeKey, _yield$select, tree, name, sourceGroup, sourceName, _yield,
|
|
91
|
+
var payload, newName, onError, onSave, overwrite, treeKey, _yield$select, kappSlug, lastSave, lastWebApi, tree, webApi, name, sourceGroup, sourceName, _yield, error1, newTree, _yield2, error2, error;
|
|
83
92
|
|
|
84
93
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
85
94
|
while (1) {
|
|
@@ -97,11 +106,15 @@ regSaga(takeEvery('TREE_SAVE', /*#__PURE__*/_regeneratorRuntime.mark(function _c
|
|
|
97
106
|
|
|
98
107
|
case 5:
|
|
99
108
|
_yield$select = _context2.sent;
|
|
109
|
+
kappSlug = _yield$select.kappSlug;
|
|
110
|
+
lastSave = _yield$select.lastSave;
|
|
111
|
+
lastWebApi = _yield$select.lastWebApi;
|
|
100
112
|
tree = _yield$select.tree;
|
|
101
|
-
|
|
113
|
+
webApi = _yield$select.webApi;
|
|
114
|
+
name = lastSave.name, sourceGroup = lastSave.sourceGroup, sourceName = lastSave.sourceName; // if a newName was passed we will be creating a new tree with the builder
|
|
102
115
|
// contents, otherwise just an update
|
|
103
116
|
|
|
104
|
-
_context2.next =
|
|
117
|
+
_context2.next = 14;
|
|
105
118
|
return newName ? call(cloneTree, {
|
|
106
119
|
name: name,
|
|
107
120
|
sourceGroup: sourceGroup,
|
|
@@ -116,36 +129,50 @@ regSaga(takeEvery('TREE_SAVE', /*#__PURE__*/_regeneratorRuntime.mark(function _c
|
|
|
116
129
|
tree: serializeTree(tree, overwrite)
|
|
117
130
|
});
|
|
118
131
|
|
|
119
|
-
case
|
|
132
|
+
case 14:
|
|
120
133
|
_yield = _context2.sent;
|
|
121
|
-
|
|
134
|
+
error1 = _yield.error;
|
|
122
135
|
newTree = _yield.tree;
|
|
123
|
-
_context2.next =
|
|
136
|
+
_context2.next = 19;
|
|
137
|
+
return webApi && !error1 ? call(updateWebApi, {
|
|
138
|
+
slug: lastWebApi.get('slug'),
|
|
139
|
+
kappSlug: kappSlug,
|
|
140
|
+
webApi: webApi
|
|
141
|
+
}) : {};
|
|
142
|
+
|
|
143
|
+
case 19:
|
|
144
|
+
_yield2 = _context2.sent;
|
|
145
|
+
error2 = _yield2.error;
|
|
146
|
+
error = error1 || error2; // dispatch the appropriate action based on the result of the call above
|
|
147
|
+
|
|
148
|
+
_context2.next = 24;
|
|
124
149
|
return put(error ? action('TREE_SAVE_ERROR', {
|
|
125
150
|
treeKey: treeKey,
|
|
126
151
|
error: error.message || error,
|
|
127
152
|
onError: onError
|
|
128
153
|
}) : action('TREE_SAVE_SUCCESS', {
|
|
154
|
+
previousTree: lastSave,
|
|
129
155
|
treeKey: treeKey,
|
|
130
156
|
tree: newTree,
|
|
157
|
+
webApi: webApi,
|
|
131
158
|
onSave: onSave
|
|
132
159
|
}));
|
|
133
160
|
|
|
134
|
-
case
|
|
135
|
-
_context2.next =
|
|
161
|
+
case 24:
|
|
162
|
+
_context2.next = 29;
|
|
136
163
|
break;
|
|
137
164
|
|
|
138
|
-
case
|
|
139
|
-
_context2.prev =
|
|
165
|
+
case 26:
|
|
166
|
+
_context2.prev = 26;
|
|
140
167
|
_context2.t0 = _context2["catch"](1);
|
|
141
168
|
console.error(_context2.t0);
|
|
142
169
|
|
|
143
|
-
case
|
|
170
|
+
case 29:
|
|
144
171
|
case "end":
|
|
145
172
|
return _context2.stop();
|
|
146
173
|
}
|
|
147
174
|
}
|
|
148
|
-
}, _callee2, null, [[1,
|
|
175
|
+
}, _callee2, null, [[1, 26]]);
|
|
149
176
|
})));
|
|
150
177
|
regSaga(takeEvery('TREE_SAVE_ERROR', /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_ref3) {
|
|
151
178
|
var _ref3$payload, error, onError;
|
|
@@ -182,38 +209,45 @@ regSaga(takeEvery('TREE_SAVE_ERROR', /*#__PURE__*/_regeneratorRuntime.mark(funct
|
|
|
182
209
|
}, _callee3, null, [[1, 7]]);
|
|
183
210
|
})));
|
|
184
211
|
regSaga(takeEvery('TREE_SAVE_SUCCESS', /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref4) {
|
|
185
|
-
var _ref4$payload, onSave, tree;
|
|
212
|
+
var _ref4$payload, onSave, previousTree, treeKey, tree;
|
|
186
213
|
|
|
187
214
|
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
188
215
|
while (1) {
|
|
189
216
|
switch (_context4.prev = _context4.next) {
|
|
190
217
|
case 0:
|
|
191
|
-
_ref4$payload = _ref4.payload, onSave = _ref4$payload.onSave,
|
|
218
|
+
_ref4$payload = _ref4.payload, onSave = _ref4$payload.onSave, previousTree = _ref4$payload.previousTree, treeKey = _ref4$payload.treeKey;
|
|
192
219
|
_context4.prev = 1;
|
|
193
220
|
|
|
194
221
|
if (!isFunction(onSave)) {
|
|
195
|
-
_context4.next =
|
|
222
|
+
_context4.next = 8;
|
|
196
223
|
break;
|
|
197
224
|
}
|
|
198
225
|
|
|
199
226
|
_context4.next = 5;
|
|
200
|
-
return
|
|
227
|
+
return select(function (state) {
|
|
228
|
+
return state.getIn(['trees', treeKey, 'tree']);
|
|
229
|
+
});
|
|
201
230
|
|
|
202
231
|
case 5:
|
|
203
|
-
|
|
232
|
+
tree = _context4.sent;
|
|
233
|
+
_context4.next = 8;
|
|
234
|
+
return call(onSave, tree, previousTree);
|
|
235
|
+
|
|
236
|
+
case 8:
|
|
237
|
+
_context4.next = 13;
|
|
204
238
|
break;
|
|
205
239
|
|
|
206
|
-
case
|
|
207
|
-
_context4.prev =
|
|
240
|
+
case 10:
|
|
241
|
+
_context4.prev = 10;
|
|
208
242
|
_context4.t0 = _context4["catch"](1);
|
|
209
243
|
console.error(_context4.t0);
|
|
210
244
|
|
|
211
|
-
case
|
|
245
|
+
case 13:
|
|
212
246
|
case "end":
|
|
213
247
|
return _context4.stop();
|
|
214
248
|
}
|
|
215
249
|
}
|
|
216
|
-
}, _callee4, null, [[1,
|
|
250
|
+
}, _callee4, null, [[1, 10]]);
|
|
217
251
|
})));
|
|
218
252
|
regHandlers({
|
|
219
253
|
// the TreeBuilder component does nothing while the tree state is undefined,
|
|
@@ -234,11 +268,14 @@ regHandlers({
|
|
|
234
268
|
TREE_LOADED: function TREE_LOADED(state, _ref8) {
|
|
235
269
|
var _ref8$payload = _ref8.payload,
|
|
236
270
|
categories = _ref8$payload.categories,
|
|
271
|
+
kappSlug = _ref8$payload.kappSlug,
|
|
237
272
|
treeKey = _ref8$payload.treeKey,
|
|
238
|
-
tree = _ref8$payload.tree
|
|
273
|
+
tree = _ref8$payload.tree,
|
|
274
|
+
webApi = _ref8$payload.webApi;
|
|
239
275
|
return state.mergeIn(['trees', treeKey], {
|
|
240
|
-
|
|
276
|
+
kappSlug: kappSlug,
|
|
241
277
|
lastSave: tree,
|
|
278
|
+
lastWebApi: webApi,
|
|
242
279
|
loading: false,
|
|
243
280
|
tasks: List(categories).map(function (category) {
|
|
244
281
|
return category.name === 'System Controls' ? _objectSpread(_objectSpread({}, category), {}, {
|
|
@@ -251,7 +288,8 @@ regHandlers({
|
|
|
251
288
|
}).reduce(function (reduction, task) {
|
|
252
289
|
return reduction.set(task.definitionId, task);
|
|
253
290
|
}, OrderedMap()),
|
|
254
|
-
tree: tree
|
|
291
|
+
tree: tree,
|
|
292
|
+
webApi: webApi
|
|
255
293
|
});
|
|
256
294
|
},
|
|
257
295
|
TREE_SAVE: function TREE_SAVE(state, _ref9) {
|
|
@@ -272,7 +310,8 @@ regHandlers({
|
|
|
272
310
|
TREE_SAVE_SUCCESS: function TREE_SAVE_SUCCESS(state, _ref11) {
|
|
273
311
|
var _ref11$payload = _ref11.payload,
|
|
274
312
|
tree = _ref11$payload.tree,
|
|
275
|
-
treeKey = _ref11$payload.treeKey
|
|
313
|
+
treeKey = _ref11$payload.treeKey,
|
|
314
|
+
webApi = _ref11$payload.webApi;
|
|
276
315
|
var newTree = state.getIn(['trees', treeKey, 'tree']).merge({
|
|
277
316
|
name: tree.name,
|
|
278
317
|
versionId: tree.versionId
|
|
@@ -281,29 +320,39 @@ regHandlers({
|
|
|
281
320
|
dirty: false,
|
|
282
321
|
error: null,
|
|
283
322
|
lastSave: newTree,
|
|
323
|
+
lastWebApi: webApi,
|
|
284
324
|
saving: false,
|
|
285
|
-
tree: newTree
|
|
325
|
+
tree: newTree,
|
|
326
|
+
webApi: webApi
|
|
286
327
|
});
|
|
287
328
|
},
|
|
288
329
|
TREE_UNDO: function TREE_UNDO(state, _ref12) {
|
|
289
330
|
var treeKey = _ref12.payload.treeKey;
|
|
290
331
|
return state.getIn(['trees', treeKey, 'undoStack']).isEmpty() ? state : state.updateIn(['trees', treeKey], function (builderState) {
|
|
291
332
|
return builderState.merge({
|
|
292
|
-
tree: builderState.undoStack.last(),
|
|
293
|
-
redoStack: builderState.redoStack.push(
|
|
294
|
-
|
|
333
|
+
tree: builderState.undoStack.last().tree,
|
|
334
|
+
redoStack: builderState.redoStack.push({
|
|
335
|
+
tree: builderState.tree,
|
|
336
|
+
webApi: builderState.webApi
|
|
337
|
+
}),
|
|
338
|
+
undoStack: builderState.undoStack.butLast(),
|
|
339
|
+
webApi: builderState.undoStack.last().webApi
|
|
295
340
|
});
|
|
296
|
-
});
|
|
341
|
+
}).updateIn(['trees', treeKey], synchronizeRoutineDefinition);
|
|
297
342
|
},
|
|
298
343
|
TREE_REDO: function TREE_REDO(state, _ref13) {
|
|
299
344
|
var treeKey = _ref13.payload.treeKey;
|
|
300
345
|
return state.getIn(['trees', treeKey, 'redoStack']).isEmpty() ? state : state.updateIn(['trees', treeKey], function (builderState) {
|
|
301
346
|
return builderState.merge({
|
|
302
|
-
tree: builderState.redoStack.last(),
|
|
347
|
+
tree: builderState.redoStack.last().tree,
|
|
303
348
|
redoStack: builderState.redoStack.butLast(),
|
|
304
|
-
undoStack: builderState.undoStack.push(
|
|
349
|
+
undoStack: builderState.undoStack.push({
|
|
350
|
+
tree: builderState.tree,
|
|
351
|
+
webApi: builderState.webApi
|
|
352
|
+
}),
|
|
353
|
+
webApi: builderState.redoStack.last().webApi
|
|
305
354
|
});
|
|
306
|
-
});
|
|
355
|
+
}).updateIn(['trees', treeKey], synchronizeRoutineDefinition);
|
|
307
356
|
},
|
|
308
357
|
TREE_UPDATE: function TREE_UPDATE(state, _ref14) {
|
|
309
358
|
var _ref14$payload = _ref14.payload,
|
|
@@ -399,5 +448,63 @@ regHandlers({
|
|
|
399
448
|
id = _ref22$payload.id,
|
|
400
449
|
nodeId = _ref22$payload.nodeId;
|
|
401
450
|
return remember(state, treeKey).setIn(['trees', treeKey, 'tree', 'connectors', id, 'tailId'], nodeId);
|
|
451
|
+
},
|
|
452
|
+
TREE_UPDATE_SETTINGS: function TREE_UPDATE_SETTINGS(state, _ref23) {
|
|
453
|
+
var _ref23$payload = _ref23.payload,
|
|
454
|
+
treeKey = _ref23$payload.treeKey,
|
|
455
|
+
values = _ref23$payload.values;
|
|
456
|
+
// If the updated settings are for a routine we rebuild the "Tree Input"
|
|
457
|
+
// bindings.
|
|
458
|
+
var bindings = values.inputs ? _objectSpread(_objectSpread({}, state.getIn(['trees', treeKey, 'tree', 'bindings'])), {}, {
|
|
459
|
+
'Tree Input': values.inputs.groupBy(function (input) {
|
|
460
|
+
return input.get('name');
|
|
461
|
+
}).map(function (list) {
|
|
462
|
+
return list.first().get('name');
|
|
463
|
+
}).map(function (name) {
|
|
464
|
+
return "<%=@inputs['".concat(name, "']%>");
|
|
465
|
+
}).toJS()
|
|
466
|
+
}) : state.getIn(['trees', treeKey, 'tree', 'bindings']);
|
|
467
|
+
return remember(state, treeKey).mergeIn(['trees', treeKey, 'tree'], _objectSpread(_objectSpread({}, values), {}, {
|
|
468
|
+
bindings: bindings
|
|
469
|
+
})).updateIn(['trees', treeKey], synchronizeRoutineDefinition);
|
|
470
|
+
},
|
|
471
|
+
TREE_UPDATE_WEB_API: function TREE_UPDATE_WEB_API(state, _ref24) {
|
|
472
|
+
var _ref24$payload = _ref24.payload,
|
|
473
|
+
treeKey = _ref24$payload.treeKey,
|
|
474
|
+
values = _ref24$payload.values;
|
|
475
|
+
return remember(state, treeKey).mergeIn(['trees', treeKey, 'webApi'], values).setIn(['trees', treeKey, 'tree', 'name'], values.slug);
|
|
402
476
|
}
|
|
403
|
-
});
|
|
477
|
+
});
|
|
478
|
+
|
|
479
|
+
var synchronizeRoutineDefinition = function synchronizeRoutineDefinition(treeBuilderState) {
|
|
480
|
+
var tree = treeBuilderState.tree;
|
|
481
|
+
var definitionId = tree.definitionId,
|
|
482
|
+
inputs = tree.inputs,
|
|
483
|
+
outputs = tree.outputs;
|
|
484
|
+
return treeBuilderState.update('tasks', function (tasks) {
|
|
485
|
+
return tasks.map(function (task, taskDefinitionId) {
|
|
486
|
+
return definitionId === taskDefinitionId ? _objectSpread(_objectSpread({}, task), {}, {
|
|
487
|
+
inputs: inputs.toJS(),
|
|
488
|
+
outputs: outputs.toJS()
|
|
489
|
+
}) : taskDefinitionId === 'system_tree_return_v1' ? treeReturnTask(tree) : task;
|
|
490
|
+
});
|
|
491
|
+
});
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
var getWebApiProps = function getWebApiProps(_ref25) {
|
|
495
|
+
var name = _ref25.name,
|
|
496
|
+
platformSourceName = _ref25.platformSourceName,
|
|
497
|
+
sourceGroup = _ref25.sourceGroup,
|
|
498
|
+
sourceName = _ref25.sourceName;
|
|
499
|
+
|
|
500
|
+
if (sourceName === platformSourceName && sourceGroup.startsWith('WebApis')) {
|
|
501
|
+
var kappSlug = sourceGroup.startsWith('WebApis > ') ? sourceGroup.replace('WebApis > ', '') : undefined;
|
|
502
|
+
var slug = name;
|
|
503
|
+
return {
|
|
504
|
+
kappSlug: kappSlug,
|
|
505
|
+
slug: slug
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
return null;
|
|
510
|
+
};
|
|
@@ -331,7 +331,7 @@ export var normalizeParameter = function normalizeParameter(_ref12) {
|
|
|
331
331
|
value: defaultValue
|
|
332
332
|
}, rest);
|
|
333
333
|
};
|
|
334
|
-
var defaultOutputs = [{
|
|
334
|
+
var defaultOutputs = List([{
|
|
335
335
|
id: 'content',
|
|
336
336
|
name: 'Content'
|
|
337
337
|
}, {
|
|
@@ -346,7 +346,7 @@ var defaultOutputs = [{
|
|
|
346
346
|
id: 'response_code',
|
|
347
347
|
name: 'Response Code',
|
|
348
348
|
defaultValue: '200'
|
|
349
|
-
}];
|
|
349
|
+
}]).map(Map);
|
|
350
350
|
export var treeReturnTask = function treeReturnTask(tree) {
|
|
351
351
|
return {
|
|
352
352
|
deferrable: false,
|
|
@@ -358,7 +358,9 @@ export var treeReturnTask = function treeReturnTask(tree) {
|
|
|
358
358
|
selectionCriterion: null,
|
|
359
359
|
status: 'Active',
|
|
360
360
|
visible: false,
|
|
361
|
-
parameters: (tree.
|
|
361
|
+
parameters: (tree.definitionId ? tree.outputs : defaultOutputs).map(function (output) {
|
|
362
|
+
return output.toObject();
|
|
363
|
+
}).map(function (output) {
|
|
362
364
|
return {
|
|
363
365
|
name: output.name,
|
|
364
366
|
defaultValue: output.defaultValue || '',
|