@wavemaker/variables 12.0.0-next.142013 → 12.0.0-next.28533
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/npm-shrinkwrap.json +2012 -0
- package/package-lock.json +2012 -0
- {variables → package}/package.json +4 -3
- {variables → package}/scripts/build.js +52 -15
- package/scripts/build.js.map +1 -0
- package/src/manager/action/timer-action.manager.js.map +1 -0
- {variables → package}/src/manager/variable/base-variable.manager.js +2 -2
- package/src/manager/variable/base-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/crud-variable.manager.js +16 -16
- package/src/manager/variable/crud-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/live-variable.manager.js +50 -50
- package/src/manager/variable/live-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/model-variable.manager.js +12 -12
- package/src/manager/variable/model-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/service-variable.manager.js +42 -41
- package/src/manager/variable/service-variable.manager.js.map +1 -0
- package/src/model/action/timer-action.js.map +1 -0
- {variables → package}/src/model/base-action.d.ts +1 -1
- {variables → package}/src/model/base-action.js +3 -3
- package/src/model/base-action.js.map +1 -0
- {variables → package}/src/model/base-variable.d.ts +1 -1
- {variables → package}/src/model/base-variable.js +16 -16
- package/src/model/base-variable.js.map +1 -0
- {variables → package}/src/model/variable/crud-variable.js +2 -2
- package/src/model/variable/crud-variable.js.map +1 -0
- {variables → package}/src/model/variable/live-variable.js +7 -7
- package/src/model/variable/live-variable.js.map +1 -0
- package/src/model/variable/model-variable.js.map +1 -0
- {variables → package}/src/model/variable/service-variable.js +2 -2
- package/src/model/variable/service-variable.js.map +1 -0
- package/src/types/event-notifier.js.map +1 -0
- {variables → package}/src/util/dataset-util.js +16 -16
- package/src/util/dataset-util.js.map +1 -0
- {variables → package}/src/util/file-upload.util.js +12 -12
- package/src/util/file-upload.util.js.map +1 -0
- package/src/util/inflight-queue.js.map +1 -0
- package/src/util/notify-promise.js.map +1 -0
- {variables → package}/src/util/utils.js +19 -19
- package/src/util/utils.js.map +1 -0
- {variables → package}/src/util/variable/live-variable.http.utils.js +6 -6
- package/src/util/variable/live-variable.http.utils.js.map +1 -0
- {variables → package}/src/util/variable/live-variable.utils.js +84 -84
- package/src/util/variable/live-variable.utils.js.map +1 -0
- {variables → package}/src/util/variable/pagination.utils.d.ts +10 -1
- {variables → package}/src/util/variable/pagination.utils.js +113 -58
- package/src/util/variable/pagination.utils.js.map +1 -0
- {variables → package}/src/util/variable/service-variable.utils.js +33 -28
- package/src/util/variable/service-variable.utils.js.map +1 -0
- {variables → package}/src/util/variable/variables.utils.js +49 -49
- package/src/util/variable/variables.utils.js.map +1 -0
- package/webpack.config.d.ts +21 -0
- variables/scripts/build.js.map +0 -1
- variables/scripts/update-version.d.ts +0 -1
- variables/scripts/update-version.js +0 -27
- variables/scripts/update-version.js.map +0 -1
- variables/src/manager/action/timer-action.manager.js.map +0 -1
- variables/src/manager/variable/base-variable.manager.js.map +0 -1
- variables/src/manager/variable/crud-variable.manager.js.map +0 -1
- variables/src/manager/variable/live-variable.manager.js.map +0 -1
- variables/src/manager/variable/model-variable.manager.js.map +0 -1
- variables/src/manager/variable/service-variable.manager.js.map +0 -1
- variables/src/model/action/timer-action.js.map +0 -1
- variables/src/model/base-action.js.map +0 -1
- variables/src/model/base-variable.js.map +0 -1
- variables/src/model/variable/crud-variable.js.map +0 -1
- variables/src/model/variable/live-variable.js.map +0 -1
- variables/src/model/variable/model-variable.js.map +0 -1
- variables/src/model/variable/service-variable.js.map +0 -1
- variables/src/types/event-notifier.js.map +0 -1
- variables/src/util/dataset-util.js.map +0 -1
- variables/src/util/file-upload.util.js.map +0 -1
- variables/src/util/inflight-queue.js.map +0 -1
- variables/src/util/notify-promise.js.map +0 -1
- variables/src/util/utils.js.map +0 -1
- variables/src/util/variable/live-variable.http.utils.js.map +0 -1
- variables/src/util/variable/live-variable.utils.js.map +0 -1
- variables/src/util/variable/pagination.utils.js.map +0 -1
- variables/src/util/variable/service-variable.utils.js.map +0 -1
- variables/src/util/variable/variables.utils.js.map +0 -1
- variables/webpack.config.d.ts +0 -21
- {variables → package}/index.d.ts +0 -0
- {variables → package}/index.js +0 -0
- {variables → package}/index.js.map +0 -0
- {variables → package}/scripts/build.d.ts +0 -0
- {variables → package}/src/advanced-options.d.ts +0 -0
- {variables → package}/src/advanced-options.js +0 -0
- {variables → package}/src/advanced-options.js.map +0 -0
- {variables → package}/src/constants/variables.constants.d.ts +0 -0
- {variables → package}/src/constants/variables.constants.js +0 -0
- {variables → package}/src/constants/variables.constants.js.map +0 -0
- {variables → package}/src/factory/variable-manager.factory.d.ts +0 -0
- {variables → package}/src/factory/variable-manager.factory.js +0 -0
- {variables → package}/src/factory/variable-manager.factory.js.map +0 -0
- {variables → package}/src/manager/action/timer-action.manager.d.ts +0 -0
- {variables → package}/src/manager/action/timer-action.manager.js +0 -0
- {variables → package}/src/manager/variable/base-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/crud-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/live-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/model-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/service-variable.manager.d.ts +0 -0
- {variables → package}/src/model/action/timer-action.d.ts +0 -0
- {variables → package}/src/model/action/timer-action.js +0 -0
- {variables → package}/src/model/crud-create.d.ts +0 -0
- {variables → package}/src/model/crud-create.js +0 -0
- {variables → package}/src/model/crud-create.js.map +0 -0
- {variables → package}/src/model/crud-delete.d.ts +0 -0
- {variables → package}/src/model/crud-delete.js +0 -0
- {variables → package}/src/model/crud-delete.js.map +0 -0
- {variables → package}/src/model/crud-list.d.ts +0 -0
- {variables → package}/src/model/crud-list.js +0 -0
- {variables → package}/src/model/crud-list.js.map +0 -0
- {variables → package}/src/model/crud-update.d.ts +0 -0
- {variables → package}/src/model/crud-update.js +0 -0
- {variables → package}/src/model/crud-update.js.map +0 -0
- {variables → package}/src/model/variable/api-aware-variable.d.ts +0 -0
- {variables → package}/src/model/variable/api-aware-variable.js +0 -0
- {variables → package}/src/model/variable/api-aware-variable.js.map +0 -0
- {variables → package}/src/model/variable/crud-variable.d.ts +0 -0
- {variables → package}/src/model/variable/live-variable.d.ts +0 -0
- {variables → package}/src/model/variable/model-variable.d.ts +0 -0
- {variables → package}/src/model/variable/model-variable.js +0 -0
- {variables → package}/src/model/variable/service-variable.d.ts +0 -0
- {variables → package}/src/types/date-formatter.d.ts +0 -0
- {variables → package}/src/types/date-formatter.js +0 -0
- {variables → package}/src/types/date-formatter.js.map +0 -0
- {variables → package}/src/types/event-notifier.d.ts +0 -0
- {variables → package}/src/types/event-notifier.js +0 -0
- {variables → package}/src/types/http-client.service.d.ts +0 -0
- {variables → package}/src/types/http-client.service.js +0 -0
- {variables → package}/src/types/http-client.service.js.map +0 -0
- {variables → package}/src/types/types.d.ts +0 -0
- {variables → package}/src/types/types.js +0 -0
- {variables → package}/src/types/types.js.map +0 -0
- {variables → package}/src/util/dataset-util.d.ts +0 -0
- {variables → package}/src/util/file-upload.util.d.ts +0 -0
- {variables → package}/src/util/inflight-queue.d.ts +0 -0
- {variables → package}/src/util/inflight-queue.js +0 -0
- {variables → package}/src/util/notify-promise.d.ts +0 -0
- {variables → package}/src/util/notify-promise.js +0 -0
- {variables → package}/src/util/oAuth.utils.d.ts +0 -0
- {variables → package}/src/util/oAuth.utils.js +0 -0
- {variables → package}/src/util/oAuth.utils.js.map +0 -0
- {variables → package}/src/util/utils.d.ts +0 -0
- {variables → package}/src/util/variable/live-variable.http.utils.d.ts +0 -0
- {variables → package}/src/util/variable/live-variable.utils.d.ts +0 -0
- {variables → package}/src/util/variable/service-variable.utils.d.ts +0 -0
- {variables → package}/src/util/variable/variables.utils.d.ts +0 -0
- {variables → package}/webpack.config.js +0 -0
- {variables → package}/webpack.config.js.map +0 -0
|
@@ -4,7 +4,7 @@ import { isFileUploadSupported } from './variables.utils';
|
|
|
4
4
|
import { getAccessToken } from './../oAuth.utils';
|
|
5
5
|
import { formatDate } from "./variables.utils";
|
|
6
6
|
import { PaginationUtils } from '../../util/variable/pagination.utils';
|
|
7
|
-
import
|
|
7
|
+
import { includes, toLower, get, isObject, isArray, forEach, isUndefined, join, isEmpty, isNull, concat, toUpper, map, reject } from 'lodash-es';
|
|
8
8
|
/**
|
|
9
9
|
* returns true if a Service variable is:
|
|
10
10
|
* - for a query/procedure
|
|
@@ -13,7 +13,7 @@ import _ from 'lodash';
|
|
|
13
13
|
* @returns {any}
|
|
14
14
|
*/
|
|
15
15
|
var isBodyTypeQueryOrProcedure = function (variable) {
|
|
16
|
-
return (
|
|
16
|
+
return (includes(['QueryExecution', 'ProcedureExecution'], variable.controller)) && (includes(['put', 'post'], variable.operationType));
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* returns true if the variable is a Query service variable
|
|
@@ -31,17 +31,17 @@ var isQueryServiceVar = function (controller, serviceType) {
|
|
|
31
31
|
* @param paramValue - Value which is to be appended to formdata
|
|
32
32
|
*/
|
|
33
33
|
var getFormData = function (formData, param, paramValue) {
|
|
34
|
-
var paramType =
|
|
34
|
+
var paramType = toLower(extractType(get(param, 'items.type') || param.type)), paramContentType = CONSTANTS.isStudioMode ? param['x-WM-CONTENT_TYPE'] : param.contentType;
|
|
35
35
|
if (isFileUploadSupported()) {
|
|
36
36
|
if ((paramType !== 'file') && (paramContentType === 'string' || !paramContentType)) {
|
|
37
|
-
if (
|
|
37
|
+
if (isObject(paramValue)) {
|
|
38
38
|
paramValue = JSON.stringify(paramValue);
|
|
39
39
|
}
|
|
40
40
|
formData.append(param.name, paramValue);
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
|
-
if (
|
|
44
|
-
|
|
43
|
+
if (isArray(paramValue) && paramType === 'file') {
|
|
44
|
+
forEach(paramValue, function (fileObject) {
|
|
45
45
|
formData.append(param.name, (fileObject && fileObject.content) || getBlob(fileObject), fileObject.name);
|
|
46
46
|
});
|
|
47
47
|
}
|
|
@@ -61,14 +61,14 @@ var getFormData = function (formData, param, paramValue) {
|
|
|
61
61
|
var processRequestBody = function (inputData, params, variable) {
|
|
62
62
|
var requestBody = {}, missingParams = [];
|
|
63
63
|
var paramValue;
|
|
64
|
-
|
|
65
|
-
paramValue =
|
|
66
|
-
if (!
|
|
64
|
+
forEach(params, function (param) {
|
|
65
|
+
paramValue = get(inputData, param.name);
|
|
66
|
+
if (!isUndefined(paramValue) && paramValue !== '' && paramValue !== null && !param.readOnly) {
|
|
67
67
|
// ToDo - variable seperation
|
|
68
68
|
paramValue = isDateTimeType(param.type) ? formatDate(paramValue, param.type, variable.dateFormatter) : paramValue;
|
|
69
69
|
// Construct ',' separated string if param is not array type but value is an array
|
|
70
|
-
if (
|
|
71
|
-
paramValue =
|
|
70
|
+
if (isArray(paramValue) && toLower(extractType(param.type)) === 'string') {
|
|
71
|
+
paramValue = join(paramValue, ',');
|
|
72
72
|
}
|
|
73
73
|
requestBody[param.name] = paramValue;
|
|
74
74
|
}
|
|
@@ -91,8 +91,8 @@ var processRequestBody = function (inputData, params, variable) {
|
|
|
91
91
|
*/
|
|
92
92
|
var cloakHeadersForProxy = function (headers) {
|
|
93
93
|
var _headers = {}, UNCLOAKED_HEADERS = VARIABLE_CONSTANTS.REST_SERVICE.UNCLOAKED_HEADERS, CLOAK_PREFIX = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY;
|
|
94
|
-
|
|
95
|
-
if (
|
|
94
|
+
forEach(headers, function (val, key) {
|
|
95
|
+
if (includes(UNCLOAKED_HEADERS, key.toUpperCase())) {
|
|
96
96
|
_headers[key] = val;
|
|
97
97
|
}
|
|
98
98
|
else {
|
|
@@ -123,7 +123,7 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
123
123
|
}
|
|
124
124
|
};
|
|
125
125
|
}
|
|
126
|
-
else if (
|
|
126
|
+
else if (isEmpty(operationInfo)) {
|
|
127
127
|
return {
|
|
128
128
|
'error': {
|
|
129
129
|
'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.METADATA_MISSING,
|
|
@@ -150,7 +150,7 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
150
150
|
formData = new FormData();
|
|
151
151
|
return formData;
|
|
152
152
|
}
|
|
153
|
-
securityDefnObj =
|
|
153
|
+
securityDefnObj = get(operationInfo.securityDefinitions, '0');
|
|
154
154
|
if (securityDefnObj) {
|
|
155
155
|
switch (securityDefnObj.type) {
|
|
156
156
|
case VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2:
|
|
@@ -204,18 +204,18 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
204
204
|
withCredentials = operationInfo.proxySettings.withCredentials;
|
|
205
205
|
url = isProxyCall ? relativePath : directPath;
|
|
206
206
|
/* loop through all the parameters */
|
|
207
|
-
|
|
207
|
+
forEach(operationInfo.parameters, function (param) {
|
|
208
208
|
// Set params based on current workspace
|
|
209
209
|
function setParamsOfChildNode() {
|
|
210
210
|
if (inputFields) {
|
|
211
211
|
// specific case for body type query/procedure variable with query params
|
|
212
|
-
if (inputFields[param.name] &&
|
|
212
|
+
if (inputFields[param.name] && isObject(inputFields[param.name])) {
|
|
213
213
|
paramValueInfo = inputFields[param.name];
|
|
214
214
|
}
|
|
215
215
|
else {
|
|
216
216
|
paramValueInfo = inputFields;
|
|
217
217
|
}
|
|
218
|
-
params =
|
|
218
|
+
params = get(operationInfo, ['definitions', param.type]);
|
|
219
219
|
}
|
|
220
220
|
else {
|
|
221
221
|
// For Api Designer
|
|
@@ -231,13 +231,13 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
231
231
|
paramValue = formatDate(paramValue, param.type, variable.dateFormatter);
|
|
232
232
|
}
|
|
233
233
|
// Construct ',' separated string if param is not array type but value is an array
|
|
234
|
-
if (
|
|
235
|
-
paramValue =
|
|
234
|
+
if (isArray(paramValue) && toLower(extractType(param.type)) === 'string' && variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA) {
|
|
235
|
+
paramValue = join(paramValue, ',');
|
|
236
236
|
}
|
|
237
237
|
switch (param.parameterType.toUpperCase()) {
|
|
238
238
|
case 'QUERY':
|
|
239
239
|
// Ignore null valued query params for queryService variable
|
|
240
|
-
if (
|
|
240
|
+
if (isNull(paramValue) && isQueryServiceVar(variable.controller, variable.serviceType)) {
|
|
241
241
|
break;
|
|
242
242
|
}
|
|
243
243
|
if (!queryParams) {
|
|
@@ -261,7 +261,7 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
261
261
|
setParamsOfChildNode();
|
|
262
262
|
bodyInfo = processRequestBody(paramValueInfo, params, variable);
|
|
263
263
|
requestBody = bodyInfo.requestBody;
|
|
264
|
-
requiredParamMissing =
|
|
264
|
+
requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);
|
|
265
265
|
}
|
|
266
266
|
else {
|
|
267
267
|
requestBody = paramValue;
|
|
@@ -273,7 +273,12 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
273
273
|
// Process query/procedure formData non-file params params
|
|
274
274
|
bodyInfo = processRequestBody(paramValueInfo, params, variable);
|
|
275
275
|
requestBody = getFormData(getFormDataObj(), param, bodyInfo.requestBody);
|
|
276
|
-
requiredParamMissing =
|
|
276
|
+
requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);
|
|
277
|
+
}
|
|
278
|
+
else if ((operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.consumes) && operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED) {
|
|
279
|
+
// when the content-type is 'application/x-www-form-urlencoded'
|
|
280
|
+
requestBody = (requestBody && requestBody.length > 0 ? "".concat(requestBody, "&") : '')
|
|
281
|
+
+ "".concat(encodeURIComponent(param.name), "=").concat(encodeURIComponent(param.sampleValue));
|
|
277
282
|
}
|
|
278
283
|
else {
|
|
279
284
|
requestBody = getFormData(getFormDataObj(), param, paramValue);
|
|
@@ -297,7 +302,7 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
297
302
|
};
|
|
298
303
|
}
|
|
299
304
|
// Setting appropriate content-Type for request accepting request body like POST, PUT, etc
|
|
300
|
-
if (!
|
|
305
|
+
if (!includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, toUpper(method))) {
|
|
301
306
|
/*Based on the formData browser will automatically set the content type to 'multipart/form-data' and webkit boundary*/
|
|
302
307
|
if (!(operationInfo.consumes && (operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.MULTIPART_FORMDATA))) {
|
|
303
308
|
headers['Content-Type'] = (operationInfo.consumes && operationInfo.consumes[0]) || 'application/json';
|
|
@@ -305,8 +310,8 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
305
310
|
}
|
|
306
311
|
// if the consumes has application/x-www-form-urlencoded and
|
|
307
312
|
// if the http request of given method type can have body send the queryParams as Form Data
|
|
308
|
-
if (
|
|
309
|
-
&& !
|
|
313
|
+
if (includes(operationInfo.consumes, WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED)
|
|
314
|
+
&& !includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, (method || '').toUpperCase())) {
|
|
310
315
|
// remove the '?' at the start of the queryParams
|
|
311
316
|
if (queryParams) {
|
|
312
317
|
requestBody = (requestBody ? requestBody + '&' : '') + queryParams.substring(1);
|
|
@@ -377,8 +382,8 @@ var ServiceVariableUtils = /** @class */ (function () {
|
|
|
377
382
|
* @params {params} params of the variable
|
|
378
383
|
*/
|
|
379
384
|
ServiceVariableUtils.excludePaginationParams = function (params) {
|
|
380
|
-
return
|
|
381
|
-
return
|
|
385
|
+
return map(reject(params, function (param) {
|
|
386
|
+
return includes(VARIABLE_CONSTANTS.PAGINATION_PARAMS, param.name);
|
|
382
387
|
}), function (param) {
|
|
383
388
|
return param.name;
|
|
384
389
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-variable.utils.js","sourceRoot":"./","sources":["src/util/variable/service-variable.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { extractType, isDefined, isDateTimeType, getBlob, replace } from \"../../util/utils\";\n\nimport { $rootScope, CONSTANTS, SWAGGER_CONSTANTS, VARIABLE_CONSTANTS, WS_CONSTANTS } from '../../constants/variables.constants';\nimport { isFileUploadSupported } from './variables.utils';\nimport { getAccessToken } from './../oAuth.utils';\nimport { formatDate} from \"./variables.utils\";\nimport { PaginationUtils } from '../../util/variable/pagination.utils';\n\nimport {includes, toLower, get, isObject, isArray, forEach, isUndefined, join, isEmpty, isNull, concat, toUpper, map, reject} from 'lodash-es';\n\n\n/**\n * returns true if a Service variable is:\n * - for a query/procedure\n * - performs a PUT/POST operation, i.e, takes a Request Body as input\n * @param variable\n * @returns {any}\n */\nconst isBodyTypeQueryOrProcedure = (variable) => {\n return (includes(['QueryExecution', 'ProcedureExecution'], variable.controller)) && (includes(['put', 'post'], variable.operationType));\n};\n\n/**\n * returns true if the variable is a Query service variable\n * @param {string} controller\n * @param {string} serviceType\n * @returns {boolean}\n */\nconst isQueryServiceVar = (controller: string, serviceType: string) => {\n return controller === VARIABLE_CONSTANTS.CONTROLLER_TYPE.QUERY && serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA;\n};\n\n/**\n * Append given value to the formdata\n * @param formData\n * @param param - Param from which value has to be taken\n * @param paramValue - Value which is to be appended to formdata\n */\nconst getFormData = (formData, param, paramValue) => {\n const paramType = toLower(extractType(get(param, 'items.type') || param.type)),\n paramContentType = CONSTANTS.isStudioMode ? param['x-WM-CONTENT_TYPE'] : param.contentType;\n if (isFileUploadSupported()) {\n if ((paramType !== 'file') && (paramContentType === 'string' || !paramContentType)) {\n if (isObject(paramValue)) {\n paramValue = JSON.stringify(paramValue);\n }\n formData.append(param.name, paramValue);\n } else {\n if (isArray(paramValue) && paramType === 'file') {\n forEach(paramValue, function (fileObject) {\n formData.append(param.name, (fileObject && fileObject.content) || getBlob(fileObject), fileObject.name);\n });\n } else {\n formData.append(param.name, getBlob(paramValue, paramContentType), paramValue && paramValue.name);\n }\n }\n return formData;\n }\n};\n\n/**\n * Check for missing required params and format the date/time param values\n * @param inputData\n * @param params\n * @returns {{requestBody: {}; missingParams: any[]}}\n */\nconst processRequestBody = (inputData, params, variable) => {\n const requestBody = {},\n missingParams = [];\n let paramValue;\n forEach(params, function (param) {\n paramValue = get(inputData, param.name);\n if (!isUndefined(paramValue) && paramValue !== '' && paramValue !== null && !param.readOnly) {\n // ToDo - variable seperation\n paramValue = isDateTimeType(param.type) ? formatDate(paramValue, param.type, variable.dateFormatter) : paramValue;\n // Construct ',' separated string if param is not array type but value is an array\n if (isArray(paramValue) && toLower(extractType(param.type)) === 'string') {\n paramValue = join(paramValue, ',');\n }\n requestBody[param.name] = paramValue;\n } else if (param.required) {\n missingParams.push(param.name || param.id);\n }\n });\n return {\n 'requestBody': requestBody,\n 'missingParams': missingParams\n };\n};\n\n/**\n * Done only for HTTP calls made via the proxy server\n * Goes though request headers, appends 'X-' to certain headers\n * these headers need not be processed at proxy server and should directly be passed to the server\n * e.g. Authorization, Cookie, etc.\n * @param headers\n * @returns {{}}\n */\nconst cloakHeadersForProxy = (headers) => {\n const _headers = {},\n UNCLOAKED_HEADERS = VARIABLE_CONSTANTS.REST_SERVICE.UNCLOAKED_HEADERS,\n CLOAK_PREFIX = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY;\n forEach(headers, function (val, key) {\n if (includes(UNCLOAKED_HEADERS, key.toUpperCase())) {\n _headers[key] = val;\n } else {\n _headers[CLOAK_PREFIX + key] = val;\n }\n });\n\n return _headers;\n};\n\nexport class ServiceVariableUtils {\n /**\n * prepares the HTTP request info for a Service Variable\n * @param variable\n * @param operationInfo\n * @param inputFields\n * @returns {any}\n */\n static constructRequestParams(variable, operationInfo, inputFields, options?) {\n variable = variable || {};\n\n // operationInfo is specifically null for un_authorized access\n if (operationInfo === null) {\n return {\n 'error' : {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.USER_UNAUTHORISED,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.USER_UNAUTHORISED,\n 'field': '_wmServiceOperationInfo'\n }\n };\n } else if (isEmpty(operationInfo)) {\n return {\n 'error' : {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.METADATA_MISSING,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.METADATA_MISSING,\n 'field': '_wmServiceOperationInfo'\n }\n };\n } else if (operationInfo && operationInfo.invalid) {\n return {\n 'error' : {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.CRUD_OPERATION_MISSING,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.CRUD_OPERATION_MISSING,\n 'field': '_wmServiceOperationInfo'\n }\n };\n }\n\n const directPath = operationInfo.directPath || '',\n relativePath = operationInfo.basePath ? operationInfo.basePath + operationInfo.relativePath : operationInfo.relativePath,\n isBodyTypeQueryProcedure = isBodyTypeQueryOrProcedure(variable);\n let queryParams = '',\n bodyInfo,\n headers = {},\n requestBody,\n url,\n requiredParamMissing = [],\n target,\n pathParamRex,\n invokeParams,\n authDetails = null,\n uname,\n pswd,\n method,\n formData,\n isProxyCall,\n paramValueInfo,\n params,\n securityDefnObj,\n accessToken,\n withCredentials;\n\n function getFormDataObj() {\n if (formData) {\n return formData;\n }\n formData = new FormData();\n return formData;\n }\n\n securityDefnObj = get(operationInfo.securityDefinitions, '0');\n\n if (securityDefnObj) {\n switch (securityDefnObj.type) {\n case VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2:\n accessToken = getAccessToken(securityDefnObj[VARIABLE_CONSTANTS.REST_SERVICE.OAUTH_PROVIDER_KEY], null);\n if (accessToken) {\n headers[VARIABLE_CONSTANTS.REST_SERVICE.AUTH_HDR_KEY] = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.AUTH_HDR_VAL.OAUTH + ' ' + accessToken;\n } else {\n return {\n 'error': {\n 'type' : VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.NO_ACCESSTOKEN,\n 'message' : VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.NO_ACCESSTOKEN\n },\n 'securityDefnObj': securityDefnObj\n };\n }\n break;\n case VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.BASIC:\n uname = inputFields['wm_auth_username'];\n pswd = inputFields['wm_auth_password'];\n if (uname && pswd) {\n // TODO[VIBHU]: bas64 encoding alternative.\n headers[VARIABLE_CONSTANTS.REST_SERVICE.AUTH_HDR_KEY] = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.AUTH_HDR_VAL.BASIC + ' ' + btoa(uname + ':' + pswd);\n authDetails = {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.AUTH_TYPE.BASIC\n };\n } else {\n return {\n 'error': {\n 'type' : VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.NO_CREDENTIALS,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.NO_CREDENTIALS\n },\n 'securityDefnObj': securityDefnObj\n };\n }\n break;\n }\n }\n // set query params, if pagination info is present and the info should be present in query\n PaginationUtils.checkPaginationAtQuery(operationInfo, variable, options);\n\n operationInfo.proxySettings = operationInfo.proxySettings || {web: true, mobile: false};\n method = operationInfo.httpMethod || operationInfo.methodType;\n isProxyCall = (function () {\n // ToDo - variable seperation\n // if (CONSTANTS.hasCordova) {\n return operationInfo.proxySettings.mobile;\n // }\n return operationInfo.proxySettings.web;\n }());\n withCredentials = operationInfo.proxySettings.withCredentials;\n url = isProxyCall ? relativePath : directPath;\n\n /* loop through all the parameters */\n forEach(operationInfo.parameters, function (param) {\n // Set params based on current workspace\n function setParamsOfChildNode() {\n if (inputFields) {\n // specific case for body type query/procedure variable with query params\n if (inputFields[param.name] && isObject(inputFields[param.name])) {\n paramValueInfo = inputFields[param.name];\n } else {\n paramValueInfo = inputFields;\n }\n params = get(operationInfo, ['definitions', param.type]);\n } else {\n // For Api Designer\n paramValueInfo = paramValue || {};\n params = param.children;\n }\n }\n\n let paramValue = param.sampleValue;\n\n if ((isDefined(paramValue) && paramValue !== null && paramValue !== '') || (isBodyTypeQueryProcedure && param.type !== 'file')) {\n // Format dateTime params for dataService variables\n if (variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA && isDateTimeType(param.type)) {\n // ToDo - variable seperation\n paramValue = formatDate(paramValue, param.type, variable.dateFormatter);\n }\n // Construct ',' separated string if param is not array type but value is an array\n if (isArray(paramValue) && toLower(extractType(param.type)) === 'string' && variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA) {\n paramValue = join(paramValue, ',');\n }\n switch (param.parameterType.toUpperCase()) {\n case 'QUERY':\n // Ignore null valued query params for queryService variable\n if (isNull(paramValue) && isQueryServiceVar(variable.controller, variable.serviceType)) {\n break;\n }\n if (!queryParams) {\n queryParams = '?' + param.name + '=' + encodeURIComponent(paramValue);\n } else {\n queryParams += '&' + param.name + '=' + encodeURIComponent(paramValue);\n }\n break;\n case 'PATH':\n /* replacing the path param based on the regular expression in the relative path */\n pathParamRex = new RegExp('\\\\s*\\\\{\\\\s*' + param.name + '(:\\\\.\\\\+)?\\\\s*\\\\}\\\\s*');\n url = url.replace(pathParamRex, paramValue);\n break;\n case 'HEADER':\n headers[param.name] = paramValue;\n break;\n case 'BODY':\n // For post/put query methods wrap the input\n if (isBodyTypeQueryProcedure) {\n setParamsOfChildNode();\n bodyInfo = processRequestBody(paramValueInfo, params, variable);\n requestBody = bodyInfo.requestBody;\n requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);\n } else {\n requestBody = paramValue;\n }\n break;\n case 'FORMDATA':\n if (isBodyTypeQueryProcedure && param.name === SWAGGER_CONSTANTS.WM_DATA_JSON) {\n setParamsOfChildNode();\n // Process query/procedure formData non-file params params\n bodyInfo = processRequestBody(paramValueInfo, params, variable);\n requestBody = getFormData(getFormDataObj(), param, bodyInfo.requestBody);\n requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);\n } else if(operationInfo?.consumes && operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED) {\n // when the content-type is 'application/x-www-form-urlencoded'\n requestBody = (requestBody && requestBody.length > 0 ? `${requestBody}&` : '') \n + `${encodeURIComponent(param.name)}=${encodeURIComponent(param.sampleValue)}`;\n } else {\n requestBody = getFormData(getFormDataObj(), param, paramValue);\n }\n break;\n }\n } else if (param.required) {\n requiredParamMissing.push(param.name || param.id);\n }\n });\n\n // if required param not found, return error\n if (requiredParamMissing.length) {\n return {\n 'error': {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.REQUIRED_FIELD_MISSING,\n 'field': requiredParamMissing.join(','),\n 'message': replace(VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.REQUIRED_FIELD_MISSING, [requiredParamMissing.join(',')]),\n 'skipDefaultNotification': true\n }\n };\n }\n\n // Setting appropriate content-Type for request accepting request body like POST, PUT, etc\n if (!includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, toUpper(method))) {\n /*Based on the formData browser will automatically set the content type to 'multipart/form-data' and webkit boundary*/\n if (!(operationInfo.consumes && (operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.MULTIPART_FORMDATA))) {\n headers['Content-Type'] = (operationInfo.consumes && operationInfo.consumes[0]) || 'application/json';\n }\n }\n\n // if the consumes has application/x-www-form-urlencoded and\n // if the http request of given method type can have body send the queryParams as Form Data\n if (includes(operationInfo.consumes, WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED)\n && !includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, (method || '').toUpperCase())) {\n // remove the '?' at the start of the queryParams\n if (queryParams) {\n requestBody = (requestBody ? requestBody + '&' : '') + queryParams.substring(1);\n }\n headers['Content-Type'] = WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED;\n } else {\n url += queryParams;\n }\n\n /*\n * for proxy calls:\n * - cloak the proper headers (required only for REST services)\n * - prepare complete url from relativeUrl\n */\n if (isProxyCall) {\n // avoiding cloakHeadersForProxy when the method is invoked from apidesigner.\n headers = (variable.serviceType !== VARIABLE_CONSTANTS.SERVICE_TYPE.REST && variable.serviceType !== VARIABLE_CONSTANTS.SERVICE_TYPE.OPENAPI) || operationInfo.skipCloakHeaders ? headers : cloakHeadersForProxy(headers);\n if (variable.getPrefabName() && VARIABLE_CONSTANTS.REST_SUPPORTED_SERVICES.indexOf(variable.serviceType) !== -1) {\n /* if it is a prefab variable (used in a normal project), modify the url */\n url = 'prefabs/' + variable.getPrefabName() + url;\n target = 'invokePrefabRestService';\n } else if (!variable.getPrefabName()) {\n url = 'services' + url;\n }\n url = $rootScope.project.deployedUrl + url;\n }\n\n // If pagination info exists, process info in request headers or body based on the metadata\n const paginationInfo = PaginationUtils.getPaginationInfo(operationInfo, variable);\n if (paginationInfo && variable.pagination) {\n const resp = PaginationUtils.setPaginationAtReq(paginationInfo, operationInfo, variable, headers, requestBody, url, options);\n if (resp) {\n if (resp['headers']) {\n headers = resp['headers'];\n } else if (resp['requestBody']) {\n requestBody = resp['requestBody']\n } else if (resp['url']) {\n url = resp['url']\n }\n }\n }\n\n /*creating the params needed to invoke the service. url is generated from the relative path for the operation*/\n invokeParams = {\n 'projectID': $rootScope.project.id,\n 'url': url,\n 'target': target,\n 'method': method,\n 'headers': headers,\n 'data': requestBody,\n 'authDetails': authDetails,\n 'isDirectCall': !isProxyCall,\n 'isExtURL': variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.REST,\n 'withCredentials': withCredentials\n };\n\n return invokeParams;\n }\n\n static isFileUploadRequest(variable) {\n // temporary fix, have to find proper solution for deciding weather to upload file through variable\n return variable.service === 'FileService' && variable.operation === 'uploadFile';\n }\n\n static isFileDeleteRequest(variable) {\n return variable.service === 'FileService' && variable.operation === 'deleteFile';\n }\n\n /**\n * This method returns array of query param names for variable other then page,size,sort\n * @params {params} params of the variable\n */\n static excludePaginationParams(params) {\n return map(reject(params, (param) => {\n return includes(VARIABLE_CONSTANTS.PAGINATION_PARAMS, param.name);\n }), function (param) {\n return param.name;\n });\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { findValueOf, getValidJSON, noop, extractType, DataType, DEFAULT_FORMATS
|
|
|
2
2
|
import { VARIABLE_CONSTANTS } from '../../constants/variables.constants';
|
|
3
3
|
// @ts-ignore
|
|
4
4
|
import moment from 'moment';
|
|
5
|
-
import
|
|
5
|
+
import { debounce, forEach, isObject, isNumber, isArray, isString, isEmpty, split, map, trim, remove, includes, join, isUndefined, isFunction, filter, keys, get, toUpper, isDate, toLower } from 'lodash-es';
|
|
6
6
|
import he from 'he';
|
|
7
7
|
export var appManager;
|
|
8
8
|
export var httpService;
|
|
@@ -17,16 +17,16 @@ export var internalBoundNodeMap = new Map();
|
|
|
17
17
|
var timers = new Map();
|
|
18
18
|
var DOT_EXPR_REX = /^\[("|')[\w\W]*(\1)\]$/;
|
|
19
19
|
var _invoke = function (variable, op) {
|
|
20
|
-
var debouncedFn, cancelFn =
|
|
20
|
+
var debouncedFn, cancelFn = noop, retVal;
|
|
21
21
|
if (timers.has(variable)) {
|
|
22
22
|
cancelFn = timers.get(variable).cancel;
|
|
23
23
|
}
|
|
24
24
|
cancelFn();
|
|
25
|
-
debouncedFn =
|
|
25
|
+
debouncedFn = debounce(function () {
|
|
26
26
|
retVal = variable[op]();
|
|
27
27
|
// handle promises to avoid uncaught promise errors in console
|
|
28
28
|
if (retVal instanceof Promise) {
|
|
29
|
-
retVal.catch(
|
|
29
|
+
retVal.catch(noop);
|
|
30
30
|
}
|
|
31
31
|
}, 100);
|
|
32
32
|
timers.set(variable, debouncedFn);
|
|
@@ -78,7 +78,7 @@ export var isFileUploadSupported = function () {
|
|
|
78
78
|
* returns fieldDefs
|
|
79
79
|
*/
|
|
80
80
|
export var formatExportExpression = function (fieldDefs) {
|
|
81
|
-
|
|
81
|
+
forEach(fieldDefs, function (fieldDef) {
|
|
82
82
|
if (fieldDef.expression) {
|
|
83
83
|
fieldDef.expression = '${' + fieldDef.expression + '}';
|
|
84
84
|
}
|
|
@@ -122,17 +122,17 @@ export var setInput = function (targetObj, key, val, options) {
|
|
|
122
122
|
targetObj = targetObj || {};
|
|
123
123
|
var keys, lastKey, paramObj = {};
|
|
124
124
|
// content type check
|
|
125
|
-
if (
|
|
125
|
+
if (isObject(options)) {
|
|
126
126
|
switch (options.type) {
|
|
127
127
|
case 'file':
|
|
128
128
|
val = getBlob(val, options.contentType);
|
|
129
129
|
break;
|
|
130
130
|
case 'number':
|
|
131
|
-
val =
|
|
131
|
+
val = isNumber(val) ? val : parseInt(val, 10);
|
|
132
132
|
break;
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
if (
|
|
135
|
+
if (isObject(key)) {
|
|
136
136
|
// check if the passed parameter is an object itself
|
|
137
137
|
paramObj = key;
|
|
138
138
|
}
|
|
@@ -148,7 +148,7 @@ export var setInput = function (targetObj, key, val, options) {
|
|
|
148
148
|
else {
|
|
149
149
|
paramObj[key] = val;
|
|
150
150
|
}
|
|
151
|
-
|
|
151
|
+
forEach(paramObj, function (paramVal, paramKey) {
|
|
152
152
|
targetObj[paramKey] = paramVal;
|
|
153
153
|
});
|
|
154
154
|
return targetObj;
|
|
@@ -163,34 +163,34 @@ export var decodeData = function (responseContent) {
|
|
|
163
163
|
if (!responseContent) {
|
|
164
164
|
return responseContent;
|
|
165
165
|
}
|
|
166
|
-
if (
|
|
167
|
-
|
|
168
|
-
if (
|
|
166
|
+
if (isArray(responseContent)) {
|
|
167
|
+
forEach(responseContent, function (data) {
|
|
168
|
+
if (isString(data)) {
|
|
169
169
|
data = htmlDecode(data);
|
|
170
170
|
}
|
|
171
|
-
else if (
|
|
172
|
-
|
|
173
|
-
if (value &&
|
|
171
|
+
else if (isObject(data)) {
|
|
172
|
+
forEach(data, function (value, key) {
|
|
173
|
+
if (value && isString(value)) {
|
|
174
174
|
data[key] = htmlDecode(value);
|
|
175
175
|
}
|
|
176
|
-
else if (
|
|
176
|
+
else if (isObject(value)) {
|
|
177
177
|
decodeData(value);
|
|
178
178
|
}
|
|
179
179
|
});
|
|
180
180
|
}
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
|
-
else if (
|
|
184
|
-
|
|
185
|
-
if (value &&
|
|
183
|
+
else if (isObject(responseContent)) {
|
|
184
|
+
forEach(responseContent, function (value, key) {
|
|
185
|
+
if (value && isString(value)) {
|
|
186
186
|
responseContent[key] = htmlDecode(value);
|
|
187
187
|
}
|
|
188
|
-
else if (
|
|
188
|
+
else if (isObject(value)) {
|
|
189
189
|
decodeData(value);
|
|
190
190
|
}
|
|
191
191
|
});
|
|
192
192
|
}
|
|
193
|
-
else if (
|
|
193
|
+
else if (isString(responseContent)) {
|
|
194
194
|
responseContent = htmlDecode(responseContent);
|
|
195
195
|
return responseContent;
|
|
196
196
|
}
|
|
@@ -207,7 +207,7 @@ function htmlDecode(input) {
|
|
|
207
207
|
export var getEvaluatedOrderBy = function (varOrder, optionsOrder) {
|
|
208
208
|
var optionFields, varOrderBy;
|
|
209
209
|
// If options order by is not defined, return variable order
|
|
210
|
-
if (!optionsOrder ||
|
|
210
|
+
if (!optionsOrder || isEmpty(optionsOrder)) {
|
|
211
211
|
return varOrder;
|
|
212
212
|
}
|
|
213
213
|
// If variable order by is not defined, return options order
|
|
@@ -215,24 +215,24 @@ export var getEvaluatedOrderBy = function (varOrder, optionsOrder) {
|
|
|
215
215
|
return optionsOrder;
|
|
216
216
|
}
|
|
217
217
|
// If both are present, combine the options order and variable order, with options order as precedence
|
|
218
|
-
varOrder =
|
|
219
|
-
optionsOrder =
|
|
220
|
-
optionFields =
|
|
221
|
-
return
|
|
218
|
+
varOrder = split(varOrder, ',');
|
|
219
|
+
optionsOrder = split(optionsOrder, ',');
|
|
220
|
+
optionFields = map(optionsOrder, function (order) {
|
|
221
|
+
return split(trim(order), ' ')[0];
|
|
222
222
|
});
|
|
223
223
|
// If a field is present in both options and variable, remove the variable orderby
|
|
224
|
-
|
|
225
|
-
return
|
|
224
|
+
remove(varOrder, function (orderBy) {
|
|
225
|
+
return includes(optionFields, split(trim(orderBy), ' ')[0]);
|
|
226
226
|
});
|
|
227
|
-
varOrderBy = varOrder.length ? ',' +
|
|
228
|
-
return
|
|
227
|
+
varOrderBy = varOrder.length ? ',' + join(varOrder, ',') : '';
|
|
228
|
+
return join(optionsOrder, ',') + varOrderBy;
|
|
229
229
|
};
|
|
230
230
|
var processVariablePostBindUpdate = function (nodeName, nodeVal, nodeType, variable, noUpdate) {
|
|
231
231
|
switch (variable.category) {
|
|
232
232
|
case VARIABLE_CONSTANTS.CATEGORY.LIVE:
|
|
233
233
|
if (variable.operation === 'read') {
|
|
234
234
|
if (nodeName === 'dataBinding') {
|
|
235
|
-
|
|
235
|
+
forEach(nodeVal, function (val, key) {
|
|
236
236
|
variable.filterFields[key] = {
|
|
237
237
|
'value': val
|
|
238
238
|
};
|
|
@@ -245,7 +245,7 @@ var processVariablePostBindUpdate = function (nodeName, nodeVal, nodeType, varia
|
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
247
|
/* if auto-update set for the variable with read operation only, get its data */
|
|
248
|
-
if (variable.autoUpdate && !
|
|
248
|
+
if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.listRecords) && !noUpdate) {
|
|
249
249
|
_invoke(variable, 'listRecords');
|
|
250
250
|
}
|
|
251
251
|
}
|
|
@@ -257,25 +257,25 @@ var processVariablePostBindUpdate = function (nodeName, nodeVal, nodeType, varia
|
|
|
257
257
|
variable.inputFields[nodeName] = nodeVal;
|
|
258
258
|
}
|
|
259
259
|
/* if auto-update set for the variable with read operation only, get its data */
|
|
260
|
-
if (variable.autoUpdate && !
|
|
260
|
+
if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable[variable.operation + 'Record']) && !noUpdate) {
|
|
261
261
|
_invoke(variable, variable.operation + 'Record');
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
break;
|
|
265
265
|
case VARIABLE_CONSTANTS.CATEGORY.CRUD:
|
|
266
|
-
if (variable.operationType === 'list' && variable.autoUpdate && !
|
|
266
|
+
if (variable.operationType === 'list' && variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.invoke) && !noUpdate) {
|
|
267
267
|
_invoke(variable, 'invoke');
|
|
268
268
|
}
|
|
269
269
|
break;
|
|
270
270
|
case VARIABLE_CONSTANTS.CATEGORY.SERVICE:
|
|
271
271
|
case VARIABLE_CONSTANTS.CATEGORY.LOGIN:
|
|
272
|
-
if (variable.autoUpdate && !
|
|
272
|
+
if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.invoke) && !noUpdate) {
|
|
273
273
|
_invoke(variable, 'invoke');
|
|
274
274
|
}
|
|
275
275
|
break;
|
|
276
276
|
case VARIABLE_CONSTANTS.CATEGORY.DEVICE:
|
|
277
277
|
variable[nodeName] = nodeVal;
|
|
278
|
-
if (variable.autoUpdate && !
|
|
278
|
+
if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.invoke) && !noUpdate) {
|
|
279
279
|
_invoke(variable, 'invoke');
|
|
280
280
|
}
|
|
281
281
|
break;
|
|
@@ -352,7 +352,7 @@ export var getTargetNodeKey = function (target) {
|
|
|
352
352
|
};
|
|
353
353
|
export var setValueToNode = function (target, obj, root, variable, value, noUpdate) {
|
|
354
354
|
var targetNodeKey = getTargetNodeKey(target), targetObj = getTargetObj(obj, root, variable);
|
|
355
|
-
value = !
|
|
355
|
+
value = !isUndefined(value) ? value : obj.value;
|
|
356
356
|
/* sanity check, user can bind parent nodes to non-object values, so child node bindings may fail */
|
|
357
357
|
if (targetObj) {
|
|
358
358
|
targetObj[targetNodeKey] = value;
|
|
@@ -409,18 +409,18 @@ export var getTarget = function (variable) {
|
|
|
409
409
|
* @param variable
|
|
410
410
|
*/
|
|
411
411
|
export var updateInternalNodes = function (target, root, variable) {
|
|
412
|
-
var boundInternalNodes =
|
|
412
|
+
var boundInternalNodes = keys(get(internalBoundNodeMap.get(variable), [variable.name, root])), targetNodeKey = getTargetNodeKey(target);
|
|
413
413
|
var internalNodes;
|
|
414
414
|
function findInternalNodeBound() {
|
|
415
|
-
return
|
|
415
|
+
return filter(boundInternalNodes, function (node) {
|
|
416
416
|
// the later condition in check (targetNodeKey === root || targetNodeKey === 'dataBinding') is specifically for live variable of insert/update types
|
|
417
|
-
return (node !== targetNodeKey &&
|
|
417
|
+
return (node !== targetNodeKey && includes(node, targetNodeKey)) || ((targetNodeKey === root || targetNodeKey === 'dataBinding') && node !== targetNodeKey);
|
|
418
418
|
});
|
|
419
419
|
}
|
|
420
420
|
internalNodes = findInternalNodeBound();
|
|
421
421
|
if ((internalNodes.length)) {
|
|
422
|
-
|
|
423
|
-
setValueToNode(node, { target: node }, root, variable,
|
|
422
|
+
forEach(internalNodes, function (node) {
|
|
423
|
+
setValueToNode(node, { target: node }, root, variable, get(internalBoundNodeMap.get(variable), [variable.name, root, node]));
|
|
424
424
|
});
|
|
425
425
|
}
|
|
426
426
|
};
|
|
@@ -442,7 +442,7 @@ export var initiateCallback = function (type, variable, data, options, skipDefau
|
|
|
442
442
|
errorVariable = callBackScope.Actions[VARIABLE_CONSTANTS.DEFAULT_VAR.NOTIFICATION];
|
|
443
443
|
if (errorVariable) {
|
|
444
444
|
data = errorVariable.getMessage() || data;
|
|
445
|
-
data =
|
|
445
|
+
data = isString(data) ? data : 'An error has occured. Please check the app logs.';
|
|
446
446
|
errorVariable.invoke({ 'message': data }, undefined, undefined);
|
|
447
447
|
// $rootScope.$evalAsync(function () {
|
|
448
448
|
// $rootScope.$emit("invoke-service", VARIABLE_CONSTANTS.DEFAULT_VAR.NOTIFICATION, {scope: callBackScope, message: response});
|
|
@@ -467,12 +467,12 @@ export var initiateCallback = function (type, variable, data, options, skipDefau
|
|
|
467
467
|
}
|
|
468
468
|
};
|
|
469
469
|
var getDateTimeFormatForType = function (type) {
|
|
470
|
-
return DEFAULT_FORMATS[
|
|
470
|
+
return DEFAULT_FORMATS[toUpper(type)];
|
|
471
471
|
};
|
|
472
472
|
// Format value for datetime types
|
|
473
473
|
var _formatDate = function (dateValue, type, dateFormatter) {
|
|
474
474
|
var epoch;
|
|
475
|
-
if (
|
|
475
|
+
if (isDate(dateValue)) {
|
|
476
476
|
epoch = dateValue.getTime();
|
|
477
477
|
}
|
|
478
478
|
else {
|
|
@@ -494,11 +494,11 @@ var _formatDate = function (dateValue, type, dateFormatter) {
|
|
|
494
494
|
};
|
|
495
495
|
// Function to convert values of date time types into default formats
|
|
496
496
|
export var formatDate = function (value, type, dateFormatter) {
|
|
497
|
-
if (
|
|
498
|
-
type =
|
|
497
|
+
if (includes(type, '.')) {
|
|
498
|
+
type = toLower(extractType(type));
|
|
499
499
|
}
|
|
500
|
-
if (
|
|
501
|
-
return
|
|
500
|
+
if (isArray(value)) {
|
|
501
|
+
return map(value, function (val) {
|
|
502
502
|
return _formatDate(val, type, dateFormatter);
|
|
503
503
|
});
|
|
504
504
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.utils.js","sourceRoot":"./","sources":["src/util/variable/variables.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAE1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,aAAa;AACb,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAC5M,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,IAAI,UAAe,CAAC;AAC3B,MAAM,CAAC,IAAI,WAAgB,CAAC;AAC5B,MAAM,CAAC,IAAI,eAAoB,CAAC;AAChC,MAAM,CAAC,IAAI,iBAAsB,CAAC;AAClC,MAAM,CAAC,IAAI,aAAkB,CAAC;AAC9B,MAAM,CAAC,IAAI,cAAmB,CAAC;AAC/B,MAAM,CAAC,IAAI,YAAiB,CAAC;AAC7B,MAAM,CAAC,IAAI,eAAoB,CAAC;AAChC,MAAM,CAAC,IAAI,aAAkB,CAAC;AAC9B,MAAM,CAAC,IAAI,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5C,IAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AACzB,IAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,IAAM,OAAO,GAAG,UAAC,QAAQ,EAAE,EAAE;IACzB,IAAI,WAAW,EACX,QAAQ,GAAG,IAAI,EACf,MAAM,CAAC;IACX,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC3C,CAAC;IACD,QAAQ,EAAE,CAAC;IACX,WAAW,GAAG,QAAQ,CAAC;QACnB,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,8DAA8D;QAC9D,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACL,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClC,WAAW,EAAE,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,IAAY,EAAE,GAAQ;IAClD,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,YAAY;YACb,UAAU,GAAG,GAAG,CAAC;YACjB,MAAM;QACV,KAAK,MAAM;YACP,WAAW,GAAG,GAAG,CAAC;YAClB,MAAM;QACV,KAAK,UAAU;YACX,eAAe,GAAG,GAAG,CAAC;YACtB,MAAM;QACV,KAAK,mBAAmB;YACpB,iBAAiB,GAAG,GAAG,CAAC;YACxB,MAAM;QACV,KAAK,QAAQ;YACT,aAAa,GAAG,GAAG,CAAC;YACpB,MAAM;QACV,KAAK,SAAS;YACV,cAAc,GAAI,GAAG,CAAC;YACtB,MAAM;QACV,KAAK,OAAO;YACR,YAAY,GAAI,GAAG,CAAC;YACpB,MAAM;QACV,KAAK,UAAU;YACX,eAAe,GAAI,GAAG,CAAC;YACvB,MAAM;QACV,KAAK,QAAQ;YACT,aAAa,GAAG,GAAG,CAAC;YACpB,MAAM;IACd,CAAC;AACL,CAAC,CAAC;AACF,MAAM,CAAC,IAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C;;;GAGG;AACH,MAAM,CAAC,IAAM,qBAAqB,GAAG;IACjC,6BAA6B;IAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,IAAM,sBAAsB,GAAG,UAAC,SAAc;IACjD,OAAO,CAAC,SAAS,EAAE,UAAU,QAAa;QACtC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,CAAC,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AACF;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,GAAQ,EAAE,cAAoB;IAClD,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,IAAI,OAAO,YAAY,MAAM,EAAE,CAAC;QACvC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC9F,CAAC;SAAM,CAAC;QACJ,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,IAAI,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAC,SAAc,EAAE,GAAQ,EAAE,GAAQ,EAAE,OAAY;IACrE,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;IAC5B,IAAI,IAAI,EACJ,OAAO,EACP,QAAQ,GAAG,EAAE,CAAC;IAElB,qBAAqB;IACrB,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACP,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBACxC,MAAM;YACV,KAAK,QAAQ;gBACT,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC9C,MAAM;QACd,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAChB,oDAAoD;QACpD,QAAQ,GAAG,GAAG,CAAC;IACnB,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/B,kDAAkD;QAClD,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,sCAAsC;QACtC,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,GAAG,GAAG,OAAO,CAAC;QACd,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxB,CAAC;SAAM,CAAC;QACJ,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,QAAQ,EAAE,UAAU,QAAa,EAAE,QAAa;QACpD,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,IAAM,UAAU,GAAG,UAAC,eAAoB;IAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,OAAO,eAAe,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,eAAe,EAAE,UAAC,IAAS;YAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,EAAE,UAAC,KAAU,EAAE,GAAQ;oBAC/B,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBAClC,CAAC;yBAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACzB,UAAU,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,eAAe,EAAE,UAAC,KAAU,EAAE,GAAQ;YAC1C,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,eAAe,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QAC9C,OAAO,eAAe,CAAC;IAC3B,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,UAAU,CAAC,KAAU;IAC1B,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,QAAa,EAAE,YAAiB;IAChE,IAAI,YAAiB,EACjB,UAAU,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,4DAA4D;IAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,sGAAsG;IACtG,QAAQ,GAAO,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpC,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACxC,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,UAAU,KAAU;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,kFAAkF;IAClF,MAAM,CAAC,QAAQ,EAAE,UAAU,OAAY;QACnC,OAAO,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IACH,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC;AAChD,CAAC,CAAC;AAEF,IAAM,6BAA6B,GAAG,UAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAS;IACnF,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,kBAAkB,CAAC,QAAQ,CAAC,IAAI;YACjC,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBAChC,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;oBAC7B,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,GAAG;wBAC/B,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG;4BACzB,OAAO,EAAE,GAAG;yBACf,CAAC;oBACN,CAAC,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG;wBAC9B,OAAO,EAAE,OAAO;wBAChB,MAAM,EAAG,QAAQ;qBACpB,CAAC;gBACN,CAAC;gBACD,gFAAgF;gBAChF,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChG,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;oBAC7B,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACJ,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;gBAC7C,CAAC;gBACD,gFAAgF;gBAChF,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnH,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;YACD,MAAM;QACV,KAAK,kBAAkB,CAAC,QAAQ,CAAC,IAAI;YACjC,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,MAAM;QACV,KAAK,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzC,KAAK,kBAAkB,CAAC,QAAQ,CAAC,KAAK;YAClC,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3F,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,MAAM;QACV,KAAK,kBAAkB,CAAC,QAAQ,CAAC,MAAM;YACnC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;YAC7B,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3F,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,MAAM;IACd,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;EAOE;AACF,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,GAAG,EAAE,IAAI,EAAE,QAAQ;IAC5C;;;;;;;;;;;OAWG;IACH,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EACnB,SAAS,CAAC;IACd,IAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,SAAS,GAAG,QAAQ,CAAC;IACzB,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACtB,SAAS,GAAG,QAAQ,CAAC;QACzB,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAChB,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,QAAQ,CAAC;QACzB,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,MAAM;IACnC;;;;;;;;;;;OAWG;IACH,IAAI,aAAa,CAAC;IAClB,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACJ,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAS;IACxE,IAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAC1C,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClD,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAChD,oGAAoG;IACpG,IAAI,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IACrC,CAAC;IACD,6BAA6B,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,SAAS,GAAG,UAAC,QAAQ;IAC9B,IAAI,MAAM,CAAC;IACX,QAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,kBAAkB,CAAC,QAAQ,CAAC,KAAK;YAClC,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACV,KAAK,kBAAkB,CAAC,QAAQ,CAAC,IAAI;YACjC,MAAM,GAAG,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;YACxE,MAAM;QACV;YACI,MAAM,GAAG,aAAa,CAAC;YACvB,MAAM;IAEd,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;IACtD,IAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAC3F,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,aAAa,CAAC;IAClB,SAAS,qBAAqB;QAC1B,OAAO,MAAM,CAAC,kBAAkB,EAAE,UAAU,IAAI;YAC5C,oJAAoJ;YACpJ,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,aAAa,CAAC,IAAI,IAAI,KAAK,aAAa,CAAC,CAAC;QAChK,CAAC,CAAC,CAAC;IACP,CAAC;IACD,aAAa,GAAG,qBAAqB,EAAE,CAAC;IACxC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,aAAa,EAAE,UAAU,IAAI;YACjC,cAAc,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/H,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,IAAY,EAAE,QAAa,EAAE,IAAS,EAAE,OAAa,EAAE,uBAAiC;IAErH,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACjC,OAAO;IACX,CAAC;IACD,gHAAgH;IAChH,IAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,EAC9B,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACtC,IAAI,aAAa,CAAC;IAClB;;;;OAIG;IACH,IAAI,IAAI,KAAK,kBAAkB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACtE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,0FAA0F;YAC1F,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACnF,IAAI,aAAa,EAAE,CAAC;gBAChB,IAAI,GAAG,aAAa,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC;gBAC1C,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC;gBAClF,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAG,IAAI,EAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAChE,sCAAsC;gBACtC,8HAA8H;gBAC9H,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IACD,iHAAiH;IACjH,6BAA6B;IAC9B,0CAA0C;IACzC,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAClC,IAAI,IAAI,KAAK,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAClD,IAAI,QAAQ,CAAC,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC3E,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACL,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;QACzF,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;IACrF,CAAC;AACL,CAAC,CAAC;AACF,IAAM,wBAAwB,GAAG,UAAC,IAAI;IAClC,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,kCAAkC;AAClC,IAAM,WAAW,GAAG,UAAC,SAAS,EAAE,IAAI,EAAE,aAAa;IAC/C,IAAI,KAAK,CAAC;IACV,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACpB,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,GAAG,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,SAAS,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,IAAM,UAAU,GAAG,UAAC,KAAK,EAAE,IAAI,EAAE,aAAa;IACjD,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG;YAC3B,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,IAAM,WAAW,GAAG,UAAC,MAAM;IACvB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA;AAED,IAAM,UAAU,GAAG,UAAC,QAAQ;IACxB,IAAI,MAAM,CAAC;IACX,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3I,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,GAAQ,EAAE,YAAiB;IACrD,IAAM,eAAe,GAAG;QACpB,GAAG,EAAE,YAAY,CAAC,mBAAmB,CAAC,IAAI,8BAA8B;QACxE,GAAG,EAAE,YAAY,CAAC,mBAAmB,CAAC,IAAI,4CAA4C;QACtF,GAAG,EAAE,YAAY,CAAC,yBAAyB,CAAC,IAAI,oDAAoD;KACvG,CAAC;IAEF,2DAA2D;IAC3D,IAAI,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;IACzC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;IAE1D,sEAAsE;IACtE,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,qBAAqB,CAAC;IACjF,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,MAAM,IAAI,qBAAqB,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA","sourcesContent":["import {findValueOf, getValidJSON, noop, extractType, DataType, DEFAULT_FORMATS, replace} from '../utils';\n\nimport { VARIABLE_CONSTANTS } from '../../constants/variables.constants';\n\ndeclare const window: any;\n// @ts-ignore\nimport moment from 'moment';\nimport {debounce, forEach, isObject, isNumber, isArray, isString, isEmpty, split, map, trim, remove, includes, join, isUndefined, isFunction, filter, keys, get, toUpper, isDate, toLower} from 'lodash-es';\nimport he from 'he';\n\nexport let appManager: any;\nexport let httpService: any;\nexport let metadataService: any;\nexport let navigationService: any;\nexport let routerService: any;\nexport let toasterService: any;\nexport let oauthService: any;\nexport let securityService: any;\nexport let dialogService: any;\nexport let internalBoundNodeMap = new Map();\nconst timers = new Map();\nconst DOT_EXPR_REX = /^\\[(\"|')[\\w\\W]*(\\1)\\]$/;\nconst _invoke = (variable, op) => {\n let debouncedFn,\n cancelFn = noop,\n retVal;\n if (timers.has(variable)) {\n cancelFn = timers.get(variable).cancel;\n }\n cancelFn();\n debouncedFn = debounce(function () {\n retVal = variable[op]();\n // handle promises to avoid uncaught promise errors in console\n if (retVal instanceof Promise) {\n retVal.catch(noop);\n }\n }, 100);\n timers.set(variable, debouncedFn);\n debouncedFn();\n};\n\nexport const wmSetDependency = (type: string, ref: any) => {\n switch (type) {\n case 'appManager':\n appManager = ref;\n break;\n case 'http':\n httpService = ref;\n break;\n case 'metadata':\n metadataService = ref;\n break;\n case 'navigationService':\n navigationService = ref;\n break;\n case 'router':\n routerService = ref;\n break;\n case 'toaster':\n toasterService = ref;\n break;\n case 'oAuth':\n oauthService = ref;\n break;\n case 'security':\n securityService = ref;\n break;\n case 'dialog':\n dialogService = ref;\n break;\n }\n};\nexport const debounceVariableCall = _invoke;\n/**\n * returns true if HTML5 File API is available else false\n * @returns {{prototype: Blob; new(blobParts?: any[], options?: BlobPropertyBag): Blob}}\n */\nexport const isFileUploadSupported = () => {\n // ToDo - variable seperation\n return (window.File && window.FileReader && window.FileList && window.Blob);\n};\n\n/**\n * formatting the expression as required by backend which was enclosed by ${<expression>}.\n * @param fieldDefs\n * returns fieldDefs\n */\nexport const formatExportExpression = (fieldDefs: any) => {\n forEach(fieldDefs, function (fieldDef: any) {\n if (fieldDef.expression) {\n fieldDef.expression = '${' + fieldDef.expression + '}';\n }\n });\n return fieldDefs;\n};\n/**\n * prepare a blob object based on the content and content type provided\n * if content is blob itself, simply returns it back\n * @param val\n * @param valContentType\n * @returns {*}\n */\nexport const getBlob = (val: any, valContentType?: any) => {\n if (val instanceof Blob) {\n return val;\n }\n const jsonVal = getValidJSON(val);\n if (jsonVal && jsonVal instanceof Object) {\n val = new Blob([JSON.stringify(jsonVal)], { type: valContentType || 'application/json' });\n } else {\n val = new Blob([val], { type: valContentType || 'text/plain' });\n }\n return val;\n};\n/**\n * sets the value against passed key on the \"inputFields\" object in the variable\n * @param targetObj: the object in which the key, value is to be set\n * @param variable\n * @param key: can be:\n * - a string e.g. \"username\"\n * - an object, e.g. {\"username\": \"john\", \"ssn\": \"11111\"}\n * @param val\n * - if key is string, the value against it (for that data type)\n * - if key is object, not required\n * @param options\n * @returns {any}\n */\nexport const setInput = (targetObj: any, key: any, val: any, options: any) => {\n targetObj = targetObj || {};\n let keys,\n lastKey,\n paramObj = {};\n\n // content type check\n if (isObject(options)) {\n switch (options.type) {\n case 'file':\n val = getBlob(val, options.contentType);\n break;\n case 'number':\n val = isNumber(val) ? val : parseInt(val, 10);\n break;\n }\n }\n\n if (isObject(key)) {\n // check if the passed parameter is an object itself\n paramObj = key;\n } else if (key.indexOf('.') > -1) {\n // check for '.' in key e.g. 'employee.department'\n keys = key.split('.');\n lastKey = keys.pop();\n // Finding the object based on the key\n targetObj = findValueOf(targetObj, keys.join('.'), true);\n key = lastKey;\n paramObj[key] = val;\n } else {\n paramObj[key] = val;\n }\n\n forEach(paramObj, function (paramVal: any, paramKey: any) {\n targetObj[paramKey] = paramVal;\n });\n return targetObj;\n};\n\n/**\n * This method decodes the variable data which is encoded from backend before showing in the widgets.\n * It takes variable response content as input and iterates recursively,\n * if the value is string type then it will decode the data.\n * @param responseContent (Array of objects)\n */\nexport const decodeData = (responseContent: any) => {\n if (!responseContent) {\n return responseContent;\n }\n if (isArray(responseContent)) {\n forEach(responseContent, (data: any) => {\n if (isString(data)) {\n data = htmlDecode(data);\n } else if (isObject(data)) {\n forEach(data, (value: any, key: any) => {\n if (value && isString(value)) {\n data[key] = htmlDecode(value);\n } else if (isObject(value)) {\n decodeData(value);\n }\n });\n }\n });\n } else if (isObject(responseContent)) {\n forEach(responseContent, (value: any, key: any) => {\n if (value && isString(value)) {\n responseContent[key] = htmlDecode(value);\n } else if (isObject(value)) {\n decodeData(value);\n }\n });\n } else if (isString(responseContent)) {\n responseContent = htmlDecode(responseContent);\n return responseContent;\n }\n};\n\nfunction htmlDecode(input: any) {\n return he.unescape(input);\n}\n\n/**\n *\n * @param varOrder\n * @param optionsOrder\n * @returns {any}\n */\nexport const getEvaluatedOrderBy = (varOrder: any, optionsOrder: any) => {\n let optionFields: any,\n varOrderBy;\n // If options order by is not defined, return variable order\n if (!optionsOrder || isEmpty(optionsOrder)) {\n return varOrder;\n }\n // If variable order by is not defined, return options order\n if (!varOrder) {\n return optionsOrder;\n }\n // If both are present, combine the options order and variable order, with options order as precedence\n varOrder = split(varOrder, ',');\n optionsOrder = split(optionsOrder, ',');\n optionFields = map(optionsOrder, function (order: any) {\n return split(trim(order), ' ')[0];\n });\n // If a field is present in both options and variable, remove the variable orderby\n remove(varOrder, function (orderBy: any) {\n return includes(optionFields, split(trim(orderBy), ' ')[0]);\n });\n varOrderBy = varOrder.length ? ',' + join(varOrder, ',') : '';\n return join(optionsOrder, ',') + varOrderBy;\n};\n\nconst processVariablePostBindUpdate = (nodeName, nodeVal, nodeType, variable, noUpdate?) => {\n switch (variable.category) {\n case VARIABLE_CONSTANTS.CATEGORY.LIVE:\n if (variable.operation === 'read') {\n if (nodeName === 'dataBinding') {\n forEach(nodeVal, function (val, key) {\n variable.filterFields[key] = {\n 'value': val\n };\n });\n } else {\n variable.filterFields[nodeName] = {\n 'value': nodeVal,\n 'type' : nodeType\n };\n }\n /* if auto-update set for the variable with read operation only, get its data */\n if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.listRecords) && !noUpdate) {\n _invoke(variable, 'listRecords');\n }\n } else {\n if (nodeName === 'dataBinding') {\n variable.inputFields = nodeVal;\n } else {\n variable.inputFields[nodeName] = nodeVal;\n }\n /* if auto-update set for the variable with read operation only, get its data */\n if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable[variable.operation + 'Record']) && !noUpdate) {\n _invoke(variable, variable.operation + 'Record');\n }\n }\n break;\n case VARIABLE_CONSTANTS.CATEGORY.CRUD:\n if (variable.operationType === 'list' && variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.invoke) && !noUpdate) {\n _invoke(variable, 'invoke');\n }\n break;\n case VARIABLE_CONSTANTS.CATEGORY.SERVICE:\n case VARIABLE_CONSTANTS.CATEGORY.LOGIN:\n if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.invoke) && !noUpdate) {\n _invoke(variable, 'invoke');\n }\n break;\n case VARIABLE_CONSTANTS.CATEGORY.DEVICE:\n variable[nodeName] = nodeVal;\n if (variable.autoUpdate && !isUndefined(nodeVal) && isFunction(variable.invoke) && !noUpdate) {\n _invoke(variable, 'invoke');\n }\n break;\n }\n};\n\n/**\n* Returns the object node for a bind object, where the value has to be updated\n* obj.target = \"a\"\n * @param obj\n* @param root\n* @param variable\n* @returns {*}\n*/\nexport const getTargetObj = (obj, root, variable) => {\n /*\n * if the target key is in the form as \"['my.param']\"\n * keep the target key as \"my.param\" and do not split further\n * this is done, so that, the computed value against this binding is assigned as\n * {\"my.param\": \"value\"}\n * and not as\n * {\n * \"my\": {\n * \"param\": \"value\"\n * }\n * }\n */\n let target = obj.target,\n targetObj;\n const rootNode = variable[root];\n if (DOT_EXPR_REX.test(target)) {\n targetObj = rootNode;\n } else {\n target = target.substr(0, target.lastIndexOf('.'));\n if (obj.target === root) {\n targetObj = variable;\n } else if (target) {\n targetObj = findValueOf(rootNode, target, true);\n } else {\n targetObj = rootNode;\n }\n }\n return targetObj;\n};\n\n/**\n * Gets the key for the target object\n * the computed value will be updated against this key in the targetObject(computed by getTargetObj())\n * @param target\n * @param regex\n * @returns {*}\n */\nexport const getTargetNodeKey = (target) => {\n /*\n * if the target key is in the form as \"['my.param']\"\n * keep the target key as \"my.param\" and do not split further\n * this is done, so that, the computed value against this binding is assigned as\n * {\"my.param\": \"value\"}\n * and not as\n * {\n * \"my\": {\n * \"param\": \"value\"\n * }\n * }\n */\n let targetNodeKey;\n if (DOT_EXPR_REX.test(target)) {\n targetNodeKey = target.replace(/^(\\[[\"'])|([\"']\\])$/g, '');\n } else {\n targetNodeKey = target.split('.').pop();\n }\n return targetNodeKey;\n};\n\nexport const setValueToNode = (target, obj, root, variable, value, noUpdate?) => {\n const targetNodeKey = getTargetNodeKey(target),\n targetObj = getTargetObj(obj, root, variable);\n value = !isUndefined(value) ? value : obj.value;\n /* sanity check, user can bind parent nodes to non-object values, so child node bindings may fail */\n if (targetObj) {\n targetObj[targetNodeKey] = value;\n }\n processVariablePostBindUpdate(targetNodeKey, value, obj.type, variable, noUpdate);\n};\n\nexport const getTarget = (variable) => {\n let target;\n switch(variable.category) {\n case VARIABLE_CONSTANTS.CATEGORY.MODEL:\n target = 'dataSet';\n break;\n case VARIABLE_CONSTANTS.CATEGORY.LIVE:\n target = variable.operation === 'read' ? 'filterFields' : 'inputFields';\n break;\n default:\n target = 'dataBinding';\n break;\n\n }\n return target;\n}\n\n/**\n * The model internalBoundNodeMap stores the reference to latest computed values against internal(nested) bound nodes\n * This is done so that the internal node's computed value is not lost, once its parent node's value is computed at a later point\n * E.g.\n * Variable.employeeVar has following bindings\n * \"dataBinding\": [\n {\n \"target\": \"department.budget\",\n \"value\": \"bind:Variables.budgetVar.dataSet\"\n },\n {\n \"target\": \"department\",\n \"value\": \"bind:Variables.departmentVar.dataSet\"\n }\n ]\n * When department.budget is computed, employeeVar.dataSet = {\n * \"department\": {\n * \"budget\": {\"q1\": 1111}\n * }\n * }\n *\n * When department is computed\n * \"department\": {\n * \"name\": \"HR\",\n * \"location\": \"Hyderabad\"\n * }\n * The budget field (computed earlier) is LOST.\n *\n * To avoid this, the latest values against internal nodes (in this case department.budget) are stored in a map\n * These values are assigned back to internal fields if the parent is computed (in this case department)\n * @param target\n * @param root\n * @param variable\n */\nexport const updateInternalNodes = (target, root, variable) => {\n const boundInternalNodes = keys(get(internalBoundNodeMap.get(variable), [variable.name, root])),\n targetNodeKey = getTargetNodeKey(target);\n let internalNodes;\n function findInternalNodeBound() {\n return filter(boundInternalNodes, function (node) {\n // the later condition in check (targetNodeKey === root || targetNodeKey === 'dataBinding') is specifically for live variable of insert/update types\n return (node !== targetNodeKey && includes(node, targetNodeKey)) || ((targetNodeKey === root || targetNodeKey === 'dataBinding') && node !== targetNodeKey);\n });\n }\n internalNodes = findInternalNodeBound();\n if ((internalNodes.length)) {\n forEach(internalNodes, function (node) {\n setValueToNode(node, {target: node}, root, variable, get(internalBoundNodeMap.get(variable), [variable.name, root, node]));\n });\n }\n};\n\nexport const initiateCallback = (type: string, variable: any, data: any, options?: any, skipDefaultNotification?: boolean) => {\n\n if (variable._skipInitiateCallback) {\n return;\n }\n /*checking if event is available and variable has event property and variable event property bound to function*/\n const eventValues = variable[type],\n callBackScope = variable._context;\n let errorVariable;\n /**\n * For error event:\n * trigger app level error handler.\n * if no event is assigned, trigger default appNotification variable.\n */\n if (type === VARIABLE_CONSTANTS.EVENT.ERROR && !skipDefaultNotification) {\n if (!eventValues) {\n /* in case of error, if no event assigned, handle through default notification variable */\n errorVariable = callBackScope.Actions[VARIABLE_CONSTANTS.DEFAULT_VAR.NOTIFICATION];\n if (errorVariable) {\n data = errorVariable.getMessage() || data;\n data = isString(data) ? data : 'An error has occured. Please check the app logs.';\n errorVariable.invoke({ 'message' : data}, undefined, undefined);\n // $rootScope.$evalAsync(function () {\n // $rootScope.$emit(\"invoke-service\", VARIABLE_CONSTANTS.DEFAULT_VAR.NOTIFICATION, {scope: callBackScope, message: response});\n // });\n }\n }\n }\n // TODO: [Vibhu], check whether to support legacy event calling mechanism (ideally, it should have been migrated)\n // ToDo - variable seperation\n // const fn = $parseEvent(variable[type]);\n const fn = variable[type] || noop;\n if (type === VARIABLE_CONSTANTS.EVENT.BEFORE_UPDATE) {\n if (variable.category === 'wm.LiveVariable' && variable.operation === 'read') {\n return fn(variable._context, {variable: variable, dataFilter: data, options: options});\n } else {\n return fn(variable._context, {variable: variable, inputData: data, options: options});\n }\n } else {\n return fn(variable._context, {variable: variable, data: data, options: options});\n }\n};\nconst getDateTimeFormatForType = (type) => {\n return DEFAULT_FORMATS[toUpper(type)];\n};\n\n// Format value for datetime types\nconst _formatDate = (dateValue, type, dateFormatter) => {\n let epoch;\n if (isDate(dateValue)) {\n epoch = dateValue.getTime();\n } else {\n if (!isNaN(dateValue)) {\n dateValue = parseInt(dateValue, 10);\n }\n epoch = dateValue && moment(dateValue).valueOf();\n }\n if (isNaN(epoch) && type !== DataType.TIME) {\n return epoch;\n }\n if (type === DataType.TIMESTAMP) {\n return epoch;\n }\n if (type === DataType.TIME && !epoch) {\n epoch = moment(new Date().toDateString() + ' ' + dateValue).valueOf();\n }\n return dateValue && dateFormatter.format(epoch, getDateTimeFormatForType(type));\n};\n\n// Function to convert values of date time types into default formats\nexport const formatDate = (value, type, dateFormatter) => {\n if (includes(type, '.')) {\n type = toLower(extractType(type));\n }\n if (isArray(value)) {\n return map(value, function (val) {\n return _formatDate(val, type, dateFormatter);\n });\n }\n return _formatDate(value, type, dateFormatter);\n};\n\nconst parseErrors = (errors) => {\n let errMsg = '';\n if (errors && errors.error && errors.error.length) {\n errors.error.forEach((errorDetails, i) => {\n errMsg += parseError(errorDetails) + (i > 0 ? '\\n' : '');\n });\n }\n return errMsg;\n}\n\nconst parseError = (errorObj) => {\n let errMsg;\n errMsg = errorObj.message ? replace(errorObj.message, errorObj.parameters, true) : ((errorObj.parameters && errorObj.parameters[0]) || '');\n return errMsg;\n}\n\n/**\n * This method filters and returns error message from the failed network call response.\n * @param err, error form network call failure\n */\nexport const getErrMessage = (err: any, localeObject: any) => {\n const HTTP_STATUS_MSG = {\n 404: localeObject['MESSAGE_404_ERROR'] || 'Requested resource not found',\n 401: localeObject['MESSAGE_401_ERROR'] || 'Requested resource requires authentication',\n 403: localeObject['LABEL_FORBIDDEN_MESSAGE'] || 'The requested resource access/action is forbidden.'\n };\n\n // check if error message present for responded http status\n let errMsg = HTTP_STATUS_MSG[err.status];\n let errorDetails = err.error || err.data;\n errorDetails = getValidJSON(errorDetails) || errorDetails;\n\n // WM services have the format of error response as errorDetails.error\n if (errorDetails && errorDetails.errors) {\n errMsg = parseErrors(errorDetails.errors) || errMsg || 'Service Call Failed';\n } else {\n errMsg = errMsg || 'Service Call Failed';\n }\n return errMsg;\n}"]}
|