@steedos/objectql 2.4.0-beta.8 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/lib/driver/driver.d.ts +1 -1
  2. package/lib/driver/sqlserver.js +8 -0
  3. package/lib/driver/sqlserver.js.map +1 -1
  4. package/lib/dynamic-load/package.js +5 -0
  5. package/lib/dynamic-load/package.js.map +1 -1
  6. package/lib/services/helpers/graphql/consts.d.ts +2 -0
  7. package/lib/services/helpers/graphql/consts.js +3 -1
  8. package/lib/services/helpers/graphql/consts.js.map +1 -1
  9. package/lib/services/helpers/graphql/dealWithRelatedFields.d.ts +16 -0
  10. package/lib/services/helpers/graphql/dealWithRelatedFields.js +73 -0
  11. package/lib/services/helpers/graphql/dealWithRelatedFields.js.map +1 -0
  12. package/lib/services/helpers/graphql/generateActionGraphqlProp.d.ts +2 -0
  13. package/lib/services/helpers/graphql/generateActionGraphqlProp.js +38 -0
  14. package/lib/services/helpers/graphql/generateActionGraphqlProp.js.map +1 -0
  15. package/lib/services/helpers/graphql/generateSettingsGraphql.d.ts +5 -0
  16. package/lib/services/helpers/graphql/generateSettingsGraphql.js +216 -0
  17. package/lib/services/helpers/graphql/generateSettingsGraphql.js.map +1 -0
  18. package/lib/services/helpers/graphql/getGraphqlActions.d.ts +2 -0
  19. package/lib/services/helpers/graphql/getGraphqlActions.js +925 -0
  20. package/lib/services/helpers/graphql/getGraphqlActions.js.map +1 -0
  21. package/lib/services/helpers/graphql/index.d.ts +6 -26
  22. package/lib/services/helpers/graphql/index.js +16 -1191
  23. package/lib/services/helpers/graphql/index.js.map +1 -1
  24. package/lib/services/helpers/graphql/utils.d.ts +8 -0
  25. package/lib/services/helpers/graphql/utils.js +128 -0
  26. package/lib/services/helpers/graphql/utils.js.map +1 -0
  27. package/lib/types/object.js +16 -4
  28. package/lib/types/object.js.map +1 -1
  29. package/package.json +13 -13
@@ -0,0 +1,925 @@
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, parentDoc) {
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, refFilters, refToObjectsField, refToObjectsField, 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, error_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, 43];
549
+ field = fields[name];
550
+ _h.label = 1;
551
+ case 1:
552
+ _h.trys.push([1, 42, , 43]);
553
+ if (!_.has(doc, name)) return [3, 40];
554
+ fType = field.type;
555
+ if (!(fType == "select")) return [3, 2];
556
+ label = "";
557
+ map_2 = {};
558
+ value = doc[name];
559
+ translatedField = getTranslatedFieldConfig(objConfig, name);
560
+ translatedFieldOptions = translatedField && translatedField.options;
561
+ _.forEach(translatedFieldOptions, function (o) {
562
+ map_2[o.value] = o.label;
563
+ });
564
+ if (field.multiple) {
565
+ labels_2 = [];
566
+ _.forEach(value, function (v) {
567
+ labels_2.push(map_2[v]);
568
+ });
569
+ label = labels_2.join(",");
570
+ }
571
+ else {
572
+ label = map_2[value];
573
+ }
574
+ displayObj[name] = label;
575
+ return [3, 39];
576
+ case 2:
577
+ if (!(fType == "lookup" && _.isString(field.reference_to))) return [3, 8];
578
+ refTo_1 = field.reference_to;
579
+ refField = field.reference_to_field || '_id';
580
+ if (refTo_1 === 'users') {
581
+ refTo_1 = 'space_users';
582
+ refField = 'user';
583
+ }
584
+ refValue = doc[name];
585
+ if (!refValue) {
586
+ return [2, "continue"];
587
+ }
588
+ refFilters = null;
589
+ if (field.multiple) {
590
+ refFilters = [refField, "in", refValue];
591
+ }
592
+ else {
593
+ refFilters = [refField, "=", refValue];
594
+ }
595
+ if (refTo_1 === 'object_fields' && refField == 'name') {
596
+ refToObjectsField = _.find(fields, function (_field) {
597
+ return _field.reference_to === 'objects';
598
+ });
599
+ if (refToObjectsField) {
600
+ refFilters = [['object', '=', parentDoc[refToObjectsField.name]], refFilters];
601
+ }
602
+ }
603
+ if (refTo_1 === 'object_actions' && refField == 'name') {
604
+ refToObjectsField = _.find(fields, function (_field) {
605
+ return _field.reference_to === 'objects';
606
+ });
607
+ if (refToObjectsField) {
608
+ refFilters = [['object', '=', parentDoc[refToObjectsField.name]], refFilters];
609
+ }
610
+ }
611
+ refObj = steedosSchema.getObject(refTo_1);
612
+ return [4, refObj.getNameFieldKey()];
613
+ case 3:
614
+ nameFieldKey_1 = _h.sent();
615
+ if (!field.multiple) return [3, 5];
616
+ return [4, refObj.find({
617
+ filters: refFilters,
618
+ fields: [nameFieldKey_1],
619
+ })];
620
+ case 4:
621
+ refRecords = _h.sent();
622
+ displayObj[name] = _.map(refRecords, function (item) {
623
+ return {
624
+ objectName: refTo_1,
625
+ value: item._id,
626
+ label: item[nameFieldKey_1]
627
+ };
628
+ });
629
+ return [3, 7];
630
+ case 5: return [4, refObj.find({
631
+ filters: refFilters,
632
+ fields: [nameFieldKey_1],
633
+ })];
634
+ case 6:
635
+ refRecord = (_h.sent())[0];
636
+ if (refRecord) {
637
+ displayObj[name] = {
638
+ objectName: refTo_1,
639
+ value: refRecord._id,
640
+ label: refRecord[nameFieldKey_1]
641
+ };
642
+ }
643
+ _h.label = 7;
644
+ case 7: return [3, 39];
645
+ case 8:
646
+ if (!(fType == "master_detail" && _.isString(field.reference_to))) return [3, 14];
647
+ refTo_2 = field.reference_to;
648
+ refField = field.reference_to_field || '_id';
649
+ if (refTo_2 === 'users') {
650
+ refTo_2 = 'space_users';
651
+ refField = 'user';
652
+ }
653
+ refValue = doc[name];
654
+ if (!refValue) {
655
+ return [2, "continue"];
656
+ }
657
+ refObj = steedosSchema.getObject(refTo_2);
658
+ return [4, refObj.getNameFieldKey()];
659
+ case 9:
660
+ nameFieldKey_2 = _h.sent();
661
+ if (!field.multiple) return [3, 11];
662
+ return [4, refObj.find({
663
+ filters: [refField, "in", refValue],
664
+ fields: [nameFieldKey_2],
665
+ })];
666
+ case 10:
667
+ refRecords = _h.sent();
668
+ displayObj[name] = _.map(refRecords, function (item) {
669
+ return {
670
+ objectName: refTo_2,
671
+ value: item._id,
672
+ label: item[nameFieldKey_2]
673
+ };
674
+ });
675
+ return [3, 13];
676
+ case 11: return [4, refObj.find({
677
+ filters: [refField, "=", refValue],
678
+ fields: [nameFieldKey_2],
679
+ })];
680
+ case 12:
681
+ refRecord = (_h.sent())[0];
682
+ if (refRecord) {
683
+ displayObj[name] = {
684
+ objectName: refTo_2,
685
+ value: refRecord._id,
686
+ label: refRecord[nameFieldKey_2]
687
+ };
688
+ }
689
+ _h.label = 13;
690
+ case 13: return [3, 39];
691
+ case 14:
692
+ if (!((fType == "master_detail" || fType == "lookup") && field.reference_to && !_.isString(field.reference_to))) return [3, 17];
693
+ refValue = doc[name];
694
+ if (!refValue) {
695
+ return [2, "continue"];
696
+ }
697
+ refTo_3 = refValue.o;
698
+ refValues = refValue.ids;
699
+ if (!refTo_3) {
700
+ return [2, "continue"];
701
+ }
702
+ refObj = steedosSchema.getObject(refTo_3);
703
+ return [4, refObj.getNameFieldKey()];
704
+ case 15:
705
+ nameFieldKey_3 = _h.sent();
706
+ return [4, refObj.find({
707
+ filters: ["_id", "in", refValues],
708
+ fields: [nameFieldKey_3]
709
+ })];
710
+ case 16:
711
+ refRecords = _h.sent();
712
+ displayObj[name] = _.map(refRecords, function (item) {
713
+ return {
714
+ objectName: refTo_3,
715
+ value: item._id,
716
+ label: item[nameFieldKey_3]
717
+ };
718
+ });
719
+ return [3, 39];
720
+ case 17:
721
+ if (!(fType == "formula")) return [3, 18];
722
+ displayObj[name] = (0, utils_1.formatBasicFieldValue)(field.data_type, field, doc[name], objConfig, userSession);
723
+ return [3, 39];
724
+ case 18:
725
+ if (!(fType == "summary")) return [3, 19];
726
+ displayObj[name] = (0, utils_1.formatBasicFieldValue)('number', field, doc[name], objConfig, userSession);
727
+ return [3, 39];
728
+ case 19:
729
+ if (!(fType == "image" || fType == "file" || fType === 'avatar')) return [3, 24];
730
+ fileValue = null;
731
+ value = doc[name];
732
+ if (!value) {
733
+ return [2, "continue"];
734
+ }
735
+ storageName_1 = (0, utils_1.getFileStorageName)(fType);
736
+ fileObjectName = "cfs_".concat(storageName_1, "_filerecord");
737
+ fileObject = steedosSchema.getObject(fileObjectName);
738
+ fileNameFieldKey = "original.name";
739
+ if (!field.multiple) return [3, 21];
740
+ return [4, fileObject.find({
741
+ filters: ["_id", "in", value],
742
+ fields: ['_id', fileNameFieldKey, 'original.size', 'original.type'],
743
+ })];
744
+ case 20:
745
+ fileRecords = _h.sent();
746
+ fileValue = _.map(fileRecords, function (fileRecord) {
747
+ var _a, _b, _c;
748
+ return {
749
+ name: (_a = fileRecord.original) === null || _a === void 0 ? void 0 : _a.name,
750
+ url: (0, __1.absoluteUrl)("/api/files/".concat(storageName_1, "/").concat(fileRecord._id)),
751
+ size: (_b = fileRecord.original) === null || _b === void 0 ? void 0 : _b.size,
752
+ type: (_c = fileRecord.original) === null || _c === void 0 ? void 0 : _c.type,
753
+ };
754
+ });
755
+ return [3, 23];
756
+ case 21: return [4, fileObject.find({
757
+ filters: ["_id", "=", value],
758
+ fields: ['_id', fileNameFieldKey, 'original.size', 'original.type'],
759
+ })];
760
+ case 22:
761
+ fileRecord = (_h.sent())[0];
762
+ if (fileRecord) {
763
+ fileValue = {
764
+ name: fileRecord["original"]["name"],
765
+ url: (0, __1.absoluteUrl)("/api/files/".concat(storageName_1, "/").concat(value)),
766
+ size: (_a = fileRecord.original) === null || _a === void 0 ? void 0 : _a.size,
767
+ type: (_b = fileRecord.original) === null || _b === void 0 ? void 0 : _b.type
768
+ };
769
+ }
770
+ _h.label = 23;
771
+ case 23:
772
+ displayObj[name] = fileValue;
773
+ return [3, 39];
774
+ case 24:
775
+ if (!(fType == "filesize")) return [3, 25];
776
+ displayObj[name] = (0, utils_1.formatFileSize)(doc[name]);
777
+ return [3, 39];
778
+ case 25:
779
+ if (!(fType === 'object')) return [3, 28];
780
+ if (!(doc[name] && _.isObject(doc[name]))) return [3, 27];
781
+ _doc_1 = {};
782
+ _.each(doc[name], function (v, k) {
783
+ var newKey = "".concat(name, ".").concat(k);
784
+ _doc_1[newKey] = v;
785
+ });
786
+ return [4, _translateToUI(_doc_1, Object.keys(_doc_1), doc)];
787
+ case 26:
788
+ objectFieldDoc = _h.sent();
789
+ objectDoc_1 = {};
790
+ _.each(objectFieldDoc, function (v, k) {
791
+ var newKey = k.replace("".concat(name, "."), '');
792
+ objectDoc_1[newKey] = v;
793
+ });
794
+ displayObj[name] = objectDoc_1;
795
+ _h.label = 27;
796
+ case 27: return [3, 39];
797
+ case 28:
798
+ if (!(fType === 'grid')) return [3, 38];
799
+ if (!(doc[name] && _.isArray(doc[name]))) return [3, 37];
800
+ gridDocs = [];
801
+ _loop_3 = function (gridDoc) {
802
+ var _doc, objectFieldDoc, objectDoc;
803
+ return tslib_1.__generator(this, function (_j) {
804
+ switch (_j.label) {
805
+ case 0:
806
+ _doc = {};
807
+ _.each(gridDoc, function (v, k) {
808
+ var newKey = "".concat(name, ".$.").concat(k);
809
+ _doc[newKey] = v;
810
+ });
811
+ return [4, _translateToUI(_doc, Object.keys(_doc), doc)];
812
+ case 1:
813
+ objectFieldDoc = _j.sent();
814
+ objectDoc = {};
815
+ _.each(objectFieldDoc, function (v, k) {
816
+ var newKey = k.replace("".concat(name, ".$."), '');
817
+ objectDoc[newKey] = v;
818
+ });
819
+ gridDocs.push(objectDoc);
820
+ return [2];
821
+ }
822
+ });
823
+ };
824
+ _h.label = 29;
825
+ case 29:
826
+ _h.trys.push([29, 34, 35, 36]);
827
+ _e = (e_3 = void 0, tslib_1.__values(doc[name])), _f = _e.next();
828
+ _h.label = 30;
829
+ case 30:
830
+ if (!!_f.done) return [3, 33];
831
+ gridDoc = _f.value;
832
+ return [5, _loop_3(gridDoc)];
833
+ case 31:
834
+ _h.sent();
835
+ _h.label = 32;
836
+ case 32:
837
+ _f = _e.next();
838
+ return [3, 30];
839
+ case 33: return [3, 36];
840
+ case 34:
841
+ e_3_1 = _h.sent();
842
+ e_3 = { error: e_3_1 };
843
+ return [3, 36];
844
+ case 35:
845
+ try {
846
+ if (_f && !_f.done && (_g = _e.return)) _g.call(_e);
847
+ }
848
+ finally { if (e_3) throw e_3.error; }
849
+ return [7];
850
+ case 36:
851
+ displayObj[name] = gridDocs;
852
+ _h.label = 37;
853
+ case 37: return [3, 39];
854
+ case 38:
855
+ displayObj[name] = (0, utils_1.formatBasicFieldValue)(fType, field, doc[name], objConfig, userSession);
856
+ _h.label = 39;
857
+ case 39: return [3, 41];
858
+ case 40:
859
+ displayObj[name] = "";
860
+ _h.label = 41;
861
+ case 41: return [3, 43];
862
+ case 42:
863
+ error_1 = _h.sent();
864
+ displayObj[name] = doc[name];
865
+ return [3, 43];
866
+ case 43: return [2];
867
+ }
868
+ });
869
+ };
870
+ _d.label = 1;
871
+ case 1:
872
+ _d.trys.push([1, 6, 7, 8]);
873
+ selectorFieldNames_2 = tslib_1.__values(selectorFieldNames), selectorFieldNames_2_1 = selectorFieldNames_2.next();
874
+ _d.label = 2;
875
+ case 2:
876
+ if (!!selectorFieldNames_2_1.done) return [3, 5];
877
+ name = selectorFieldNames_2_1.value;
878
+ return [5, _loop_2(name)];
879
+ case 3:
880
+ _d.sent();
881
+ _d.label = 4;
882
+ case 4:
883
+ selectorFieldNames_2_1 = selectorFieldNames_2.next();
884
+ return [3, 2];
885
+ case 5: return [3, 8];
886
+ case 6:
887
+ e_2_1 = _d.sent();
888
+ e_2 = { error: e_2_1 };
889
+ return [3, 8];
890
+ case 7:
891
+ try {
892
+ if (selectorFieldNames_2_1 && !selectorFieldNames_2_1.done && (_c = selectorFieldNames_2.return)) _c.call(selectorFieldNames_2);
893
+ }
894
+ finally { if (e_2) throw e_2.error; }
895
+ return [7];
896
+ case 8: return [2, displayObj];
897
+ }
898
+ });
899
+ });
900
+ }
901
+ var lng, steedosSchema, object, objConfig, fields, uiDoc;
902
+ return tslib_1.__generator(this, function (_a) {
903
+ switch (_a.label) {
904
+ case 0:
905
+ lng = (0, __1.getUserLocale)(userSession);
906
+ steedosSchema = (0, __1.getSteedosSchema)();
907
+ object = steedosSchema.getObject(objectName);
908
+ return [4, object.toConfig()];
909
+ case 1:
910
+ objConfig = _a.sent();
911
+ fields = objConfig.fields;
912
+ (0, i18n_1.translationObject)(lng, objConfig.name, objConfig, true);
913
+ return [4, _translateToUI(doc, selectorFieldNames, doc)];
914
+ case 2:
915
+ uiDoc = _a.sent();
916
+ uiDoc['_id'] = doc._id;
917
+ return [2, uiDoc];
918
+ }
919
+ });
920
+ });
921
+ }
922
+ function getTranslatedFieldConfig(translatedObject, name) {
923
+ return translatedObject.fields[name.replace(/__label$/, "")];
924
+ }
925
+ //# sourceMappingURL=getGraphqlActions.js.map