@wavemaker-ai/variables 1.0.0-rc.647469
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/index.d.ts +14 -0
- package/index.js +15 -0
- package/index.js.map +1 -0
- package/npm-shrinkwrap.json +1967 -0
- package/package-lock.json +1967 -0
- package/package.json +48 -0
- package/scripts/build.d.ts +1 -0
- package/scripts/build.js +183 -0
- package/scripts/build.js.map +1 -0
- package/src/advanced-options.d.ts +4 -0
- package/src/advanced-options.js +2 -0
- package/src/advanced-options.js.map +1 -0
- package/src/constants/variables.constants.d.ts +307 -0
- package/src/constants/variables.constants.js +334 -0
- package/src/constants/variables.constants.js.map +1 -0
- package/src/factory/variable-manager.factory.d.ts +3 -0
- package/src/factory/variable-manager.factory.js +26 -0
- package/src/factory/variable-manager.factory.js.map +1 -0
- package/src/manager/action/timer-action.manager.d.ts +4 -0
- package/src/manager/action/timer-action.manager.js +38 -0
- package/src/manager/action/timer-action.manager.js.map +1 -0
- package/src/manager/variable/base-variable.manager.d.ts +24 -0
- package/src/manager/variable/base-variable.manager.js +79 -0
- package/src/manager/variable/base-variable.manager.js.map +1 -0
- package/src/manager/variable/crud-variable.manager.d.ts +85 -0
- package/src/manager/variable/crud-variable.manager.js +415 -0
- package/src/manager/variable/crud-variable.manager.js.map +1 -0
- package/src/manager/variable/live-variable.manager.d.ts +154 -0
- package/src/manager/variable/live-variable.manager.js +1078 -0
- package/src/manager/variable/live-variable.manager.js.map +1 -0
- package/src/manager/variable/model-variable.manager.d.ts +4 -0
- package/src/manager/variable/model-variable.manager.js +56 -0
- package/src/manager/variable/model-variable.manager.js.map +1 -0
- package/src/manager/variable/service-variable.manager.d.ts +113 -0
- package/src/manager/variable/service-variable.manager.js +713 -0
- package/src/manager/variable/service-variable.manager.js.map +1 -0
- package/src/model/action/timer-action.d.ts +12 -0
- package/src/model/action/timer-action.js +60 -0
- package/src/model/action/timer-action.js.map +1 -0
- package/src/model/base-action.d.ts +32 -0
- package/src/model/base-action.js +89 -0
- package/src/model/base-action.js.map +1 -0
- package/src/model/base-variable.d.ts +58 -0
- package/src/model/base-variable.js +180 -0
- package/src/model/base-variable.js.map +1 -0
- package/src/model/crud-create.d.ts +8 -0
- package/src/model/crud-create.js +17 -0
- package/src/model/crud-create.js.map +1 -0
- package/src/model/crud-delete.d.ts +8 -0
- package/src/model/crud-delete.js +17 -0
- package/src/model/crud-delete.js.map +1 -0
- package/src/model/crud-list.d.ts +8 -0
- package/src/model/crud-list.js +17 -0
- package/src/model/crud-list.js.map +1 -0
- package/src/model/crud-update.d.ts +8 -0
- package/src/model/crud-update.js +17 -0
- package/src/model/crud-update.js.map +1 -0
- package/src/model/variable/api-aware-variable.d.ts +23 -0
- package/src/model/variable/api-aware-variable.js +25 -0
- package/src/model/variable/api-aware-variable.js.map +1 -0
- package/src/model/variable/crud-variable.d.ts +30 -0
- package/src/model/variable/crud-variable.js +181 -0
- package/src/model/variable/crud-variable.js.map +1 -0
- package/src/model/variable/live-variable.d.ts +40 -0
- package/src/model/variable/live-variable.js +262 -0
- package/src/model/variable/live-variable.js.map +1 -0
- package/src/model/variable/model-variable.d.ts +11 -0
- package/src/model/variable/model-variable.js +83 -0
- package/src/model/variable/model-variable.js.map +1 -0
- package/src/model/variable/service-variable.d.ts +35 -0
- package/src/model/variable/service-variable.js +147 -0
- package/src/model/variable/service-variable.js.map +1 -0
- package/src/types/date-formatter.d.ts +3 -0
- package/src/types/date-formatter.js +2 -0
- package/src/types/date-formatter.js.map +1 -0
- package/src/types/event-notifier.d.ts +9 -0
- package/src/types/event-notifier.js +25 -0
- package/src/types/event-notifier.js.map +1 -0
- package/src/types/http-client.service.d.ts +8 -0
- package/src/types/http-client.service.js +2 -0
- package/src/types/http-client.service.js.map +1 -0
- package/src/types/types.d.ts +50 -0
- package/src/types/types.js +54 -0
- package/src/types/types.js.map +1 -0
- package/src/util/dataset-util.d.ts +27 -0
- package/src/util/dataset-util.js +147 -0
- package/src/util/dataset-util.js.map +1 -0
- package/src/util/file-upload.util.d.ts +11 -0
- package/src/util/file-upload.util.js +183 -0
- package/src/util/file-upload.util.js.map +1 -0
- package/src/util/inflight-queue.d.ts +35 -0
- package/src/util/inflight-queue.js +102 -0
- package/src/util/inflight-queue.js.map +1 -0
- package/src/util/notify-promise.d.ts +3 -0
- package/src/util/notify-promise.js +37 -0
- package/src/util/notify-promise.js.map +1 -0
- package/src/util/oAuth.utils.d.ts +3 -0
- package/src/util/oAuth.utils.js +11 -0
- package/src/util/oAuth.utils.js.map +1 -0
- package/src/util/utils.d.ts +69 -0
- package/src/util/utils.js +364 -0
- package/src/util/utils.js.map +1 -0
- package/src/util/variable/live-variable.http.utils.d.ts +21 -0
- package/src/util/variable/live-variable.http.utils.js +212 -0
- package/src/util/variable/live-variable.http.utils.js.map +1 -0
- package/src/util/variable/live-variable.utils.d.ts +72 -0
- package/src/util/variable/live-variable.utils.js +667 -0
- package/src/util/variable/live-variable.utils.js.map +1 -0
- package/src/util/variable/pagination.utils.d.ts +91 -0
- package/src/util/variable/pagination.utils.js +493 -0
- package/src/util/variable/pagination.utils.js.map +1 -0
- package/src/util/variable/service-variable.utils.d.ts +17 -0
- package/src/util/variable/service-variable.utils.js +394 -0
- package/src/util/variable/service-variable.utils.js.map +1 -0
- package/src/util/variable/variables.utils.d.ts +120 -0
- package/src/util/variable/variables.utils.js +544 -0
- package/src/util/variable/variables.utils.js.map +1 -0
- package/src/wm-namespace.d.ts +11 -0
- package/src/wm-namespace.js +13 -0
- package/src/wm-namespace.js.map +1 -0
- package/webpack.config.d.ts +21 -0
- package/webpack.config.js +28 -0
- package/webpack.config.js.map +1 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { CrudVariable } from '../../model/variable/crud-variable';
|
|
2
|
+
import { ServiceVariableManager } from './service-variable.manager';
|
|
3
|
+
export declare class CrudVariableManager extends ServiceVariableManager {
|
|
4
|
+
fileUploadResponse: any;
|
|
5
|
+
fileUploadCount: number;
|
|
6
|
+
totalFilesCount: number;
|
|
7
|
+
successFileUploadCount: number;
|
|
8
|
+
failedFileUploadCount: number;
|
|
9
|
+
private getPaginationInfo;
|
|
10
|
+
private getOperationInfo;
|
|
11
|
+
/**
|
|
12
|
+
* gets the service operation info against a service variable
|
|
13
|
+
* this is extracted from the metadataservice
|
|
14
|
+
* @param variable
|
|
15
|
+
* @param inputFields: sample values, if provided, will be set against params in the definition
|
|
16
|
+
* @param options
|
|
17
|
+
* @returns {any}
|
|
18
|
+
*/
|
|
19
|
+
private getMethodInfoForCrud;
|
|
20
|
+
/**
|
|
21
|
+
* proxy for the invoke call
|
|
22
|
+
* Request Info is constructed
|
|
23
|
+
* if error found, error is thrown
|
|
24
|
+
* else, call is made
|
|
25
|
+
* @param {CrudVariable} variable
|
|
26
|
+
* @param options
|
|
27
|
+
* @param {Function} success
|
|
28
|
+
* @param {Function} error
|
|
29
|
+
* @returns {any}
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
protected _invoke(variable: CrudVariable, options: any, success: Function, error: Function): any;
|
|
33
|
+
invoke(variable: any, options: any, success: any, error: any): Promise<unknown>;
|
|
34
|
+
getInputParms(variable: any): any;
|
|
35
|
+
setInput(variable: any, key: any, val: any, options: any, type?: any): any;
|
|
36
|
+
/**
|
|
37
|
+
* Initializes the bindings for the CRUD variable
|
|
38
|
+
* flatten the bindings (categorised by operation name) to a list of bindings
|
|
39
|
+
* each binding object's target is changed appended with the operation type
|
|
40
|
+
* E.g. Input binding will be like:
|
|
41
|
+
{
|
|
42
|
+
"list": [
|
|
43
|
+
{
|
|
44
|
+
"target": "q",
|
|
45
|
+
"type": "string",
|
|
46
|
+
"value": "X"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"update": [
|
|
50
|
+
{
|
|
51
|
+
"target": "id",
|
|
52
|
+
"value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
|
|
53
|
+
"type": "integer"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
* This function will convert it to
|
|
59
|
+
[
|
|
60
|
+
{
|
|
61
|
+
"target": "list.q",
|
|
62
|
+
"type": "string",
|
|
63
|
+
"value": "X"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"target": "update.id",
|
|
67
|
+
"value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
|
|
68
|
+
"type": "integer"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
* The bindings will be evaluated through the base-manager initBinding method and will
|
|
73
|
+
* be stored in variable.dataBinding as follows:
|
|
74
|
+
{
|
|
75
|
+
list: {
|
|
76
|
+
q: "X"
|
|
77
|
+
},
|
|
78
|
+
update: {
|
|
79
|
+
id: "evaluated value"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
* @param variable
|
|
83
|
+
*/
|
|
84
|
+
initBinding(variable: any): void;
|
|
85
|
+
}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
// import { $invokeWatchers, getClonedObject, getValidJSON, isDefined, isPageable, isValidWebURL, noop, triggerFn, xmlToJson } from '@wm/core';
|
|
17
|
+
import { getClonedObject, triggerFn } from "../../util/utils";
|
|
18
|
+
import { ServiceVariableUtils } from '../../util/variable/service-variable.utils';
|
|
19
|
+
import { $queue } from '../../util/inflight-queue';
|
|
20
|
+
import { VARIABLE_CONSTANTS, WS_CONSTANTS } from '../../constants/variables.constants';
|
|
21
|
+
import { appManager, setInput } from './../../util/variable/variables.utils';
|
|
22
|
+
import { getEvaluatedOrderBy, initiateCallback, metadataService, getErrMessage } from '../../util/variable/variables.utils';
|
|
23
|
+
import { getAccessToken } from '../../util/oAuth.utils';
|
|
24
|
+
import { ServiceVariableManager } from './service-variable.manager';
|
|
25
|
+
import { get, isObject, forEach, merge, omit, isArray, includes, extend, isEmpty } from 'lodash-es';
|
|
26
|
+
var CrudVariableManager = /** @class */ (function (_super) {
|
|
27
|
+
__extends(CrudVariableManager, _super);
|
|
28
|
+
function CrudVariableManager() {
|
|
29
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
30
|
+
_this.fileUploadResponse = [];
|
|
31
|
+
_this.fileUploadCount = 0;
|
|
32
|
+
_this.totalFilesCount = 0;
|
|
33
|
+
_this.successFileUploadCount = 0;
|
|
34
|
+
_this.failedFileUploadCount = 0;
|
|
35
|
+
return _this;
|
|
36
|
+
}
|
|
37
|
+
CrudVariableManager.prototype.getPaginationInfo = function (variable, inputFields, options) {
|
|
38
|
+
if (!options || !options.operation) {
|
|
39
|
+
options.operation = 'list';
|
|
40
|
+
}
|
|
41
|
+
var serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));
|
|
42
|
+
var methodInfo = serviceDef === null ? null : get(serviceDef, 'wmServiceOperationInfo');
|
|
43
|
+
methodInfo = serviceDef.filter(function (item) {
|
|
44
|
+
return options.operation === item.operationType;
|
|
45
|
+
})[0];
|
|
46
|
+
if (!methodInfo) {
|
|
47
|
+
return methodInfo;
|
|
48
|
+
}
|
|
49
|
+
// methodInfo.paginationInfo = {
|
|
50
|
+
// "contentMapping": "content",
|
|
51
|
+
// "ascSortExpression": "{{fieldName}} a",
|
|
52
|
+
// "descSortExpression": "{{fieldName}} d",
|
|
53
|
+
// //"defaultSortExpression": "id",
|
|
54
|
+
// "totalMapping": "totalElements",
|
|
55
|
+
// "pageMapping": {
|
|
56
|
+
// "in": "query",
|
|
57
|
+
// "name": "pageNum",
|
|
58
|
+
// "description": "the existing id",
|
|
59
|
+
// "type": "integer",
|
|
60
|
+
// "required": true
|
|
61
|
+
// },
|
|
62
|
+
// "sizeMapping": {
|
|
63
|
+
// "in": "query",
|
|
64
|
+
// "name": "limit",
|
|
65
|
+
// "description": "the existing id",
|
|
66
|
+
// "type": "integer",
|
|
67
|
+
// "required": true
|
|
68
|
+
// },
|
|
69
|
+
// "sortMapping": {
|
|
70
|
+
// "name": "sortInfo",
|
|
71
|
+
// "in": "query",
|
|
72
|
+
// "description": "the sorting criteria",
|
|
73
|
+
// "required": true,
|
|
74
|
+
// "type": "integer"
|
|
75
|
+
// }
|
|
76
|
+
// };
|
|
77
|
+
methodInfo.paginationInfo = null;
|
|
78
|
+
return methodInfo.paginationInfo;
|
|
79
|
+
};
|
|
80
|
+
CrudVariableManager.prototype.getOperationInfo = function (variable, options) {
|
|
81
|
+
var serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));
|
|
82
|
+
var methodInfo;
|
|
83
|
+
// fallback if there is no operation
|
|
84
|
+
if (options && !options.operation) {
|
|
85
|
+
options.operation = 'list';
|
|
86
|
+
}
|
|
87
|
+
if (!serviceDef.length) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
methodInfo = serviceDef.filter(function (item) {
|
|
91
|
+
return options.operation === item.operationType;
|
|
92
|
+
})[0];
|
|
93
|
+
return methodInfo ? methodInfo.wmServiceOperationInfo : { invalid: true };
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* gets the service operation info against a service variable
|
|
97
|
+
* this is extracted from the metadataservice
|
|
98
|
+
* @param variable
|
|
99
|
+
* @param inputFields: sample values, if provided, will be set against params in the definition
|
|
100
|
+
* @param options
|
|
101
|
+
* @returns {any}
|
|
102
|
+
*/
|
|
103
|
+
CrudVariableManager.prototype.getMethodInfoForCrud = function (variable, inputFields, options) {
|
|
104
|
+
var methodInfo = this.getOperationInfo(variable, options);
|
|
105
|
+
if (!methodInfo || methodInfo.invalid) {
|
|
106
|
+
return methodInfo;
|
|
107
|
+
}
|
|
108
|
+
var securityDefnObj = get(methodInfo.securityDefinitions, '0'), isOAuthTypeService = securityDefnObj && (securityDefnObj.type === VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2);
|
|
109
|
+
if (methodInfo.parameters) {
|
|
110
|
+
methodInfo.parameters.forEach(function (param) {
|
|
111
|
+
// Ignore readOnly params in case of formData file params will be duplicated
|
|
112
|
+
if (param.readOnly) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
param.sampleValue = inputFields[param.name];
|
|
116
|
+
/* supporting pagination for query service variable */
|
|
117
|
+
if (VARIABLE_CONSTANTS.PAGINATION_PARAMS.indexOf(param.name) !== -1) {
|
|
118
|
+
if (param.name === 'size') {
|
|
119
|
+
param.sampleValue = options.size || param.sampleValue || parseInt(variable.maxResults, 10);
|
|
120
|
+
}
|
|
121
|
+
else if (param.name === 'page') {
|
|
122
|
+
param.sampleValue = options.page || param.sampleValue || 1;
|
|
123
|
+
}
|
|
124
|
+
else if (param.name === 'sort') {
|
|
125
|
+
param.sampleValue = getEvaluatedOrderBy(variable.orderBy, options.orderBy) || param.sampleValue || '';
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else if (param.name === 'access_token' && isOAuthTypeService) {
|
|
129
|
+
param.sampleValue = getAccessToken(securityDefnObj[VARIABLE_CONSTANTS.REST_SERVICE.OAUTH_PROVIDER_KEY], null);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return methodInfo;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* proxy for the invoke call
|
|
137
|
+
* Request Info is constructed
|
|
138
|
+
* if error found, error is thrown
|
|
139
|
+
* else, call is made
|
|
140
|
+
* @param {CrudVariable} variable
|
|
141
|
+
* @param options
|
|
142
|
+
* @param {Function} success
|
|
143
|
+
* @param {Function} error
|
|
144
|
+
* @returns {any}
|
|
145
|
+
* @private
|
|
146
|
+
*/
|
|
147
|
+
CrudVariableManager.prototype._invoke = function (variable, options, success, error) {
|
|
148
|
+
var _this = this;
|
|
149
|
+
var inputFields = getClonedObject(options.inputFields || {});
|
|
150
|
+
if (options.operation === 'delete') {
|
|
151
|
+
inputFields = getClonedObject(options.row || inputFields.row || options.inputFields || variable.dataBinding);
|
|
152
|
+
}
|
|
153
|
+
else if (options.operation === 'create' && options.row) {
|
|
154
|
+
inputFields = getClonedObject(options.row);
|
|
155
|
+
}
|
|
156
|
+
else if (options.operation === 'update' && options.row) {
|
|
157
|
+
inputFields = getClonedObject(options.row);
|
|
158
|
+
}
|
|
159
|
+
// EVENT: ON_BEFORE_UPDATE
|
|
160
|
+
var output = initiateCallback(VARIABLE_CONSTANTS.EVENT.BEFORE_UPDATE, variable, inputFields, options);
|
|
161
|
+
var successHandler;
|
|
162
|
+
var errorHandler;
|
|
163
|
+
if (output === false) {
|
|
164
|
+
$queue.process(variable);
|
|
165
|
+
triggerFn(error);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (isObject(output)) {
|
|
169
|
+
inputFields = output;
|
|
170
|
+
}
|
|
171
|
+
var opInfo = this.getOperationInfo(variable, options);
|
|
172
|
+
var bodyParam;
|
|
173
|
+
if (opInfo && opInfo.parameters) {
|
|
174
|
+
bodyParam = opInfo.parameters.filter(function (op) {
|
|
175
|
+
return op.parameterType === 'body' || op.parameterType === 'formData';
|
|
176
|
+
})[0];
|
|
177
|
+
}
|
|
178
|
+
// merge fields with bindings
|
|
179
|
+
var bindingFields = get(variable.dataBinding, options.operation) || {};
|
|
180
|
+
// bindings from setInput can come along with the body param, so employee.age will have to be converted to age
|
|
181
|
+
if (bodyParam && bindingFields[bodyParam.name]) {
|
|
182
|
+
forEach(bindingFields, function (bindingFieldVal, bindingFieldKey) {
|
|
183
|
+
if (bindingFieldKey === bodyParam.name) {
|
|
184
|
+
merge(inputFields, bindingFieldVal);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
inputFields[bindingFieldKey] = bindingFieldVal;
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
merge(inputFields, bindingFields);
|
|
193
|
+
}
|
|
194
|
+
if ((options.operation === 'create' || options.operation === 'update') && (!bodyParam || !inputFields[bodyParam.name])) {
|
|
195
|
+
var bodyTypeKeys = [], nonBodyParam = void 0;
|
|
196
|
+
var _loop_1 = function (fieldName) {
|
|
197
|
+
nonBodyParam = opInfo.parameters.filter(function (param) {
|
|
198
|
+
return param.name === fieldName && param.parameterType !== 'body' && param.parameterType !== 'formData';
|
|
199
|
+
});
|
|
200
|
+
if (nonBodyParam.length) {
|
|
201
|
+
bodyTypeKeys.push(fieldName);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
// only merge body/formData type params to the requestBody.
|
|
205
|
+
for (var fieldName in inputFields) {
|
|
206
|
+
_loop_1(fieldName);
|
|
207
|
+
}
|
|
208
|
+
var reqBodyFields = omit(inputFields, bodyTypeKeys);
|
|
209
|
+
if (bodyParam) {
|
|
210
|
+
inputFields[bodyParam.name] = getClonedObject(reqBodyFields);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
inputFields.RequestBody = getClonedObject(reqBodyFields);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
var paginationInfo;
|
|
217
|
+
var operationInfo = this.getMethodInfoForCrud(variable, inputFields, options);
|
|
218
|
+
var pathParam, bodyTypeParam;
|
|
219
|
+
if (!variable.paginationTransformationRequired && operationInfo && !operationInfo.invalid) {
|
|
220
|
+
if (operationInfo.parameters) {
|
|
221
|
+
operationInfo.parameters.forEach(function (parameter) {
|
|
222
|
+
if (parameter.parameterType === 'path') {
|
|
223
|
+
pathParam = parameter.name;
|
|
224
|
+
}
|
|
225
|
+
else if (parameter.parameterType === 'body') {
|
|
226
|
+
bodyTypeParam = parameter.name;
|
|
227
|
+
inputFields[bodyTypeParam] = getClonedObject(inputFields);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
for (var key in inputFields) {
|
|
232
|
+
if (key !== bodyTypeParam) {
|
|
233
|
+
delete inputFields[key];
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (pathParam && inputFields[bodyTypeParam]) {
|
|
237
|
+
inputFields[pathParam] = getClonedObject(inputFields[bodyTypeParam][pathParam]);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// else {
|
|
241
|
+
// inputFields.totalMapping = paginationInfo && paginationInfo.totalMapping;
|
|
242
|
+
// }
|
|
243
|
+
var requestParams = ServiceVariableUtils.constructRequestParams(variable, operationInfo, inputFields);
|
|
244
|
+
inputFields.sortInfo = options.orderBy;
|
|
245
|
+
// check errors
|
|
246
|
+
if (requestParams.error) {
|
|
247
|
+
if (requestParams.error.type === VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.CRUD_OPERATION_MISSING) {
|
|
248
|
+
requestParams.error.message = requestParams.error.message.replace('$operation', options.operation);
|
|
249
|
+
}
|
|
250
|
+
if (options.preventMissingOpMsg) {
|
|
251
|
+
$queue.process(variable);
|
|
252
|
+
return Promise.resolve('');
|
|
253
|
+
}
|
|
254
|
+
var info = this.handleRequestMetaError(requestParams, variable, success, error, options);
|
|
255
|
+
var reason = (get(info, 'error.message') || 'An error occurred while triggering the variable');
|
|
256
|
+
triggerFn(error);
|
|
257
|
+
return Promise.reject(reason);
|
|
258
|
+
}
|
|
259
|
+
// file upload
|
|
260
|
+
if (ServiceVariableUtils.isFileUploadRequest(variable)) {
|
|
261
|
+
var uploadPromise = this.uploadFile(variable, options, success, error, inputFields, requestParams);
|
|
262
|
+
if (uploadPromise) {
|
|
263
|
+
return uploadPromise;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// file download
|
|
267
|
+
if (operationInfo && isArray(operationInfo.produces) && includes(operationInfo.produces, WS_CONSTANTS.CONTENT_TYPES.OCTET_STREAM)) {
|
|
268
|
+
// ToDo - variable seperation
|
|
269
|
+
return variable.simulateFileDownload(requestParams, variable.dataBinding.file || variable.name, variable.dataBinding.exportType, function () {
|
|
270
|
+
initiateCallback(VARIABLE_CONSTANTS.EVENT.SUCCESS, variable, null, null, null);
|
|
271
|
+
$queue.process(variable);
|
|
272
|
+
triggerFn(success);
|
|
273
|
+
}, function () {
|
|
274
|
+
initiateCallback(VARIABLE_CONSTANTS.EVENT.ERROR, variable, null, null, null);
|
|
275
|
+
$queue.process(variable);
|
|
276
|
+
triggerFn(error);
|
|
277
|
+
}, variable.dataBinding);
|
|
278
|
+
}
|
|
279
|
+
// notify variable progress
|
|
280
|
+
this.notifyInflight(variable, !options.skipToggleState);
|
|
281
|
+
successHandler = function (response, resolve, inputObj) {
|
|
282
|
+
if (response && response.type) {
|
|
283
|
+
if (variable.paginationTransformationRequired) {
|
|
284
|
+
var json = JSON.parse(response.body);
|
|
285
|
+
var pageable = {
|
|
286
|
+
'content': json[paginationInfo.contentMapping],
|
|
287
|
+
'first': inputObj[paginationInfo.pageMapping.name] === 1 ? true : false,
|
|
288
|
+
'last': inputObj[paginationInfo.pageMapping.name] === json[inputFields.totalMapping] ? true : false,
|
|
289
|
+
'number': inputObj[paginationInfo.pageMapping.name] - 1,
|
|
290
|
+
'numberOfElements': inputObj[paginationInfo.sizeMapping.name],
|
|
291
|
+
'size': inputObj[paginationInfo.sizeMapping.name],
|
|
292
|
+
'sort': null,
|
|
293
|
+
'totalElements': json[inputFields.totalMapping],
|
|
294
|
+
'totalPages': Math.ceil(json[inputFields.totalMapping] / inputObj[paginationInfo.sizeMapping.name])
|
|
295
|
+
};
|
|
296
|
+
if (inputObj.sortInfo) {
|
|
297
|
+
pageable.sort = [{ direction: inputObj.sortInfo.split(' ')[1].toUpperCase(), property: inputObj.sortInfo.split(' ')[0], ignoreCase: false, nullHandling: "NATIVE", ascending: inputObj.sortInfo.split(' ')[1] === 'asc' ? true : false }];
|
|
298
|
+
}
|
|
299
|
+
json = getClonedObject(pageable);
|
|
300
|
+
response.body = JSON.stringify(json);
|
|
301
|
+
}
|
|
302
|
+
var data = _this.processSuccessResponse(response.body, variable, extend(options, { 'xhrObj': response }), success, response.headers, operationInfo);
|
|
303
|
+
// notify variable success
|
|
304
|
+
_this.notifyInflight(variable, false, data);
|
|
305
|
+
resolve(response);
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
errorHandler = function (err, reject) {
|
|
309
|
+
var errMsg = getErrMessage(err, variable.httpService.getLocale());
|
|
310
|
+
// notify variable error
|
|
311
|
+
_this.notifyInflight(variable, false);
|
|
312
|
+
_this.processErrorResponse(variable, errMsg, error, err, options.skipNotification);
|
|
313
|
+
reject({
|
|
314
|
+
error: errMsg,
|
|
315
|
+
details: err
|
|
316
|
+
});
|
|
317
|
+
};
|
|
318
|
+
// make the call and return a promise to the user to support script calls made by users
|
|
319
|
+
return new Promise(function (resolve, reject) {
|
|
320
|
+
requestParams.responseType = 'text'; // this is to return text response. JSON & XML-to-JSON parsing is handled in success handler.
|
|
321
|
+
_this.httpCall(requestParams, variable).then(function (response) {
|
|
322
|
+
successHandler(response, resolve, inputFields);
|
|
323
|
+
}, function (err) {
|
|
324
|
+
errorHandler(err, reject);
|
|
325
|
+
});
|
|
326
|
+
// the _observable property on variable is used store the observable using which the network call is made
|
|
327
|
+
// this can be used to cancel the variable calls.
|
|
328
|
+
});
|
|
329
|
+
};
|
|
330
|
+
// *********************************************************** PUBLIC ***********************************************************//
|
|
331
|
+
CrudVariableManager.prototype.invoke = function (variable, options, success, error) {
|
|
332
|
+
options = options || {};
|
|
333
|
+
appManager.notify('check-state-persistence-options', {
|
|
334
|
+
options: options,
|
|
335
|
+
variable: variable
|
|
336
|
+
});
|
|
337
|
+
options.operation = options.operation || 'list';
|
|
338
|
+
options.inputFields = options.inputFields || getClonedObject(variable.dataBinding[options.operation]);
|
|
339
|
+
return $queue.submit(variable).then(this._invoke.bind(this, variable, options, success, error), error);
|
|
340
|
+
};
|
|
341
|
+
CrudVariableManager.prototype.getInputParms = function (variable) {
|
|
342
|
+
var wmServiceOperationInfo = get(metadataService.getByOperationId(variable.operationId, variable.getPrefabName()), 'wmServiceOperationInfo');
|
|
343
|
+
return get(wmServiceOperationInfo, 'parameters');
|
|
344
|
+
};
|
|
345
|
+
CrudVariableManager.prototype.setInput = function (variable, key, val, options, type) {
|
|
346
|
+
type = type || 'list';
|
|
347
|
+
if (isEmpty(variable.dataBinding[type])) {
|
|
348
|
+
variable.dataBinding[type] = {};
|
|
349
|
+
}
|
|
350
|
+
return setInput(variable.dataBinding[type], key, val, options);
|
|
351
|
+
};
|
|
352
|
+
/**
|
|
353
|
+
* Initializes the bindings for the CRUD variable
|
|
354
|
+
* flatten the bindings (categorised by operation name) to a list of bindings
|
|
355
|
+
* each binding object's target is changed appended with the operation type
|
|
356
|
+
* E.g. Input binding will be like:
|
|
357
|
+
{
|
|
358
|
+
"list": [
|
|
359
|
+
{
|
|
360
|
+
"target": "q",
|
|
361
|
+
"type": "string",
|
|
362
|
+
"value": "X"
|
|
363
|
+
}
|
|
364
|
+
],
|
|
365
|
+
"update": [
|
|
366
|
+
{
|
|
367
|
+
"target": "id",
|
|
368
|
+
"value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
|
|
369
|
+
"type": "integer"
|
|
370
|
+
}
|
|
371
|
+
]
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
* This function will convert it to
|
|
375
|
+
[
|
|
376
|
+
{
|
|
377
|
+
"target": "list.q",
|
|
378
|
+
"type": "string",
|
|
379
|
+
"value": "X"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"target": "update.id",
|
|
383
|
+
"value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
|
|
384
|
+
"type": "integer"
|
|
385
|
+
}
|
|
386
|
+
]
|
|
387
|
+
|
|
388
|
+
* The bindings will be evaluated through the base-manager initBinding method and will
|
|
389
|
+
* be stored in variable.dataBinding as follows:
|
|
390
|
+
{
|
|
391
|
+
list: {
|
|
392
|
+
q: "X"
|
|
393
|
+
},
|
|
394
|
+
update: {
|
|
395
|
+
id: "evaluated value"
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
* @param variable
|
|
399
|
+
*/
|
|
400
|
+
CrudVariableManager.prototype.initBinding = function (variable) {
|
|
401
|
+
var crudBindInfo = variable.dataBinding || {}, flattenedBindInfo = [];
|
|
402
|
+
forEach(crudBindInfo, function (bindNodes, operationType) {
|
|
403
|
+
bindNodes = bindNodes || [];
|
|
404
|
+
bindNodes.forEach(function (bindNode) {
|
|
405
|
+
bindNode.target = operationType + '.' + bindNode.target;
|
|
406
|
+
flattenedBindInfo.push(bindNode);
|
|
407
|
+
});
|
|
408
|
+
});
|
|
409
|
+
variable.dataBinding = flattenedBindInfo;
|
|
410
|
+
_super.prototype.initBinding.call(this, variable);
|
|
411
|
+
};
|
|
412
|
+
return CrudVariableManager;
|
|
413
|
+
}(ServiceVariableManager));
|
|
414
|
+
export { CrudVariableManager };
|
|
415
|
+
//# sourceMappingURL=crud-variable.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud-variable.manager.js","sourceRoot":"./","sources":["src/manager/variable/crud-variable.manager.ts"],"names":[],"mappings":"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","sourcesContent":["// import { $invokeWatchers, getClonedObject, getValidJSON, isDefined, isPageable, isValidWebURL, noop, triggerFn, xmlToJson } from '@wm/core';\nimport { getClonedObject, triggerFn } from \"../../util/utils\";\nimport { CrudVariable } from '../../model/variable/crud-variable';\nimport { ServiceVariableUtils } from '../../util/variable/service-variable.utils';\nimport { $queue } from '../../util/inflight-queue';\nimport { VARIABLE_CONSTANTS, WS_CONSTANTS } from '../../constants/variables.constants';\nimport {appManager, setInput} from './../../util/variable/variables.utils';\nimport { getEvaluatedOrderBy, httpService, initiateCallback, metadataService, getErrMessage } from '../../util/variable/variables.utils';\nimport { getAccessToken } from '../../util/oAuth.utils';\nimport {ServiceVariableManager} from './service-variable.manager';\n\nimport {get, isObject, forEach, merge, omit, isArray, includes, extend, isEmpty} from 'lodash-es';\n\nexport class CrudVariableManager extends ServiceVariableManager {\n\n fileUploadResponse: any = [];\n fileUploadCount = 0;\n totalFilesCount = 0;\n successFileUploadCount = 0;\n failedFileUploadCount = 0;\n\n private getPaginationInfo(variable, inputFields, options?) {\n if (!options || !options.operation) {\n options.operation = 'list';\n }\n const serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));\n let methodInfo = serviceDef === null ? null : get(serviceDef, 'wmServiceOperationInfo');\n methodInfo = serviceDef.filter(function(item) {\n return options.operation === item.operationType;\n })[0];\n if (!methodInfo) {\n return methodInfo;\n }\n // methodInfo.paginationInfo = {\n // \"contentMapping\": \"content\",\n // \"ascSortExpression\": \"{{fieldName}} a\",\n // \"descSortExpression\": \"{{fieldName}} d\",\n // //\"defaultSortExpression\": \"id\",\n // \"totalMapping\": \"totalElements\",\n // \"pageMapping\": {\n // \"in\": \"query\",\n // \"name\": \"pageNum\",\n // \"description\": \"the existing id\",\n // \"type\": \"integer\",\n // \"required\": true\n // },\n // \"sizeMapping\": {\n // \"in\": \"query\",\n // \"name\": \"limit\",\n // \"description\": \"the existing id\",\n // \"type\": \"integer\",\n // \"required\": true\n // },\n // \"sortMapping\": {\n // \"name\": \"sortInfo\",\n // \"in\": \"query\",\n // \"description\": \"the sorting criteria\",\n // \"required\": true,\n // \"type\": \"integer\"\n // }\n // };\n methodInfo.paginationInfo = null;\n return methodInfo.paginationInfo;\n }\n\n private getOperationInfo(variable, options) {\n let serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));\n let methodInfo;\n // fallback if there is no operation\n if (options && !options.operation) {\n options.operation = 'list';\n }\n if (!serviceDef.length) {\n return;\n }\n methodInfo = serviceDef.filter(function(item) {\n return options.operation === item.operationType;\n })[0];\n return methodInfo ? methodInfo.wmServiceOperationInfo : {invalid: true};\n }\n /**\n * gets the service operation info against a service variable\n * this is extracted from the metadataservice\n * @param variable\n * @param inputFields: sample values, if provided, will be set against params in the definition\n * @param options\n * @returns {any}\n */\n private getMethodInfoForCrud(variable, inputFields, options?) {\n const methodInfo = this.getOperationInfo(variable, options);\n if (!methodInfo || methodInfo.invalid) {\n return methodInfo;\n }\n const securityDefnObj = get(methodInfo.securityDefinitions, '0'),\n isOAuthTypeService = securityDefnObj && (securityDefnObj.type === VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2);\n if (methodInfo.parameters) {\n methodInfo.parameters.forEach(function (param) {\n // Ignore readOnly params in case of formData file params will be duplicated\n if (param.readOnly) {\n return;\n }\n param.sampleValue = inputFields[param.name];\n /* supporting pagination for query service variable */\n if (VARIABLE_CONSTANTS.PAGINATION_PARAMS.indexOf(param.name) !== -1) {\n if (param.name === 'size') {\n param.sampleValue = options.size || param.sampleValue || parseInt(variable.maxResults, 10);\n } else if (param.name === 'page') {\n param.sampleValue = options.page || param.sampleValue || 1;\n } else if (param.name === 'sort') {\n param.sampleValue = getEvaluatedOrderBy(variable.orderBy, options.orderBy) || param.sampleValue || '';\n }\n } else if (param.name === 'access_token' && isOAuthTypeService) {\n param.sampleValue = getAccessToken(securityDefnObj[VARIABLE_CONSTANTS.REST_SERVICE.OAUTH_PROVIDER_KEY], null);\n }\n });\n }\n return methodInfo;\n }\n\n /**\n * proxy for the invoke call\n * Request Info is constructed\n * if error found, error is thrown\n * else, call is made\n * @param {CrudVariable} variable\n * @param options\n * @param {Function} success\n * @param {Function} error\n * @returns {any}\n * @private\n */\n protected _invoke (variable: CrudVariable, options: any, success: Function, error: Function) {\n let inputFields = getClonedObject(options.inputFields || {});\n if (options.operation === 'delete') {\n inputFields = getClonedObject(options.row || inputFields.row || options.inputFields || variable.dataBinding);\n } else if (options.operation === 'create' && options.row) {\n inputFields = getClonedObject(options.row);\n } else if (options.operation === 'update' && options.row) {\n inputFields = getClonedObject(options.row);\n }\n // EVENT: ON_BEFORE_UPDATE\n const output: any = initiateCallback(VARIABLE_CONSTANTS.EVENT.BEFORE_UPDATE, variable, inputFields, options);\n let successHandler;\n let errorHandler;\n\n if (output === false) {\n $queue.process(variable);\n triggerFn(error);\n return;\n }\n if (isObject(output)) {\n inputFields = output;\n }\n const opInfo = this.getOperationInfo(variable, options);\n let bodyParam;\n if (opInfo && opInfo.parameters) {\n bodyParam = opInfo.parameters.filter(function(op) {\n return op.parameterType === 'body' || op.parameterType === 'formData';\n })[0];\n }\n // merge fields with bindings\n const bindingFields = get(variable.dataBinding, options.operation) || {};\n // bindings from setInput can come along with the body param, so employee.age will have to be converted to age\n if (bodyParam && bindingFields[bodyParam.name]) {\n forEach(bindingFields, function(bindingFieldVal, bindingFieldKey) {\n if (bindingFieldKey === bodyParam.name) {\n merge(inputFields, bindingFieldVal);\n } else {\n inputFields[bindingFieldKey] = bindingFieldVal;\n }\n });\n } else {\n merge(inputFields, bindingFields);\n }\n if ((options.operation === 'create' || options.operation === 'update') && (!bodyParam || !inputFields[bodyParam.name])) {\n let bodyTypeKeys = [], nonBodyParam;\n // only merge body/formData type params to the requestBody.\n for (const fieldName in inputFields) {\n nonBodyParam = opInfo.parameters.filter(function(param) {\n return param.name === fieldName && param.parameterType !== 'body' && param.parameterType !== 'formData';\n });\n if (nonBodyParam.length) {\n bodyTypeKeys.push(fieldName);\n }\n }\n const reqBodyFields = omit(inputFields, bodyTypeKeys);\n if (bodyParam) {\n inputFields[bodyParam.name] = getClonedObject(reqBodyFields);\n } else {\n inputFields.RequestBody = getClonedObject(reqBodyFields);\n }\n }\n let paginationInfo;\n const operationInfo = this.getMethodInfoForCrud(variable, inputFields, options);\n let pathParam, bodyTypeParam;\n if (!variable.paginationTransformationRequired && operationInfo && !operationInfo.invalid) {\n if (operationInfo.parameters) {\n operationInfo.parameters.forEach(function (parameter) {\n if (parameter.parameterType === 'path') {\n pathParam = parameter.name;\n } else if (parameter.parameterType === 'body') {\n bodyTypeParam = parameter.name;\n inputFields[bodyTypeParam] = getClonedObject(inputFields);\n }\n });\n }\n for (const key in inputFields) {\n if (key !== bodyTypeParam) {\n delete inputFields[key];\n }\n }\n if (pathParam && inputFields[bodyTypeParam]) {\n inputFields[pathParam] = getClonedObject(inputFields[bodyTypeParam][pathParam]);\n }\n }\n // else {\n // inputFields.totalMapping = paginationInfo && paginationInfo.totalMapping;\n // }\n const requestParams = ServiceVariableUtils.constructRequestParams(variable, operationInfo, inputFields);\n inputFields.sortInfo = options.orderBy;\n // check errors\n if (requestParams.error) {\n if (requestParams.error.type === VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.CRUD_OPERATION_MISSING) {\n requestParams.error.message = requestParams.error.message.replace('$operation', options.operation);\n }\n if (options.preventMissingOpMsg) {\n $queue.process(variable);\n return Promise.resolve('');\n }\n const info = this.handleRequestMetaError(requestParams, variable, success, error, options);\n const reason = (get(info, 'error.message') || 'An error occurred while triggering the variable');\n triggerFn(error);\n return Promise.reject(reason);\n }\n\n // file upload\n if (ServiceVariableUtils.isFileUploadRequest(variable)) {\n const uploadPromise = this.uploadFile(variable, options, success, error, inputFields, requestParams);\n if (uploadPromise) {\n return uploadPromise;\n }\n }\n\n // file download\n if (operationInfo && isArray(operationInfo.produces) && includes(operationInfo.produces, WS_CONSTANTS.CONTENT_TYPES.OCTET_STREAM)) {\n // ToDo - variable seperation\n return variable.simulateFileDownload(requestParams, variable.dataBinding.file || variable.name, variable.dataBinding.exportType, function () {\n initiateCallback(VARIABLE_CONSTANTS.EVENT.SUCCESS, variable, null, null, null);\n $queue.process(variable);\n triggerFn(success);\n }, function () {\n initiateCallback(VARIABLE_CONSTANTS.EVENT.ERROR, variable, null, null, null);\n $queue.process(variable);\n triggerFn(error);\n }, variable.dataBinding);\n }\n\n // notify variable progress\n this.notifyInflight(variable, !options.skipToggleState);\n\n successHandler = (response, resolve, inputObj?) => {\n if (response && response.type) {\n if (variable.paginationTransformationRequired) {\n let json = JSON.parse(response.body);\n const pageable = {\n 'content' : json[paginationInfo.contentMapping],\n 'first' : inputObj[paginationInfo.pageMapping.name] === 1 ? true : false,\n 'last' : inputObj[paginationInfo.pageMapping.name] === json[inputFields.totalMapping] ? true : false,\n 'number' : inputObj[paginationInfo.pageMapping.name] - 1,\n 'numberOfElements': inputObj[paginationInfo.sizeMapping.name],\n 'size' : inputObj[paginationInfo.sizeMapping.name],\n 'sort' : null,\n 'totalElements' : json[inputFields.totalMapping],\n 'totalPages' : Math.ceil(json[inputFields.totalMapping] / inputObj[paginationInfo.sizeMapping.name])\n };\n if (inputObj.sortInfo) {\n pageable.sort = [{direction: inputObj.sortInfo.split(' ')[1].toUpperCase(), property: inputObj.sortInfo.split(' ')[0], ignoreCase: false, nullHandling: \"NATIVE\", ascending: inputObj.sortInfo.split(' ')[1] === 'asc' ? true : false}];\n }\n json = getClonedObject(pageable);\n response.body = JSON.stringify(json);\n }\n const data = this.processSuccessResponse(response.body, variable, extend(options, {'xhrObj': response}), success, response.headers, operationInfo);\n // notify variable success\n this.notifyInflight(variable, false, data);\n resolve(response);\n }\n };\n\n errorHandler = (err, reject) => {\n const errMsg = getErrMessage(err, variable.httpService.getLocale());\n // notify variable error\n this.notifyInflight(variable, false);\n this.processErrorResponse(variable, errMsg, error, err, options.skipNotification);\n reject({\n error: errMsg,\n details: err\n });\n };\n\n // make the call and return a promise to the user to support script calls made by users\n return new Promise((resolve, reject) => {\n requestParams.responseType = 'text'; // this is to return text response. JSON & XML-to-JSON parsing is handled in success handler.\n this.httpCall(requestParams, variable).then((response) => {\n successHandler(response, resolve, inputFields);\n }, err => {\n errorHandler(err, reject);\n });\n // the _observable property on variable is used store the observable using which the network call is made\n // this can be used to cancel the variable calls.\n });\n }\n\n // *********************************************************** PUBLIC ***********************************************************//\n\n public invoke(variable, options, success, error) {\n options = options || {};\n appManager.notify('check-state-persistence-options', {\n options: options,\n variable: variable\n });\n options.operation = options.operation || 'list';\n options.inputFields = options.inputFields || getClonedObject(variable.dataBinding[options.operation]);\n return $queue.submit(variable).then(this._invoke.bind(this, variable, options, success, error), error);\n }\n\n public getInputParms(variable) {\n const wmServiceOperationInfo = get(metadataService.getByOperationId(variable.operationId, variable.getPrefabName()), 'wmServiceOperationInfo');\n return get(wmServiceOperationInfo, 'parameters');\n }\n\n public setInput(variable, key, val, options, type?) {\n type = type || 'list';\n if (isEmpty(variable.dataBinding[type])) {\n variable.dataBinding[type] = {};\n }\n return setInput(variable.dataBinding[type], key, val, options);\n }\n\n /**\n * Initializes the bindings for the CRUD variable\n * flatten the bindings (categorised by operation name) to a list of bindings\n * each binding object's target is changed appended with the operation type\n * E.g. Input binding will be like:\n {\n \"list\": [\n {\n \"target\": \"q\",\n \"type\": \"string\",\n \"value\": \"X\"\n }\n ],\n \"update\": [\n {\n \"target\": \"id\",\n \"value\": \"bind:Widgets.UserControllerTable2.selecteditem.userId\",\n \"type\": \"integer\"\n }\n ]\n }\n\n * This function will convert it to\n [\n {\n \"target\": \"list.q\",\n \"type\": \"string\",\n \"value\": \"X\"\n },\n {\n \"target\": \"update.id\",\n \"value\": \"bind:Widgets.UserControllerTable2.selecteditem.userId\",\n \"type\": \"integer\"\n }\n ]\n\n * The bindings will be evaluated through the base-manager initBinding method and will\n * be stored in variable.dataBinding as follows:\n {\n list: {\n q: \"X\"\n },\n update: {\n id: \"evaluated value\"\n }\n }\n * @param variable\n */\n public initBinding(variable) {\n let crudBindInfo = variable.dataBinding || {},\n flattenedBindInfo = [];\n\n forEach(crudBindInfo, (bindNodes, operationType) => {\n bindNodes = bindNodes || [];\n bindNodes.forEach((bindNode)=>{\n bindNode.target = operationType + '.' + bindNode.target;\n flattenedBindInfo.push(bindNode);\n });\n });\n variable.dataBinding = flattenedBindInfo;\n\n super.initBinding(variable);\n }\n}\n"]}
|