blixify-ui-web 0.1.76 → 0.1.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/data/dataTemplate/index.d.ts +2 -0
- package/lib/components/data/dataTemplate/index.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/index.js +1250 -1117
- package/lib/components/data/dataTemplate/index.js.map +1 -1
- package/lib/components/data/dataTemplate/spaceModel.d.ts +7 -5
- package/lib/components/data/dataTemplate/spaceModel.d.ts.map +1 -1
- package/lib/components/data/utils.d.ts.map +1 -1
- package/lib/components/data/utils.js +13 -16
- package/lib/components/data/utils.js.map +1 -1
- package/lib/components/input/select/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -62,7 +62,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
62
62
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
63
|
};
|
|
64
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
-
exports.DataTemplate = void 0;
|
|
65
|
+
exports.DataTemplate = exports.additionalSelect = exports.loadingSelect = void 0;
|
|
66
66
|
var outline_1 = require("@heroicons/react/24/outline");
|
|
67
67
|
var solid_1 = require("@heroicons/react/24/solid");
|
|
68
68
|
var moment_1 = __importDefault(require("moment"));
|
|
@@ -133,57 +133,66 @@ var queryType = [
|
|
|
133
133
|
label: "><",
|
|
134
134
|
},
|
|
135
135
|
];
|
|
136
|
+
exports.loadingSelect = (react_1.default.createElement("div", { className: "flex flex-row" },
|
|
137
|
+
react_1.default.createElement(loading_1.Loading, { sizeClassName: "h-5 w-5" }),
|
|
138
|
+
react_1.default.createElement("p", { className: "ml-1" }, "Loading...")));
|
|
139
|
+
exports.additionalSelect = (react_1.default.createElement("div", { className: "flex flex-row" },
|
|
140
|
+
react_1.default.createElement(solid_1.MagnifyingGlassIcon, { className: "h-5 w-5" }),
|
|
141
|
+
react_1.default.createElement("p", { className: "ml-1" }, "Search for more...")));
|
|
136
142
|
function DataTemplate(props) {
|
|
137
143
|
var _this = this;
|
|
138
144
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
139
145
|
var formRef = (0, react_1.createRef)();
|
|
140
146
|
var objectFormRef = (0, react_1.createRef)();
|
|
141
|
-
var typingTimeout = (0, react_1.useRef)();
|
|
142
147
|
var modalFormInputRefs = props.model.map(function () { return (0, react_1.createRef)(); });
|
|
143
148
|
var limit = props.limit ? props.limit : 10;
|
|
149
|
+
var typingTimeout = (0, react_1.useRef)();
|
|
144
150
|
var _h = (0, react_1.useState)(false), loading = _h[0], setLoading = _h[1];
|
|
151
|
+
var _j = (0, react_1.useState)(), notification = _j[0], setNotification = _j[1];
|
|
145
152
|
//INFO : Used by List
|
|
146
|
-
var
|
|
147
|
-
var
|
|
148
|
-
var
|
|
149
|
-
var
|
|
150
|
-
var
|
|
151
|
-
var
|
|
152
|
-
var
|
|
153
|
-
var
|
|
154
|
-
var
|
|
155
|
-
var
|
|
156
|
-
var
|
|
157
|
-
var
|
|
158
|
-
|
|
159
|
-
var _x = (0, react_1.useState)(
|
|
160
|
-
var _y = (0, react_1.useState)(
|
|
161
|
-
var _z = (0, react_1.useState)(
|
|
162
|
-
var _0 = (0, react_1.useState)({}),
|
|
163
|
-
var _1 = (0, react_1.useState)(
|
|
164
|
-
var _2 = (0, react_1.useState)(
|
|
165
|
-
var _3 = (0, react_1.useState)(
|
|
166
|
-
var _4 = (0, react_1.useState)(
|
|
167
|
-
var _5 = (0, react_1.useState)(),
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
var
|
|
171
|
-
var _7 = (0, react_1.useState)(false), excelModal = _7[0], setExcelModal = _7[1];
|
|
172
|
-
var _8 = (0, react_1.useState)(false), exportExcel = _8[0], setExportExcel = _8[1];
|
|
173
|
-
var _9 = (0, react_1.useState)({}), selectedData = _9[0], setSelectedData = _9[1];
|
|
174
|
-
var _10 = (0, react_1.useState)(""), selectedObjectStructureId = _10[0], setSelectedObjectStructureId = _10[1];
|
|
175
|
-
var _11 = (0, react_1.useState)(""), selectedObjectId = _11[0], setSelectedObjectId = _11[1];
|
|
176
|
-
var _12 = (0, react_1.useState)({}), selectedObjectData = _12[0], setSelectedObjectData = _12[1];
|
|
177
|
-
var _13 = (0, react_1.useState)({}), referenceModelSchema = _13[0], setReferenceSchema = _13[1];
|
|
178
|
-
var _14 = (0, react_1.useState)({}), referenceOptions = _14[0], setReferenceOptions = _14[1];
|
|
179
|
-
var _15 = (0, react_1.useState)({}), referenceSearchText = _15[0], setReferenceSearchText = _15[1];
|
|
180
|
-
var _16 = (0, react_1.useState)([]), queryList = _16[0], setQueryList = _16[1];
|
|
181
|
-
var _17 = (0, react_1.useState)(false), queryModal = _17[0], setQueryModal = _17[1];
|
|
182
|
-
var _18 = (0, react_1.useState)({
|
|
153
|
+
var _k = (0, react_1.useState)(""), filterSearch = _k[0], setFilterSearch = _k[1];
|
|
154
|
+
var _l = (0, react_1.useState)(""), filterSearchParams = _l[0], setFilterSearchParams = _l[1];
|
|
155
|
+
var _m = (0, react_1.useState)(""), filterSelection = _m[0], setFilterSelection = _m[1];
|
|
156
|
+
var _o = (0, react_1.useState)(""), filterReference = _o[0], setFilterReference = _o[1];
|
|
157
|
+
var _p = (0, react_1.useState)(""), filterReferenceSearch = _p[0], setFilterReferenceSearch = _p[1];
|
|
158
|
+
var _q = (0, react_1.useState)([]), filterReferenceList = _q[0], setFilterReferenceList = _q[1];
|
|
159
|
+
var _r = (0, react_1.useState)(true), tableLoading = _r[0], setTableLoading = _r[1];
|
|
160
|
+
var _s = (0, react_1.useState)(""), cursor = _s[0], setCursor = _s[1];
|
|
161
|
+
var _t = (0, react_1.useState)(""), lastCursor = _t[0], setLastCursor = _t[1];
|
|
162
|
+
var _u = (0, react_1.useState)([]), tableData = _u[0], setTableData = _u[1];
|
|
163
|
+
var _v = (0, react_1.useState)(0), size = _v[0], setSize = _v[1];
|
|
164
|
+
var _w = (0, react_1.useState)(0), pageIndex = _w[0], setPageIndex = _w[1];
|
|
165
|
+
//INFO : Used by Export
|
|
166
|
+
var _x = (0, react_1.useState)(null), csvFile = _x[0], setCSVFile = _x[1];
|
|
167
|
+
var _y = (0, react_1.useState)([]), csvFileData = _y[0], setCSVFileData = _y[1];
|
|
168
|
+
var _z = (0, react_1.useState)(0), stepCSVIndex = _z[0], setStepCSVIndex = _z[1];
|
|
169
|
+
var _0 = (0, react_1.useState)({}), listCSVMapAttribute = _0[0], setListCSVMapAttribute = _0[1];
|
|
170
|
+
var _1 = (0, react_1.useState)({}), listCSVObjAttribute = _1[0], setListCSVObjAttribute = _1[1];
|
|
171
|
+
var _2 = (0, react_1.useState)([]), csvAPIAttribute = _2[0], setCSVAPIAttribute = _2[1];
|
|
172
|
+
var _3 = (0, react_1.useState)(""), exportLink = _3[0], setExportLink = _3[1];
|
|
173
|
+
var _4 = (0, react_1.useState)([]), exportReferenceList = _4[0], setExportReferenceList = _4[1];
|
|
174
|
+
var _5 = (0, react_1.useState)(""), exportReferenceSearch = _5[0], setExportReferenceSearch = _5[1];
|
|
175
|
+
var _6 = (0, react_1.useState)([]), queryList = _6[0], setQueryList = _6[1];
|
|
176
|
+
var _7 = (0, react_1.useState)(false), queryModal = _7[0], setQueryModal = _7[1];
|
|
177
|
+
var _8 = (0, react_1.useState)({
|
|
183
178
|
queryId: "",
|
|
184
179
|
type: "=",
|
|
185
180
|
value: "",
|
|
186
|
-
}), queryInput =
|
|
181
|
+
}), queryInput = _8[0], setQueryInput = _8[1];
|
|
182
|
+
//INFO : Used by Read
|
|
183
|
+
//INFO : Used by Update
|
|
184
|
+
var _9 = (0, react_1.useState)(false), modalVisible = _9[0], setModalVisible = _9[1];
|
|
185
|
+
var _10 = (0, react_1.useState)(false), deleteModal = _10[0], setDeleteModal = _10[1];
|
|
186
|
+
var _11 = (0, react_1.useState)(false), excelModal = _11[0], setExcelModal = _11[1];
|
|
187
|
+
var _12 = (0, react_1.useState)(false), exportExcel = _12[0], setExportExcel = _12[1];
|
|
188
|
+
var _13 = (0, react_1.useState)({}), selectedData = _13[0], setSelectedData = _13[1];
|
|
189
|
+
var _14 = (0, react_1.useState)(""), selectedObjectStructureId = _14[0], setSelectedObjectStructureId = _14[1];
|
|
190
|
+
var _15 = (0, react_1.useState)(""), selectedObjectId = _15[0], setSelectedObjectId = _15[1];
|
|
191
|
+
var _16 = (0, react_1.useState)({}), selectedObjectData = _16[0], setSelectedObjectData = _16[1];
|
|
192
|
+
var _17 = (0, react_1.useState)(false), referenceLoading = _17[0], setReferenceLoading = _17[1];
|
|
193
|
+
var _18 = (0, react_1.useState)({}), referencesOptions = _18[0], setReferencesOptions = _18[1];
|
|
194
|
+
var _19 = (0, react_1.useState)({}), referenceModelSchema = _19[0], setReferenceSchema = _19[1];
|
|
195
|
+
var serverId = props.server === "mongoServer" ? "_id" : "id";
|
|
187
196
|
var dbModule = props.server === "firebase" ? (_a = props.lib) === null || _a === void 0 ? void 0 : _a.firebase : (_b = props.lib) === null || _b === void 0 ? void 0 : _b.axios;
|
|
188
197
|
var writeServerQuery = new writeQuery_1.WriteQuery((_c = props.lib) === null || _c === void 0 ? void 0 : _c.axios, props.server, props.collectionId, props.dbEndpoint);
|
|
189
198
|
var moreButtonPopUp = [
|
|
@@ -206,6 +215,8 @@ function DataTemplate(props) {
|
|
|
206
215
|
switch (props.type) {
|
|
207
216
|
case "read":
|
|
208
217
|
case "update":
|
|
218
|
+
setExcelModal(false);
|
|
219
|
+
setExportExcel(false);
|
|
209
220
|
setSelectedData({});
|
|
210
221
|
setSelectedObjectData({});
|
|
211
222
|
if (props.id !== "new" && props.id !== "") {
|
|
@@ -214,6 +225,7 @@ function DataTemplate(props) {
|
|
|
214
225
|
}
|
|
215
226
|
break;
|
|
216
227
|
case "list":
|
|
228
|
+
setReferencesOptions({});
|
|
217
229
|
break;
|
|
218
230
|
}
|
|
219
231
|
}, [props.type, props.id]);
|
|
@@ -253,7 +265,7 @@ function DataTemplate(props) {
|
|
|
253
265
|
referenceData.data.map(function (eachData) {
|
|
254
266
|
var _a, _b;
|
|
255
267
|
var data = JSON.parse(JSON.stringify(eachData));
|
|
256
|
-
var id =
|
|
268
|
+
var id = data[serverId];
|
|
257
269
|
referenceOptionsList.push({
|
|
258
270
|
key: id,
|
|
259
271
|
label: (_b = data[(_a = eachModel.referenceLabel) !== null && _a !== void 0 ? _a : ""]) !== null && _b !== void 0 ? _b : id,
|
|
@@ -295,13 +307,184 @@ function DataTemplate(props) {
|
|
|
295
307
|
props.dbEndpoint,
|
|
296
308
|
props.model,
|
|
297
309
|
props.server,
|
|
310
|
+
serverId,
|
|
298
311
|
]);
|
|
299
|
-
|
|
300
|
-
//SECTION
|
|
312
|
+
//=====================================================================================
|
|
313
|
+
//SECTION: Handle Reference
|
|
314
|
+
//=====================================================================================
|
|
315
|
+
var handleRetrieveObjectReferenceOptions = function (eachModel, referencesOptions, selectedData, prefix, listObject, searchText) { return __awaiter(_this, void 0, void 0, function () {
|
|
316
|
+
var optionList_1, referenceRQ_1, selectionRes, selectedDataValue, currentRes_1, queryValue, res, modelId, err_1;
|
|
317
|
+
var _this = this;
|
|
318
|
+
var _a, _b;
|
|
319
|
+
return __generator(this, function (_c) {
|
|
320
|
+
switch (_c.label) {
|
|
321
|
+
case 0:
|
|
322
|
+
_c.trys.push([0, 6, , 7]);
|
|
323
|
+
optionList_1 = [];
|
|
324
|
+
referenceRQ_1 = new readQuery_1.ReadQuery(dbModule, props.server, (_a = eachModel.referenceSpaceId) !== null && _a !== void 0 ? _a : "", props.dbEndpoint);
|
|
325
|
+
return [4 /*yield*/, referenceRQ_1.call({
|
|
326
|
+
type: "list",
|
|
327
|
+
limit: 10,
|
|
328
|
+
query: searchText
|
|
329
|
+
? [
|
|
330
|
+
{
|
|
331
|
+
type: "search",
|
|
332
|
+
value: searchText,
|
|
333
|
+
searchIds: [(_b = eachModel.referenceLabel) !== null && _b !== void 0 ? _b : "", serverId],
|
|
334
|
+
},
|
|
335
|
+
]
|
|
336
|
+
: undefined,
|
|
337
|
+
})];
|
|
338
|
+
case 1:
|
|
339
|
+
selectionRes = _c.sent();
|
|
340
|
+
selectedDataValue = [];
|
|
341
|
+
if (listObject)
|
|
342
|
+
selectedDataValue = selectedData[prefix !== null && prefix !== void 0 ? prefix : ""];
|
|
343
|
+
else if (prefix)
|
|
344
|
+
selectedDataValue = selectedData[prefix][eachModel.id];
|
|
345
|
+
else
|
|
346
|
+
selectedDataValue = selectedData[eachModel.id];
|
|
347
|
+
currentRes_1 = [];
|
|
348
|
+
if (!(selectedData && selectedDataValue)) return [3 /*break*/, 5];
|
|
349
|
+
if (!(listObject && Array.isArray(selectedDataValue))) return [3 /*break*/, 3];
|
|
350
|
+
return [4 /*yield*/, Promise.all(selectedDataValue.map(function (eachData) { return __awaiter(_this, void 0, void 0, function () {
|
|
351
|
+
var queryValue, res;
|
|
352
|
+
return __generator(this, function (_a) {
|
|
353
|
+
switch (_a.label) {
|
|
354
|
+
case 0:
|
|
355
|
+
queryValue = Array.isArray(eachData[eachModel.id])
|
|
356
|
+
? eachData[eachModel.id]
|
|
357
|
+
: [eachData[eachModel.id]];
|
|
358
|
+
return [4 /*yield*/, referenceRQ_1.call({
|
|
359
|
+
type: "list",
|
|
360
|
+
query: [{ type: "in", value: queryValue, queryId: serverId }],
|
|
361
|
+
})];
|
|
362
|
+
case 1:
|
|
363
|
+
res = _a.sent();
|
|
364
|
+
if (res === null || res === void 0 ? void 0 : res.data)
|
|
365
|
+
currentRes_1.push.apply(currentRes_1, res.data);
|
|
366
|
+
return [2 /*return*/];
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
}); }))];
|
|
370
|
+
case 2:
|
|
371
|
+
_c.sent();
|
|
372
|
+
return [3 /*break*/, 5];
|
|
373
|
+
case 3:
|
|
374
|
+
queryValue = Array.isArray(selectedDataValue)
|
|
375
|
+
? selectedDataValue
|
|
376
|
+
: [selectedDataValue];
|
|
377
|
+
return [4 /*yield*/, referenceRQ_1.call({
|
|
378
|
+
type: "list",
|
|
379
|
+
query: [{ type: "in", value: queryValue, queryId: serverId }],
|
|
380
|
+
})];
|
|
381
|
+
case 4:
|
|
382
|
+
res = _c.sent();
|
|
383
|
+
currentRes_1 = res === null || res === void 0 ? void 0 : res.data;
|
|
384
|
+
_c.label = 5;
|
|
385
|
+
case 5:
|
|
386
|
+
if (selectionRes === null || selectionRes === void 0 ? void 0 : selectionRes.data) {
|
|
387
|
+
selectionRes.data.map(function (eachData) {
|
|
388
|
+
var _a, _b;
|
|
389
|
+
var id = eachData[serverId];
|
|
390
|
+
var eachDataJSON = JSON.parse(JSON.stringify(eachData));
|
|
391
|
+
if (!optionList_1.some(function (eachData) { return eachData.key === id; })) {
|
|
392
|
+
optionList_1.push({
|
|
393
|
+
key: eachData._id,
|
|
394
|
+
label: (_b = eachDataJSON[(_a = eachModel.referenceLabel) !== null && _a !== void 0 ? _a : ""]) !== null && _b !== void 0 ? _b : eachData._id,
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
return null;
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
if (currentRes_1) {
|
|
401
|
+
currentRes_1.map(function (eachData) {
|
|
402
|
+
var _a, _b;
|
|
403
|
+
var id = eachData[serverId];
|
|
404
|
+
var eachDataJSON = JSON.parse(JSON.stringify(eachData));
|
|
405
|
+
if (!optionList_1.some(function (eachData) { return eachData.key === id; })) {
|
|
406
|
+
optionList_1.push({
|
|
407
|
+
key: eachData._id,
|
|
408
|
+
label: (_b = eachDataJSON[(_a = eachModel.referenceLabel) !== null && _a !== void 0 ? _a : ""]) !== null && _b !== void 0 ? _b : eachData._id,
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
return null;
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
modelId = prefix ? "".concat(prefix, ".").concat(eachModel.id) : eachModel.id;
|
|
415
|
+
referencesOptions[modelId] = optionList_1;
|
|
416
|
+
return [3 /*break*/, 7];
|
|
417
|
+
case 6:
|
|
418
|
+
err_1 = _c.sent();
|
|
419
|
+
return [3 /*break*/, 7];
|
|
420
|
+
case 7: return [2 /*return*/];
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
}); };
|
|
424
|
+
var handleRetrieveReferenceOptions = function (selectedData) { return __awaiter(_this, void 0, void 0, function () {
|
|
425
|
+
var options, err_2;
|
|
426
|
+
var _this = this;
|
|
427
|
+
return __generator(this, function (_a) {
|
|
428
|
+
switch (_a.label) {
|
|
429
|
+
case 0:
|
|
430
|
+
options = {};
|
|
431
|
+
_a.label = 1;
|
|
432
|
+
case 1:
|
|
433
|
+
_a.trys.push([1, 3, , 4]);
|
|
434
|
+
return [4 /*yield*/, Promise.all(props.model.map(function (eachModel) { return __awaiter(_this, void 0, void 0, function () {
|
|
435
|
+
var _this = this;
|
|
436
|
+
return __generator(this, function (_a) {
|
|
437
|
+
switch (_a.label) {
|
|
438
|
+
case 0:
|
|
439
|
+
if (!(eachModel.type === "reference" ||
|
|
440
|
+
eachModel.type === "listReference")) return [3 /*break*/, 2];
|
|
441
|
+
return [4 /*yield*/, handleRetrieveObjectReferenceOptions(eachModel, options, selectedData)];
|
|
442
|
+
case 1:
|
|
443
|
+
_a.sent();
|
|
444
|
+
return [3 /*break*/, 4];
|
|
445
|
+
case 2:
|
|
446
|
+
if (!((eachModel.type === "object" || eachModel.type === "listObject") &&
|
|
447
|
+
eachModel.objectData)) return [3 /*break*/, 4];
|
|
448
|
+
return [4 /*yield*/, Promise.all(eachModel.objectData.map(function (eachObjectData) { return __awaiter(_this, void 0, void 0, function () {
|
|
449
|
+
return __generator(this, function (_a) {
|
|
450
|
+
switch (_a.label) {
|
|
451
|
+
case 0:
|
|
452
|
+
if (!(eachObjectData.type === "reference" ||
|
|
453
|
+
eachObjectData.type === "listReference")) return [3 /*break*/, 2];
|
|
454
|
+
return [4 /*yield*/, handleRetrieveObjectReferenceOptions(eachObjectData, options, selectedData, eachModel.id, eachModel.type === "listObject")];
|
|
455
|
+
case 1:
|
|
456
|
+
_a.sent();
|
|
457
|
+
_a.label = 2;
|
|
458
|
+
case 2: return [2 /*return*/];
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
}); }))];
|
|
462
|
+
case 3:
|
|
463
|
+
_a.sent();
|
|
464
|
+
_a.label = 4;
|
|
465
|
+
case 4: return [2 /*return*/];
|
|
466
|
+
}
|
|
467
|
+
});
|
|
468
|
+
}); }))];
|
|
469
|
+
case 2:
|
|
470
|
+
_a.sent();
|
|
471
|
+
return [3 /*break*/, 4];
|
|
472
|
+
case 3:
|
|
473
|
+
err_2 = _a.sent();
|
|
474
|
+
return [3 /*break*/, 4];
|
|
475
|
+
case 4:
|
|
476
|
+
setReferencesOptions(options);
|
|
477
|
+
return [2 /*return*/];
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
}); };
|
|
481
|
+
//=====================================================================================
|
|
482
|
+
//SECTION: Handle List
|
|
483
|
+
//=====================================================================================
|
|
301
484
|
var handlePagination = function (value) {
|
|
302
485
|
if (props.server === "mongoServer") {
|
|
303
486
|
setTableLoading(true);
|
|
304
|
-
|
|
487
|
+
setTableData([]);
|
|
305
488
|
}
|
|
306
489
|
if (typeof value === "number") {
|
|
307
490
|
setPageIndex(value);
|
|
@@ -311,7 +494,7 @@ function DataTemplate(props) {
|
|
|
311
494
|
//INFO : Retrieve latest cursor data from Firebase only
|
|
312
495
|
if (props.server !== "mongoServer" &&
|
|
313
496
|
cursor &&
|
|
314
|
-
(pageIndex + 1) * limit + 1 >
|
|
497
|
+
(pageIndex + 1) * limit + 1 > tableData.length) {
|
|
315
498
|
setLastCursor(cursor);
|
|
316
499
|
}
|
|
317
500
|
setPageIndex(pageIndex + 1);
|
|
@@ -336,7 +519,7 @@ function DataTemplate(props) {
|
|
|
336
519
|
return [4 /*yield*/, handleListResponse];
|
|
337
520
|
case 2:
|
|
338
521
|
dataList = _b.sent();
|
|
339
|
-
|
|
522
|
+
setTableData(dataList);
|
|
340
523
|
setSize(responseData.count);
|
|
341
524
|
_b.label = 3;
|
|
342
525
|
case 3: return [3 /*break*/, 7];
|
|
@@ -347,7 +530,7 @@ function DataTemplate(props) {
|
|
|
347
530
|
dataList = _b.sent();
|
|
348
531
|
_b.label = 6;
|
|
349
532
|
case 6:
|
|
350
|
-
|
|
533
|
+
setTableData(filterSearchParams ? dataList : dataList.concat(tableData));
|
|
351
534
|
setCursor(responseData.count);
|
|
352
535
|
_b.label = 7;
|
|
353
536
|
case 7:
|
|
@@ -356,38 +539,22 @@ function DataTemplate(props) {
|
|
|
356
539
|
}
|
|
357
540
|
});
|
|
358
541
|
}); };
|
|
359
|
-
var
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
res = _d.sent();
|
|
376
|
-
setExportLink((_c = res === null || res === void 0 ? void 0 : res.data.link) !== null && _c !== void 0 ? _c : "");
|
|
377
|
-
setNotification({
|
|
378
|
-
type: true,
|
|
379
|
-
title: "Export Successfully",
|
|
380
|
-
msg: "A download link had been generated.",
|
|
381
|
-
});
|
|
382
|
-
setLoading(false);
|
|
383
|
-
return [3 /*break*/, 3];
|
|
384
|
-
case 2:
|
|
385
|
-
err_1 = _d.sent();
|
|
386
|
-
return [3 /*break*/, 3];
|
|
387
|
-
case 3: return [2 /*return*/];
|
|
388
|
-
}
|
|
389
|
-
});
|
|
390
|
-
}); };
|
|
542
|
+
var handleClearDataByFilter = function () {
|
|
543
|
+
setTableData([]);
|
|
544
|
+
setPageIndex(0);
|
|
545
|
+
setTableLoading(true);
|
|
546
|
+
};
|
|
547
|
+
var handleNameSearch = function (e) {
|
|
548
|
+
setFilterSearch(e.target.value);
|
|
549
|
+
handleClearDataByFilter();
|
|
550
|
+
if (typingTimeout.current) {
|
|
551
|
+
clearTimeout(typingTimeout.current);
|
|
552
|
+
typingTimeout.current = null;
|
|
553
|
+
}
|
|
554
|
+
typingTimeout.current = setTimeout(function () {
|
|
555
|
+
setFilterSearchParams(e.target.value);
|
|
556
|
+
}, 500);
|
|
557
|
+
};
|
|
391
558
|
var handleGetItemError = function () {
|
|
392
559
|
setTableLoading(false);
|
|
393
560
|
setModalVisible(false);
|
|
@@ -396,547 +563,180 @@ function DataTemplate(props) {
|
|
|
396
563
|
handleNavigate();
|
|
397
564
|
}
|
|
398
565
|
};
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
566
|
+
//=====================================================================================
|
|
567
|
+
//SECTION: Handle Object
|
|
568
|
+
//=====================================================================================
|
|
569
|
+
// TODO - Remove Root Folder of the Object List Image
|
|
570
|
+
var handleRemoveObjectListData = function () {
|
|
571
|
+
var clonedSelectedData = handleClonedDataAttribute(selectedData, props.model);
|
|
572
|
+
if (selectedObjectId) {
|
|
573
|
+
var index = clonedSelectedData[selectedObjectStructureId].findIndex(function (eachData) { return eachData.id === selectedObjectId; });
|
|
574
|
+
if (index !== -1) {
|
|
575
|
+
clonedSelectedData[selectedObjectStructureId].splice(index, 1);
|
|
576
|
+
}
|
|
577
|
+
setSelectedObjectId("");
|
|
578
|
+
setSelectedData(clonedSelectedData);
|
|
579
|
+
handlePopUpModal(false);
|
|
580
|
+
}
|
|
581
|
+
};
|
|
582
|
+
var handleSubmitObjectDataType = function () {
|
|
583
|
+
var _a, _b;
|
|
584
|
+
var clonedSelectedData = handleClonedDataAttribute(selectedData, props.model);
|
|
585
|
+
var filterObjectModel = props.model.find(function (eachModel) {
|
|
586
|
+
return eachModel.id === selectedObjectStructureId;
|
|
587
|
+
});
|
|
588
|
+
var clonedSelectedObjectData = handleClonedDataAttribute(selectedObjectData, (_a = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _a !== void 0 ? _a : [], true, true);
|
|
589
|
+
if (!clonedSelectedObjectData["id"]) {
|
|
590
|
+
clonedSelectedObjectData["id"] = (0, uuid_1.v4)();
|
|
591
|
+
}
|
|
592
|
+
if ((filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.type) === "listObject") {
|
|
593
|
+
if (selectedObjectId) {
|
|
594
|
+
var index = clonedSelectedData[selectedObjectStructureId].findIndex(function (eachData) { return eachData.id === selectedObjectId; });
|
|
595
|
+
if (index !== -1) {
|
|
596
|
+
clonedSelectedData[selectedObjectStructureId][index] =
|
|
597
|
+
clonedSelectedObjectData;
|
|
598
|
+
}
|
|
599
|
+
setSelectedObjectId("");
|
|
600
|
+
setSelectedData(clonedSelectedData);
|
|
601
|
+
}
|
|
602
|
+
else {
|
|
603
|
+
if (Array.isArray(clonedSelectedData[selectedObjectStructureId])) {
|
|
604
|
+
clonedSelectedData[selectedObjectStructureId].push(clonedSelectedObjectData);
|
|
605
|
+
setSelectedData(clonedSelectedData);
|
|
606
|
+
}
|
|
607
|
+
else {
|
|
608
|
+
clonedSelectedData[selectedObjectStructureId] = [
|
|
609
|
+
clonedSelectedObjectData,
|
|
610
|
+
];
|
|
611
|
+
setSelectedData(clonedSelectedData);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
420
614
|
}
|
|
421
615
|
else {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
msg: "No file is selected",
|
|
426
|
-
});
|
|
616
|
+
var clonedSelectedObjectData_1 = handleClonedDataAttribute(selectedObjectData, (_b = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _b !== void 0 ? _b : []);
|
|
617
|
+
clonedSelectedData[selectedObjectStructureId] = clonedSelectedObjectData_1;
|
|
618
|
+
setSelectedData(clonedSelectedData);
|
|
427
619
|
}
|
|
620
|
+
handlePopUpModal(false);
|
|
428
621
|
};
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
var
|
|
432
|
-
|
|
433
|
-
|
|
622
|
+
//TODO: Bug, try to solve clicking List Object too fast
|
|
623
|
+
var handleSelectListObjectData = function (id, structureId) {
|
|
624
|
+
var filterObjectModel = props.model.find(function (eachModel) {
|
|
625
|
+
return eachModel.id === structureId;
|
|
626
|
+
});
|
|
627
|
+
if ((filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.type) === "listObject") {
|
|
628
|
+
var selectedObjectListData = selectedData[structureId].find(function (eachData) { return eachData.id === id; });
|
|
629
|
+
setSelectedObjectId(id);
|
|
630
|
+
setSelectedObjectStructureId(structureId);
|
|
631
|
+
setSelectedObjectData(selectedObjectListData);
|
|
632
|
+
setModalVisible(true);
|
|
633
|
+
}
|
|
634
|
+
};
|
|
635
|
+
//=====================================================================================
|
|
636
|
+
//SECTION: Handle Assets
|
|
637
|
+
//=====================================================================================
|
|
638
|
+
var handleUploadAxios = function (eachImageEndpoint, assetParentId, assetCollectionName, assetFileName, file) { return __awaiter(_this, void 0, void 0, function () {
|
|
639
|
+
var responseData, err_3;
|
|
640
|
+
var _a, _b;
|
|
641
|
+
return __generator(this, function (_c) {
|
|
642
|
+
switch (_c.label) {
|
|
434
643
|
case 0:
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
644
|
+
_c.trys.push([0, 2, , 3]);
|
|
645
|
+
return [4 /*yield*/, ((_a = props.lib) === null || _a === void 0 ? void 0 : _a.axios.post((_b = eachImageEndpoint + "/upload") !== null && _b !== void 0 ? _b : "", {
|
|
646
|
+
file: file,
|
|
647
|
+
data: {
|
|
648
|
+
assetParentId: assetParentId,
|
|
649
|
+
assetCollectionName: assetCollectionName,
|
|
650
|
+
assetFileName: assetFileName,
|
|
651
|
+
},
|
|
652
|
+
}, {
|
|
653
|
+
headers: {
|
|
654
|
+
"Content-Type": "multipart/form-data",
|
|
655
|
+
},
|
|
656
|
+
}))];
|
|
442
657
|
case 1:
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
_loop_1 = function (eachKey, eachValue) {
|
|
446
|
-
if (eachKey && eachValue && typeof eachValue === "string") {
|
|
447
|
-
var selectedModel = props.model.find(function (eachModel) {
|
|
448
|
-
return eachModel.id === eachValue;
|
|
449
|
-
});
|
|
450
|
-
if ((selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "object" ||
|
|
451
|
-
(selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "listObject") {
|
|
452
|
-
var selectedObjectModel = (_c = selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.objectData) === null || _c === void 0 ? void 0 : _c.find(function (eachModel) {
|
|
453
|
-
return eachModel.id === eachValue;
|
|
454
|
-
});
|
|
455
|
-
csvList_1.push({
|
|
456
|
-
id: (_d = listCSVObjAttribute[eachKey]) !== null && _d !== void 0 ? _d : "",
|
|
457
|
-
ori: Number(eachKey),
|
|
458
|
-
type: "object",
|
|
459
|
-
objectId: eachValue,
|
|
460
|
-
objectValueType: (_e = selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) !== null && _e !== void 0 ? _e : "string",
|
|
461
|
-
});
|
|
462
|
-
}
|
|
463
|
-
else if ((selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "image") {
|
|
464
|
-
csvList_1.push({
|
|
465
|
-
id: eachValue !== null && eachValue !== void 0 ? eachValue : "",
|
|
466
|
-
ori: Number(eachKey),
|
|
467
|
-
type: "image",
|
|
468
|
-
imageCollectionName: selectedModel.imageCollectionName,
|
|
469
|
-
imageFileName: selectedModel.imageFileName,
|
|
470
|
-
imageEndpoint: selectedModel.imageEndpoint,
|
|
471
|
-
});
|
|
472
|
-
}
|
|
473
|
-
else {
|
|
474
|
-
csvList_1.push({
|
|
475
|
-
id: eachValue !== null && eachValue !== void 0 ? eachValue : "",
|
|
476
|
-
ori: Number(eachKey),
|
|
477
|
-
type: (_f = selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) !== null && _f !== void 0 ? _f : "string",
|
|
478
|
-
});
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
};
|
|
482
|
-
for (_i = 0, _a = Object.entries(listCSVMapAttribute); _i < _a.length; _i++) {
|
|
483
|
-
_b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
484
|
-
_loop_1(eachKey, eachValue);
|
|
485
|
-
}
|
|
486
|
-
valid_1 = true;
|
|
487
|
-
errorValue_1 = "";
|
|
488
|
-
return [4 /*yield*/, Promise.all(props.model.map(function (eachEachModel) {
|
|
489
|
-
if (eachEachModel.id === "_id" || eachEachModel.id === "id") {
|
|
490
|
-
return "";
|
|
491
|
-
}
|
|
492
|
-
if (!eachEachModel.optional) {
|
|
493
|
-
// INFO : Validate and compare the modal with csv list and return true if > 1 consist within
|
|
494
|
-
var innearValidation = csvList_1.some(function (eachCsvList) {
|
|
495
|
-
if (eachCsvList.type === "object" ||
|
|
496
|
-
eachCsvList.type === "listObject") {
|
|
497
|
-
return eachEachModel.id === eachCsvList.objectId;
|
|
498
|
-
}
|
|
499
|
-
else {
|
|
500
|
-
return eachEachModel.id === eachCsvList.id;
|
|
501
|
-
}
|
|
502
|
-
});
|
|
503
|
-
if (!innearValidation) {
|
|
504
|
-
errorValue_1 = errorValue_1 + "<" + eachEachModel.id + ">";
|
|
505
|
-
valid_1 = false;
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
return null;
|
|
509
|
-
}))];
|
|
658
|
+
responseData = _c.sent();
|
|
659
|
+
return [2 /*return*/, responseData];
|
|
510
660
|
case 2:
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
}
|
|
515
|
-
else {
|
|
516
|
-
setCSVAPIAttribute(csvList_1);
|
|
517
|
-
setStepCSVIndex(stepCSVIndex + 1);
|
|
518
|
-
}
|
|
519
|
-
return [3 /*break*/, 5];
|
|
520
|
-
case 3:
|
|
521
|
-
if (!(stepCSVIndex === 2)) return [3 /*break*/, 5];
|
|
522
|
-
// INFO - Call Space Excel API
|
|
523
|
-
setLoading(true);
|
|
524
|
-
return [4 /*yield*/, ((_g = props.lib) === null || _g === void 0 ? void 0 : _g.axios.post("".concat(props.schemaEndpoint, "/csv/import"), {
|
|
525
|
-
data: {
|
|
526
|
-
parsedDataStructure: csvAPIAttribute,
|
|
527
|
-
spaceId: props.collectionId,
|
|
528
|
-
},
|
|
529
|
-
file: csvFile,
|
|
530
|
-
}, {
|
|
531
|
-
headers: {
|
|
532
|
-
"Content-Type": "multipart/form-data",
|
|
533
|
-
},
|
|
534
|
-
}))];
|
|
535
|
-
case 4:
|
|
536
|
-
response = _h.sent();
|
|
537
|
-
setLoading(false);
|
|
538
|
-
if (response.data) {
|
|
539
|
-
setNotification({
|
|
540
|
-
type: true,
|
|
541
|
-
title: "Data has been imported successfully",
|
|
542
|
-
msg: response.data.msg,
|
|
543
|
-
});
|
|
544
|
-
handlePopUpModal(false);
|
|
545
|
-
setTimeout(function () {
|
|
546
|
-
window.location.reload();
|
|
547
|
-
}, 1500);
|
|
548
|
-
}
|
|
549
|
-
_h.label = 5;
|
|
550
|
-
case 5: return [3 /*break*/, 7];
|
|
551
|
-
case 6:
|
|
552
|
-
err_2 = _h.sent();
|
|
553
|
-
setNotification({
|
|
554
|
-
type: false,
|
|
555
|
-
title: "Import Error",
|
|
556
|
-
msg: err_2.message,
|
|
557
|
-
});
|
|
558
|
-
return [3 /*break*/, 7];
|
|
559
|
-
case 7: return [2 /*return*/];
|
|
661
|
+
err_3 = _c.sent();
|
|
662
|
+
return [3 /*break*/, 3];
|
|
663
|
+
case 3: return [2 /*return*/];
|
|
560
664
|
}
|
|
561
665
|
});
|
|
562
666
|
}); };
|
|
563
|
-
var
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
});
|
|
570
|
-
setExportReferenceList([]);
|
|
571
|
-
setExportReferenceSearch("");
|
|
572
|
-
};
|
|
573
|
-
var handleCloneQueryList = function () {
|
|
574
|
-
var _a;
|
|
575
|
-
var clonedQueryInput = (_a = JSON.parse(JSON.stringify(queryList))) !== null && _a !== void 0 ? _a : [];
|
|
576
|
-
clonedQueryInput.map(function (eachQuery) {
|
|
577
|
-
var tempValue = eachQuery.value;
|
|
578
|
-
if (tempValue === "false" || tempValue === "true") {
|
|
579
|
-
tempValue = tempValue === "false" ? false : true;
|
|
580
|
-
}
|
|
581
|
-
else if (!isNaN(tempValue)) {
|
|
582
|
-
tempValue = Number(tempValue);
|
|
583
|
-
}
|
|
584
|
-
eachQuery.value = tempValue;
|
|
585
|
-
return null;
|
|
586
|
-
});
|
|
587
|
-
return clonedQueryInput;
|
|
588
|
-
};
|
|
589
|
-
var handlePushQueryList = function () {
|
|
590
|
-
var tempQueryList = handleCloneQueryList();
|
|
591
|
-
if (!tempQueryList.some(function (eachQuery) { return eachQuery.queryId === queryInput.queryId; })) {
|
|
592
|
-
var tempValue = queryInput.value;
|
|
593
|
-
if (tempValue === "false" || tempValue === "true") {
|
|
594
|
-
tempValue = tempValue === "false" ? false : true;
|
|
595
|
-
}
|
|
596
|
-
else if (!isNaN(tempValue)) {
|
|
597
|
-
tempValue = Number(tempValue);
|
|
598
|
-
}
|
|
599
|
-
queryInput.value = tempValue;
|
|
600
|
-
tempQueryList.push(queryInput);
|
|
601
|
-
setQueryModal(!queryModal);
|
|
602
|
-
setQueryList(tempQueryList);
|
|
603
|
-
setQueryInput({
|
|
604
|
-
queryId: "",
|
|
605
|
-
type: "=",
|
|
606
|
-
value: "",
|
|
607
|
-
});
|
|
608
|
-
}
|
|
609
|
-
else {
|
|
610
|
-
// NOTIFICATION - CONISTS
|
|
611
|
-
setNotification({
|
|
612
|
-
type: false,
|
|
613
|
-
title: "Export Failed",
|
|
614
|
-
msg: "Please check again your query attribute.",
|
|
615
|
-
});
|
|
616
|
-
}
|
|
617
|
-
};
|
|
618
|
-
var handleViewQuery = function (index) {
|
|
619
|
-
handleQueryModal();
|
|
620
|
-
setQueryInput(queryList[index]);
|
|
621
|
-
};
|
|
622
|
-
var handleSortQuery = function (index, sortType) {
|
|
623
|
-
var _a;
|
|
624
|
-
var sortList = JSON.parse(JSON.stringify(queryList));
|
|
625
|
-
var ascIndex = sortType === "up" ? index - 1 : index + 1;
|
|
626
|
-
_a = [
|
|
627
|
-
sortList[ascIndex],
|
|
628
|
-
sortList[index],
|
|
629
|
-
], sortList[index] = _a[0], sortList[ascIndex] = _a[1];
|
|
630
|
-
setQueryList(sortList);
|
|
631
|
-
};
|
|
632
|
-
//Section - Update
|
|
633
|
-
var handleRetrieveSelectedData = function (responseData) { return __awaiter(_this, void 0, void 0, function () {
|
|
634
|
-
var dummyRespData, dummyReferenceModelSchema, newRespData, _a;
|
|
635
|
-
var _b, _c, _d;
|
|
636
|
-
return __generator(this, function (_e) {
|
|
637
|
-
switch (_e.label) {
|
|
638
|
-
case 0:
|
|
639
|
-
if (!responseData.data) return [3 /*break*/, 4];
|
|
640
|
-
dummyRespData = JSON.parse(JSON.stringify(responseData.data), utils_2.jsonReviver);
|
|
641
|
-
dummyReferenceModelSchema = JSON.parse(JSON.stringify(referenceModelSchema));
|
|
642
|
-
if (!(props.type === "read")) return [3 /*break*/, 2];
|
|
643
|
-
return [4 /*yield*/, (0, utils_2.handleRetrieveDeepModel)(dummyRespData, (_b = props.model) !== null && _b !== void 0 ? _b : [], dbModule, props.server, props.dbEndpoint, props.schemaEndpoint, (_c = props.imageEndpoint) !== null && _c !== void 0 ? _c : "", (_d = props.id) !== null && _d !== void 0 ? _d : "", dummyReferenceModelSchema, setReferenceSchema)];
|
|
667
|
+
var handleUploadObjectImage = function (id) { return __awaiter(_this, void 0, void 0, function () {
|
|
668
|
+
var clonedSelectedData, uploadObjectAttribute, objectAttribute, _loop_1, _i, _a, _b, eachKey, eachValue;
|
|
669
|
+
var _this = this;
|
|
670
|
+
return __generator(this, function (_c) {
|
|
671
|
+
switch (_c.label) {
|
|
672
|
+
case 0: return [4 /*yield*/, handleUploadListObjectImage(id)];
|
|
644
673
|
case 1:
|
|
645
|
-
|
|
646
|
-
|
|
674
|
+
clonedSelectedData = _c.sent();
|
|
675
|
+
uploadObjectAttribute = {};
|
|
676
|
+
objectAttribute = props.model.filter(function (eachAttribute) {
|
|
677
|
+
return eachAttribute.type === "object";
|
|
678
|
+
});
|
|
679
|
+
if (!(objectAttribute.length > 0)) return [3 /*break*/, 5];
|
|
680
|
+
objectAttribute.map(function (eachObject) {
|
|
681
|
+
var _a;
|
|
682
|
+
var filterImageObjectData = (_a = eachObject.objectData) === null || _a === void 0 ? void 0 : _a.filter(function (eachAttribute) {
|
|
683
|
+
return (eachAttribute.type === "image" || eachAttribute.type === "file");
|
|
684
|
+
});
|
|
685
|
+
uploadObjectAttribute[eachObject.id] = filterImageObjectData;
|
|
686
|
+
return null;
|
|
687
|
+
});
|
|
688
|
+
_loop_1 = function (eachKey, eachValue) {
|
|
689
|
+
return __generator(this, function (_d) {
|
|
690
|
+
switch (_d.label) {
|
|
691
|
+
case 0:
|
|
692
|
+
if (!Array.isArray(eachValue)) return [3 /*break*/, 2];
|
|
693
|
+
return [4 /*yield*/, Promise.all(eachValue.map(function (eachImage) { return __awaiter(_this, void 0, void 0, function () {
|
|
694
|
+
var responseData;
|
|
695
|
+
var _a, _b;
|
|
696
|
+
return __generator(this, function (_c) {
|
|
697
|
+
switch (_c.label) {
|
|
698
|
+
case 0:
|
|
699
|
+
if (!(typeof selectedData[eachKey][eachImage.id] === "string")) return [3 /*break*/, 1];
|
|
700
|
+
return [2 /*return*/];
|
|
701
|
+
case 1:
|
|
702
|
+
if (!(selectedData[eachKey][eachImage.id] instanceof File)) return [3 /*break*/, 3];
|
|
703
|
+
return [4 /*yield*/, handleUploadAxios((_a = eachImage.imageEndpoint) !== null && _a !== void 0 ? _a : "", eachKey, eachImage.imageCollectionName + "/" + id, (_b = eachImage.imageFileName) !== null && _b !== void 0 ? _b : "", selectedData[eachKey][eachImage.id])];
|
|
704
|
+
case 2:
|
|
705
|
+
responseData = _c.sent();
|
|
706
|
+
if (responseData.data) {
|
|
707
|
+
clonedSelectedData[eachKey][eachImage.id] =
|
|
708
|
+
responseData.data.data;
|
|
709
|
+
}
|
|
710
|
+
_c.label = 3;
|
|
711
|
+
case 3: return [2 /*return*/, null];
|
|
712
|
+
}
|
|
713
|
+
});
|
|
714
|
+
}); }))];
|
|
715
|
+
case 1:
|
|
716
|
+
_d.sent();
|
|
717
|
+
_d.label = 2;
|
|
718
|
+
case 2: return [2 /*return*/];
|
|
719
|
+
}
|
|
720
|
+
});
|
|
721
|
+
};
|
|
722
|
+
_i = 0, _a = Object.entries(uploadObjectAttribute);
|
|
723
|
+
_c.label = 2;
|
|
647
724
|
case 2:
|
|
648
|
-
_a
|
|
649
|
-
|
|
725
|
+
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
726
|
+
_b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
727
|
+
return [5 /*yield**/, _loop_1(eachKey, eachValue)];
|
|
650
728
|
case 3:
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
_e.label = 4;
|
|
729
|
+
_c.sent();
|
|
730
|
+
_c.label = 4;
|
|
654
731
|
case 4:
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
}
|
|
659
|
-
});
|
|
660
|
-
}); };
|
|
661
|
-
var handleClonedDataAttribute = function (selectedData, model, force, isRemainId) {
|
|
662
|
-
var defaultValue = selectedData;
|
|
663
|
-
var clonedSelectedData = JSON.parse(JSON.stringify(selectedData));
|
|
664
|
-
model.map(function (eachAttribute) {
|
|
665
|
-
var _a, _b;
|
|
666
|
-
if (eachAttribute.id === "_id" || eachAttribute.id === "id") {
|
|
667
|
-
return null;
|
|
668
|
-
}
|
|
669
|
-
switch (eachAttribute.type) {
|
|
670
|
-
case "date":
|
|
671
|
-
if (defaultValue[eachAttribute.id]) {
|
|
672
|
-
clonedSelectedData[eachAttribute.id] = (0, moment_1.default)(defaultValue[eachAttribute.id]).toDate();
|
|
673
|
-
}
|
|
674
|
-
break;
|
|
675
|
-
case "boolean":
|
|
676
|
-
//INFO : Force is only called during submission, some casting may affect UI
|
|
677
|
-
if (force) {
|
|
678
|
-
if (defaultValue[eachAttribute.id] === "true") {
|
|
679
|
-
clonedSelectedData[eachAttribute.id] = true;
|
|
680
|
-
}
|
|
681
|
-
else if (defaultValue[eachAttribute.id] === "false") {
|
|
682
|
-
clonedSelectedData[eachAttribute.id] = false;
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
break;
|
|
686
|
-
case "listObject":
|
|
687
|
-
clonedSelectedData[eachAttribute.id] =
|
|
688
|
-
(_a = defaultValue[eachAttribute.id]) !== null && _a !== void 0 ? _a : [];
|
|
689
|
-
break;
|
|
690
|
-
case "object":
|
|
691
|
-
if (force)
|
|
692
|
-
clonedSelectedData[eachAttribute.id] =
|
|
693
|
-
(_b = defaultValue[eachAttribute.id]) !== null && _b !== void 0 ? _b : {};
|
|
694
|
-
else
|
|
695
|
-
clonedSelectedData[eachAttribute.id] =
|
|
696
|
-
defaultValue[eachAttribute.id];
|
|
697
|
-
break;
|
|
698
|
-
case "image":
|
|
699
|
-
case "file":
|
|
700
|
-
clonedSelectedData[eachAttribute.id] = defaultValue[eachAttribute.id];
|
|
701
|
-
break;
|
|
702
|
-
case "number":
|
|
703
|
-
if (defaultValue[eachAttribute.id]) {
|
|
704
|
-
clonedSelectedData[eachAttribute.id] = Number(defaultValue[eachAttribute.id]);
|
|
705
|
-
}
|
|
706
|
-
break;
|
|
707
|
-
}
|
|
708
|
-
return null;
|
|
709
|
-
});
|
|
710
|
-
if (!isRemainId) {
|
|
711
|
-
delete clonedSelectedData["id"];
|
|
712
|
-
delete clonedSelectedData["_id"];
|
|
713
|
-
}
|
|
714
|
-
return clonedSelectedData;
|
|
715
|
-
};
|
|
716
|
-
var handleOnChangeData = function () {
|
|
717
|
-
var _a;
|
|
718
|
-
if (modalVisible && selectedObjectStructureId) {
|
|
719
|
-
var filterObjectModel = props.model.find(function (eachModel) {
|
|
720
|
-
return eachModel.id === selectedObjectStructureId;
|
|
721
|
-
});
|
|
722
|
-
return {
|
|
723
|
-
data: selectedObjectData,
|
|
724
|
-
model: (_a = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _a !== void 0 ? _a : [],
|
|
725
|
-
};
|
|
726
|
-
}
|
|
727
|
-
else {
|
|
728
|
-
return {
|
|
729
|
-
data: selectedData,
|
|
730
|
-
model: props.model,
|
|
731
|
-
};
|
|
732
|
-
}
|
|
733
|
-
};
|
|
734
|
-
var handleUpdateChangeData = function (data) {
|
|
735
|
-
if (modalVisible && selectedObjectStructureId) {
|
|
736
|
-
setSelectedObjectData(data);
|
|
737
|
-
}
|
|
738
|
-
else {
|
|
739
|
-
setSelectedData(data);
|
|
740
|
-
}
|
|
741
|
-
};
|
|
742
|
-
var handleOnChangeFile = function (e) {
|
|
743
|
-
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
744
|
-
var clonedData = handleClonedDataAttribute(data, model);
|
|
745
|
-
clonedData[e.target.id] =
|
|
746
|
-
e.target.files.length > 0 ? e.target.files[0] : undefined;
|
|
747
|
-
handleUpdateChangeData(clonedData);
|
|
748
|
-
};
|
|
749
|
-
var handleOnChangeAddress = function (id, address) {
|
|
750
|
-
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
751
|
-
var clonedData = handleClonedDataAttribute(data, model);
|
|
752
|
-
clonedData[id] = address;
|
|
753
|
-
handleUpdateChangeData(clonedData);
|
|
754
|
-
};
|
|
755
|
-
var handleOnChangeText = function (e) {
|
|
756
|
-
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
757
|
-
var clonedData = handleClonedDataAttribute(data, model);
|
|
758
|
-
clonedData[e.target.id] = e.target.value;
|
|
759
|
-
handleUpdateChangeData(clonedData);
|
|
760
|
-
};
|
|
761
|
-
var handleOnChangeSelect = function (id, value) {
|
|
762
|
-
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
763
|
-
var clonedData = handleClonedDataAttribute(data, model);
|
|
764
|
-
clonedData[id] = value;
|
|
765
|
-
handleUpdateChangeData(clonedData);
|
|
766
|
-
};
|
|
767
|
-
var handleOnChangeDate = function (id, value) {
|
|
768
|
-
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
769
|
-
var clonedData = handleClonedDataAttribute(data, model);
|
|
770
|
-
clonedData[id] = value;
|
|
771
|
-
handleUpdateChangeData(clonedData);
|
|
772
|
-
};
|
|
773
|
-
//SECTION - Reference
|
|
774
|
-
var handleSearchReferenceOptions = function (id, searchText) {
|
|
775
|
-
var clonedSearchText = JSON.parse(JSON.stringify(referenceSearchText));
|
|
776
|
-
clonedSearchText[id] = searchText;
|
|
777
|
-
setReferenceSearchText(clonedSearchText);
|
|
778
|
-
};
|
|
779
|
-
var handleGetReferenceOptions = function (dataList, dataStructure, label, currentData) { return __awaiter(_this, void 0, void 0, function () {
|
|
780
|
-
var optionList_1, clonedReferrenceOptions, referenceRQ, res, err_3;
|
|
781
|
-
var _a;
|
|
782
|
-
return __generator(this, function (_b) {
|
|
783
|
-
switch (_b.label) {
|
|
784
|
-
case 0:
|
|
785
|
-
_b.trys.push([0, 3, , 4]);
|
|
786
|
-
optionList_1 = [];
|
|
787
|
-
clonedReferrenceOptions = JSON.parse(JSON.stringify(referenceOptions));
|
|
788
|
-
dataList.data.map(function (eachData) {
|
|
789
|
-
var _a;
|
|
790
|
-
var eachDataJSON = JSON.parse(JSON.stringify(eachData));
|
|
791
|
-
optionList_1.push({
|
|
792
|
-
key: eachData._id,
|
|
793
|
-
label: (_a = eachDataJSON[label]) !== null && _a !== void 0 ? _a : eachData._id,
|
|
794
|
-
});
|
|
795
|
-
return null;
|
|
796
|
-
});
|
|
797
|
-
if (!currentData) return [3 /*break*/, 2];
|
|
798
|
-
referenceRQ = new readQuery_1.ReadQuery(dbModule, props.server, (_a = dataStructure.referenceSpaceId) !== null && _a !== void 0 ? _a : "", props.dbEndpoint);
|
|
799
|
-
return [4 /*yield*/, referenceRQ.call({
|
|
800
|
-
type: "list",
|
|
801
|
-
query: [
|
|
802
|
-
{
|
|
803
|
-
type: "in",
|
|
804
|
-
queryId: props.server === "mongoServer" ? "_id" : "id",
|
|
805
|
-
value: Array.isArray(currentData) ? currentData : [currentData],
|
|
806
|
-
},
|
|
807
|
-
],
|
|
808
|
-
})];
|
|
809
|
-
case 1:
|
|
810
|
-
res = _b.sent();
|
|
811
|
-
if (res === null || res === void 0 ? void 0 : res.data) {
|
|
812
|
-
res.data.map(function (eachData) {
|
|
813
|
-
var _a;
|
|
814
|
-
var id = props.server === "mongoServer" ? eachData._id : eachData.id;
|
|
815
|
-
var eachDataJSON = JSON.parse(JSON.stringify(eachData));
|
|
816
|
-
if (!optionList_1.some(function (eachData) { return eachData.key === id; })) {
|
|
817
|
-
optionList_1.push({
|
|
818
|
-
key: eachData._id,
|
|
819
|
-
label: (_a = eachDataJSON[label]) !== null && _a !== void 0 ? _a : eachData._id,
|
|
820
|
-
});
|
|
821
|
-
}
|
|
822
|
-
return null;
|
|
823
|
-
});
|
|
824
|
-
}
|
|
825
|
-
_b.label = 2;
|
|
826
|
-
case 2:
|
|
827
|
-
clonedReferrenceOptions[dataStructure.id] = optionList_1;
|
|
828
|
-
setReferenceOptions(clonedReferrenceOptions);
|
|
829
|
-
return [3 /*break*/, 4];
|
|
830
|
-
case 3:
|
|
831
|
-
err_3 = _b.sent();
|
|
832
|
-
return [3 /*break*/, 4];
|
|
833
|
-
case 4: return [2 /*return*/];
|
|
834
|
-
}
|
|
835
|
-
});
|
|
836
|
-
}); };
|
|
837
|
-
//SECTION - Assets
|
|
838
|
-
var handleUploadAxios = function (eachImageEndpoint, assetParentId, assetCollectionName, assetFileName, file) { return __awaiter(_this, void 0, void 0, function () {
|
|
839
|
-
var responseData, err_4;
|
|
840
|
-
var _a, _b;
|
|
841
|
-
return __generator(this, function (_c) {
|
|
842
|
-
switch (_c.label) {
|
|
843
|
-
case 0:
|
|
844
|
-
_c.trys.push([0, 2, , 3]);
|
|
845
|
-
return [4 /*yield*/, ((_a = props.lib) === null || _a === void 0 ? void 0 : _a.axios.post((_b = eachImageEndpoint + "/upload") !== null && _b !== void 0 ? _b : "", {
|
|
846
|
-
file: file,
|
|
847
|
-
data: {
|
|
848
|
-
assetParentId: assetParentId,
|
|
849
|
-
assetCollectionName: assetCollectionName,
|
|
850
|
-
assetFileName: assetFileName,
|
|
851
|
-
},
|
|
852
|
-
}, {
|
|
853
|
-
headers: {
|
|
854
|
-
"Content-Type": "multipart/form-data",
|
|
855
|
-
},
|
|
856
|
-
}))];
|
|
857
|
-
case 1:
|
|
858
|
-
responseData = _c.sent();
|
|
859
|
-
return [2 /*return*/, responseData];
|
|
860
|
-
case 2:
|
|
861
|
-
err_4 = _c.sent();
|
|
862
|
-
return [3 /*break*/, 3];
|
|
863
|
-
case 3: return [2 /*return*/];
|
|
864
|
-
}
|
|
865
|
-
});
|
|
866
|
-
}); };
|
|
867
|
-
var handleUploadObjectImage = function (id) { return __awaiter(_this, void 0, void 0, function () {
|
|
868
|
-
var clonedSelectedData, uploadObjectAttribute, objectAttribute, _loop_2, _i, _a, _b, eachKey, eachValue;
|
|
869
|
-
var _this = this;
|
|
870
|
-
return __generator(this, function (_c) {
|
|
871
|
-
switch (_c.label) {
|
|
872
|
-
case 0: return [4 /*yield*/, handleUploadListObjectImage(id)];
|
|
873
|
-
case 1:
|
|
874
|
-
clonedSelectedData = _c.sent();
|
|
875
|
-
uploadObjectAttribute = {};
|
|
876
|
-
objectAttribute = props.model.filter(function (eachAttribute) {
|
|
877
|
-
return eachAttribute.type === "object";
|
|
878
|
-
});
|
|
879
|
-
if (!(objectAttribute.length > 0)) return [3 /*break*/, 5];
|
|
880
|
-
objectAttribute.map(function (eachObject) {
|
|
881
|
-
var _a;
|
|
882
|
-
var filterImageObjectData = (_a = eachObject.objectData) === null || _a === void 0 ? void 0 : _a.filter(function (eachAttribute) {
|
|
883
|
-
return (eachAttribute.type === "image" || eachAttribute.type === "file");
|
|
884
|
-
});
|
|
885
|
-
uploadObjectAttribute[eachObject.id] = filterImageObjectData;
|
|
886
|
-
return null;
|
|
887
|
-
});
|
|
888
|
-
_loop_2 = function (eachKey, eachValue) {
|
|
889
|
-
return __generator(this, function (_d) {
|
|
890
|
-
switch (_d.label) {
|
|
891
|
-
case 0:
|
|
892
|
-
if (!Array.isArray(eachValue)) return [3 /*break*/, 2];
|
|
893
|
-
return [4 /*yield*/, Promise.all(eachValue.map(function (eachImage) { return __awaiter(_this, void 0, void 0, function () {
|
|
894
|
-
var responseData;
|
|
895
|
-
var _a, _b;
|
|
896
|
-
return __generator(this, function (_c) {
|
|
897
|
-
switch (_c.label) {
|
|
898
|
-
case 0:
|
|
899
|
-
if (!(typeof selectedData[eachKey][eachImage.id] === "string")) return [3 /*break*/, 1];
|
|
900
|
-
return [2 /*return*/];
|
|
901
|
-
case 1:
|
|
902
|
-
if (!(selectedData[eachKey][eachImage.id] instanceof File)) return [3 /*break*/, 3];
|
|
903
|
-
return [4 /*yield*/, handleUploadAxios((_a = eachImage.imageEndpoint) !== null && _a !== void 0 ? _a : "", eachKey, eachImage.imageCollectionName + "/" + id, (_b = eachImage.imageFileName) !== null && _b !== void 0 ? _b : "", selectedData[eachKey][eachImage.id])];
|
|
904
|
-
case 2:
|
|
905
|
-
responseData = _c.sent();
|
|
906
|
-
if (responseData.data) {
|
|
907
|
-
clonedSelectedData[eachKey][eachImage.id] =
|
|
908
|
-
responseData.data.data;
|
|
909
|
-
}
|
|
910
|
-
_c.label = 3;
|
|
911
|
-
case 3: return [2 /*return*/, null];
|
|
912
|
-
}
|
|
913
|
-
});
|
|
914
|
-
}); }))];
|
|
915
|
-
case 1:
|
|
916
|
-
_d.sent();
|
|
917
|
-
_d.label = 2;
|
|
918
|
-
case 2: return [2 /*return*/];
|
|
919
|
-
}
|
|
920
|
-
});
|
|
921
|
-
};
|
|
922
|
-
_i = 0, _a = Object.entries(uploadObjectAttribute);
|
|
923
|
-
_c.label = 2;
|
|
924
|
-
case 2:
|
|
925
|
-
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
926
|
-
_b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
927
|
-
return [5 /*yield**/, _loop_2(eachKey, eachValue)];
|
|
928
|
-
case 3:
|
|
929
|
-
_c.sent();
|
|
930
|
-
_c.label = 4;
|
|
931
|
-
case 4:
|
|
932
|
-
_i++;
|
|
933
|
-
return [3 /*break*/, 2];
|
|
934
|
-
case 5: return [2 /*return*/, clonedSelectedData];
|
|
732
|
+
_i++;
|
|
733
|
+
return [3 /*break*/, 2];
|
|
734
|
+
case 5: return [2 /*return*/, clonedSelectedData];
|
|
935
735
|
}
|
|
936
736
|
});
|
|
937
737
|
}); };
|
|
938
738
|
var handleUploadListObjectImage = function (id) { return __awaiter(_this, void 0, void 0, function () {
|
|
939
|
-
var clonedSelectedData, uploadObjectAttribute, objectAttribute,
|
|
739
|
+
var clonedSelectedData, uploadObjectAttribute, objectAttribute, _loop_2, _i, _a, _b, eachKey, eachValue;
|
|
940
740
|
var _this = this;
|
|
941
741
|
return __generator(this, function (_c) {
|
|
942
742
|
switch (_c.label) {
|
|
@@ -955,7 +755,7 @@ function DataTemplate(props) {
|
|
|
955
755
|
uploadObjectAttribute[eachObject.id] = filterImageObjectData;
|
|
956
756
|
return null;
|
|
957
757
|
});
|
|
958
|
-
|
|
758
|
+
_loop_2 = function (eachKey, eachValue) {
|
|
959
759
|
return __generator(this, function (_d) {
|
|
960
760
|
switch (_d.label) {
|
|
961
761
|
case 0:
|
|
@@ -1014,7 +814,7 @@ function DataTemplate(props) {
|
|
|
1014
814
|
case 1:
|
|
1015
815
|
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
|
1016
816
|
_b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
1017
|
-
return [5 /*yield**/,
|
|
817
|
+
return [5 /*yield**/, _loop_2(eachKey, eachValue)];
|
|
1018
818
|
case 2:
|
|
1019
819
|
_c.sent();
|
|
1020
820
|
_c.label = 3;
|
|
@@ -1064,7 +864,7 @@ function DataTemplate(props) {
|
|
|
1064
864
|
});
|
|
1065
865
|
}); };
|
|
1066
866
|
var handleRemoveImageAxios = function (imageEndpoint, assetParentId, assetCollectionName, assetFileName) { return __awaiter(_this, void 0, void 0, function () {
|
|
1067
|
-
var
|
|
867
|
+
var err_4;
|
|
1068
868
|
var _a, _b;
|
|
1069
869
|
return __generator(this, function (_c) {
|
|
1070
870
|
switch (_c.label) {
|
|
@@ -1085,7 +885,7 @@ function DataTemplate(props) {
|
|
|
1085
885
|
_c.sent();
|
|
1086
886
|
return [3 /*break*/, 3];
|
|
1087
887
|
case 2:
|
|
1088
|
-
|
|
888
|
+
err_4 = _c.sent();
|
|
1089
889
|
return [3 /*break*/, 3];
|
|
1090
890
|
case 3: return [2 /*return*/];
|
|
1091
891
|
}
|
|
@@ -1118,7 +918,7 @@ function DataTemplate(props) {
|
|
|
1118
918
|
});
|
|
1119
919
|
}); };
|
|
1120
920
|
var handleRemoveObjectImage = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1121
|
-
var uploadObjectAttribute, objectAttribute,
|
|
921
|
+
var uploadObjectAttribute, objectAttribute, _loop_3, _i, _a, _b, eachKey, eachValue;
|
|
1122
922
|
var _this = this;
|
|
1123
923
|
return __generator(this, function (_c) {
|
|
1124
924
|
switch (_c.label) {
|
|
@@ -1136,7 +936,7 @@ function DataTemplate(props) {
|
|
|
1136
936
|
uploadObjectAttribute[eachObject.id] = filterImageObjectData;
|
|
1137
937
|
return null;
|
|
1138
938
|
});
|
|
1139
|
-
|
|
939
|
+
_loop_3 = function (eachKey, eachValue) {
|
|
1140
940
|
return __generator(this, function (_d) {
|
|
1141
941
|
switch (_d.label) {
|
|
1142
942
|
case 0:
|
|
@@ -1164,7 +964,7 @@ function DataTemplate(props) {
|
|
|
1164
964
|
case 1:
|
|
1165
965
|
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
|
1166
966
|
_b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
1167
|
-
return [5 /*yield**/,
|
|
967
|
+
return [5 /*yield**/, _loop_3(eachKey, eachValue)];
|
|
1168
968
|
case 2:
|
|
1169
969
|
_c.sent();
|
|
1170
970
|
_c.label = 3;
|
|
@@ -1175,80 +975,11 @@ function DataTemplate(props) {
|
|
|
1175
975
|
}
|
|
1176
976
|
});
|
|
1177
977
|
}); };
|
|
1178
|
-
|
|
1179
|
-
//
|
|
1180
|
-
|
|
1181
|
-
var clonedSelectedData = handleClonedDataAttribute(selectedData, props.model);
|
|
1182
|
-
if (selectedObjectId) {
|
|
1183
|
-
var index = clonedSelectedData[selectedObjectStructureId].findIndex(function (eachData) { return eachData.id === selectedObjectId; });
|
|
1184
|
-
if (index !== -1) {
|
|
1185
|
-
clonedSelectedData[selectedObjectStructureId].splice(index, 1);
|
|
1186
|
-
}
|
|
1187
|
-
setSelectedObjectId("");
|
|
1188
|
-
setSelectedData(clonedSelectedData);
|
|
1189
|
-
handlePopUpModal(false);
|
|
1190
|
-
}
|
|
1191
|
-
};
|
|
1192
|
-
var handleSubmitObjectDataType = function () {
|
|
1193
|
-
var _a, _b;
|
|
1194
|
-
var clonedSelectedData = handleClonedDataAttribute(selectedData, props.model);
|
|
1195
|
-
var filterObjectModel = props.model.find(function (eachModel) {
|
|
1196
|
-
return eachModel.id === selectedObjectStructureId;
|
|
1197
|
-
});
|
|
1198
|
-
var clonedSelectedObjectData = handleClonedDataAttribute(selectedObjectData, (_a = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _a !== void 0 ? _a : [], true, true);
|
|
1199
|
-
if (!clonedSelectedObjectData["id"]) {
|
|
1200
|
-
clonedSelectedObjectData["id"] = (0, uuid_1.v4)();
|
|
1201
|
-
}
|
|
1202
|
-
if ((filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.type) === "listObject") {
|
|
1203
|
-
if (selectedObjectId) {
|
|
1204
|
-
var index = clonedSelectedData[selectedObjectStructureId].findIndex(function (eachData) { return eachData.id === selectedObjectId; });
|
|
1205
|
-
if (index !== -1) {
|
|
1206
|
-
clonedSelectedData[selectedObjectStructureId][index] =
|
|
1207
|
-
clonedSelectedObjectData;
|
|
1208
|
-
}
|
|
1209
|
-
setSelectedObjectId("");
|
|
1210
|
-
setSelectedData(clonedSelectedData);
|
|
1211
|
-
}
|
|
1212
|
-
else {
|
|
1213
|
-
if (Array.isArray(clonedSelectedData[selectedObjectStructureId])) {
|
|
1214
|
-
clonedSelectedData[selectedObjectStructureId].push(clonedSelectedObjectData);
|
|
1215
|
-
setSelectedData(clonedSelectedData);
|
|
1216
|
-
}
|
|
1217
|
-
else {
|
|
1218
|
-
clonedSelectedData[selectedObjectStructureId] = [
|
|
1219
|
-
clonedSelectedObjectData,
|
|
1220
|
-
];
|
|
1221
|
-
setSelectedData(clonedSelectedData);
|
|
1222
|
-
}
|
|
1223
|
-
}
|
|
1224
|
-
}
|
|
1225
|
-
else {
|
|
1226
|
-
var clonedSelectedObjectData_1 = handleClonedDataAttribute(selectedObjectData, (_b = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _b !== void 0 ? _b : []);
|
|
1227
|
-
clonedSelectedData[selectedObjectStructureId] = clonedSelectedObjectData_1;
|
|
1228
|
-
setSelectedData(clonedSelectedData);
|
|
1229
|
-
}
|
|
1230
|
-
handlePopUpModal(false);
|
|
1231
|
-
};
|
|
1232
|
-
var handleSelectListObjectData = function (id, structureId) {
|
|
1233
|
-
var filterObjectModel = props.model.find(function (eachModel) {
|
|
1234
|
-
return eachModel.id === structureId;
|
|
1235
|
-
});
|
|
1236
|
-
if ((filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.type) === "listObject") {
|
|
1237
|
-
var selectedObjectListData = selectedData[structureId].find(function (eachData) { return eachData.id === id; });
|
|
1238
|
-
setSelectedObjectId(id);
|
|
1239
|
-
setSelectedObjectStructureId(structureId);
|
|
1240
|
-
setSelectedObjectData(selectedObjectListData);
|
|
1241
|
-
setModalVisible(true);
|
|
1242
|
-
}
|
|
1243
|
-
else {
|
|
1244
|
-
setSelectedObjectStructureId(structureId);
|
|
1245
|
-
setSelectedObjectData(selectedData[structureId]);
|
|
1246
|
-
setModalVisible(true);
|
|
1247
|
-
}
|
|
1248
|
-
};
|
|
1249
|
-
//SECTION - CRUD
|
|
978
|
+
//=====================================================================================
|
|
979
|
+
//SECTION: Handle CRUD
|
|
980
|
+
//=====================================================================================
|
|
1250
981
|
var handleRemoveSelectedData = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1251
|
-
var selectedId, res,
|
|
982
|
+
var selectedId, res, err_5;
|
|
1252
983
|
return __generator(this, function (_a) {
|
|
1253
984
|
switch (_a.label) {
|
|
1254
985
|
case 0:
|
|
@@ -1256,7 +987,7 @@ function DataTemplate(props) {
|
|
|
1256
987
|
selectedId = props.id;
|
|
1257
988
|
if (!selectedId) return [3 /*break*/, 4];
|
|
1258
989
|
setLoading(true);
|
|
1259
|
-
|
|
990
|
+
setDeleteModal(true);
|
|
1260
991
|
return [4 /*yield*/, handleRemoveImage()];
|
|
1261
992
|
case 1:
|
|
1262
993
|
_a.sent();
|
|
@@ -1274,8 +1005,8 @@ function DataTemplate(props) {
|
|
|
1274
1005
|
_a.label = 4;
|
|
1275
1006
|
case 4: return [3 /*break*/, 6];
|
|
1276
1007
|
case 5:
|
|
1277
|
-
|
|
1278
|
-
|
|
1008
|
+
err_5 = _a.sent();
|
|
1009
|
+
setDeleteModal(false);
|
|
1279
1010
|
setLoading(false);
|
|
1280
1011
|
return [3 /*break*/, 6];
|
|
1281
1012
|
case 6: return [2 /*return*/];
|
|
@@ -1283,7 +1014,7 @@ function DataTemplate(props) {
|
|
|
1283
1014
|
});
|
|
1284
1015
|
}); };
|
|
1285
1016
|
var handleSubmit = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1286
|
-
var selectedId, id, createSelectedData, res,
|
|
1017
|
+
var selectedId, id, createSelectedData, res, err_6;
|
|
1287
1018
|
var _a;
|
|
1288
1019
|
return __generator(this, function (_b) {
|
|
1289
1020
|
switch (_b.label) {
|
|
@@ -1298,12 +1029,7 @@ function DataTemplate(props) {
|
|
|
1298
1029
|
createSelectedData = _b.sent();
|
|
1299
1030
|
res = "";
|
|
1300
1031
|
if (!(selectedId === "new")) return [3 /*break*/, 3];
|
|
1301
|
-
|
|
1302
|
-
createSelectedData["_id"] = id;
|
|
1303
|
-
}
|
|
1304
|
-
else {
|
|
1305
|
-
createSelectedData["id"] = id;
|
|
1306
|
-
}
|
|
1032
|
+
createSelectedData[serverId] = id;
|
|
1307
1033
|
return [4 /*yield*/, writeServerQuery.call("create", {
|
|
1308
1034
|
data: createSelectedData,
|
|
1309
1035
|
})];
|
|
@@ -1332,7 +1058,7 @@ function DataTemplate(props) {
|
|
|
1332
1058
|
}
|
|
1333
1059
|
return [3 /*break*/, 7];
|
|
1334
1060
|
case 6:
|
|
1335
|
-
|
|
1061
|
+
err_6 = _b.sent();
|
|
1336
1062
|
setModalVisible(false);
|
|
1337
1063
|
setLoading(false);
|
|
1338
1064
|
return [3 /*break*/, 7];
|
|
@@ -1340,390 +1066,454 @@ function DataTemplate(props) {
|
|
|
1340
1066
|
}
|
|
1341
1067
|
});
|
|
1342
1068
|
}); };
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
setPageIndex(0);
|
|
1379
|
-
setTableLoading(true);
|
|
1380
|
-
};
|
|
1381
|
-
var handleNameSearch = function (e) {
|
|
1382
|
-
setFilterSearch(e.target.value);
|
|
1383
|
-
handleClearDataByFilter();
|
|
1384
|
-
if (typingTimeout.current) {
|
|
1385
|
-
clearTimeout(typingTimeout.current);
|
|
1386
|
-
typingTimeout.current = null;
|
|
1387
|
-
}
|
|
1388
|
-
typingTimeout.current = setTimeout(function () {
|
|
1389
|
-
setFilterSearchParams(e.target.value);
|
|
1390
|
-
}, 500);
|
|
1391
|
-
};
|
|
1392
|
-
var renderTableHeader = function () {
|
|
1393
|
-
var tableHeader = [];
|
|
1394
|
-
props.model.map(function (eachAttribute) {
|
|
1395
|
-
if (eachAttribute.id === "baseUpdatedAt" ||
|
|
1396
|
-
eachAttribute.type === "listObject" ||
|
|
1397
|
-
eachAttribute.hide) {
|
|
1069
|
+
var handleRetrieveSelectedData = function (responseData) { return __awaiter(_this, void 0, void 0, function () {
|
|
1070
|
+
var dummyRespData, dummyReferenceModelSchema, newRespData, _a;
|
|
1071
|
+
var _b, _c, _d;
|
|
1072
|
+
return __generator(this, function (_e) {
|
|
1073
|
+
switch (_e.label) {
|
|
1074
|
+
case 0:
|
|
1075
|
+
if (!responseData.data) return [3 /*break*/, 4];
|
|
1076
|
+
dummyRespData = JSON.parse(JSON.stringify(responseData.data), utils_2.jsonReviver);
|
|
1077
|
+
dummyReferenceModelSchema = JSON.parse(JSON.stringify(referenceModelSchema));
|
|
1078
|
+
if (!(props.type === "read")) return [3 /*break*/, 2];
|
|
1079
|
+
return [4 /*yield*/, (0, utils_2.handleRetrieveDeepModel)(dummyRespData, (_b = props.model) !== null && _b !== void 0 ? _b : [], dbModule, props.server, props.dbEndpoint, props.schemaEndpoint, (_c = props.imageEndpoint) !== null && _c !== void 0 ? _c : "", (_d = props.id) !== null && _d !== void 0 ? _d : "", dummyReferenceModelSchema, setReferenceSchema)];
|
|
1080
|
+
case 1:
|
|
1081
|
+
_a = _e.sent();
|
|
1082
|
+
return [3 /*break*/, 3];
|
|
1083
|
+
case 2:
|
|
1084
|
+
_a = dummyRespData;
|
|
1085
|
+
_e.label = 3;
|
|
1086
|
+
case 3:
|
|
1087
|
+
newRespData = _a;
|
|
1088
|
+
setSelectedData(newRespData);
|
|
1089
|
+
handleRetrieveReferenceOptions(newRespData);
|
|
1090
|
+
_e.label = 4;
|
|
1091
|
+
case 4:
|
|
1092
|
+
setModalVisible(false);
|
|
1093
|
+
setLoading(false);
|
|
1094
|
+
return [2 /*return*/];
|
|
1095
|
+
}
|
|
1096
|
+
});
|
|
1097
|
+
}); };
|
|
1098
|
+
var handleClonedDataAttribute = function (selectedData, model, force, isRemainId) {
|
|
1099
|
+
var defaultValue = selectedData;
|
|
1100
|
+
var clonedSelectedData = JSON.parse(JSON.stringify(selectedData));
|
|
1101
|
+
model.map(function (eachAttribute) {
|
|
1102
|
+
var _a, _b;
|
|
1103
|
+
if (eachAttribute.id === "_id" || eachAttribute.id === "id") {
|
|
1398
1104
|
return null;
|
|
1399
1105
|
}
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1106
|
+
switch (eachAttribute.type) {
|
|
1107
|
+
case "date":
|
|
1108
|
+
if (defaultValue[eachAttribute.id]) {
|
|
1109
|
+
clonedSelectedData[eachAttribute.id] = (0, moment_1.default)(defaultValue[eachAttribute.id]).toDate();
|
|
1110
|
+
}
|
|
1111
|
+
break;
|
|
1112
|
+
case "boolean":
|
|
1113
|
+
//INFO : Force is only called during submission, some casting may affect UI
|
|
1114
|
+
if (force) {
|
|
1115
|
+
if (defaultValue[eachAttribute.id] === "true") {
|
|
1116
|
+
clonedSelectedData[eachAttribute.id] = true;
|
|
1117
|
+
}
|
|
1118
|
+
else if (defaultValue[eachAttribute.id] === "false") {
|
|
1119
|
+
clonedSelectedData[eachAttribute.id] = false;
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
break;
|
|
1123
|
+
case "listObject":
|
|
1124
|
+
clonedSelectedData[eachAttribute.id] =
|
|
1125
|
+
(_a = defaultValue[eachAttribute.id]) !== null && _a !== void 0 ? _a : [];
|
|
1126
|
+
break;
|
|
1127
|
+
case "object":
|
|
1128
|
+
if (force)
|
|
1129
|
+
clonedSelectedData[eachAttribute.id] =
|
|
1130
|
+
(_b = defaultValue[eachAttribute.id]) !== null && _b !== void 0 ? _b : {};
|
|
1131
|
+
else
|
|
1132
|
+
clonedSelectedData[eachAttribute.id] =
|
|
1133
|
+
defaultValue[eachAttribute.id];
|
|
1134
|
+
break;
|
|
1135
|
+
case "image":
|
|
1136
|
+
case "file":
|
|
1137
|
+
clonedSelectedData[eachAttribute.id] = defaultValue[eachAttribute.id];
|
|
1138
|
+
break;
|
|
1139
|
+
case "number":
|
|
1140
|
+
if (defaultValue[eachAttribute.id]) {
|
|
1141
|
+
clonedSelectedData[eachAttribute.id] = Number(defaultValue[eachAttribute.id]);
|
|
1142
|
+
}
|
|
1143
|
+
break;
|
|
1144
|
+
}
|
|
1404
1145
|
return null;
|
|
1405
1146
|
});
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
}
|
|
1410
|
-
return
|
|
1147
|
+
if (!isRemainId) {
|
|
1148
|
+
delete clonedSelectedData["id"];
|
|
1149
|
+
delete clonedSelectedData["_id"];
|
|
1150
|
+
}
|
|
1151
|
+
return clonedSelectedData;
|
|
1411
1152
|
};
|
|
1412
|
-
var
|
|
1413
|
-
|
|
1414
|
-
|
|
1153
|
+
var handleOnChangeData = function () {
|
|
1154
|
+
var _a;
|
|
1155
|
+
if (modalVisible && selectedObjectStructureId) {
|
|
1156
|
+
var filterObjectModel = props.model.find(function (eachModel) {
|
|
1157
|
+
return eachModel.id === selectedObjectStructureId;
|
|
1158
|
+
});
|
|
1159
|
+
return {
|
|
1160
|
+
data: selectedObjectData,
|
|
1161
|
+
model: (_a = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _a !== void 0 ? _a : [],
|
|
1162
|
+
};
|
|
1415
1163
|
}
|
|
1416
1164
|
else {
|
|
1417
|
-
return
|
|
1165
|
+
return {
|
|
1166
|
+
data: selectedData,
|
|
1167
|
+
model: props.model,
|
|
1168
|
+
};
|
|
1418
1169
|
}
|
|
1419
1170
|
};
|
|
1420
|
-
var
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1171
|
+
var handleUpdateChangeData = function (data) {
|
|
1172
|
+
if (modalVisible && selectedObjectStructureId) {
|
|
1173
|
+
setSelectedObjectData(data);
|
|
1174
|
+
}
|
|
1175
|
+
else {
|
|
1176
|
+
setSelectedData(data);
|
|
1177
|
+
}
|
|
1425
1178
|
};
|
|
1426
|
-
var
|
|
1427
|
-
var
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
});
|
|
1433
|
-
filteredModel.map(function (eachAttribute, index) {
|
|
1434
|
-
//INFO - Default Model Contain Id While Object Type Don't have
|
|
1435
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
1436
|
-
var clonedSelectedData = handleClonedDataAttribute(data, model);
|
|
1437
|
-
var clonedReferenceOptions = JSON.parse(JSON.stringify(referenceOptions));
|
|
1438
|
-
var clonedReferenceSearchText = JSON.parse(JSON.stringify(referenceSearchText));
|
|
1439
|
-
var label = eachAttribute.name + (!eachAttribute.optional ? " (*)" : "");
|
|
1440
|
-
var disabled = props.type === "read"
|
|
1441
|
-
? true
|
|
1442
|
-
: props.type === "update" && props.id === "new"
|
|
1443
|
-
? false
|
|
1444
|
-
: eachAttribute.disabled;
|
|
1445
|
-
switch (eachAttribute.type) {
|
|
1446
|
-
case "address":
|
|
1447
|
-
inputList.push(react_1.default.createElement(address_1.Address, { id: eachAttribute.id, label: label, value: (_a = clonedSelectedData[eachAttribute.id]) !== null && _a !== void 0 ? _a : {
|
|
1448
|
-
lat: 0,
|
|
1449
|
-
lng: 0,
|
|
1450
|
-
name: "",
|
|
1451
|
-
}, onChange: function (address) {
|
|
1452
|
-
handleOnChangeAddress(eachAttribute.id, address);
|
|
1453
|
-
}, ref: eachAttribute.optional ? null : formInputRef[index], disabled: disabled }));
|
|
1454
|
-
break;
|
|
1455
|
-
case "object":
|
|
1456
|
-
var objectValue = Object.values((_b = clonedSelectedData[eachAttribute.id]) !== null && _b !== void 0 ? _b : {});
|
|
1457
|
-
inputList.push(react_1.default.createElement(react_1.default.Fragment, null,
|
|
1458
|
-
react_1.default.createElement("label", { className: "block text-sm font-medium text-gray-700" }, label),
|
|
1459
|
-
react_1.default.createElement("div", { className: "block bg-white w-full border cursor-pointer border-gray-300 text-gray-300 text-left rounded-md mt-1 px-5 py-3 text-base focus:border-primary-500 focus:outline-none", onClick: function () {
|
|
1460
|
-
var _a;
|
|
1461
|
-
setSelectedObjectStructureId(eachAttribute.id);
|
|
1462
|
-
setSelectedObjectData((_a = clonedSelectedData[eachAttribute.id]) !== null && _a !== void 0 ? _a : {});
|
|
1463
|
-
handlePopUpModal(true);
|
|
1464
|
-
} }, objectValue.length > 0 ? (react_1.default.createElement("div", { className: "flex overflow-hidden flex-row" }, renderObjectTags(eachAttribute.id))) : ("Fill details"))));
|
|
1465
|
-
break;
|
|
1466
|
-
case "list":
|
|
1467
|
-
case "multipleList":
|
|
1468
|
-
var optionList_2 = eachAttribute.listSelection
|
|
1469
|
-
? (_c = eachAttribute.listSelection) === null || _c === void 0 ? void 0 : _c.map(function (eachAttribute) {
|
|
1470
|
-
return {
|
|
1471
|
-
key: eachAttribute,
|
|
1472
|
-
label: eachAttribute,
|
|
1473
|
-
};
|
|
1474
|
-
})
|
|
1475
|
-
: [];
|
|
1476
|
-
if (clonedSelectedData[eachAttribute.id]) {
|
|
1477
|
-
var selectedList = clonedSelectedData[eachAttribute.id];
|
|
1478
|
-
var selectedKeys = Array.isArray(selectedList)
|
|
1479
|
-
? selectedList
|
|
1480
|
-
: [selectedList];
|
|
1481
|
-
selectedKeys.forEach(function (key) {
|
|
1482
|
-
if (!optionList_2.some(function (item) { return item.key === key; })) {
|
|
1483
|
-
optionList_2.push({ key: key, label: key });
|
|
1484
|
-
}
|
|
1485
|
-
});
|
|
1486
|
-
}
|
|
1487
|
-
inputList.push(react_1.default.createElement(select_1.Select, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, value: (_d = clonedSelectedData[eachAttribute.id]) !== null && _d !== void 0 ? _d : (eachAttribute.type === "list" ? "" : []), label: label, options: optionList_2, onChange: function (value) {
|
|
1488
|
-
handleOnChangeSelect(eachAttribute.id, value);
|
|
1489
|
-
}, disabled: disabled }));
|
|
1490
|
-
break;
|
|
1491
|
-
case "boolean":
|
|
1492
|
-
var value = (_e = clonedSelectedData[eachAttribute.id]) === null || _e === void 0 ? void 0 : _e.toString();
|
|
1493
|
-
inputList.push(react_1.default.createElement(select_1.Select, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, value: value, label: label, options: [
|
|
1494
|
-
{
|
|
1495
|
-
key: "true",
|
|
1496
|
-
label: "True",
|
|
1497
|
-
},
|
|
1498
|
-
{
|
|
1499
|
-
key: "false",
|
|
1500
|
-
label: "False",
|
|
1501
|
-
},
|
|
1502
|
-
], onChange: function (value) {
|
|
1503
|
-
handleOnChangeSelect(eachAttribute.id, value);
|
|
1504
|
-
}, disabled: disabled }));
|
|
1505
|
-
break;
|
|
1506
|
-
case "image":
|
|
1507
|
-
case "file":
|
|
1508
|
-
var hasImageToken = typeof clonedSelectedData[eachAttribute.id] === "string";
|
|
1509
|
-
var url = void 0;
|
|
1510
|
-
if (hasImageToken) {
|
|
1511
|
-
url = isObject
|
|
1512
|
-
? isObjectList
|
|
1513
|
-
? (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, eachAttribute.imageCollectionName +
|
|
1514
|
-
"%2F" +
|
|
1515
|
-
props.id +
|
|
1516
|
-
"%2F" +
|
|
1517
|
-
selectedObjectId, selectedObjectStructureId, eachAttribute.imageFileName, clonedSelectedData[eachAttribute.id])
|
|
1518
|
-
: (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, eachAttribute.imageCollectionName + "%2F" + props.id, selectedObjectStructureId, eachAttribute.imageFileName, clonedSelectedData[eachAttribute.id])
|
|
1519
|
-
: (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, eachAttribute.imageCollectionName, props.id, eachAttribute.imageFileName, clonedSelectedData[eachAttribute.id]);
|
|
1520
|
-
}
|
|
1521
|
-
inputList.push(react_1.default.createElement(uploadInput_1.UploadInput, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, label: label, hidePreview: eachAttribute.type === "image" ? false : true, file: (_f = url !== null && url !== void 0 ? url : clonedSelectedData[eachAttribute.id]) !== null && _f !== void 0 ? _f : "", accept: eachAttribute.type === "image" ? ".png,.jpg,.jpe,.tiff" : ".pdf", fileDescription: eachAttribute.type === "image" ? undefined : "PDF up to 30MB", maxFileSize: props.maxFileSize, onChange: handleOnChangeFile, disabled: disabled }));
|
|
1522
|
-
break;
|
|
1523
|
-
case "number":
|
|
1524
|
-
inputList.push(react_1.default.createElement(textInput_1.TextInput, { id: eachAttribute.id, ref: eachAttribute.optional ? null : formInputRef[index], type: "number", value: (_g = clonedSelectedData[eachAttribute.id]) !== null && _g !== void 0 ? _g : "", placeholder: label, label: label, onChange: handleOnChangeText, disabled: disabled }));
|
|
1525
|
-
break;
|
|
1526
|
-
case "reference":
|
|
1527
|
-
case "listReference":
|
|
1528
|
-
var referenceLabel_1 = (_h = eachAttribute.referenceLabel) !== null && _h !== void 0 ? _h : "";
|
|
1529
|
-
inputList.push(react_1.default.createElement(react_1.default.Fragment, null,
|
|
1530
|
-
react_1.default.createElement(readQueryHoc_1.ReadQueryHoc, { database: {
|
|
1531
|
-
dbModule: dbModule,
|
|
1532
|
-
dbType: props.server,
|
|
1533
|
-
dbCollection: (_j = eachAttribute.referenceSpaceId) !== null && _j !== void 0 ? _j : "",
|
|
1534
|
-
dbEndpoint: props.dbEndpoint,
|
|
1535
|
-
}, cond: {
|
|
1536
|
-
type: "list",
|
|
1537
|
-
query: clonedReferenceSearchText[eachAttribute.id]
|
|
1538
|
-
? [
|
|
1539
|
-
{
|
|
1540
|
-
type: "search",
|
|
1541
|
-
searchIds: [referenceLabel_1],
|
|
1542
|
-
value: clonedReferenceSearchText[eachAttribute.id],
|
|
1543
|
-
},
|
|
1544
|
-
]
|
|
1545
|
-
: undefined,
|
|
1546
|
-
limit: limit,
|
|
1547
|
-
}, onChangeData: function (data) {
|
|
1548
|
-
handleGetReferenceOptions(data, eachAttribute, referenceLabel_1, clonedSelectedData[eachAttribute.id]);
|
|
1549
|
-
} }),
|
|
1550
|
-
react_1.default.createElement(select_1.Select, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, value: (_k = clonedSelectedData[eachAttribute.id]) !== null && _k !== void 0 ? _k : (eachAttribute.type === "reference" ? "" : []), label: label, options: (_l = clonedReferenceOptions[eachAttribute.id]) !== null && _l !== void 0 ? _l : [], onChange: function (value) {
|
|
1551
|
-
handleOnChangeSelect(eachAttribute.id, value);
|
|
1552
|
-
}, onSearch: function (value) {
|
|
1553
|
-
handleSearchReferenceOptions(eachAttribute.id, value);
|
|
1554
|
-
}, disabled: disabled })));
|
|
1555
|
-
break;
|
|
1556
|
-
case "string":
|
|
1557
|
-
inputList.push(react_1.default.createElement(textInput_1.TextInput, { id: eachAttribute.id, ref: eachAttribute.optional ? null : formInputRef[index], type: "text", value: (_m = clonedSelectedData[eachAttribute.id]) !== null && _m !== void 0 ? _m : "", placeholder: label, label: label, onChange: handleOnChangeText, disabled: disabled }));
|
|
1558
|
-
break;
|
|
1559
|
-
case "date":
|
|
1560
|
-
inputList.push(react_1.default.createElement(datePicker_1.InputDatePicker, { title: label, id: eachAttribute.id, ref: eachAttribute.optional ? null : formInputRef[index], onChange: handleOnChangeDate, value: clonedSelectedData[eachAttribute.id], disabled: disabled }));
|
|
1561
|
-
break;
|
|
1562
|
-
}
|
|
1563
|
-
return null;
|
|
1564
|
-
});
|
|
1565
|
-
return inputList.map(function (eachInput, index) {
|
|
1566
|
-
return (react_1.default.createElement("div", { key: index, className: "col-span-4 sm:col-span-2" }, eachInput));
|
|
1567
|
-
});
|
|
1179
|
+
var handleOnChangeFile = function (e) {
|
|
1180
|
+
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
1181
|
+
var clonedData = handleClonedDataAttribute(data, model);
|
|
1182
|
+
clonedData[e.target.id] =
|
|
1183
|
+
e.target.files.length > 0 ? e.target.files[0] : undefined;
|
|
1184
|
+
handleUpdateChangeData(clonedData);
|
|
1568
1185
|
};
|
|
1569
|
-
var
|
|
1570
|
-
var _a
|
|
1571
|
-
var
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
}
|
|
1575
|
-
else {
|
|
1576
|
-
return null;
|
|
1577
|
-
}
|
|
1578
|
-
});
|
|
1579
|
-
if (viewType === "general") {
|
|
1580
|
-
if (dataType === "list") {
|
|
1581
|
-
return (react_1.default.createElement(table_1.Table, { paginationType: props.server === "mongoServer" ? "page" : "cursor", data: data, size: size, limit: limit, cursor: cursor, loading: tableLoading, header: renderTableHeader(), pageIndex: pageIndex, onClickRow: function (id) {
|
|
1582
|
-
handleNavigate("".concat(props.localURLEndpoint, "?data=").concat(id, "&type=read&collection=").concat(props.collectionId, "&view=general"));
|
|
1583
|
-
}, linkType: props.linkType, custom: props.custom, newTabUrl: "".concat(props.localURLEndpoint, "?data="), addNewTabUrl: "&type=read&collection=".concat(props.collectionId, "&view=general"), handleUpdatePageIndex: handlePagination, className: "mt-5" }));
|
|
1584
|
-
}
|
|
1585
|
-
else if (dataType === "read") {
|
|
1586
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
1587
|
-
react_1.default.createElement(detailList_1.DetailList, { lib: {
|
|
1588
|
-
Dialog: (_a = props.lib) === null || _a === void 0 ? void 0 : _a.Dialog,
|
|
1589
|
-
Transition: (_b = props.lib) === null || _b === void 0 ? void 0 : _b.Transition,
|
|
1590
|
-
}, model: props.model, referenceModel: referenceModelSchema, className: "mt-5 bg-white rounded-md", title: "General Details", list: renderDetailListData() }),
|
|
1591
|
-
react_1.default.createElement("div", { className: "mt-8" }, renderListObject(dataType))));
|
|
1592
|
-
}
|
|
1593
|
-
}
|
|
1594
|
-
else if (selectedTabData) {
|
|
1595
|
-
if (selectedTabData.iframeSrc) {
|
|
1596
|
-
return (react_1.default.createElement("iframe", { className: "w-full mt-5", style: { height: "70vh" }, src: (_c = selectedTabData === null || selectedTabData === void 0 ? void 0 : selectedTabData.iframeSrc) !== null && _c !== void 0 ? _c : "", title: (_d = selectedTabData === null || selectedTabData === void 0 ? void 0 : selectedTabData.id) !== null && _d !== void 0 ? _d : "" }));
|
|
1597
|
-
}
|
|
1598
|
-
else if (selectedTabData.renderComp) {
|
|
1599
|
-
return react_1.default.createElement(react_1.default.Fragment, null, selectedTabData.renderComp());
|
|
1600
|
-
}
|
|
1601
|
-
}
|
|
1602
|
-
return null;
|
|
1186
|
+
var handleOnChangeAddress = function (id, address) {
|
|
1187
|
+
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
1188
|
+
var clonedData = handleClonedDataAttribute(data, model);
|
|
1189
|
+
clonedData[id] = address;
|
|
1190
|
+
handleUpdateChangeData(clonedData);
|
|
1603
1191
|
};
|
|
1604
|
-
var
|
|
1192
|
+
var handleOnChangeText = function (e) {
|
|
1193
|
+
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
1194
|
+
var clonedData = handleClonedDataAttribute(data, model);
|
|
1195
|
+
clonedData[e.target.id] = e.target.value;
|
|
1196
|
+
handleUpdateChangeData(clonedData);
|
|
1197
|
+
};
|
|
1198
|
+
var handleOnChangeSelect = function (id, value) {
|
|
1199
|
+
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
1200
|
+
var clonedData = handleClonedDataAttribute(data, model);
|
|
1201
|
+
clonedData[id] = value;
|
|
1202
|
+
handleUpdateChangeData(clonedData);
|
|
1203
|
+
};
|
|
1204
|
+
var handleOnChangeDate = function (id, value) {
|
|
1205
|
+
var _a = handleOnChangeData(), data = _a.data, model = _a.model;
|
|
1206
|
+
var clonedData = handleClonedDataAttribute(data, model);
|
|
1207
|
+
clonedData[id] = value;
|
|
1208
|
+
handleUpdateChangeData(clonedData);
|
|
1209
|
+
};
|
|
1210
|
+
//=====================================================================================
|
|
1211
|
+
//SECTION: Handle CSV
|
|
1212
|
+
//=====================================================================================
|
|
1213
|
+
var handleOnChangeCSV = function (e) {
|
|
1605
1214
|
var _a;
|
|
1606
|
-
var
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1215
|
+
var file = e.target.files[0];
|
|
1216
|
+
if (file) {
|
|
1217
|
+
setCSVFile(file);
|
|
1218
|
+
(_a = props.lib) === null || _a === void 0 ? void 0 : _a.papaParser.parse(file, {
|
|
1219
|
+
header: true,
|
|
1220
|
+
dynamicTyping: true,
|
|
1221
|
+
complete: function (results) {
|
|
1222
|
+
if (results.data && results.data.length < 100)
|
|
1223
|
+
setCSVFileData(results.data);
|
|
1224
|
+
else
|
|
1225
|
+
setNotification({
|
|
1226
|
+
type: false,
|
|
1227
|
+
title: "Import Error",
|
|
1228
|
+
msg: "Data is more than 100 rows",
|
|
1229
|
+
});
|
|
1230
|
+
},
|
|
1231
|
+
});
|
|
1232
|
+
setStepCSVIndex(1);
|
|
1233
|
+
}
|
|
1234
|
+
else {
|
|
1235
|
+
setNotification({
|
|
1236
|
+
type: false,
|
|
1237
|
+
title: "Import Error",
|
|
1238
|
+
msg: "No file is selected",
|
|
1239
|
+
});
|
|
1623
1240
|
}
|
|
1624
|
-
return detailList;
|
|
1625
1241
|
};
|
|
1626
|
-
var
|
|
1627
|
-
var
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1242
|
+
var handleStepCSV = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1243
|
+
var csvList_1, _loop_4, _i, _a, _b, eachKey, eachValue, valid_1, errorValue_1, response, err_7;
|
|
1244
|
+
var _c, _d, _e, _f, _g;
|
|
1245
|
+
return __generator(this, function (_h) {
|
|
1246
|
+
switch (_h.label) {
|
|
1247
|
+
case 0:
|
|
1248
|
+
_h.trys.push([0, 6, , 7]);
|
|
1249
|
+
if (!(stepCSVIndex === 0)) return [3 /*break*/, 1];
|
|
1250
|
+
if (csvFileData.length > 0 && csvFile)
|
|
1251
|
+
setStepCSVIndex(stepCSVIndex + 1);
|
|
1252
|
+
else
|
|
1253
|
+
throw new Error("Please upload a .CSV file");
|
|
1254
|
+
return [3 /*break*/, 5];
|
|
1255
|
+
case 1:
|
|
1256
|
+
if (!(stepCSVIndex === 1)) return [3 /*break*/, 3];
|
|
1257
|
+
csvList_1 = [];
|
|
1258
|
+
_loop_4 = function (eachKey, eachValue) {
|
|
1259
|
+
if (eachKey && eachValue && typeof eachValue === "string") {
|
|
1260
|
+
var selectedModel = props.model.find(function (eachModel) {
|
|
1261
|
+
return eachModel.id === eachValue;
|
|
1262
|
+
});
|
|
1263
|
+
if ((selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "object" ||
|
|
1264
|
+
(selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "listObject") {
|
|
1265
|
+
var selectedObjectModel = (_c = selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.objectData) === null || _c === void 0 ? void 0 : _c.find(function (eachModel) {
|
|
1266
|
+
return eachModel.id === eachValue;
|
|
1267
|
+
});
|
|
1268
|
+
csvList_1.push({
|
|
1269
|
+
id: (_d = listCSVObjAttribute[eachKey]) !== null && _d !== void 0 ? _d : "",
|
|
1270
|
+
ori: Number(eachKey),
|
|
1271
|
+
type: "object",
|
|
1272
|
+
objectId: eachValue,
|
|
1273
|
+
objectValueType: (_e = selectedObjectModel === null || selectedObjectModel === void 0 ? void 0 : selectedObjectModel.type) !== null && _e !== void 0 ? _e : "string",
|
|
1274
|
+
});
|
|
1275
|
+
}
|
|
1276
|
+
else if ((selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) === "image") {
|
|
1277
|
+
csvList_1.push({
|
|
1278
|
+
id: eachValue !== null && eachValue !== void 0 ? eachValue : "",
|
|
1279
|
+
ori: Number(eachKey),
|
|
1280
|
+
type: "image",
|
|
1281
|
+
imageCollectionName: selectedModel.imageCollectionName,
|
|
1282
|
+
imageFileName: selectedModel.imageFileName,
|
|
1283
|
+
imageEndpoint: selectedModel.imageEndpoint,
|
|
1284
|
+
});
|
|
1285
|
+
}
|
|
1286
|
+
else {
|
|
1287
|
+
csvList_1.push({
|
|
1288
|
+
id: eachValue !== null && eachValue !== void 0 ? eachValue : "",
|
|
1289
|
+
ori: Number(eachKey),
|
|
1290
|
+
type: (_f = selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.type) !== null && _f !== void 0 ? _f : "string",
|
|
1644
1291
|
});
|
|
1645
|
-
switch (model === null || model === void 0 ? void 0 : model.type) {
|
|
1646
|
-
case "string":
|
|
1647
|
-
isTitle
|
|
1648
|
-
? (eachNewList["title"] =
|
|
1649
|
-
typeof eachValue === "string" ? eachValue : "")
|
|
1650
|
-
: (eachNewList[eachKey] = model.name + " : " + eachValue);
|
|
1651
|
-
isTitle = false;
|
|
1652
|
-
break;
|
|
1653
|
-
case "image":
|
|
1654
|
-
var url = void 0;
|
|
1655
|
-
if (typeof eachValue === "string") {
|
|
1656
|
-
url = (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, model.imageCollectionName +
|
|
1657
|
-
"%2F" +
|
|
1658
|
-
props.id +
|
|
1659
|
-
"%2F" +
|
|
1660
|
-
eachObject.id, eachListObject.id, model.imageFileName, eachValue);
|
|
1661
|
-
}
|
|
1662
|
-
else if (eachValue instanceof File) {
|
|
1663
|
-
url = URL.createObjectURL(eachValue);
|
|
1664
|
-
}
|
|
1665
|
-
eachNewList[eachKey] = (react_1.default.createElement("img", { src: url, alt: "", className: "w-10 h-10 object-contain" }));
|
|
1666
|
-
break;
|
|
1667
|
-
case "date":
|
|
1668
|
-
eachNewList[eachKey] =
|
|
1669
|
-
(model === null || model === void 0 ? void 0 : model.name) +
|
|
1670
|
-
" : " +
|
|
1671
|
-
(0, utils_1.renderEachRowDataBasedOnDataType)(eachValue);
|
|
1672
|
-
break;
|
|
1673
|
-
case "address":
|
|
1674
|
-
case "object":
|
|
1675
|
-
case "reference":
|
|
1676
|
-
break;
|
|
1677
|
-
default:
|
|
1678
|
-
if (eachKey === "id" && typeof eachValue === "string") {
|
|
1679
|
-
eachNewList[eachKey] = eachValue;
|
|
1680
|
-
}
|
|
1681
|
-
else {
|
|
1682
|
-
eachNewList[eachKey] = (model === null || model === void 0 ? void 0 : model.name) + " : " + eachValue;
|
|
1683
|
-
}
|
|
1684
|
-
break;
|
|
1685
|
-
}
|
|
1686
1292
|
}
|
|
1687
|
-
};
|
|
1688
|
-
for (var _i = 0, _a = Object.entries(eachObject); _i < _a.length; _i++) {
|
|
1689
|
-
var _b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
1690
|
-
_loop_6(eachKey, eachValue);
|
|
1691
|
-
}
|
|
1692
|
-
if (list_2[eachListObject.id]) {
|
|
1693
|
-
list_2[eachListObject.id].push(eachNewList);
|
|
1694
|
-
}
|
|
1695
|
-
else {
|
|
1696
|
-
list_2[eachListObject.id] = [eachNewList];
|
|
1697
1293
|
}
|
|
1698
|
-
|
|
1294
|
+
};
|
|
1295
|
+
for (_i = 0, _a = Object.entries(listCSVMapAttribute); _i < _a.length; _i++) {
|
|
1296
|
+
_b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
1297
|
+
_loop_4(eachKey, eachValue);
|
|
1298
|
+
}
|
|
1299
|
+
valid_1 = true;
|
|
1300
|
+
errorValue_1 = "";
|
|
1301
|
+
return [4 /*yield*/, Promise.all(props.model.map(function (eachEachModel) {
|
|
1302
|
+
if (eachEachModel.id === "_id" || eachEachModel.id === "id") {
|
|
1303
|
+
return "";
|
|
1304
|
+
}
|
|
1305
|
+
if (!eachEachModel.optional) {
|
|
1306
|
+
// INFO : Validate and compare the modal with csv list and return true if > 1 consist within
|
|
1307
|
+
var innearValidation = csvList_1.some(function (eachCsvList) {
|
|
1308
|
+
if (eachCsvList.type === "object" ||
|
|
1309
|
+
eachCsvList.type === "listObject") {
|
|
1310
|
+
return eachEachModel.id === eachCsvList.objectId;
|
|
1311
|
+
}
|
|
1312
|
+
else {
|
|
1313
|
+
return eachEachModel.id === eachCsvList.id;
|
|
1314
|
+
}
|
|
1315
|
+
});
|
|
1316
|
+
if (!innearValidation) {
|
|
1317
|
+
errorValue_1 = errorValue_1 + "<" + eachEachModel.id + ">";
|
|
1318
|
+
valid_1 = false;
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
return null;
|
|
1322
|
+
}))];
|
|
1323
|
+
case 2:
|
|
1324
|
+
_h.sent();
|
|
1325
|
+
if (!valid_1) {
|
|
1326
|
+
throw new Error("Please select how you want to map your data to ".concat(errorValue_1));
|
|
1327
|
+
}
|
|
1328
|
+
else {
|
|
1329
|
+
setCSVAPIAttribute(csvList_1);
|
|
1330
|
+
setStepCSVIndex(stepCSVIndex + 1);
|
|
1331
|
+
}
|
|
1332
|
+
return [3 /*break*/, 5];
|
|
1333
|
+
case 3:
|
|
1334
|
+
if (!(stepCSVIndex === 2)) return [3 /*break*/, 5];
|
|
1335
|
+
// INFO - Call Space Excel API
|
|
1336
|
+
setLoading(true);
|
|
1337
|
+
return [4 /*yield*/, ((_g = props.lib) === null || _g === void 0 ? void 0 : _g.axios.post("".concat(props.schemaEndpoint, "/csv/import"), {
|
|
1338
|
+
data: {
|
|
1339
|
+
parsedDataStructure: csvAPIAttribute,
|
|
1340
|
+
spaceId: props.collectionId,
|
|
1341
|
+
},
|
|
1342
|
+
file: csvFile,
|
|
1343
|
+
}, {
|
|
1344
|
+
headers: {
|
|
1345
|
+
"Content-Type": "multipart/form-data",
|
|
1346
|
+
},
|
|
1347
|
+
}))];
|
|
1348
|
+
case 4:
|
|
1349
|
+
response = _h.sent();
|
|
1350
|
+
setLoading(false);
|
|
1351
|
+
if (response.data) {
|
|
1352
|
+
setNotification({
|
|
1353
|
+
type: true,
|
|
1354
|
+
title: "Data has been imported successfully",
|
|
1355
|
+
msg: response.data.msg,
|
|
1356
|
+
});
|
|
1357
|
+
handlePopUpModal(false);
|
|
1358
|
+
setTimeout(function () {
|
|
1359
|
+
window.location.reload();
|
|
1360
|
+
}, 1500);
|
|
1361
|
+
}
|
|
1362
|
+
_h.label = 5;
|
|
1363
|
+
case 5: return [3 /*break*/, 7];
|
|
1364
|
+
case 6:
|
|
1365
|
+
err_7 = _h.sent();
|
|
1366
|
+
setNotification({
|
|
1367
|
+
type: false,
|
|
1368
|
+
title: "Import Error",
|
|
1369
|
+
msg: err_7.message,
|
|
1699
1370
|
});
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
}
|
|
1371
|
+
return [3 /*break*/, 7];
|
|
1372
|
+
case 7: return [2 /*return*/];
|
|
1373
|
+
}
|
|
1374
|
+
});
|
|
1375
|
+
}); };
|
|
1376
|
+
var handleExportCSVData = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1377
|
+
var res, err_8;
|
|
1378
|
+
var _a, _b, _c;
|
|
1379
|
+
return __generator(this, function (_d) {
|
|
1380
|
+
switch (_d.label) {
|
|
1381
|
+
case 0:
|
|
1382
|
+
_d.trys.push([0, 2, , 3]);
|
|
1383
|
+
setLoading(true);
|
|
1384
|
+
return [4 /*yield*/, ((_b = (_a = props.lib) === null || _a === void 0 ? void 0 : _a.axios) === null || _b === void 0 ? void 0 : _b.post("".concat(props.schemaEndpoint, "/csv/export"), {
|
|
1385
|
+
data: { spaceId: props.collectionId, query: queryList },
|
|
1386
|
+
}, {
|
|
1387
|
+
headers: {
|
|
1388
|
+
"Content-Type": "multipart/form-data",
|
|
1389
|
+
},
|
|
1390
|
+
}))];
|
|
1391
|
+
case 1:
|
|
1392
|
+
res = _d.sent();
|
|
1393
|
+
setExportLink((_c = res === null || res === void 0 ? void 0 : res.data.link) !== null && _c !== void 0 ? _c : "");
|
|
1394
|
+
setNotification({
|
|
1395
|
+
type: true,
|
|
1396
|
+
title: "Export Successfully",
|
|
1397
|
+
msg: "A download link had been generated.",
|
|
1398
|
+
});
|
|
1399
|
+
setLoading(false);
|
|
1400
|
+
return [3 /*break*/, 3];
|
|
1401
|
+
case 2:
|
|
1402
|
+
err_8 = _d.sent();
|
|
1403
|
+
setLoading(false);
|
|
1404
|
+
return [3 /*break*/, 3];
|
|
1405
|
+
case 3: return [2 /*return*/];
|
|
1406
|
+
}
|
|
1407
|
+
});
|
|
1408
|
+
}); };
|
|
1409
|
+
var handleQueryModal = function () {
|
|
1410
|
+
setQueryModal(!queryModal);
|
|
1411
|
+
setQueryInput({
|
|
1412
|
+
queryId: "",
|
|
1413
|
+
type: "=",
|
|
1414
|
+
value: "",
|
|
1415
|
+
});
|
|
1416
|
+
setExportReferenceList([]);
|
|
1417
|
+
setExportReferenceSearch("");
|
|
1418
|
+
};
|
|
1419
|
+
var handleCloneQueryList = function () {
|
|
1420
|
+
var _a;
|
|
1421
|
+
var clonedQueryInput = (_a = JSON.parse(JSON.stringify(queryList))) !== null && _a !== void 0 ? _a : [];
|
|
1422
|
+
clonedQueryInput.map(function (eachQuery) {
|
|
1423
|
+
var tempValue = eachQuery.value;
|
|
1424
|
+
if (tempValue === "false" || tempValue === "true") {
|
|
1425
|
+
tempValue = tempValue === "false" ? false : true;
|
|
1426
|
+
}
|
|
1427
|
+
else if (!isNaN(tempValue)) {
|
|
1428
|
+
tempValue = Number(tempValue);
|
|
1429
|
+
}
|
|
1430
|
+
eachQuery.value = tempValue;
|
|
1431
|
+
return null;
|
|
1432
|
+
});
|
|
1433
|
+
return clonedQueryInput;
|
|
1434
|
+
};
|
|
1435
|
+
var handlePushQueryList = function () {
|
|
1436
|
+
var tempQueryList = handleCloneQueryList();
|
|
1437
|
+
if (!tempQueryList.some(function (eachQuery) { return eachQuery.queryId === queryInput.queryId; })) {
|
|
1438
|
+
var tempValue = queryInput.value;
|
|
1439
|
+
if (tempValue === "false" || tempValue === "true") {
|
|
1440
|
+
tempValue = tempValue === "false" ? false : true;
|
|
1441
|
+
}
|
|
1442
|
+
else if (!isNaN(tempValue)) {
|
|
1443
|
+
tempValue = Number(tempValue);
|
|
1444
|
+
}
|
|
1445
|
+
queryInput.value = tempValue;
|
|
1446
|
+
tempQueryList.push(queryInput);
|
|
1447
|
+
setQueryModal(!queryModal);
|
|
1448
|
+
setQueryList(tempQueryList);
|
|
1449
|
+
setQueryInput({
|
|
1450
|
+
queryId: "",
|
|
1451
|
+
type: "=",
|
|
1452
|
+
value: "",
|
|
1720
1453
|
});
|
|
1721
1454
|
}
|
|
1722
1455
|
else {
|
|
1723
|
-
|
|
1456
|
+
// NOTIFICATION - CONISTS
|
|
1457
|
+
setNotification({
|
|
1458
|
+
type: false,
|
|
1459
|
+
title: "Export Failed",
|
|
1460
|
+
msg: "Please check again your query attribute.",
|
|
1461
|
+
});
|
|
1462
|
+
}
|
|
1463
|
+
};
|
|
1464
|
+
var handleViewQuery = function (index) {
|
|
1465
|
+
handleQueryModal();
|
|
1466
|
+
setQueryInput(queryList[index]);
|
|
1467
|
+
};
|
|
1468
|
+
var handleSortQuery = function (index, sortType) {
|
|
1469
|
+
var _a;
|
|
1470
|
+
var sortList = JSON.parse(JSON.stringify(queryList));
|
|
1471
|
+
var ascIndex = sortType === "up" ? index - 1 : index + 1;
|
|
1472
|
+
_a = [
|
|
1473
|
+
sortList[ascIndex],
|
|
1474
|
+
sortList[index],
|
|
1475
|
+
], sortList[index] = _a[0], sortList[ascIndex] = _a[1];
|
|
1476
|
+
setQueryList(sortList);
|
|
1477
|
+
};
|
|
1478
|
+
//=====================================================================================
|
|
1479
|
+
//SECTION: Handle Utils
|
|
1480
|
+
//=====================================================================================
|
|
1481
|
+
var handlePopUpModal = function (modalVisible) {
|
|
1482
|
+
setModalVisible(modalVisible);
|
|
1483
|
+
if (!modalVisible) {
|
|
1484
|
+
setTimeout(function () {
|
|
1485
|
+
setExcelModal(false);
|
|
1486
|
+
setExportExcel(false);
|
|
1487
|
+
setSelectedObjectId("");
|
|
1488
|
+
setSelectedObjectStructureId("");
|
|
1489
|
+
setSelectedObjectData({});
|
|
1490
|
+
setStepCSVIndex(0);
|
|
1491
|
+
setCSVFile(null);
|
|
1492
|
+
setCSVFileData([]);
|
|
1493
|
+
setListCSVMapAttribute({});
|
|
1494
|
+
setListCSVObjAttribute({});
|
|
1495
|
+
setCSVAPIAttribute([]);
|
|
1496
|
+
setExportLink("");
|
|
1497
|
+
setQueryList([]);
|
|
1498
|
+
}, 500);
|
|
1499
|
+
}
|
|
1500
|
+
};
|
|
1501
|
+
var handleNavigate = function (link) {
|
|
1502
|
+
var _a, _b, _c;
|
|
1503
|
+
var href = link !== null && link !== void 0 ? link : "".concat(props.localURLEndpoint, "?type=list&collection=").concat(props.collectionId);
|
|
1504
|
+
if ((_a = props.lib) === null || _a === void 0 ? void 0 : _a.navigateNext) {
|
|
1505
|
+
props.lib.navigateNext.push(href);
|
|
1506
|
+
}
|
|
1507
|
+
else if ((_b = props.lib) === null || _b === void 0 ? void 0 : _b.navigate) {
|
|
1508
|
+
(_c = props.lib) === null || _c === void 0 ? void 0 : _c.navigate(href);
|
|
1509
|
+
}
|
|
1510
|
+
else if (window) {
|
|
1511
|
+
window.location.replace(href);
|
|
1724
1512
|
}
|
|
1725
1513
|
};
|
|
1726
|
-
|
|
1514
|
+
//=====================================================================================
|
|
1515
|
+
//SECTION: Render CSV
|
|
1516
|
+
//=====================================================================================
|
|
1727
1517
|
var renderExcelReviewData = function () {
|
|
1728
1518
|
var header = Object.keys(csvFileData[0]);
|
|
1729
1519
|
var dataList = [];
|
|
@@ -1786,6 +1576,7 @@ function DataTemplate(props) {
|
|
|
1786
1576
|
}
|
|
1787
1577
|
};
|
|
1788
1578
|
var renderQueryIdOptions = function () {
|
|
1579
|
+
var queryIdOptions = [];
|
|
1789
1580
|
props.model.map(function (data) {
|
|
1790
1581
|
if (data.id !== "_id" && data.id !== "id") {
|
|
1791
1582
|
queryIdOptions.push({
|
|
@@ -1883,47 +1674,319 @@ function DataTemplate(props) {
|
|
|
1883
1674
|
handleSortQuery(index, upData_1 ? "up" : "down");
|
|
1884
1675
|
} }, upData_1 ? (react_1.default.createElement(outline_1.ArrowUpIcon, { className: "h-5 w-5 block text-primary-600" })) : (react_1.default.createElement(outline_1.ArrowDownIcon, { className: "h-5 w-5 block text-primary-600" }))));
|
|
1885
1676
|
}
|
|
1886
|
-
queryStructureView.push({
|
|
1887
|
-
key: index,
|
|
1888
|
-
name: data.queryId,
|
|
1889
|
-
value: data.value,
|
|
1890
|
-
sort: sortComponent,
|
|
1891
|
-
view: (react_1.default.createElement("div", { className: "cursor-pointer ml-2", onClick: function () {
|
|
1892
|
-
handleViewQuery(index);
|
|
1893
|
-
} },
|
|
1894
|
-
react_1.default.createElement(outline_1.EyeIcon, { className: "h-5 w-5 block text-primary-600" }))),
|
|
1895
|
-
del: (react_1.default.createElement("div", { className: "cursor-pointer ml-2", onClick: function () {
|
|
1896
|
-
var temp = JSON.parse(JSON.stringify(queryList));
|
|
1897
|
-
temp.splice(index, 1);
|
|
1898
|
-
setQueryList(temp);
|
|
1899
|
-
} },
|
|
1900
|
-
react_1.default.createElement(outline_1.TrashIcon, { className: "h-5 w-5 block text-primary-600" }))),
|
|
1901
|
-
});
|
|
1902
|
-
return "";
|
|
1677
|
+
queryStructureView.push({
|
|
1678
|
+
key: index,
|
|
1679
|
+
name: data.queryId,
|
|
1680
|
+
value: data.value,
|
|
1681
|
+
sort: sortComponent,
|
|
1682
|
+
view: (react_1.default.createElement("div", { className: "cursor-pointer ml-2", onClick: function () {
|
|
1683
|
+
handleViewQuery(index);
|
|
1684
|
+
} },
|
|
1685
|
+
react_1.default.createElement(outline_1.EyeIcon, { className: "h-5 w-5 block text-primary-600" }))),
|
|
1686
|
+
del: (react_1.default.createElement("div", { className: "cursor-pointer ml-2", onClick: function () {
|
|
1687
|
+
var temp = JSON.parse(JSON.stringify(queryList));
|
|
1688
|
+
temp.splice(index, 1);
|
|
1689
|
+
setQueryList(temp);
|
|
1690
|
+
} },
|
|
1691
|
+
react_1.default.createElement(outline_1.TrashIcon, { className: "h-5 w-5 block text-primary-600" }))),
|
|
1692
|
+
});
|
|
1693
|
+
return "";
|
|
1694
|
+
});
|
|
1695
|
+
return queryStructureView;
|
|
1696
|
+
};
|
|
1697
|
+
//=====================================================================================
|
|
1698
|
+
//SECTION: Render CRUD
|
|
1699
|
+
//=====================================================================================
|
|
1700
|
+
var renderTableHeader = function () {
|
|
1701
|
+
var tableHeader = [];
|
|
1702
|
+
props.model.map(function (eachAttribute) {
|
|
1703
|
+
if (eachAttribute.id === "baseUpdatedAt" ||
|
|
1704
|
+
eachAttribute.type === "listObject" ||
|
|
1705
|
+
eachAttribute.hide) {
|
|
1706
|
+
return null;
|
|
1707
|
+
}
|
|
1708
|
+
tableHeader.push({
|
|
1709
|
+
key: eachAttribute.id,
|
|
1710
|
+
title: eachAttribute.name,
|
|
1711
|
+
});
|
|
1712
|
+
return null;
|
|
1713
|
+
});
|
|
1714
|
+
tableHeader.push({
|
|
1715
|
+
key: "update",
|
|
1716
|
+
title: "Update",
|
|
1717
|
+
});
|
|
1718
|
+
return tableHeader;
|
|
1719
|
+
};
|
|
1720
|
+
var renderCursor = function () {
|
|
1721
|
+
if (props.server === "mongoServer") {
|
|
1722
|
+
return pageIndex === 0 ? undefined : pageIndex * limit;
|
|
1723
|
+
}
|
|
1724
|
+
else {
|
|
1725
|
+
return lastCursor ? undefined : lastCursor;
|
|
1726
|
+
}
|
|
1727
|
+
};
|
|
1728
|
+
var renderObjectTags = function (id) {
|
|
1729
|
+
return Object.keys(selectedData[id]).map(function (eachKeys) {
|
|
1730
|
+
return (react_1.default.createElement("div", { key: eachKeys, className: "bg-primary-600 text-white rounded m-0.5" },
|
|
1731
|
+
react_1.default.createElement("p", { className: "text-xs px-2 py-1 text-wrap" }, eachKeys)));
|
|
1732
|
+
});
|
|
1733
|
+
};
|
|
1734
|
+
var renderDataTemplateForm = function (data, model, formInputRef, isObject, isObjectList) {
|
|
1735
|
+
var inputList = [];
|
|
1736
|
+
//INFO : filteredModel is to secure the formInputRef[index] will not have any issue
|
|
1737
|
+
var filteredModel = model.filter(function (eachAttribute) {
|
|
1738
|
+
//INFO - Default Model Contain Id While Object Type Don't have
|
|
1739
|
+
return eachAttribute.id !== "_id" && eachAttribute.id !== "id";
|
|
1740
|
+
});
|
|
1741
|
+
filteredModel.forEach(function (eachAttribute, index) {
|
|
1742
|
+
//INFO - Default Model Contain Id While Object Type Don't have
|
|
1743
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
1744
|
+
var clonedSelectedData = handleClonedDataAttribute(data, model);
|
|
1745
|
+
var label = eachAttribute.name + (!eachAttribute.optional ? " (*)" : "");
|
|
1746
|
+
var disabled = props.type === "read"
|
|
1747
|
+
? true
|
|
1748
|
+
: props.type === "update" && props.id === "new"
|
|
1749
|
+
? false
|
|
1750
|
+
: eachAttribute.disabled;
|
|
1751
|
+
switch (eachAttribute.type) {
|
|
1752
|
+
case "address":
|
|
1753
|
+
inputList.push(react_1.default.createElement(address_1.Address, { id: eachAttribute.id, label: label, value: (_a = clonedSelectedData[eachAttribute.id]) !== null && _a !== void 0 ? _a : {
|
|
1754
|
+
lat: 0,
|
|
1755
|
+
lng: 0,
|
|
1756
|
+
name: "",
|
|
1757
|
+
}, onChange: function (address) {
|
|
1758
|
+
handleOnChangeAddress(eachAttribute.id, address);
|
|
1759
|
+
}, ref: eachAttribute.optional ? null : formInputRef[index], disabled: disabled }));
|
|
1760
|
+
break;
|
|
1761
|
+
case "object":
|
|
1762
|
+
var objectValue = Object.values((_b = clonedSelectedData[eachAttribute.id]) !== null && _b !== void 0 ? _b : {});
|
|
1763
|
+
inputList.push(react_1.default.createElement(react_1.default.Fragment, null,
|
|
1764
|
+
react_1.default.createElement("label", { className: "block text-sm font-medium text-gray-700" }, label),
|
|
1765
|
+
react_1.default.createElement("div", { className: "block bg-white w-full border cursor-pointer border-gray-300 text-gray-300 text-left rounded-md mt-1 px-5 py-3 text-base focus:border-primary-500 focus:outline-none", onClick: function () {
|
|
1766
|
+
var _a;
|
|
1767
|
+
setSelectedObjectStructureId(eachAttribute.id);
|
|
1768
|
+
setSelectedObjectData((_a = clonedSelectedData[eachAttribute.id]) !== null && _a !== void 0 ? _a : {});
|
|
1769
|
+
handlePopUpModal(true);
|
|
1770
|
+
} }, objectValue.length > 0 ? (react_1.default.createElement("div", { className: "flex overflow-hidden flex-row" }, renderObjectTags(eachAttribute.id))) : ("Fill details"))));
|
|
1771
|
+
break;
|
|
1772
|
+
case "list":
|
|
1773
|
+
case "multipleList":
|
|
1774
|
+
var optionList_2 = eachAttribute.listSelection
|
|
1775
|
+
? (_c = eachAttribute.listSelection) === null || _c === void 0 ? void 0 : _c.map(function (eachAttribute) {
|
|
1776
|
+
return {
|
|
1777
|
+
key: eachAttribute,
|
|
1778
|
+
label: eachAttribute,
|
|
1779
|
+
};
|
|
1780
|
+
})
|
|
1781
|
+
: [];
|
|
1782
|
+
if (clonedSelectedData[eachAttribute.id]) {
|
|
1783
|
+
var selectedList = clonedSelectedData[eachAttribute.id];
|
|
1784
|
+
var selectedKeys = Array.isArray(selectedList)
|
|
1785
|
+
? selectedList
|
|
1786
|
+
: [selectedList];
|
|
1787
|
+
selectedKeys.forEach(function (key) {
|
|
1788
|
+
if (!optionList_2.some(function (item) { return item.key === key; })) {
|
|
1789
|
+
optionList_2.push({ key: key, label: key });
|
|
1790
|
+
}
|
|
1791
|
+
});
|
|
1792
|
+
}
|
|
1793
|
+
inputList.push(react_1.default.createElement(select_1.Select, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, value: (_d = clonedSelectedData[eachAttribute.id]) !== null && _d !== void 0 ? _d : (eachAttribute.type === "list" ? "" : []), label: label, options: optionList_2, onChange: function (value) {
|
|
1794
|
+
handleOnChangeSelect(eachAttribute.id, value);
|
|
1795
|
+
}, disabled: disabled }));
|
|
1796
|
+
break;
|
|
1797
|
+
case "boolean":
|
|
1798
|
+
var value = (_e = clonedSelectedData[eachAttribute.id]) === null || _e === void 0 ? void 0 : _e.toString();
|
|
1799
|
+
inputList.push(react_1.default.createElement(select_1.Select, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, value: value, label: label, options: [
|
|
1800
|
+
{
|
|
1801
|
+
key: "true",
|
|
1802
|
+
label: "True",
|
|
1803
|
+
},
|
|
1804
|
+
{
|
|
1805
|
+
key: "false",
|
|
1806
|
+
label: "False",
|
|
1807
|
+
},
|
|
1808
|
+
], onChange: function (value) {
|
|
1809
|
+
handleOnChangeSelect(eachAttribute.id, value);
|
|
1810
|
+
}, disabled: disabled }));
|
|
1811
|
+
break;
|
|
1812
|
+
case "image":
|
|
1813
|
+
case "file":
|
|
1814
|
+
var hasImageToken = typeof clonedSelectedData[eachAttribute.id] === "string";
|
|
1815
|
+
var url = void 0;
|
|
1816
|
+
if (hasImageToken) {
|
|
1817
|
+
url = isObject
|
|
1818
|
+
? isObjectList
|
|
1819
|
+
? (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, eachAttribute.imageCollectionName +
|
|
1820
|
+
"%2F" +
|
|
1821
|
+
props.id +
|
|
1822
|
+
"%2F" +
|
|
1823
|
+
selectedObjectId, selectedObjectStructureId, eachAttribute.imageFileName, clonedSelectedData[eachAttribute.id])
|
|
1824
|
+
: (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, eachAttribute.imageCollectionName + "%2F" + props.id, selectedObjectStructureId, eachAttribute.imageFileName, clonedSelectedData[eachAttribute.id])
|
|
1825
|
+
: (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, eachAttribute.imageCollectionName, props.id, eachAttribute.imageFileName, clonedSelectedData[eachAttribute.id]);
|
|
1826
|
+
}
|
|
1827
|
+
inputList.push(react_1.default.createElement(uploadInput_1.UploadInput, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, label: label, hidePreview: eachAttribute.type === "image" ? false : true, file: (_f = url !== null && url !== void 0 ? url : clonedSelectedData[eachAttribute.id]) !== null && _f !== void 0 ? _f : "", accept: eachAttribute.type === "image" ? ".png,.jpg,.jpe,.tiff" : ".pdf", fileDescription: eachAttribute.type === "image" ? undefined : "PDF up to 30MB", maxFileSize: props.maxFileSize, onChange: handleOnChangeFile, disabled: disabled }));
|
|
1828
|
+
break;
|
|
1829
|
+
case "number":
|
|
1830
|
+
inputList.push(react_1.default.createElement(textInput_1.TextInput, { id: eachAttribute.id, ref: eachAttribute.optional ? null : formInputRef[index], type: "number", value: (_g = clonedSelectedData[eachAttribute.id]) !== null && _g !== void 0 ? _g : "", placeholder: label, label: label, onChange: handleOnChangeText, disabled: disabled }));
|
|
1831
|
+
break;
|
|
1832
|
+
case "reference":
|
|
1833
|
+
case "listReference":
|
|
1834
|
+
inputList.push(react_1.default.createElement(react_1.default.Fragment, null,
|
|
1835
|
+
react_1.default.createElement(select_1.Select, { ref: eachAttribute.optional ? null : formInputRef[index], id: eachAttribute.id, value: (_h = clonedSelectedData[eachAttribute.id]) !== null && _h !== void 0 ? _h : (eachAttribute.type === "reference" ? "" : []), label: label, options: isObject
|
|
1836
|
+
? referencesOptions[selectedObjectStructureId + "." + eachAttribute.id]
|
|
1837
|
+
: (_j = referencesOptions[eachAttribute.id]) !== null && _j !== void 0 ? _j : [], onChange: function (value) {
|
|
1838
|
+
handleOnChangeSelect(eachAttribute.id, value);
|
|
1839
|
+
}, additional: referenceLoading ? exports.loadingSelect : exports.additionalSelect, onSearch: function (value) { return __awaiter(_this, void 0, void 0, function () {
|
|
1840
|
+
var clonedReferencesOptions, filterObjectModel;
|
|
1841
|
+
return __generator(this, function (_a) {
|
|
1842
|
+
switch (_a.label) {
|
|
1843
|
+
case 0:
|
|
1844
|
+
setReferenceLoading(true);
|
|
1845
|
+
clonedReferencesOptions = JSON.parse(JSON.stringify(referencesOptions));
|
|
1846
|
+
filterObjectModel = props.model.find(function (eachModel) {
|
|
1847
|
+
return eachModel.id === selectedObjectStructureId;
|
|
1848
|
+
});
|
|
1849
|
+
return [4 /*yield*/, handleRetrieveObjectReferenceOptions(eachAttribute, clonedReferencesOptions, clonedSelectedData, selectedObjectStructureId, (filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.type) === "listObject", value)];
|
|
1850
|
+
case 1:
|
|
1851
|
+
_a.sent();
|
|
1852
|
+
setReferencesOptions(clonedReferencesOptions);
|
|
1853
|
+
setReferenceLoading(false);
|
|
1854
|
+
return [2 /*return*/];
|
|
1855
|
+
}
|
|
1856
|
+
});
|
|
1857
|
+
}); }, disabled: disabled })));
|
|
1858
|
+
break;
|
|
1859
|
+
case "string":
|
|
1860
|
+
inputList.push(react_1.default.createElement(textInput_1.TextInput, { id: eachAttribute.id, ref: eachAttribute.optional ? null : formInputRef[index], type: "text", value: (_k = clonedSelectedData[eachAttribute.id]) !== null && _k !== void 0 ? _k : "", placeholder: label, label: label, onChange: handleOnChangeText, disabled: disabled }));
|
|
1861
|
+
break;
|
|
1862
|
+
case "date":
|
|
1863
|
+
inputList.push(react_1.default.createElement(datePicker_1.InputDatePicker, { title: label, id: eachAttribute.id, ref: eachAttribute.optional ? null : formInputRef[index], onChange: handleOnChangeDate, value: clonedSelectedData[eachAttribute.id], disabled: disabled }));
|
|
1864
|
+
break;
|
|
1865
|
+
}
|
|
1866
|
+
});
|
|
1867
|
+
return inputList.map(function (eachInput, index) {
|
|
1868
|
+
return (react_1.default.createElement("div", { key: index, className: "col-span-4 sm:col-span-2" }, eachInput));
|
|
1903
1869
|
});
|
|
1904
|
-
return queryStructureView;
|
|
1905
1870
|
};
|
|
1906
|
-
var
|
|
1871
|
+
var renderDetailListData = function () {
|
|
1907
1872
|
var _a;
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
}
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1873
|
+
var detailList = [];
|
|
1874
|
+
var _loop_5 = function (eachKey, eachValue) {
|
|
1875
|
+
if (eachKey !== "id" &&
|
|
1876
|
+
eachKey !== "_id" &&
|
|
1877
|
+
eachKey !== "baseUpdatedAt") {
|
|
1878
|
+
var filterModel = props.model.find(function (eachAttribute) {
|
|
1879
|
+
return eachAttribute.id === eachKey;
|
|
1880
|
+
});
|
|
1881
|
+
detailList.push({
|
|
1882
|
+
title: (_a = filterModel === null || filterModel === void 0 ? void 0 : filterModel.name) !== null && _a !== void 0 ? _a : "",
|
|
1883
|
+
text: eachValue,
|
|
1884
|
+
});
|
|
1885
|
+
}
|
|
1886
|
+
};
|
|
1887
|
+
for (var _i = 0, _b = Object.entries(selectedData); _i < _b.length; _i++) {
|
|
1888
|
+
var _c = _b[_i], eachKey = _c[0], eachValue = _c[1];
|
|
1889
|
+
_loop_5(eachKey, eachValue);
|
|
1890
|
+
}
|
|
1891
|
+
return detailList;
|
|
1892
|
+
};
|
|
1893
|
+
var renderListObject = function (type) {
|
|
1894
|
+
var isListObject = props.model.filter(function (eachAttribute) { return eachAttribute.type === "listObject"; });
|
|
1895
|
+
if (isListObject.length > 0) {
|
|
1896
|
+
var list_2 = {};
|
|
1897
|
+
var clonedSelectedData_1 = handleClonedDataAttribute(selectedData, props.model);
|
|
1898
|
+
return isListObject.map(function (eachListObject) {
|
|
1899
|
+
var _a;
|
|
1900
|
+
if (clonedSelectedData_1[eachListObject.id]) {
|
|
1901
|
+
clonedSelectedData_1[eachListObject.id].map(function (eachObject) {
|
|
1902
|
+
var eachNewList = {
|
|
1903
|
+
id: "",
|
|
1904
|
+
title: "",
|
|
1905
|
+
};
|
|
1906
|
+
var isTitle = true;
|
|
1907
|
+
var _loop_6 = function (eachKey, eachValue) {
|
|
1908
|
+
if (eachListObject.objectData) {
|
|
1909
|
+
var model = eachListObject.objectData.find(function (eachAttribute) {
|
|
1910
|
+
return eachAttribute.id === eachKey;
|
|
1911
|
+
});
|
|
1912
|
+
switch (model === null || model === void 0 ? void 0 : model.type) {
|
|
1913
|
+
case "string":
|
|
1914
|
+
isTitle
|
|
1915
|
+
? (eachNewList["title"] =
|
|
1916
|
+
typeof eachValue === "string" ? eachValue : "")
|
|
1917
|
+
: (eachNewList[eachKey] = model.name + " : " + eachValue);
|
|
1918
|
+
isTitle = false;
|
|
1919
|
+
break;
|
|
1920
|
+
case "image":
|
|
1921
|
+
var url = void 0;
|
|
1922
|
+
if (typeof eachValue === "string") {
|
|
1923
|
+
url = (0, utils_2.renderImageUrlFromPath)(props.imageEndpoint, model.imageCollectionName +
|
|
1924
|
+
"%2F" +
|
|
1925
|
+
props.id +
|
|
1926
|
+
"%2F" +
|
|
1927
|
+
eachObject.id, eachListObject.id, model.imageFileName, eachValue);
|
|
1928
|
+
}
|
|
1929
|
+
else if (eachValue instanceof File) {
|
|
1930
|
+
url = URL.createObjectURL(eachValue);
|
|
1931
|
+
}
|
|
1932
|
+
eachNewList[eachKey] = (react_1.default.createElement("img", { src: url, alt: "", className: "w-10 h-10 object-contain" }));
|
|
1933
|
+
break;
|
|
1934
|
+
case "date":
|
|
1935
|
+
eachNewList[eachKey] =
|
|
1936
|
+
(model === null || model === void 0 ? void 0 : model.name) +
|
|
1937
|
+
" : " +
|
|
1938
|
+
(0, utils_1.renderEachRowDataBasedOnDataType)(eachValue);
|
|
1939
|
+
break;
|
|
1940
|
+
case "address":
|
|
1941
|
+
case "object":
|
|
1942
|
+
case "reference":
|
|
1943
|
+
break;
|
|
1944
|
+
default:
|
|
1945
|
+
if (eachKey === "id" && typeof eachValue === "string") {
|
|
1946
|
+
eachNewList[eachKey] = eachValue;
|
|
1947
|
+
}
|
|
1948
|
+
else {
|
|
1949
|
+
eachNewList[eachKey] = (model === null || model === void 0 ? void 0 : model.name) + " : " + eachValue;
|
|
1950
|
+
}
|
|
1951
|
+
break;
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1954
|
+
};
|
|
1955
|
+
for (var _i = 0, _a = Object.entries(eachObject); _i < _a.length; _i++) {
|
|
1956
|
+
var _b = _a[_i], eachKey = _b[0], eachValue = _b[1];
|
|
1957
|
+
_loop_6(eachKey, eachValue);
|
|
1958
|
+
}
|
|
1959
|
+
if (list_2[eachListObject.id]) {
|
|
1960
|
+
list_2[eachListObject.id].push(eachNewList);
|
|
1961
|
+
}
|
|
1962
|
+
else {
|
|
1963
|
+
list_2[eachListObject.id] = [eachNewList];
|
|
1964
|
+
}
|
|
1965
|
+
return null;
|
|
1966
|
+
});
|
|
1967
|
+
}
|
|
1968
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, !list_2[eachListObject.id] && type === "update" ? (react_1.default.createElement("button", { type: "button", className: "mt-5 relative block w-full rounded-lg border-2 border-dashed border-gray-300 p-12 text-center", onClick: function () {
|
|
1969
|
+
setSelectedObjectStructureId(eachListObject.id);
|
|
1970
|
+
handlePopUpModal(true);
|
|
1971
|
+
} },
|
|
1972
|
+
react_1.default.createElement("svg", { className: "mx-auto h-12 w-12 text-gray-400", stroke: "currentColor", fill: "none", viewBox: "0 0 48 48", "aria-hidden": "true" },
|
|
1973
|
+
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 14v20c0 4.418 7.163 8 16 8 1.381 0 2.721-.087 4-.252M8 14c0 4.418 7.163 8 16 8s16-3.582 16-8M8 14c0-4.418 7.163-8 16-8s16 3.582 16 8m0 0v14m0-4c0 4.418-7.163 8-16 8S8 28.418 8 24m32 10v6m0 0v6m0-6h6m-6 0h-6" })),
|
|
1974
|
+
react_1.default.createElement("span", { className: "mt-2 block text-sm font-medium text-gray-900" },
|
|
1975
|
+
"Create a new ", "".concat(eachListObject.name.toLocaleLowerCase())))) : (react_1.default.createElement(react_1.default.Fragment, null, list_2[eachListObject.id] && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
1976
|
+
react_1.default.createElement("div", { className: "flex justify-between mt-5" },
|
|
1977
|
+
react_1.default.createElement("h3", { className: "text-md leading-6 font-medium text-gray-900 sm:text-lg" }, eachListObject.name),
|
|
1978
|
+
type === "update" && (react_1.default.createElement(iconButton_1.IconButton, { className: "sm", icon: react_1.default.createElement(outline_1.PlusCircleIcon, { className: "w-6 h-6 text-white" }), background: "bg-primary-500 hover:bg-primary-600", onClick: function () {
|
|
1979
|
+
setSelectedObjectStructureId(eachListObject.id);
|
|
1980
|
+
handlePopUpModal(true);
|
|
1981
|
+
} }))),
|
|
1982
|
+
react_1.default.createElement(list_1.List, { className: "mt-5", list: (_a = list_2[eachListObject.id]) !== null && _a !== void 0 ? _a : [], loading: false, onClickRow: function (id) {
|
|
1983
|
+
handleSelectListObjectData(id, eachListObject.id);
|
|
1984
|
+
} })))))));
|
|
1985
|
+
});
|
|
1986
|
+
}
|
|
1987
|
+
else {
|
|
1988
|
+
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
1925
1989
|
}
|
|
1926
|
-
return null;
|
|
1927
1990
|
};
|
|
1928
1991
|
var renderContent = function () {
|
|
1929
1992
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -1975,7 +2038,7 @@ function DataTemplate(props) {
|
|
|
1975
2038
|
react_1.default.createElement("p", { className: "text-xl font-medium" }, props.title),
|
|
1976
2039
|
react_1.default.createElement("span", { className: "text-sm text-gray-500" }, props.description)),
|
|
1977
2040
|
props.deleteBtn && (react_1.default.createElement(button_1.Button, { text: "Delete", className: "ml-0 mt-5 sm:mt-0 sm:ml-5", type: "danger", onClick: function () {
|
|
1978
|
-
|
|
2041
|
+
setDeleteModal(true);
|
|
1979
2042
|
} })))),
|
|
1980
2043
|
react_1.default.createElement(tabs_1.Tabs, { tabs: tabs, selectedId: viewType, linkType: props.linkType, custom: props.custom }),
|
|
1981
2044
|
renderTabContent(tabs, props.type, viewType)))));
|
|
@@ -1986,7 +2049,7 @@ function DataTemplate(props) {
|
|
|
1986
2049
|
current: true,
|
|
1987
2050
|
});
|
|
1988
2051
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
1989
|
-
props.id && props.id !== "new" && (react_1.default.createElement(readQueryHoc_1.ReadQueryHoc, { database: {
|
|
2052
|
+
props.id && props.id !== "new" && props.model.length > 1 && (react_1.default.createElement(readQueryHoc_1.ReadQueryHoc, { database: {
|
|
1990
2053
|
dbModule: dbModule,
|
|
1991
2054
|
dbType: props.server,
|
|
1992
2055
|
dbCollection: props.collectionId,
|
|
@@ -2001,7 +2064,7 @@ function DataTemplate(props) {
|
|
|
2001
2064
|
react_1.default.createElement("p", { className: "text-xl font-medium" }, props.title),
|
|
2002
2065
|
react_1.default.createElement("span", { className: "text-sm text-gray-500" }, props.description)),
|
|
2003
2066
|
props.deleteBtn && (react_1.default.createElement(button_1.Button, { text: "Delete", className: "ml-0 mt-5 sm:mt-0 sm:ml-5", type: "danger", onClick: function () {
|
|
2004
|
-
|
|
2067
|
+
setDeleteModal(true);
|
|
2005
2068
|
} }))),
|
|
2006
2069
|
react_1.default.createElement(form_1.Form, { className: "mt-6 grid grid-cols-4 gap-6", ref: formRef, refList: modalFormInputRefs, handleComplete: handleSubmit }, renderDataTemplateForm(selectedData, props.model, modalFormInputRefs)),
|
|
2007
2070
|
react_1.default.createElement("div", { className: "mt-8" }, renderListObject(props.type)),
|
|
@@ -2056,17 +2119,17 @@ function DataTemplate(props) {
|
|
|
2056
2119
|
var searchQueryExist = false;
|
|
2057
2120
|
props.additionalQuery.map(function (eachSettings) {
|
|
2058
2121
|
if (eachSettings.type === "list" && filterSelection) {
|
|
2059
|
-
var
|
|
2060
|
-
if (
|
|
2061
|
-
|
|
2122
|
+
var currentSelection = filterSelection;
|
|
2123
|
+
if (currentSelection === "false" || currentSelection === "true") {
|
|
2124
|
+
currentSelection = currentSelection === "false" ? false : true;
|
|
2062
2125
|
}
|
|
2063
|
-
else if (!isNaN(
|
|
2064
|
-
|
|
2126
|
+
else if (!isNaN(currentSelection)) {
|
|
2127
|
+
currentSelection = Number(currentSelection);
|
|
2065
2128
|
}
|
|
2066
2129
|
query.push({
|
|
2067
2130
|
type: "=",
|
|
2068
2131
|
queryId: eachSettings.value,
|
|
2069
|
-
value:
|
|
2132
|
+
value: currentSelection,
|
|
2070
2133
|
});
|
|
2071
2134
|
}
|
|
2072
2135
|
else if (eachSettings.type === "reference" && filterReference)
|
|
@@ -2179,10 +2242,70 @@ function DataTemplate(props) {
|
|
|
2179
2242
|
}
|
|
2180
2243
|
return searchFilterList;
|
|
2181
2244
|
};
|
|
2245
|
+
//=====================================================================================
|
|
2246
|
+
//SECTION: Render Utils
|
|
2247
|
+
//=====================================================================================
|
|
2248
|
+
var renderTabContent = function (tabs, dataType, viewType) {
|
|
2249
|
+
var _a, _b, _c, _d;
|
|
2250
|
+
var selectedTabData = tabs.find(function (eachTab) {
|
|
2251
|
+
if (eachTab.id === viewType) {
|
|
2252
|
+
return eachTab;
|
|
2253
|
+
}
|
|
2254
|
+
else {
|
|
2255
|
+
return null;
|
|
2256
|
+
}
|
|
2257
|
+
});
|
|
2258
|
+
if (viewType === "general") {
|
|
2259
|
+
if (dataType === "list") {
|
|
2260
|
+
return (react_1.default.createElement(table_1.Table, { paginationType: props.server === "mongoServer" ? "page" : "cursor", data: tableData, size: size, limit: limit, cursor: cursor, loading: tableLoading, header: renderTableHeader(), pageIndex: pageIndex, onClickRow: function (id) {
|
|
2261
|
+
handleNavigate("".concat(props.localURLEndpoint, "?data=").concat(id, "&type=read&collection=").concat(props.collectionId, "&view=general"));
|
|
2262
|
+
}, linkType: props.linkType, custom: props.custom, newTabUrl: "".concat(props.localURLEndpoint, "?data="), addNewTabUrl: "&type=read&collection=".concat(props.collectionId, "&view=general"), handleUpdatePageIndex: handlePagination, className: "mt-5" }));
|
|
2263
|
+
}
|
|
2264
|
+
else if (dataType === "read") {
|
|
2265
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
2266
|
+
react_1.default.createElement(detailList_1.DetailList, { lib: {
|
|
2267
|
+
Dialog: (_a = props.lib) === null || _a === void 0 ? void 0 : _a.Dialog,
|
|
2268
|
+
Transition: (_b = props.lib) === null || _b === void 0 ? void 0 : _b.Transition,
|
|
2269
|
+
}, model: props.model, referenceModel: referenceModelSchema, className: "mt-5 bg-white rounded-md", title: "General Details", list: renderDetailListData() }),
|
|
2270
|
+
react_1.default.createElement("div", { className: "mt-8" }, renderListObject(dataType))));
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
else if (selectedTabData) {
|
|
2274
|
+
if (selectedTabData.iframeSrc) {
|
|
2275
|
+
return (react_1.default.createElement("iframe", { className: "w-full mt-5", style: { height: "70vh" }, src: (_c = selectedTabData === null || selectedTabData === void 0 ? void 0 : selectedTabData.iframeSrc) !== null && _c !== void 0 ? _c : "", title: (_d = selectedTabData === null || selectedTabData === void 0 ? void 0 : selectedTabData.id) !== null && _d !== void 0 ? _d : "" }));
|
|
2276
|
+
}
|
|
2277
|
+
else if (selectedTabData.renderComp) {
|
|
2278
|
+
return react_1.default.createElement(react_1.default.Fragment, null, selectedTabData.renderComp());
|
|
2279
|
+
}
|
|
2280
|
+
}
|
|
2281
|
+
return null;
|
|
2282
|
+
};
|
|
2283
|
+
var renderNotification = function (location) {
|
|
2284
|
+
var _a;
|
|
2285
|
+
if (notification) {
|
|
2286
|
+
var correctIcon = (react_1.default.createElement(outline_1.CheckCircleIcon, { className: "w-10 h-10 text-primary-600" }));
|
|
2287
|
+
var incorrectIcon = (react_1.default.createElement(outline_1.XCircleIcon, { className: "w-10 h-10 text-primary-600" }));
|
|
2288
|
+
if (location === "modal" && !modalVisible)
|
|
2289
|
+
return null;
|
|
2290
|
+
if (location === "root" && modalVisible)
|
|
2291
|
+
return null;
|
|
2292
|
+
return (react_1.default.createElement(notification_1.Notification, { icon: notification.type ? correctIcon : incorrectIcon, notificationAttribute: {
|
|
2293
|
+
title: notification.title,
|
|
2294
|
+
desc: notification.msg,
|
|
2295
|
+
visible: true,
|
|
2296
|
+
}, lib: {
|
|
2297
|
+
Transition: (_a = props.lib) === null || _a === void 0 ? void 0 : _a.Transition,
|
|
2298
|
+
}, onClose: function () {
|
|
2299
|
+
setNotification(null);
|
|
2300
|
+
return "";
|
|
2301
|
+
} }));
|
|
2302
|
+
}
|
|
2303
|
+
return null;
|
|
2304
|
+
};
|
|
2182
2305
|
var renderModalContent = function () {
|
|
2183
2306
|
var _a;
|
|
2184
2307
|
if (loading) {
|
|
2185
|
-
return (react_1.default.createElement(
|
|
2308
|
+
return (react_1.default.createElement("div", { className: "mt-5" },
|
|
2186
2309
|
react_1.default.createElement(loading_1.Loading, null),
|
|
2187
2310
|
react_1.default.createElement("div", { className: "mt-3 text-center sm:mt-5" },
|
|
2188
2311
|
react_1.default.createElement("h3", { className: "text-lg leading-6 font-medium text-gray-900", id: "modal-title" }, "Loading"),
|
|
@@ -2249,37 +2372,47 @@ function DataTemplate(props) {
|
|
|
2249
2372
|
}); } }))));
|
|
2250
2373
|
}
|
|
2251
2374
|
else {
|
|
2252
|
-
return
|
|
2253
|
-
react_1.default.createElement("div", { className: "px-3 sm:px-0" },
|
|
2254
|
-
react_1.default.createElement("div", { className: "flex" },
|
|
2255
|
-
react_1.default.createElement("h2", { className: "mt-2 mb-2 text-xl font-bold text-gray-900" }, "Delete Confirmation")),
|
|
2256
|
-
react_1.default.createElement("p", { className: "mt-2 mb-2" }, "Are you sure you want to delete this data?"),
|
|
2257
|
-
react_1.default.createElement("div", { className: "flex flex-row space-x-2 mt-6 pt-5 justify-end" },
|
|
2258
|
-
react_1.default.createElement(button_1.Button, { text: "Close", size: "small", type: "light", onClick: function () {
|
|
2259
|
-
handlePopUpModal(false);
|
|
2260
|
-
} }),
|
|
2261
|
-
react_1.default.createElement(button_1.Button, { text: "Delete", size: "small", type: "danger", onClick: function () {
|
|
2262
|
-
handleRemoveSelectedData();
|
|
2263
|
-
} })))));
|
|
2375
|
+
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
2264
2376
|
}
|
|
2265
2377
|
}
|
|
2266
2378
|
};
|
|
2379
|
+
var renderDeleteModalContent = function () {
|
|
2380
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
2381
|
+
react_1.default.createElement("div", { className: "px-3 sm:px-0" },
|
|
2382
|
+
react_1.default.createElement("div", { className: "flex" },
|
|
2383
|
+
react_1.default.createElement("h2", { className: "mt-2 mb-2 text-xl font-bold text-gray-900" }, "Delete Confirmation")),
|
|
2384
|
+
react_1.default.createElement("p", { className: "mt-2 mb-2" }, "Are you sure you want to delete this data?"),
|
|
2385
|
+
react_1.default.createElement("div", { className: "flex flex-row space-x-2 mt-6 pt-5 justify-end" },
|
|
2386
|
+
react_1.default.createElement(button_1.Button, { text: "Close", size: "small", type: "light", onClick: function () {
|
|
2387
|
+
handlePopUpModal(false);
|
|
2388
|
+
} }),
|
|
2389
|
+
react_1.default.createElement(button_1.Button, { text: "Delete", size: "small", type: "danger", onClick: function () {
|
|
2390
|
+
handleRemoveSelectedData();
|
|
2391
|
+
} })))));
|
|
2392
|
+
};
|
|
2267
2393
|
var renderModalTitle = function () {
|
|
2268
2394
|
if (excelModal)
|
|
2269
2395
|
return "Import CSV";
|
|
2396
|
+
else if (queryModal)
|
|
2397
|
+
return "Create a new Query";
|
|
2270
2398
|
else if (exportExcel)
|
|
2271
2399
|
return "Export CSV";
|
|
2272
2400
|
else
|
|
2273
2401
|
return "";
|
|
2274
2402
|
};
|
|
2403
|
+
var handleClosePopUpModal = function () {
|
|
2404
|
+
handlePopUpModal(false);
|
|
2405
|
+
};
|
|
2275
2406
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
2276
2407
|
renderNotification("root"),
|
|
2277
|
-
react_1.default.createElement(modal_1.Modal, { open: modalVisible, title: renderModalTitle(), lib: { Dialog: (_d = props.lib) === null || _d === void 0 ? void 0 : _d.Dialog, Transition: (_e = props.lib) === null || _e === void 0 ? void 0 : _e.Transition }, renderContent: renderModalContent, onClose: loading
|
|
2408
|
+
react_1.default.createElement(modal_1.Modal, { maxWidth: selectedObjectStructureId ? "2xl" : undefined, open: modalVisible || queryModal, title: renderModalTitle(), lib: { Dialog: (_d = props.lib) === null || _d === void 0 ? void 0 : _d.Dialog, Transition: (_e = props.lib) === null || _e === void 0 ? void 0 : _e.Transition }, renderContent: queryModal ? renderQueryModalContent : renderModalContent, onClose: loading
|
|
2278
2409
|
? function () { }
|
|
2279
|
-
:
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
react_1.default.createElement(modal_1.Modal, {
|
|
2410
|
+
: queryModal
|
|
2411
|
+
? handleQueryModal
|
|
2412
|
+
: handleClosePopUpModal, notification: react_1.default.createElement(react_1.default.Fragment, null, renderNotification("modal")) }),
|
|
2413
|
+
react_1.default.createElement(modal_1.Modal, { open: deleteModal, lib: { Dialog: (_f = props.lib) === null || _f === void 0 ? void 0 : _f.Dialog, Transition: (_g = props.lib) === null || _g === void 0 ? void 0 : _g.Transition }, renderContent: renderDeleteModalContent, onClose: function () {
|
|
2414
|
+
setDeleteModal(!deleteModal);
|
|
2415
|
+
}, notification: react_1.default.createElement(react_1.default.Fragment, null, renderNotification("modal")) }),
|
|
2283
2416
|
renderContent()));
|
|
2284
2417
|
}
|
|
2285
2418
|
exports.DataTemplate = DataTemplate;
|