@steedos/objectql 2.4.0-beta.2 → 2.4.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/dynamic-load/client_script.js +1 -1
  2. package/lib/dynamic-load/client_script.js.map +1 -1
  3. package/lib/dynamic-load/package.js +5 -0
  4. package/lib/dynamic-load/package.js.map +1 -1
  5. package/lib/services/helpers/graphql/consts.d.ts +2 -0
  6. package/lib/services/helpers/graphql/consts.js +3 -1
  7. package/lib/services/helpers/graphql/consts.js.map +1 -1
  8. package/lib/services/helpers/graphql/dealWithRelatedFields.d.ts +16 -0
  9. package/lib/services/helpers/graphql/dealWithRelatedFields.js +73 -0
  10. package/lib/services/helpers/graphql/dealWithRelatedFields.js.map +1 -0
  11. package/lib/services/helpers/graphql/generateActionGraphqlProp.d.ts +2 -0
  12. package/lib/services/helpers/graphql/generateActionGraphqlProp.js +38 -0
  13. package/lib/services/helpers/graphql/generateActionGraphqlProp.js.map +1 -0
  14. package/lib/services/helpers/graphql/generateSettingsGraphql.d.ts +5 -0
  15. package/lib/services/helpers/graphql/generateSettingsGraphql.js +215 -0
  16. package/lib/services/helpers/graphql/generateSettingsGraphql.js.map +1 -0
  17. package/lib/services/helpers/graphql/getGraphqlActions.d.ts +2 -0
  18. package/lib/services/helpers/graphql/getGraphqlActions.js +894 -0
  19. package/lib/services/helpers/graphql/getGraphqlActions.js.map +1 -0
  20. package/lib/services/helpers/graphql/index.d.ts +6 -26
  21. package/lib/services/helpers/graphql/index.js +16 -1191
  22. package/lib/services/helpers/graphql/index.js.map +1 -1
  23. package/lib/services/helpers/graphql/utils.d.ts +8 -0
  24. package/lib/services/helpers/graphql/utils.js +126 -0
  25. package/lib/services/helpers/graphql/utils.js.map +1 -0
  26. package/lib/services/objectService.d.ts +6 -0
  27. package/lib/services/objectService.js +29 -2
  28. package/lib/services/objectService.js.map +1 -1
  29. package/lib/services/objectServiceDispatcher.js +10 -0
  30. package/lib/services/objectServiceDispatcher.js.map +1 -1
  31. package/lib/types/object.js +1 -1
  32. package/lib/types/object.js.map +1 -1
  33. package/package.json +13 -13
@@ -0,0 +1,894 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGraphqlActions = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var _ = require("underscore");
6
+ var i18n_1 = require("@steedos/i18n");
7
+ var moment = require("moment");
8
+ var __1 = require("../../..");
9
+ var consts_1 = require("./consts");
10
+ var getQueryFields_1 = require("./getQueryFields");
11
+ var utils_1 = require("./utils");
12
+ function getGraphqlActions(objectConfig) {
13
+ var actions = {};
14
+ var objName = objectConfig.name;
15
+ actions["".concat(consts_1.GRAPHQL_ACTION_PREFIX).concat(consts_1.EXPAND_SUFFIX, "_multiple")] = {
16
+ handler: function (ctx) {
17
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
18
+ var _a, ids, objectName, referenceToField, filters, selector, steedosSchema, obj, resolveInfo, fieldNames;
19
+ return tslib_1.__generator(this, function (_b) {
20
+ _a = ctx.params, ids = _a.ids, objectName = _a.objectName, referenceToField = _a.referenceToField;
21
+ if (_.isEmpty(ids)) {
22
+ return [2, null];
23
+ }
24
+ filters = [[referenceToField || "_id", "in", ids]];
25
+ selector = { filters: filters };
26
+ steedosSchema = (0, __1.getSteedosSchema)();
27
+ obj = steedosSchema.getObject(objectName);
28
+ resolveInfo = ctx.meta.resolveInfo;
29
+ fieldNames = (0, getQueryFields_1.getQueryFields)(resolveInfo);
30
+ if (!_.isEmpty(fieldNames)) {
31
+ selector.fields = fieldNames;
32
+ }
33
+ return [2, obj.find(selector)];
34
+ });
35
+ });
36
+ },
37
+ };
38
+ actions["".concat(consts_1.GRAPHQL_ACTION_PREFIX).concat(consts_1.EXPAND_SUFFIX)] = {
39
+ handler: function (ctx) {
40
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
41
+ var _a, id, objectName, referenceToField, steedosSchema, obj, selector, resolveInfo, fieldNames;
42
+ return tslib_1.__generator(this, function (_b) {
43
+ switch (_b.label) {
44
+ case 0:
45
+ _a = ctx.params, id = _a.id, objectName = _a.objectName, referenceToField = _a.referenceToField;
46
+ if (!id) {
47
+ return [2];
48
+ }
49
+ steedosSchema = (0, __1.getSteedosSchema)();
50
+ obj = steedosSchema.getObject(objectName);
51
+ selector = { filters: [[referenceToField || "_id", "=", id]] };
52
+ resolveInfo = ctx.meta.resolveInfo;
53
+ fieldNames = (0, getQueryFields_1.getQueryFields)(resolveInfo);
54
+ if (!_.isEmpty(fieldNames)) {
55
+ selector.fields = fieldNames;
56
+ }
57
+ return [4, obj.find(selector)];
58
+ case 1: return [2, (_b.sent())[0]];
59
+ }
60
+ });
61
+ });
62
+ },
63
+ };
64
+ if ([
65
+ "cms_files",
66
+ "tasks",
67
+ "notes",
68
+ "events",
69
+ "audit_records",
70
+ "instances",
71
+ "approvals",
72
+ ].includes(objName)) {
73
+ actions["".concat(consts_1.GRAPHQL_ACTION_PREFIX).concat(consts_1.RELATED_PREFIX, "_enabled")] = {
74
+ handler: function (ctx) {
75
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
76
+ var params, _parentId, _related_params, objectName, parentObjectName, foreignKey, userSession, steedosSchema, object, filters;
77
+ return tslib_1.__generator(this, function (_a) {
78
+ switch (_a.label) {
79
+ case 0:
80
+ params = ctx.params;
81
+ _parentId = params._parentId, _related_params = params._related_params;
82
+ objectName = _related_params.objectName, parentObjectName = _related_params.parentObjectName, foreignKey = _related_params.foreignKey;
83
+ userSession = ctx.meta.user;
84
+ steedosSchema = (0, __1.getSteedosSchema)();
85
+ object = steedosSchema.getObject(objectName);
86
+ filters = [];
87
+ filters = [
88
+ ["".concat(foreignKey, ".o"), "=", parentObjectName],
89
+ ["".concat(foreignKey, ".ids"), "=", _parentId],
90
+ ];
91
+ if (params.filters) {
92
+ filters.push(params.filters);
93
+ }
94
+ params.filters = filters;
95
+ return [4, object.find(params, userSession)];
96
+ case 1: return [2, _a.sent()];
97
+ }
98
+ });
99
+ });
100
+ },
101
+ };
102
+ }
103
+ actions["".concat(consts_1.GRAPHQL_ACTION_PREFIX).concat(consts_1.RELATED_PREFIX)] = {
104
+ handler: function (ctx) {
105
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
106
+ var params, _parentId, _related_params, objectName, parentObjectName, fieldName, referenceToParentFieldName, userSession, steedosSchema, object, parentObj, parent, filters, _idValue, resolveInfo, fieldNames;
107
+ return tslib_1.__generator(this, function (_a) {
108
+ switch (_a.label) {
109
+ case 0:
110
+ params = ctx.params;
111
+ _parentId = params._parentId, _related_params = params._related_params;
112
+ objectName = _related_params.objectName, parentObjectName = _related_params.parentObjectName, fieldName = _related_params.fieldName, referenceToParentFieldName = _related_params.referenceToParentFieldName;
113
+ userSession = ctx.meta.user;
114
+ steedosSchema = (0, __1.getSteedosSchema)();
115
+ object = steedosSchema.getObject(objectName);
116
+ parentObj = steedosSchema.getObject(parentObjectName);
117
+ return [4, parentObj.findOne(_parentId)];
118
+ case 1:
119
+ parent = _a.sent();
120
+ filters = [];
121
+ _idValue = parent._id;
122
+ if (referenceToParentFieldName) {
123
+ _idValue = parent[referenceToParentFieldName];
124
+ }
125
+ filters = [[fieldName, "=", _idValue]];
126
+ if (params.filters) {
127
+ filters.push(params.filters);
128
+ }
129
+ params.filters = filters;
130
+ resolveInfo = ctx.meta.resolveInfo;
131
+ fieldNames = (0, getQueryFields_1.getQueryFields)(resolveInfo);
132
+ if (!_.isEmpty(fieldNames)) {
133
+ params.fields = fieldNames;
134
+ }
135
+ return [4, object.find(params, userSession)];
136
+ case 2: return [2, _a.sent()];
137
+ }
138
+ });
139
+ });
140
+ },
141
+ };
142
+ actions["".concat(consts_1.GRAPHQL_ACTION_PREFIX).concat(consts_1.DISPLAY_PREFIX)] = {
143
+ handler: function (ctx) {
144
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
145
+ var params, __objectName, userSession, selectFieldNames, resolveInfo, fieldNames, result;
146
+ return tslib_1.__generator(this, function (_a) {
147
+ switch (_a.label) {
148
+ case 0:
149
+ params = ctx.params;
150
+ __objectName = params.__objectName;
151
+ userSession = ctx.meta.user;
152
+ selectFieldNames = [];
153
+ resolveInfo = ctx.meta.resolveInfo;
154
+ fieldNames = (0, getQueryFields_1.getQueryFields)(resolveInfo);
155
+ if (!_.isEmpty(fieldNames)) {
156
+ selectFieldNames = fieldNames;
157
+ }
158
+ return [4, translateToDisplay(__objectName, params, userSession, selectFieldNames)];
159
+ case 1:
160
+ result = _a.sent();
161
+ return [2, result];
162
+ }
163
+ });
164
+ });
165
+ },
166
+ };
167
+ actions["".concat(consts_1.GRAPHQL_ACTION_PREFIX).concat(consts_1.UI_PREFIX)] = {
168
+ handler: function (ctx) {
169
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
170
+ var params, __objectName, userSession, selectFieldNames, resolveInfo, fieldNames, result;
171
+ return tslib_1.__generator(this, function (_a) {
172
+ switch (_a.label) {
173
+ case 0:
174
+ params = ctx.params;
175
+ __objectName = params.__objectName;
176
+ userSession = ctx.meta.user;
177
+ selectFieldNames = [];
178
+ resolveInfo = ctx.meta.resolveInfo;
179
+ fieldNames = (0, getQueryFields_1.getQueryFields)(resolveInfo);
180
+ if (!_.isEmpty(fieldNames)) {
181
+ selectFieldNames = fieldNames;
182
+ }
183
+ return [4, translateToUI(__objectName, params, userSession, selectFieldNames)];
184
+ case 1:
185
+ result = _a.sent();
186
+ return [2, result];
187
+ }
188
+ });
189
+ });
190
+ },
191
+ };
192
+ actions["".concat(consts_1.GRAPHQL_ACTION_PREFIX).concat(consts_1.PERMISSIONS_PREFIX)] = {
193
+ handler: function (ctx) {
194
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
195
+ var params, __objectName, userSession;
196
+ return tslib_1.__generator(this, function (_a) {
197
+ switch (_a.label) {
198
+ case 0:
199
+ params = ctx.params;
200
+ __objectName = params.__objectName;
201
+ userSession = ctx.meta.user;
202
+ return [4, (0, utils_1.callObjectServiceAction)("@".concat(__objectName, ".getRecordPermissionsById"), userSession, {
203
+ recordId: params._id
204
+ })];
205
+ case 1: return [2, _a.sent()];
206
+ }
207
+ });
208
+ });
209
+ },
210
+ };
211
+ return actions;
212
+ }
213
+ exports.getGraphqlActions = getGraphqlActions;
214
+ function translateToDisplay(objectName, doc, userSession, selectorFieldNames) {
215
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
216
+ function _translateToDisplay(doc, selectorFieldNames) {
217
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
218
+ var displayObj, _loop_1, selectorFieldNames_1, selectorFieldNames_1_1, name, e_1_1;
219
+ var e_1, _a;
220
+ return tslib_1.__generator(this, function (_b) {
221
+ switch (_b.label) {
222
+ case 0:
223
+ displayObj = {};
224
+ _loop_1 = function (name) {
225
+ var field, fType, label, map_1, value, translatedField, translatedFieldOptions, labels_1, i, refTo, refField, refValue, refObj, nameFieldKey, refRecords, refRecord, refTo, refField, refValue, refObj, nameFieldKey, refRecords, refRecord, refValue, refTo, refValues, refObj, nameFieldKey, refRecords, fileLabel, value, fileObjectName, fileObject, fileNameFieldKey, fileRecords, fileRecord;
226
+ return tslib_1.__generator(this, function (_c) {
227
+ switch (_c.label) {
228
+ case 0:
229
+ if (!Object.prototype.hasOwnProperty.call(fields, name)) return [3, 41];
230
+ field = fields[name];
231
+ if (!_.has(doc, name)) return [3, 40];
232
+ fType = field.type;
233
+ if (!(fType == "text")) return [3, 1];
234
+ displayObj[name] = doc[name] || "";
235
+ return [3, 39];
236
+ case 1:
237
+ if (!(fType == "textarea")) return [3, 2];
238
+ displayObj[name] = doc[name] || "";
239
+ return [3, 39];
240
+ case 2:
241
+ if (!(fType == "html_text")) return [3, 3];
242
+ displayObj[name] = doc[name] || "";
243
+ return [3, 39];
244
+ case 3:
245
+ if (!(fType == "html")) return [3, 4];
246
+ displayObj[name] = doc[name] || "";
247
+ return [3, 39];
248
+ case 4:
249
+ if (!(fType == "select")) return [3, 5];
250
+ label = "";
251
+ map_1 = {};
252
+ value = doc[name];
253
+ translatedField = getTranslatedFieldConfig(objConfig, name);
254
+ translatedFieldOptions = translatedField && translatedField.options;
255
+ _.forEach(translatedFieldOptions, function (o) {
256
+ map_1[o.value] = o.label;
257
+ });
258
+ if (field.multiple) {
259
+ labels_1 = [];
260
+ _.forEach(value, function (v) {
261
+ labels_1.push(map_1[v]);
262
+ });
263
+ label = labels_1.join(",");
264
+ }
265
+ else {
266
+ label = map_1[value];
267
+ }
268
+ displayObj[name] = label;
269
+ return [3, 39];
270
+ case 5:
271
+ if (!(fType == "boolean")) return [3, 6];
272
+ if (doc[name]) {
273
+ displayObj[name] = "√";
274
+ }
275
+ else {
276
+ displayObj[name] = "";
277
+ }
278
+ return [3, 39];
279
+ case 6:
280
+ if (!(fType == "date")) return [3, 7];
281
+ displayObj[name] = doc[name] ? moment.utc(doc[name])
282
+ .format("YYYY-MM-DD") : '';
283
+ return [3, 39];
284
+ case 7:
285
+ if (!(fType == "datetime")) return [3, 8];
286
+ displayObj[name] = doc[name] ? moment(doc[name])
287
+ .utcOffset(utcOffset)
288
+ .format("YYYY-MM-DD HH:mm") : '';
289
+ return [3, 39];
290
+ case 8:
291
+ if (!(fType == "time")) return [3, 9];
292
+ displayObj[name] = doc[name] ? moment.utc(doc[name])
293
+ .format("HH:mm") : '';
294
+ return [3, 39];
295
+ case 9:
296
+ if (!(fType == "number")) return [3, 10];
297
+ displayObj[name] = doc[name] ? (0, utils_1.numberToString)(doc[name], field.scale) : "";
298
+ return [3, 39];
299
+ case 10:
300
+ if (!(fType == "currency")) return [3, 11];
301
+ displayObj[name] = doc[name] ? (0, utils_1.numberToString)(doc[name], field.scale) : "";
302
+ return [3, 39];
303
+ case 11:
304
+ if (!(fType == "percent")) return [3, 12];
305
+ displayObj[name] = "".concat(doc[name] * 100, "%");
306
+ return [3, 39];
307
+ case 12:
308
+ if (!(fType == "password")) return [3, 13];
309
+ displayObj[name] = "";
310
+ if (_.isString(doc[name])) {
311
+ for (i = 0; i < doc[name].length; i++) {
312
+ displayObj[name] += "*";
313
+ }
314
+ }
315
+ return [3, 39];
316
+ case 13:
317
+ if (!(fType == "lookup" && _.isString(field.reference_to))) return [3, 19];
318
+ refTo = field.reference_to;
319
+ refField = field.reference_to_field || '_id';
320
+ if (refTo === 'users') {
321
+ refTo = 'space_users';
322
+ refField = 'user';
323
+ }
324
+ refValue = doc[name];
325
+ if (!refValue) {
326
+ return [2, "continue"];
327
+ }
328
+ refObj = steedosSchema.getObject(refTo);
329
+ return [4, refObj.getNameFieldKey()];
330
+ case 14:
331
+ nameFieldKey = _c.sent();
332
+ if (!field.multiple) return [3, 16];
333
+ return [4, refObj.find({
334
+ filters: [refField, "in", refValue],
335
+ fields: [nameFieldKey],
336
+ })];
337
+ case 15:
338
+ refRecords = _c.sent();
339
+ displayObj[name] = _.pluck(refRecords, nameFieldKey).join(',');
340
+ return [3, 18];
341
+ case 16: return [4, refObj.find({
342
+ filters: [refField, "=", refValue],
343
+ fields: [nameFieldKey],
344
+ })];
345
+ case 17:
346
+ refRecord = (_c.sent())[0];
347
+ if (refRecord) {
348
+ displayObj[name] = refRecord[nameFieldKey];
349
+ }
350
+ _c.label = 18;
351
+ case 18: return [3, 39];
352
+ case 19:
353
+ if (!(fType == "master_detail" && _.isString(field.reference_to))) return [3, 25];
354
+ refTo = field.reference_to;
355
+ refField = field.reference_to_field || '_id';
356
+ if (refTo === 'users') {
357
+ refTo = 'space_users';
358
+ refField = 'user';
359
+ }
360
+ refValue = doc[name];
361
+ if (!refValue) {
362
+ return [2, "continue"];
363
+ }
364
+ refObj = steedosSchema.getObject(refTo);
365
+ return [4, refObj.getNameFieldKey()];
366
+ case 20:
367
+ nameFieldKey = _c.sent();
368
+ if (!field.multiple) return [3, 22];
369
+ return [4, refObj.find({
370
+ filters: [refField, "in", refValue],
371
+ fields: [nameFieldKey],
372
+ })];
373
+ case 21:
374
+ refRecords = _c.sent();
375
+ displayObj[name] = _.pluck(refRecords, nameFieldKey).join(',');
376
+ return [3, 24];
377
+ case 22: return [4, refObj.find({
378
+ filters: [refField, "=", refValue],
379
+ fields: [nameFieldKey],
380
+ })];
381
+ case 23:
382
+ refRecord = (_c.sent())[0];
383
+ if (refRecord) {
384
+ displayObj[name] = refRecord[nameFieldKey];
385
+ }
386
+ _c.label = 24;
387
+ case 24: return [3, 39];
388
+ case 25:
389
+ if (!((fType == "master_detail" || fType == "lookup") && field.reference_to && !_.isString(field.reference_to))) return [3, 28];
390
+ refValue = doc[name];
391
+ if (!refValue) {
392
+ return [2, "continue"];
393
+ }
394
+ refTo = refValue.o;
395
+ refValues = refValue.ids;
396
+ if (!refTo) {
397
+ return [2, "continue"];
398
+ }
399
+ refObj = steedosSchema.getObject(refTo);
400
+ return [4, refObj.getNameFieldKey()];
401
+ case 26:
402
+ nameFieldKey = _c.sent();
403
+ return [4, refObj.find({
404
+ filters: ["_id", "in", refValues],
405
+ fields: [nameFieldKey]
406
+ })];
407
+ case 27:
408
+ refRecords = _c.sent();
409
+ displayObj[name] = _.pluck(refRecords, nameFieldKey).join(',');
410
+ return [3, 39];
411
+ case 28:
412
+ if (!(fType == "autonumber")) return [3, 29];
413
+ displayObj[name] = doc[name] || "";
414
+ return [3, 39];
415
+ case 29:
416
+ if (!(fType == "url")) return [3, 30];
417
+ displayObj[name] = doc[name] || "";
418
+ return [3, 39];
419
+ case 30:
420
+ if (!(fType == "email")) return [3, 31];
421
+ displayObj[name] = doc[name] || "";
422
+ return [3, 39];
423
+ case 31:
424
+ if (!(fType == "formula")) return [3, 32];
425
+ displayObj[name] = doc[name] || "";
426
+ return [3, 39];
427
+ case 32:
428
+ if (!(fType == "summary")) return [3, 33];
429
+ displayObj[name] = doc[name] || "";
430
+ return [3, 39];
431
+ case 33:
432
+ if (!(fType == "image" || fType == "file")) return [3, 38];
433
+ fileLabel = "";
434
+ value = doc[name];
435
+ if (!value) {
436
+ return [2, "continue"];
437
+ }
438
+ fileObjectName = fType == "image" ? "cfs_images_filerecord" : "cfs_files_filerecord";
439
+ fileObject = steedosSchema.getObject(fileObjectName);
440
+ fileNameFieldKey = "original.name";
441
+ if (!field.multiple) return [3, 35];
442
+ return [4, fileObject.find({
443
+ filters: ["_id", "in", value],
444
+ fields: [fileNameFieldKey],
445
+ })];
446
+ case 34:
447
+ fileRecords = _c.sent();
448
+ fileLabel = _.map(fileRecords, function (fileRecord) {
449
+ var _a;
450
+ return (_a = fileRecord.original) === null || _a === void 0 ? void 0 : _a.name;
451
+ }).join(",");
452
+ return [3, 37];
453
+ case 35: return [4, fileObject.find({
454
+ filters: ["_id", "=", value],
455
+ fields: [fileNameFieldKey],
456
+ })];
457
+ case 36:
458
+ fileRecord = (_c.sent())[0];
459
+ if (fileRecord) {
460
+ fileLabel = fileRecord["original"]["name"];
461
+ }
462
+ _c.label = 37;
463
+ case 37:
464
+ displayObj[name] = fileLabel;
465
+ return [3, 39];
466
+ case 38:
467
+ console.error("Graphql Display: need to handle new field type ".concat(field.type, " for ").concat(objectName, "."));
468
+ displayObj[name] = doc[name] || "";
469
+ _c.label = 39;
470
+ case 39: return [3, 41];
471
+ case 40:
472
+ displayObj[name] = "";
473
+ _c.label = 41;
474
+ case 41: return [2];
475
+ }
476
+ });
477
+ };
478
+ _b.label = 1;
479
+ case 1:
480
+ _b.trys.push([1, 6, 7, 8]);
481
+ selectorFieldNames_1 = tslib_1.__values(selectorFieldNames), selectorFieldNames_1_1 = selectorFieldNames_1.next();
482
+ _b.label = 2;
483
+ case 2:
484
+ if (!!selectorFieldNames_1_1.done) return [3, 5];
485
+ name = selectorFieldNames_1_1.value;
486
+ return [5, _loop_1(name)];
487
+ case 3:
488
+ _b.sent();
489
+ _b.label = 4;
490
+ case 4:
491
+ selectorFieldNames_1_1 = selectorFieldNames_1.next();
492
+ return [3, 2];
493
+ case 5: return [3, 8];
494
+ case 6:
495
+ e_1_1 = _b.sent();
496
+ e_1 = { error: e_1_1 };
497
+ return [3, 8];
498
+ case 7:
499
+ try {
500
+ if (selectorFieldNames_1_1 && !selectorFieldNames_1_1.done && (_a = selectorFieldNames_1.return)) _a.call(selectorFieldNames_1);
501
+ }
502
+ finally { if (e_1) throw e_1.error; }
503
+ return [7];
504
+ case 8: return [2, displayObj];
505
+ }
506
+ });
507
+ });
508
+ }
509
+ var lng, steedosSchema, object, objConfig, fields, utcOffset, displayDoc;
510
+ return tslib_1.__generator(this, function (_a) {
511
+ switch (_a.label) {
512
+ case 0:
513
+ lng = (0, __1.getUserLocale)(userSession);
514
+ steedosSchema = (0, __1.getSteedosSchema)();
515
+ object = steedosSchema.getObject(objectName);
516
+ return [4, object.toConfig()];
517
+ case 1:
518
+ objConfig = _a.sent();
519
+ fields = objConfig.fields;
520
+ (0, i18n_1.translationObject)(lng, objConfig.name, objConfig, true);
521
+ utcOffset = userSession.utcOffset || 8;
522
+ return [4, _translateToDisplay(doc, selectorFieldNames)];
523
+ case 2:
524
+ displayDoc = _a.sent();
525
+ displayDoc['_id'] = doc._id;
526
+ return [2, displayDoc];
527
+ }
528
+ });
529
+ });
530
+ }
531
+ function translateToUI(objectName, doc, userSession, selectorFieldNames) {
532
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
533
+ function _translateToUI(doc, selectorFieldNames) {
534
+ var _a, _b;
535
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
536
+ var displayObj, _loop_2, selectorFieldNames_2, selectorFieldNames_2_1, name, e_2_1;
537
+ var e_2, _c;
538
+ return tslib_1.__generator(this, function (_d) {
539
+ switch (_d.label) {
540
+ case 0:
541
+ displayObj = {};
542
+ _loop_2 = function (name) {
543
+ var field, fType, label, map_2, value, translatedField, translatedFieldOptions, labels_2, refTo_1, refField, refValue, refObj, nameFieldKey_1, refRecords, refRecord, refTo_2, refField, refValue, refObj, nameFieldKey_2, refRecords, refRecord, refValue, refTo_3, refValues, refObj, nameFieldKey_3, refRecords, fileValue, value, storageName_1, fileObjectName, fileObject, fileNameFieldKey, fileRecords, fileRecord, _doc_1, objectFieldDoc, objectDoc_1, gridDocs, _loop_3, _e, _f, gridDoc, e_3_1;
544
+ var e_3, _g;
545
+ return tslib_1.__generator(this, function (_h) {
546
+ switch (_h.label) {
547
+ case 0:
548
+ if (!Object.prototype.hasOwnProperty.call(fields, name)) return [3, 40];
549
+ field = fields[name];
550
+ if (!_.has(doc, name)) return [3, 39];
551
+ fType = field.type;
552
+ if (!(fType == "select")) return [3, 1];
553
+ label = "";
554
+ map_2 = {};
555
+ value = doc[name];
556
+ translatedField = getTranslatedFieldConfig(objConfig, name);
557
+ translatedFieldOptions = translatedField && translatedField.options;
558
+ _.forEach(translatedFieldOptions, function (o) {
559
+ map_2[o.value] = o.label;
560
+ });
561
+ if (field.multiple) {
562
+ labels_2 = [];
563
+ _.forEach(value, function (v) {
564
+ labels_2.push(map_2[v]);
565
+ });
566
+ label = labels_2.join(",");
567
+ }
568
+ else {
569
+ label = map_2[value];
570
+ }
571
+ displayObj[name] = label;
572
+ return [3, 38];
573
+ case 1:
574
+ if (!(fType == "lookup" && _.isString(field.reference_to))) return [3, 7];
575
+ refTo_1 = field.reference_to;
576
+ refField = field.reference_to_field || '_id';
577
+ if (refTo_1 === 'users') {
578
+ refTo_1 = 'space_users';
579
+ refField = 'user';
580
+ }
581
+ refValue = doc[name];
582
+ if (!refValue) {
583
+ return [2, "continue"];
584
+ }
585
+ refObj = steedosSchema.getObject(refTo_1);
586
+ return [4, refObj.getNameFieldKey()];
587
+ case 2:
588
+ nameFieldKey_1 = _h.sent();
589
+ if (!field.multiple) return [3, 4];
590
+ return [4, refObj.find({
591
+ filters: [refField, "in", refValue],
592
+ fields: [nameFieldKey_1],
593
+ })];
594
+ case 3:
595
+ refRecords = _h.sent();
596
+ displayObj[name] = _.map(refRecords, function (item) {
597
+ return {
598
+ objectName: refTo_1,
599
+ value: item._id,
600
+ label: item[nameFieldKey_1]
601
+ };
602
+ });
603
+ return [3, 6];
604
+ case 4: return [4, refObj.find({
605
+ filters: [refField, "=", refValue],
606
+ fields: [nameFieldKey_1],
607
+ })];
608
+ case 5:
609
+ refRecord = (_h.sent())[0];
610
+ if (refRecord) {
611
+ displayObj[name] = {
612
+ objectName: refTo_1,
613
+ value: refRecord._id,
614
+ label: refRecord[nameFieldKey_1]
615
+ };
616
+ }
617
+ _h.label = 6;
618
+ case 6: return [3, 38];
619
+ case 7:
620
+ if (!(fType == "master_detail" && _.isString(field.reference_to))) return [3, 13];
621
+ refTo_2 = field.reference_to;
622
+ refField = field.reference_to_field || '_id';
623
+ if (refTo_2 === 'users') {
624
+ refTo_2 = 'space_users';
625
+ refField = 'user';
626
+ }
627
+ refValue = doc[name];
628
+ if (!refValue) {
629
+ return [2, "continue"];
630
+ }
631
+ refObj = steedosSchema.getObject(refTo_2);
632
+ return [4, refObj.getNameFieldKey()];
633
+ case 8:
634
+ nameFieldKey_2 = _h.sent();
635
+ if (!field.multiple) return [3, 10];
636
+ return [4, refObj.find({
637
+ filters: [refField, "in", refValue],
638
+ fields: [nameFieldKey_2],
639
+ })];
640
+ case 9:
641
+ refRecords = _h.sent();
642
+ displayObj[name] = _.map(refRecords, function (item) {
643
+ return {
644
+ objectName: refTo_2,
645
+ value: item._id,
646
+ label: item[nameFieldKey_2]
647
+ };
648
+ });
649
+ return [3, 12];
650
+ case 10: return [4, refObj.find({
651
+ filters: [refField, "=", refValue],
652
+ fields: [nameFieldKey_2],
653
+ })];
654
+ case 11:
655
+ refRecord = (_h.sent())[0];
656
+ if (refRecord) {
657
+ displayObj[name] = {
658
+ objectName: refTo_2,
659
+ value: refRecord._id,
660
+ label: refRecord[nameFieldKey_2]
661
+ };
662
+ }
663
+ _h.label = 12;
664
+ case 12: return [3, 38];
665
+ case 13:
666
+ if (!((fType == "master_detail" || fType == "lookup") && field.reference_to && !_.isString(field.reference_to))) return [3, 16];
667
+ refValue = doc[name];
668
+ if (!refValue) {
669
+ return [2, "continue"];
670
+ }
671
+ refTo_3 = refValue.o;
672
+ refValues = refValue.ids;
673
+ if (!refTo_3) {
674
+ return [2, "continue"];
675
+ }
676
+ refObj = steedosSchema.getObject(refTo_3);
677
+ return [4, refObj.getNameFieldKey()];
678
+ case 14:
679
+ nameFieldKey_3 = _h.sent();
680
+ return [4, refObj.find({
681
+ filters: ["_id", "in", refValues],
682
+ fields: [nameFieldKey_3]
683
+ })];
684
+ case 15:
685
+ refRecords = _h.sent();
686
+ displayObj[name] = _.map(refRecords, function (item) {
687
+ return {
688
+ objectName: refTo_3,
689
+ value: item._id,
690
+ label: item[nameFieldKey_3]
691
+ };
692
+ });
693
+ return [3, 38];
694
+ case 16:
695
+ if (!(fType == "formula")) return [3, 17];
696
+ displayObj[name] = (0, utils_1.formatBasicFieldValue)(field.data_type, field, doc[name], objConfig, userSession);
697
+ return [3, 38];
698
+ case 17:
699
+ if (!(fType == "summary")) return [3, 18];
700
+ displayObj[name] = (0, utils_1.formatBasicFieldValue)('number', field, doc[name], objConfig, userSession);
701
+ return [3, 38];
702
+ case 18:
703
+ if (!(fType == "image" || fType == "file" || fType === 'avatar')) return [3, 23];
704
+ fileValue = null;
705
+ value = doc[name];
706
+ if (!value) {
707
+ return [2, "continue"];
708
+ }
709
+ storageName_1 = (0, utils_1.getFileStorageName)(fType);
710
+ fileObjectName = "cfs_".concat(storageName_1, "_filerecord");
711
+ fileObject = steedosSchema.getObject(fileObjectName);
712
+ fileNameFieldKey = "original.name";
713
+ if (!field.multiple) return [3, 20];
714
+ return [4, fileObject.find({
715
+ filters: ["_id", "in", value],
716
+ fields: ['_id', fileNameFieldKey, 'original.size', 'original.type'],
717
+ })];
718
+ case 19:
719
+ fileRecords = _h.sent();
720
+ fileValue = _.map(fileRecords, function (fileRecord) {
721
+ var _a, _b, _c;
722
+ return {
723
+ name: (_a = fileRecord.original) === null || _a === void 0 ? void 0 : _a.name,
724
+ url: (0, __1.absoluteUrl)("/api/files/".concat(storageName_1, "/").concat(fileRecord._id)),
725
+ size: (_b = fileRecord.original) === null || _b === void 0 ? void 0 : _b.size,
726
+ type: (_c = fileRecord.original) === null || _c === void 0 ? void 0 : _c.type,
727
+ };
728
+ });
729
+ return [3, 22];
730
+ case 20: return [4, fileObject.find({
731
+ filters: ["_id", "=", value],
732
+ fields: ['_id', fileNameFieldKey, 'original.size', 'original.type'],
733
+ })];
734
+ case 21:
735
+ fileRecord = (_h.sent())[0];
736
+ if (fileRecord) {
737
+ fileValue = {
738
+ name: fileRecord["original"]["name"],
739
+ url: (0, __1.absoluteUrl)("/api/files/".concat(storageName_1, "/").concat(value)),
740
+ size: (_a = fileRecord.original) === null || _a === void 0 ? void 0 : _a.size,
741
+ type: (_b = fileRecord.original) === null || _b === void 0 ? void 0 : _b.type
742
+ };
743
+ }
744
+ _h.label = 22;
745
+ case 22:
746
+ displayObj[name] = fileValue;
747
+ return [3, 38];
748
+ case 23:
749
+ if (!(fType == "filesize")) return [3, 24];
750
+ displayObj[name] = (0, utils_1.formatFileSize)(doc[name]);
751
+ return [3, 38];
752
+ case 24:
753
+ if (!(fType === 'object')) return [3, 27];
754
+ if (!(doc[name] && _.isObject(doc[name]))) return [3, 26];
755
+ _doc_1 = {};
756
+ _.each(doc[name], function (v, k) {
757
+ var newKey = "".concat(name, ".").concat(k);
758
+ _doc_1[newKey] = v;
759
+ });
760
+ return [4, _translateToUI(_doc_1, Object.keys(_doc_1))];
761
+ case 25:
762
+ objectFieldDoc = _h.sent();
763
+ objectDoc_1 = {};
764
+ _.each(objectFieldDoc, function (v, k) {
765
+ var newKey = k.replace("".concat(name, "."), '');
766
+ objectDoc_1[newKey] = v;
767
+ });
768
+ displayObj[name] = objectDoc_1;
769
+ _h.label = 26;
770
+ case 26: return [3, 38];
771
+ case 27:
772
+ if (!(fType === 'grid')) return [3, 37];
773
+ if (!(doc[name] && _.isArray(doc[name]))) return [3, 36];
774
+ gridDocs = [];
775
+ _loop_3 = function (gridDoc) {
776
+ var _doc, objectFieldDoc, objectDoc;
777
+ return tslib_1.__generator(this, function (_j) {
778
+ switch (_j.label) {
779
+ case 0:
780
+ _doc = {};
781
+ _.each(gridDoc, function (v, k) {
782
+ var newKey = "".concat(name, ".$.").concat(k);
783
+ _doc[newKey] = v;
784
+ });
785
+ return [4, _translateToUI(_doc, Object.keys(_doc))];
786
+ case 1:
787
+ objectFieldDoc = _j.sent();
788
+ objectDoc = {};
789
+ _.each(objectFieldDoc, function (v, k) {
790
+ var newKey = k.replace("".concat(name, ".$."), '');
791
+ objectDoc[newKey] = v;
792
+ });
793
+ gridDocs.push(objectDoc);
794
+ return [2];
795
+ }
796
+ });
797
+ };
798
+ _h.label = 28;
799
+ case 28:
800
+ _h.trys.push([28, 33, 34, 35]);
801
+ _e = (e_3 = void 0, tslib_1.__values(doc[name])), _f = _e.next();
802
+ _h.label = 29;
803
+ case 29:
804
+ if (!!_f.done) return [3, 32];
805
+ gridDoc = _f.value;
806
+ return [5, _loop_3(gridDoc)];
807
+ case 30:
808
+ _h.sent();
809
+ _h.label = 31;
810
+ case 31:
811
+ _f = _e.next();
812
+ return [3, 29];
813
+ case 32: return [3, 35];
814
+ case 33:
815
+ e_3_1 = _h.sent();
816
+ e_3 = { error: e_3_1 };
817
+ return [3, 35];
818
+ case 34:
819
+ try {
820
+ if (_f && !_f.done && (_g = _e.return)) _g.call(_e);
821
+ }
822
+ finally { if (e_3) throw e_3.error; }
823
+ return [7];
824
+ case 35:
825
+ displayObj[name] = gridDocs;
826
+ _h.label = 36;
827
+ case 36: return [3, 38];
828
+ case 37:
829
+ displayObj[name] = (0, utils_1.formatBasicFieldValue)(fType, field, doc[name], objConfig, userSession);
830
+ _h.label = 38;
831
+ case 38: return [3, 40];
832
+ case 39:
833
+ displayObj[name] = "";
834
+ _h.label = 40;
835
+ case 40: return [2];
836
+ }
837
+ });
838
+ };
839
+ _d.label = 1;
840
+ case 1:
841
+ _d.trys.push([1, 6, 7, 8]);
842
+ selectorFieldNames_2 = tslib_1.__values(selectorFieldNames), selectorFieldNames_2_1 = selectorFieldNames_2.next();
843
+ _d.label = 2;
844
+ case 2:
845
+ if (!!selectorFieldNames_2_1.done) return [3, 5];
846
+ name = selectorFieldNames_2_1.value;
847
+ return [5, _loop_2(name)];
848
+ case 3:
849
+ _d.sent();
850
+ _d.label = 4;
851
+ case 4:
852
+ selectorFieldNames_2_1 = selectorFieldNames_2.next();
853
+ return [3, 2];
854
+ case 5: return [3, 8];
855
+ case 6:
856
+ e_2_1 = _d.sent();
857
+ e_2 = { error: e_2_1 };
858
+ return [3, 8];
859
+ case 7:
860
+ try {
861
+ if (selectorFieldNames_2_1 && !selectorFieldNames_2_1.done && (_c = selectorFieldNames_2.return)) _c.call(selectorFieldNames_2);
862
+ }
863
+ finally { if (e_2) throw e_2.error; }
864
+ return [7];
865
+ case 8: return [2, displayObj];
866
+ }
867
+ });
868
+ });
869
+ }
870
+ var lng, steedosSchema, object, objConfig, fields, uiDoc;
871
+ return tslib_1.__generator(this, function (_a) {
872
+ switch (_a.label) {
873
+ case 0:
874
+ lng = (0, __1.getUserLocale)(userSession);
875
+ steedosSchema = (0, __1.getSteedosSchema)();
876
+ object = steedosSchema.getObject(objectName);
877
+ return [4, object.toConfig()];
878
+ case 1:
879
+ objConfig = _a.sent();
880
+ fields = objConfig.fields;
881
+ (0, i18n_1.translationObject)(lng, objConfig.name, objConfig, true);
882
+ return [4, _translateToUI(doc, selectorFieldNames)];
883
+ case 2:
884
+ uiDoc = _a.sent();
885
+ uiDoc['_id'] = doc._id;
886
+ return [2, uiDoc];
887
+ }
888
+ });
889
+ });
890
+ }
891
+ function getTranslatedFieldConfig(translatedObject, name) {
892
+ return translatedObject.fields[name.replace(/__label$/, "")];
893
+ }
894
+ //# sourceMappingURL=getGraphqlActions.js.map