blixify-ui-web 0.1.151 → 0.1.152

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/components/chat/chatBase/index.d.ts +13 -2
  2. package/lib/components/chat/chatBase/index.d.ts.map +1 -1
  3. package/lib/components/chat/chatBase/index.js +41 -17
  4. package/lib/components/chat/chatBase/index.js.map +1 -1
  5. package/lib/components/data/dataTemplate/index.d.ts +1 -0
  6. package/lib/components/data/dataTemplate/index.d.ts.map +1 -1
  7. package/lib/components/data/dataTemplate/index.js +282 -89
  8. package/lib/components/data/dataTemplate/index.js.map +1 -1
  9. package/lib/components/data/dataTemplate/model.d.ts +1 -1
  10. package/lib/components/data/dataTemplate/model.d.ts.map +1 -1
  11. package/lib/components/data/display.d.ts +4 -4
  12. package/lib/components/data/display.d.ts.map +1 -1
  13. package/lib/components/data/display.js +73 -35
  14. package/lib/components/data/display.js.map +1 -1
  15. package/lib/components/data/queryForm/index.d.ts.map +1 -1
  16. package/lib/components/data/queryForm/index.js +5 -3
  17. package/lib/components/data/queryForm/index.js.map +1 -1
  18. package/lib/components/data/testData.d.ts +2 -2
  19. package/lib/components/data/testData.js +2 -2
  20. package/lib/components/design/heroSection/index.d.ts +1 -1
  21. package/lib/components/design/heroSection/index.d.ts.map +1 -1
  22. package/lib/components/display/detailList/index.d.ts.map +1 -1
  23. package/lib/components/display/detailList/index.js +15 -1
  24. package/lib/components/display/detailList/index.js.map +1 -1
  25. package/lib/components/display/table/index.d.ts.map +1 -1
  26. package/lib/components/display/table/index.js +9 -5
  27. package/lib/components/display/table/index.js.map +1 -1
  28. package/lib/components/input/datePicker/index.d.ts +1 -0
  29. package/lib/components/input/datePicker/index.d.ts.map +1 -1
  30. package/lib/components/input/datePicker/index.js +4 -3
  31. package/lib/components/input/datePicker/index.js.map +1 -1
  32. package/lib/components/input/form/index.js +1 -1
  33. package/lib/components/input/form/index.js.map +1 -1
  34. package/lib/components/input/markdown/index.d.ts +28 -0
  35. package/lib/components/input/markdown/index.d.ts.map +1 -0
  36. package/lib/components/input/markdown/index.js +153 -0
  37. package/lib/components/input/markdown/index.js.map +1 -0
  38. package/lib/components/input/markdown/utils.d.ts +2 -0
  39. package/lib/components/input/markdown/utils.d.ts.map +1 -0
  40. package/lib/components/input/markdown/utils.js +3 -0
  41. package/lib/components/input/markdown/utils.js.map +1 -0
  42. package/lib/components/input/select/index.d.ts +2 -0
  43. package/lib/components/input/select/index.d.ts.map +1 -1
  44. package/lib/components/input/select/index.js +14 -1
  45. package/lib/components/input/select/index.js.map +1 -1
  46. package/lib/tail.css +84 -7
  47. package/package.json +3 -1
@@ -139,66 +139,74 @@ var queryTableHeader = [
139
139
  ];
140
140
  function DataTemplate(props) {
141
141
  var _this = this;
142
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
142
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
143
143
  var formRef = (0, react_1.createRef)();
144
144
  var objectFormRef = (0, react_1.createRef)();
145
145
  var modalFormInputRefs = props.model.map(function () { return (0, react_1.createRef)(); });
146
+ var batchUpdateFormRef = (0, react_1.createRef)();
147
+ var batchUpdateColumnIdRef = (0, react_1.createRef)();
148
+ var batchUpdateInputRef = (0, react_1.createRef)();
146
149
  var limit = props.limit ? props.limit : 10;
147
150
  var readQueryHocRef = (0, react_1.useRef)();
148
151
  var typingTimeout = (0, react_1.useRef)();
149
- var _k = (0, react_1.useState)(false), loading = _k[0], setLoading = _k[1];
150
- var _l = (0, react_1.useState)(), notification = _l[0], setNotification = _l[1];
152
+ var _o = (0, react_1.useState)(false), loading = _o[0], setLoading = _o[1];
153
+ var _p = (0, react_1.useState)(), notification = _p[0], setNotification = _p[1];
151
154
  //INFO : Used by List
152
- var _m = (0, react_1.useState)(""), filterSearch = _m[0], setFilterSearch = _m[1];
153
- var _o = (0, react_1.useState)(""), filterSearchParams = _o[0], setFilterSearchParams = _o[1];
154
- var _p = (0, react_1.useState)(""), filterSelection = _p[0], setFilterSelection = _p[1];
155
- var _q = (0, react_1.useState)(""), filterReference = _q[0], setFilterReference = _q[1];
156
- var _r = (0, react_1.useState)(""), filterReferenceSearch = _r[0], setFilterReferenceSearch = _r[1];
157
- var _s = (0, react_1.useState)([]), filterReferenceList = _s[0], setFilterReferenceList = _s[1];
158
- var _t = (0, react_1.useState)({
155
+ var _q = (0, react_1.useState)(""), filterSearch = _q[0], setFilterSearch = _q[1];
156
+ var _r = (0, react_1.useState)(""), filterSearchParams = _r[0], setFilterSearchParams = _r[1];
157
+ var _s = (0, react_1.useState)(""), filterSelection = _s[0], setFilterSelection = _s[1];
158
+ var _t = (0, react_1.useState)(""), filterReference = _t[0], setFilterReference = _t[1];
159
+ var _u = (0, react_1.useState)(""), filterReferenceSearch = _u[0], setFilterReferenceSearch = _u[1];
160
+ var _v = (0, react_1.useState)([]), filterReferenceList = _v[0], setFilterReferenceList = _v[1];
161
+ var _w = (0, react_1.useState)({
159
162
  startDate: undefined,
160
163
  endDate: undefined,
161
- }), filterReferenceDate = _t[0], setFilterReferenceDate = _t[1];
162
- var _u = (0, react_1.useState)(true), tableLoading = _u[0], setTableLoading = _u[1];
163
- var _v = (0, react_1.useState)(""), cursor = _v[0], setCursor = _v[1];
164
- var _w = (0, react_1.useState)(""), lastCursor = _w[0], setLastCursor = _w[1];
165
- var _x = (0, react_1.useState)([]), tableData = _x[0], setTableData = _x[1];
166
- var _y = (0, react_1.useState)([]), spaceTableData = _y[0], setSpaceTableData = _y[1];
167
- var _z = (0, react_1.useState)(0), size = _z[0], setSize = _z[1];
168
- var _0 = (0, react_1.useState)(0), pageIndex = _0[0], setPageIndex = _0[1];
169
- var _1 = (0, react_1.useState)([]), selectedIds = _1[0], setSelectedIds = _1[1];
170
- var _2 = (0, react_1.useState)(false), selectAll = _2[0], setSelectAll = _2[1];
171
- var _3 = (0, react_1.useState)(""), deletePasscode = _3[0], setDeletePasscode = _3[1];
172
- var _4 = (0, react_1.useState)(""), deletePasscodeInput = _4[0], setDeletePasscodeInput = _4[1];
164
+ }), filterReferenceDate = _w[0], setFilterReferenceDate = _w[1];
165
+ var _x = (0, react_1.useState)(true), tableLoading = _x[0], setTableLoading = _x[1];
166
+ var _y = (0, react_1.useState)(""), cursor = _y[0], setCursor = _y[1];
167
+ var _z = (0, react_1.useState)(""), lastCursor = _z[0], setLastCursor = _z[1];
168
+ var _0 = (0, react_1.useState)([]), tableData = _0[0], setTableData = _0[1];
169
+ var _1 = (0, react_1.useState)([]), spaceTableData = _1[0], setSpaceTableData = _1[1];
170
+ var _2 = (0, react_1.useState)(0), size = _2[0], setSize = _2[1];
171
+ var _3 = (0, react_1.useState)(0), pageIndex = _3[0], setPageIndex = _3[1];
172
+ var _4 = (0, react_1.useState)([]), selectedIds = _4[0], setSelectedIds = _4[1];
173
+ var _5 = (0, react_1.useState)(false), selectAll = _5[0], setSelectAll = _5[1];
174
+ var _6 = (0, react_1.useState)(""), deletePasscode = _6[0], setDeletePasscode = _6[1];
175
+ var _7 = (0, react_1.useState)(""), deletePasscodeInput = _7[0], setDeletePasscodeInput = _7[1];
173
176
  //INFO : Used by List Organise
174
- var _5 = (0, react_1.useState)(false), sortModal = _5[0], setSortModal = _5[1];
175
- var _6 = (0, react_1.useState)(false), filterModal = _6[0], setFilterModal = _6[1];
176
- var _7 = (0, react_1.useState)(false), addTabModal = _7[0], setAddTabModal = _7[1];
177
- var _8 = (0, react_1.useState)(false), queryForm = _8[0], setQueryForm = _8[1];
177
+ var _8 = (0, react_1.useState)(false), sortModal = _8[0], setSortModal = _8[1];
178
+ var _9 = (0, react_1.useState)(false), filterModal = _9[0], setFilterModal = _9[1];
179
+ var _10 = (0, react_1.useState)(false), addTabModal = _10[0], setAddTabModal = _10[1];
180
+ var _11 = (0, react_1.useState)(false), queryForm = _11[0], setQueryForm = _11[1];
181
+ var _12 = (0, react_1.useState)(false), batchUpdateModal = _12[0], setBatchUpdateModal = _12[1];
182
+ var _13 = (0, react_1.useState)({
183
+ columnId: "",
184
+ columnData: {},
185
+ }), batchUpdateData = _13[0], setBatchUpdateData = _13[1];
178
186
  //INFO : Used by Export
179
- var _9 = (0, react_1.useState)(null), csvFile = _9[0], setCSVFile = _9[1];
180
- var _10 = (0, react_1.useState)([]), csvFileData = _10[0], setCSVFileData = _10[1];
181
- var _11 = (0, react_1.useState)(0), stepCSVIndex = _11[0], setStepCSVIndex = _11[1];
182
- var _12 = (0, react_1.useState)({}), listCSVMapAttribute = _12[0], setListCSVMapAttribute = _12[1];
183
- var _13 = (0, react_1.useState)({}), listCSVObjAttribute = _13[0], setListCSVObjAttribute = _13[1];
184
- var _14 = (0, react_1.useState)([]), csvAPIAttribute = _14[0], setCSVAPIAttribute = _14[1];
185
- var _15 = (0, react_1.useState)([]), importTableData = _15[0], setImportTableData = _15[1];
186
- var _16 = (0, react_1.useState)(""), exportLink = _16[0], setExportLink = _16[1];
187
- var _17 = (0, react_1.useState)([]), queryList = _17[0], setQueryList = _17[1];
188
- var _18 = (0, react_1.useState)(-1), queryIndex = _18[0], setQueryIndex = _18[1];
187
+ var _14 = (0, react_1.useState)(null), csvFile = _14[0], setCSVFile = _14[1];
188
+ var _15 = (0, react_1.useState)([]), csvFileData = _15[0], setCSVFileData = _15[1];
189
+ var _16 = (0, react_1.useState)(0), stepCSVIndex = _16[0], setStepCSVIndex = _16[1];
190
+ var _17 = (0, react_1.useState)({}), listCSVMapAttribute = _17[0], setListCSVMapAttribute = _17[1];
191
+ var _18 = (0, react_1.useState)({}), listCSVObjAttribute = _18[0], setListCSVObjAttribute = _18[1];
192
+ var _19 = (0, react_1.useState)([]), csvAPIAttribute = _19[0], setCSVAPIAttribute = _19[1];
193
+ var _20 = (0, react_1.useState)([]), importTableData = _20[0], setImportTableData = _20[1];
194
+ var _21 = (0, react_1.useState)(""), exportLink = _21[0], setExportLink = _21[1];
195
+ var _22 = (0, react_1.useState)([]), queryList = _22[0], setQueryList = _22[1];
196
+ var _23 = (0, react_1.useState)(-1), queryIndex = _23[0], setQueryIndex = _23[1];
189
197
  //INFO : Used by Read
190
198
  //INFO : Used by Update
191
- var _19 = (0, react_1.useState)(false), modalVisible = _19[0], setModalVisible = _19[1];
192
- var _20 = (0, react_1.useState)(false), deleteModal = _20[0], setDeleteModal = _20[1];
193
- var _21 = (0, react_1.useState)(false), excelModal = _21[0], setExcelModal = _21[1];
194
- var _22 = (0, react_1.useState)(false), exportExcel = _22[0], setExportExcel = _22[1];
195
- var _23 = (0, react_1.useState)({}), selectedData = _23[0], setSelectedData = _23[1];
196
- var _24 = (0, react_1.useState)(""), selectedObjectStructureId = _24[0], setSelectedObjectStructureId = _24[1];
197
- var _25 = (0, react_1.useState)(""), selectedObjectId = _25[0], setSelectedObjectId = _25[1];
198
- var _26 = (0, react_1.useState)({}), selectedObjectData = _26[0], setSelectedObjectData = _26[1];
199
- var _27 = (0, react_1.useState)(false), referenceLoading = _27[0], setReferenceLoading = _27[1];
200
- var _28 = (0, react_1.useState)({}), referencesOptions = _28[0], setReferencesOptions = _28[1];
201
- var _29 = (0, react_1.useState)({}), referenceModelSchema = _29[0], setReferenceSchema = _29[1];
199
+ var _24 = (0, react_1.useState)(false), modalVisible = _24[0], setModalVisible = _24[1];
200
+ var _25 = (0, react_1.useState)(false), deleteModal = _25[0], setDeleteModal = _25[1];
201
+ var _26 = (0, react_1.useState)(false), excelModal = _26[0], setExcelModal = _26[1];
202
+ var _27 = (0, react_1.useState)(false), exportExcel = _27[0], setExportExcel = _27[1];
203
+ var _28 = (0, react_1.useState)({}), selectedData = _28[0], setSelectedData = _28[1];
204
+ var _29 = (0, react_1.useState)(""), selectedObjectStructureId = _29[0], setSelectedObjectStructureId = _29[1];
205
+ var _30 = (0, react_1.useState)(""), selectedObjectId = _30[0], setSelectedObjectId = _30[1];
206
+ var _31 = (0, react_1.useState)({}), selectedObjectData = _31[0], setSelectedObjectData = _31[1];
207
+ var _32 = (0, react_1.useState)(false), referenceLoading = _32[0], setReferenceLoading = _32[1];
208
+ var _33 = (0, react_1.useState)({}), referencesOptions = _33[0], setReferencesOptions = _33[1];
209
+ var _34 = (0, react_1.useState)({}), referenceModelSchema = _34[0], setReferenceSchema = _34[1];
202
210
  var devSettings = props.devSettings;
203
211
  var serverId = devSettings.server === "mongoServer" ? "_id" : "id";
204
212
  var isEditor = ((_a = props.edit) === null || _a === void 0 ? void 0 : _a.allEditable) ? true : false;
@@ -209,6 +217,7 @@ function DataTemplate(props) {
209
217
  dbCollection: props.collectionId,
210
218
  dbEndpoint: devSettings.dbEndpoint,
211
219
  });
220
+ var debug = ((_e = props.organise) === null || _e === void 0 ? void 0 : _e.debugOnChangeType) ? true : false;
212
221
  var moreButtonPopUp = [
213
222
  {
214
223
  text: "Import Excel",
@@ -225,12 +234,13 @@ function DataTemplate(props) {
225
234
  },
226
235
  },
227
236
  ];
228
- if ((_e = props.organise) === null || _e === void 0 ? void 0 : _e.moreSettings)
237
+ if ((_f = props.organise) === null || _f === void 0 ? void 0 : _f.moreSettings)
229
238
  moreButtonPopUp = moreButtonPopUp.concat(props.organise.moreSettings);
230
239
  (0, react_1.useEffect)(function () {
231
240
  switch (props.type) {
232
241
  case "read":
233
242
  case "update":
243
+ setReferencesOptions({});
234
244
  setExcelModal(false);
235
245
  setExportExcel(false);
236
246
  setSelectedData({});
@@ -238,6 +248,8 @@ function DataTemplate(props) {
238
248
  if (props.id !== "new" && props.id !== "") {
239
249
  setModalVisible(true);
240
250
  setLoading(true);
251
+ if (readQueryHocRef.current)
252
+ readQueryHocRef.current.handleRefresh();
241
253
  }
242
254
  break;
243
255
  case "list":
@@ -280,16 +292,16 @@ function DataTemplate(props) {
280
292
  };
281
293
  var handleGetListData = function (responseData, type, rowId) { return __awaiter(_this, void 0, void 0, function () {
282
294
  var dataList, prettierDataList, selectedIndex_1;
283
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
284
- return __generator(this, function (_l) {
285
- switch (_l.label) {
295
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
296
+ return __generator(this, function (_m) {
297
+ switch (_m.label) {
286
298
  case 0:
287
299
  dataList = [];
288
300
  prettierDataList = [];
289
301
  if (!responseData) return [3 /*break*/, 2];
290
- return [4 /*yield*/, (0, display_1.handleListDataBasedOnModel)(responseData.data, (_b = (_a = props.devSettings) === null || _a === void 0 ? void 0 : _a.server) !== null && _b !== void 0 ? _b : "mongoServer", (_c = props.lib) === null || _c === void 0 ? void 0 : _c.axios, props.model, (_e = (_d = props.devSettings) === null || _d === void 0 ? void 0 : _d.imageEndpoint) !== null && _e !== void 0 ? _e : "", props.localURLEndpoint, props.collectionId, (_g = (_f = props.devSettings) === null || _f === void 0 ? void 0 : _f.dbEndpoint) !== null && _g !== void 0 ? _g : "", (_h = props.devSettings.organisationMembers) !== null && _h !== void 0 ? _h : [], handleNavigate, (_j = props.devSettings) === null || _j === void 0 ? void 0 : _j.bucketName, ((_k = props.organise) === null || _k === void 0 ? void 0 : _k.viewId) === "general")];
302
+ return [4 /*yield*/, (0, display_1.handleListDataBasedOnModel)(responseData.data, (_b = (_a = props.devSettings) === null || _a === void 0 ? void 0 : _a.server) !== null && _b !== void 0 ? _b : "mongoServer", (_c = props.lib) === null || _c === void 0 ? void 0 : _c.axios, props.model, (_e = (_d = props.devSettings) === null || _d === void 0 ? void 0 : _d.imageEndpoint) !== null && _e !== void 0 ? _e : "", props.localURLEndpoint, props.collectionId, (_g = (_f = props.devSettings) === null || _f === void 0 ? void 0 : _f.dbEndpoint) !== null && _g !== void 0 ? _g : "", (_h = props.devSettings.organisationMembers) !== null && _h !== void 0 ? _h : [], handleNavigate, (_j = props.devSettings) === null || _j === void 0 ? void 0 : _j.bucketName, ((_k = props.organise) === null || _k === void 0 ? void 0 : _k.viewId) === "general", (_l = props.organise) === null || _l === void 0 ? void 0 : _l.debugOnChangeType)];
291
303
  case 1:
292
- prettierDataList = _l.sent();
304
+ prettierDataList = _m.sent();
293
305
  responseData.data.map(function (eachData) {
294
306
  if (eachData["_id"]) {
295
307
  eachData["id"] = eachData["_id"];
@@ -298,7 +310,7 @@ function DataTemplate(props) {
298
310
  return null;
299
311
  });
300
312
  dataList = responseData.data;
301
- _l.label = 2;
313
+ _m.label = 2;
302
314
  case 2:
303
315
  if (type === "update" || type === "create") {
304
316
  try {
@@ -352,6 +364,7 @@ function DataTemplate(props) {
352
364
  if (!open) {
353
365
  setModalVisible(false);
354
366
  setDeleteModal(false);
367
+ setBatchUpdateModal(false);
355
368
  handlePopUpModal(false);
356
369
  }
357
370
  if (readQueryHocRef.current)
@@ -923,8 +936,94 @@ function DataTemplate(props) {
923
936
  }
924
937
  });
925
938
  }); };
939
+ var handleBatchUpdateData = function () { return __awaiter(_this, void 0, void 0, function () {
940
+ var model_1, columnId_1, dataToSubmit_1, isFile, res, res, err_8;
941
+ var _a, _b;
942
+ var _this = this;
943
+ return __generator(this, function (_c) {
944
+ switch (_c.label) {
945
+ case 0:
946
+ _c.trys.push([0, 7, , 8]);
947
+ setLoading(true);
948
+ setModalVisible(true);
949
+ model_1 = props.model.find(function (eachModel) { return eachModel.id === batchUpdateData.columnId; });
950
+ columnId_1 = batchUpdateData.columnId;
951
+ dataToSubmit_1 = batchUpdateData.columnData;
952
+ isFile = (model_1 === null || model_1 === void 0 ? void 0 : model_1.type) === "image" || (model_1 === null || model_1 === void 0 ? void 0 : model_1.type) === "file";
953
+ if ((model_1 === null || model_1 === void 0 ? void 0 : model_1.optional) && dataToSubmit_1[columnId_1] === undefined) {
954
+ if (model_1.type === "address")
955
+ dataToSubmit_1 = (_a = {}, _a[columnId_1] = { name: "", lat: 0, lng: 0 }, _a);
956
+ else
957
+ dataToSubmit_1 = (_b = {}, _b[columnId_1] = "", _b);
958
+ }
959
+ if (!(isFile && dataToSubmit_1[columnId_1])) return [3 /*break*/, 2];
960
+ return [4 /*yield*/, Promise.all(selectedIds.map(function (eachId) { return __awaiter(_this, void 0, void 0, function () {
961
+ return __generator(this, function (_a) {
962
+ switch (_a.label) {
963
+ case 0: return [4 /*yield*/, handleSubmitData("update", eachId, columnId_1, dataToSubmit_1)];
964
+ case 1: return [2 /*return*/, _a.sent()];
965
+ }
966
+ });
967
+ }); }))];
968
+ case 1:
969
+ res = _c.sent();
970
+ if (res) {
971
+ setLoading(false);
972
+ setSelectedIds([]);
973
+ setModalVisible(false);
974
+ setBatchUpdateModal(false);
975
+ }
976
+ return [3 /*break*/, 6];
977
+ case 2:
978
+ if (!(isFile && !dataToSubmit_1[columnId_1])) return [3 /*break*/, 4];
979
+ return [4 /*yield*/, Promise.all(selectedIds.map(function (eachId) { return __awaiter(_this, void 0, void 0, function () {
980
+ var _a, _b, _c;
981
+ return __generator(this, function (_d) {
982
+ switch (_d.label) {
983
+ case 0: return [4 /*yield*/, handleRemoveImageAxios(handleUploadEndpoint(model_1), eachId, (_a = model_1.imageCollectionName) !== null && _a !== void 0 ? _a : "", (_b = model_1.imageFileName) !== null && _b !== void 0 ? _b : "", (_c = devSettings.bucketName) !== null && _c !== void 0 ? _c : "")];
984
+ case 1:
985
+ _d.sent();
986
+ return [2 /*return*/];
987
+ }
988
+ });
989
+ }); }))];
990
+ case 3:
991
+ _c.sent();
992
+ _c.label = 4;
993
+ case 4: return [4 /*yield*/, writeServerQuery.call("batchUpdate", {
994
+ data: dataToSubmit_1,
995
+ query: [
996
+ {
997
+ queryId: "_id",
998
+ type: "in",
999
+ value: selectedIds,
1000
+ },
1001
+ ],
1002
+ })];
1003
+ case 5:
1004
+ res = _c.sent();
1005
+ if (res)
1006
+ handleRefresh(false);
1007
+ _c.label = 6;
1008
+ case 6: return [3 /*break*/, 8];
1009
+ case 7:
1010
+ err_8 = _c.sent();
1011
+ if (err_8.response && err_8.response.status === 400) {
1012
+ setNotification({
1013
+ type: false,
1014
+ title: "Error",
1015
+ msg: err_8.response.data.err,
1016
+ });
1017
+ }
1018
+ return [3 /*break*/, 8];
1019
+ case 8:
1020
+ setBatchUpdateData({ columnId: "", columnData: {} });
1021
+ return [2 /*return*/];
1022
+ }
1023
+ });
1024
+ }); };
926
1025
  var handleSubmitData = function (type, rowId, columnId, data) { return __awaiter(_this, void 0, void 0, function () {
927
- var selectedId, id, createSelectedData, uniqueDataStructure, uniqueColumnId, res, dataToSubmit, selectedIndex_2, err_8;
1026
+ var selectedId, id, createSelectedData_1, uniqueDataStructure, uniqueColumnId, res, dataToSubmit, selectedIndex_2, err_9;
928
1027
  var _a;
929
1028
  var _b;
930
1029
  return __generator(this, function (_c) {
@@ -949,16 +1048,16 @@ function DataTemplate(props) {
949
1048
  id = (_b = props.id) !== null && _b !== void 0 ? _b : "";
950
1049
  return [4 /*yield*/, handleUploadImage(id, data)];
951
1050
  case 1:
952
- createSelectedData = _c.sent();
1051
+ createSelectedData_1 = _c.sent();
953
1052
  uniqueDataStructure = props.model.filter(function (eachStructure) {
954
1053
  return eachStructure.unique;
955
1054
  });
956
1055
  uniqueColumnId = uniqueDataStructure.length > 0 ? uniqueDataStructure[0].id : undefined;
957
1056
  res = "";
958
1057
  if (!(selectedId === "new")) return [3 /*break*/, 3];
959
- createSelectedData[serverId] = id;
1058
+ createSelectedData_1[serverId] = id;
960
1059
  return [4 /*yield*/, writeServerQuery.call("create", {
961
- data: createSelectedData,
1060
+ data: createSelectedData_1,
962
1061
  unique: uniqueColumnId,
963
1062
  })];
964
1063
  case 2:
@@ -969,11 +1068,11 @@ function DataTemplate(props) {
969
1068
  dataToSubmit = void 0;
970
1069
  if (type === "update" && columnId) {
971
1070
  dataToSubmit = (_a = {},
972
- _a[columnId] = createSelectedData[columnId],
1071
+ _a[columnId] = createSelectedData_1[columnId],
973
1072
  _a);
974
1073
  }
975
1074
  else
976
- dataToSubmit = __assign(__assign({}, createSelectedData), { baseDraft: false });
1075
+ dataToSubmit = __assign(__assign({}, createSelectedData_1), { baseDraft: false });
977
1076
  return [4 /*yield*/, writeServerQuery.call("update", {
978
1077
  id: selectedId,
979
1078
  data: dataToSubmit,
@@ -990,7 +1089,7 @@ function DataTemplate(props) {
990
1089
  selectedIndex_2 = -1;
991
1090
  tableData.map(function (eachData, index) {
992
1091
  if (eachData.id === rowId || eachData._id === rowId) {
993
- eachData[columnId] = data[columnId];
1092
+ eachData[columnId] = createSelectedData_1[columnId];
994
1093
  selectedIndex_2 = index;
995
1094
  }
996
1095
  return null;
@@ -1000,18 +1099,18 @@ function DataTemplate(props) {
1000
1099
  _c.sent();
1001
1100
  _c.label = 7;
1002
1101
  case 7: return [3 /*break*/, 10];
1003
- case 8: return [4 /*yield*/, handleGetListData({ data: [createSelectedData] }, "create")];
1102
+ case 8: return [4 /*yield*/, handleGetListData({ data: [createSelectedData_1] }, "create")];
1004
1103
  case 9:
1005
1104
  _c.sent();
1006
1105
  _c.label = 10;
1007
1106
  case 10: return [2 /*return*/, res];
1008
1107
  case 11:
1009
- err_8 = _c.sent();
1010
- if (err_8.response && err_8.response.status === 400) {
1108
+ err_9 = _c.sent();
1109
+ if (err_9.response && err_9.response.status === 400) {
1011
1110
  setNotification({
1012
1111
  type: false,
1013
1112
  title: "Error",
1014
- msg: err_8.response.data.err,
1113
+ msg: err_9.response.data.err,
1015
1114
  });
1016
1115
  }
1017
1116
  return [3 /*break*/, 12];
@@ -1020,16 +1119,17 @@ function DataTemplate(props) {
1020
1119
  });
1021
1120
  }); };
1022
1121
  var handleSubmit = function () { return __awaiter(_this, void 0, void 0, function () {
1023
- var res, err_9;
1024
- return __generator(this, function (_a) {
1025
- switch (_a.label) {
1122
+ var res, err_10;
1123
+ var _a;
1124
+ return __generator(this, function (_b) {
1125
+ switch (_b.label) {
1026
1126
  case 0:
1027
- _a.trys.push([0, 2, , 3]);
1127
+ _b.trys.push([0, 2, , 3]);
1028
1128
  setLoading(true);
1029
1129
  setModalVisible(true);
1030
1130
  return [4 /*yield*/, handleSubmitData()];
1031
1131
  case 1:
1032
- res = _a.sent();
1132
+ res = _b.sent();
1033
1133
  setModalVisible(false);
1034
1134
  setLoading(false);
1035
1135
  if (res) {
@@ -1037,12 +1137,17 @@ function DataTemplate(props) {
1037
1137
  props.onComplete();
1038
1138
  }
1039
1139
  else {
1040
- handleNavigate("".concat(props.localURLEndpoint, "?type=list&collection=").concat(props.collectionId, "&data=r"));
1140
+ if (((_a = props.organise) === null || _a === void 0 ? void 0 : _a.debugOnChangeType) && props.id !== "new") {
1141
+ props.organise.debugOnChangeType("list");
1142
+ }
1143
+ else
1144
+ handleNavigate("".concat(props.localURLEndpoint, "?type=list&collection=").concat(props.collectionId) +
1145
+ (props.id === "new" ? "&data=r" : ""));
1041
1146
  }
1042
1147
  }
1043
1148
  return [3 /*break*/, 3];
1044
1149
  case 2:
1045
- err_9 = _a.sent();
1150
+ err_10 = _b.sent();
1046
1151
  setModalVisible(false);
1047
1152
  setLoading(false);
1048
1153
  return [3 /*break*/, 3];
@@ -1090,6 +1195,12 @@ function DataTemplate(props) {
1090
1195
  model: (_a = filterObjectModel === null || filterObjectModel === void 0 ? void 0 : filterObjectModel.objectData) !== null && _a !== void 0 ? _a : [],
1091
1196
  };
1092
1197
  }
1198
+ else if (batchUpdateModal && batchUpdateData.columnId) {
1199
+ return {
1200
+ data: batchUpdateData.columnData,
1201
+ model: props.model,
1202
+ };
1203
+ }
1093
1204
  else {
1094
1205
  return {
1095
1206
  data: selectedData,
@@ -1101,6 +1212,9 @@ function DataTemplate(props) {
1101
1212
  if (modalVisible && selectedObjectStructureId) {
1102
1213
  setSelectedObjectData(data);
1103
1214
  }
1215
+ else if (batchUpdateModal && batchUpdateData.columnId) {
1216
+ setBatchUpdateData(__assign(__assign({}, batchUpdateData), { columnData: data }));
1217
+ }
1104
1218
  else {
1105
1219
  setSelectedData(data);
1106
1220
  }
@@ -1184,6 +1298,12 @@ function DataTemplate(props) {
1184
1298
  clonedData[id] = value;
1185
1299
  handleUpdateChangeData(clonedData);
1186
1300
  };
1301
+ var handleOnChangeMarkdown = function (id, value) {
1302
+ var _a = handleOnChangeData(), data = _a.data, model = _a.model;
1303
+ var clonedData = (0, display_1.handleClonedDataAttribute)(data, model);
1304
+ clonedData[id] = value;
1305
+ handleUpdateChangeData(clonedData);
1306
+ };
1187
1307
  //=====================================================================================
1188
1308
  //SECTION: Handle CSV
1189
1309
  //=====================================================================================
@@ -1237,7 +1357,7 @@ function DataTemplate(props) {
1237
1357
  }
1238
1358
  };
1239
1359
  var handleStepCSV = function () { return __awaiter(_this, void 0, void 0, function () {
1240
- var csvList_1, _loop_1, _i, _a, _b, eachKey, eachValue, valid_1, errorValue_1, excelFormData, response, open_1, err_10;
1360
+ var csvList_1, _loop_1, _i, _a, _b, eachKey, eachValue, valid_1, errorValue_1, excelFormData, response, open_1, err_11;
1241
1361
  var _c, _d, _e, _f, _g;
1242
1362
  return __generator(this, function (_h) {
1243
1363
  switch (_h.label) {
@@ -1364,12 +1484,12 @@ function DataTemplate(props) {
1364
1484
  _h.label = 5;
1365
1485
  case 5: return [3 /*break*/, 7];
1366
1486
  case 6:
1367
- err_10 = _h.sent();
1487
+ err_11 = _h.sent();
1368
1488
  setLoading(false);
1369
1489
  setNotification({
1370
1490
  type: false,
1371
1491
  title: "Import Error",
1372
- msg: err_10.message,
1492
+ msg: err_11.message,
1373
1493
  });
1374
1494
  return [3 /*break*/, 7];
1375
1495
  case 7: return [2 /*return*/];
@@ -1377,7 +1497,7 @@ function DataTemplate(props) {
1377
1497
  });
1378
1498
  }); };
1379
1499
  var handleExportCSVData = function () { return __awaiter(_this, void 0, void 0, function () {
1380
- var res, err_11;
1500
+ var res, err_12;
1381
1501
  var _a, _b;
1382
1502
  return __generator(this, function (_c) {
1383
1503
  switch (_c.label) {
@@ -1401,7 +1521,7 @@ function DataTemplate(props) {
1401
1521
  setLoading(false);
1402
1522
  return [3 /*break*/, 3];
1403
1523
  case 2:
1404
- err_11 = _c.sent();
1524
+ err_12 = _c.sent();
1405
1525
  setLoading(false);
1406
1526
  return [3 /*break*/, 3];
1407
1527
  case 3: return [2 /*return*/];
@@ -1585,10 +1705,14 @@ function DataTemplate(props) {
1585
1705
  handleSortQuery(index, upData_1 ? "up" : "down");
1586
1706
  } }, upData_1 ? (react_1.default.createElement(outline_1.ArrowUpIcon, { className: "block w-5 h-5 text-primary-600" })) : (react_1.default.createElement(outline_1.ArrowDownIcon, { className: "block w-5 h-5 text-primary-600" }))));
1587
1707
  }
1708
+ var value = data.value;
1709
+ var isDate = (0, moment_1.default)(value);
1710
+ if (isDate.isValid())
1711
+ value = (0, moment_1.default)(value).format("DD/MM/YYYY h:mm a");
1588
1712
  queryStructureView.push({
1589
1713
  key: index,
1590
1714
  name: data.queryId,
1591
- value: data.value,
1715
+ value: value,
1592
1716
  sort: sortComponent,
1593
1717
  view: (react_1.default.createElement("div", { className: "ml-2 cursor-pointer", onClick: function () {
1594
1718
  handleViewQuery(index);
@@ -1617,6 +1741,7 @@ function DataTemplate(props) {
1617
1741
  eachAttribute.type === "file" ||
1618
1742
  eachAttribute.type === "multipleFile" ||
1619
1743
  eachAttribute.type === "multipleImage" ||
1744
+ eachAttribute.type === "markdown" ||
1620
1745
  eachAttribute.hide) {
1621
1746
  return null;
1622
1747
  }
@@ -1835,7 +1960,7 @@ function DataTemplate(props) {
1835
1960
  current: true,
1836
1961
  });
1837
1962
  return (react_1.default.createElement(react_1.default.Fragment, null,
1838
- react_1.default.createElement(readQueryHoc_1.ReadQueryHoc, { database: {
1963
+ react_1.default.createElement(readQueryHoc_1.ReadQueryHoc, { ref: readQueryHocRef, database: {
1839
1964
  dbModule: dbModule,
1840
1965
  dbType: devSettings.server,
1841
1966
  dbCollection: props.collectionId,
@@ -1853,6 +1978,11 @@ function DataTemplate(props) {
1853
1978
  react_1.default.createElement("p", { className: "text-xl font-medium" }, props.title),
1854
1979
  react_1.default.createElement("span", { className: "text-sm text-gray-500" }, props.description)),
1855
1980
  ((_g = props.edit) === null || _g === void 0 ? void 0 : _g.deleteBtn) && isEditor && (react_1.default.createElement("div", { className: "flex flex-col sm:flex-row" },
1981
+ react_1.default.createElement("div", { className: "w-full mt-5 ml-0 sm:mt-0 sm:ml-3" }, debug ? (react_1.default.createElement(button_1.Button, { text: "Update", className: "w-full", type: "normal", onClick: function () {
1982
+ var _a, _b;
1983
+ (_b = (_a = props.organise) === null || _a === void 0 ? void 0 : _a.debugOnChangeType) === null || _b === void 0 ? void 0 : _b.call(_a, "update");
1984
+ } })) : (react_1.default.createElement(link_1.Link, { className: "w-full", href: "".concat(props.localURLEndpoint, "?data=").concat(props.id, "&type=update&collection=").concat(props.collectionId, "&view=general"), linkType: props.linkType, custom: props.custom },
1985
+ react_1.default.createElement(button_1.Button, { text: "Update", className: "w-full", type: "normal" })))),
1856
1986
  react_1.default.createElement(button_1.Button, { text: "Delete", className: "mt-3 ml-0 sm:mt-0 sm:ml-3", type: "danger", onClick: function () {
1857
1987
  setDeleteModal(true);
1858
1988
  } }))))),
@@ -1870,7 +2000,7 @@ function DataTemplate(props) {
1870
2000
  current: true,
1871
2001
  });
1872
2002
  return (react_1.default.createElement(react_1.default.Fragment, null,
1873
- props.id && props.id !== "new" && props.model.length > 1 && (react_1.default.createElement(readQueryHoc_1.ReadQueryHoc, { database: {
2003
+ props.id && props.id !== "new" && props.model.length > 1 && (react_1.default.createElement(readQueryHoc_1.ReadQueryHoc, { ref: readQueryHocRef, database: {
1874
2004
  dbModule: dbModule,
1875
2005
  dbType: devSettings.server,
1876
2006
  dbCollection: props.collectionId,
@@ -2108,7 +2238,7 @@ function DataTemplate(props) {
2108
2238
  break;
2109
2239
  case "range":
2110
2240
  searchFilterList.push(react_1.default.createElement("div", { className: "pb-0 md:pb-5 w-full" },
2111
- react_1.default.createElement(datePicker_1.InputDatePicker, { id: "startDate", startDate: filterReferenceDate.startDate, endDate: filterReferenceDate.endDate, range: true, onChange: handleRangeFilterOnChange })));
2241
+ react_1.default.createElement(datePicker_1.InputDatePicker, { id: "startDate", startDate: filterReferenceDate.startDate, endDate: filterReferenceDate.endDate, range: true, onChange: handleRangeFilterOnChange, showTime: true })));
2112
2242
  break;
2113
2243
  }
2114
2244
  return null;
@@ -2121,7 +2251,7 @@ function DataTemplate(props) {
2121
2251
  //=====================================================================================
2122
2252
  //SECTION: Render Utils
2123
2253
  //=====================================================================================
2124
- var renderDataTemplateFormContent = function (state, model, ref, isObject, isObjectList) {
2254
+ var renderDataTemplateFormContent = function (state, model, ref, isObject, isObjectList, modalInput) {
2125
2255
  var _a, _b, _c, _d;
2126
2256
  return (0, display_1.renderDataTemplateForm)(state, model, ref, {
2127
2257
  handleOnChangeAddress: handleOnChangeAddress,
@@ -2130,7 +2260,8 @@ function DataTemplate(props) {
2130
2260
  handleOnChangeDate: handleOnChangeDate,
2131
2261
  handleOnChangeFile: handleOnChangeFile,
2132
2262
  handleOnChangeFiles: handleOnChangeFiles,
2133
- }, false, undefined, {
2263
+ handleOnChangeMarkdown: handleOnChangeMarkdown,
2264
+ }, modalInput, undefined, {
2134
2265
  id: props.id,
2135
2266
  isObject: isObject,
2136
2267
  isObjectList: isObjectList,
@@ -2214,10 +2345,14 @@ function DataTemplate(props) {
2214
2345
  });
2215
2346
  if (viewType === "general") {
2216
2347
  if (dataType === "list") {
2217
- return (react_1.default.createElement(table_1.Table, { paginationType: devSettings.server === "mongoServer" ? "page" : "cursor", data: tableData, space: props.space, spaceData: spaceTableData, size: size, limit: limit, cursor: cursor, loading: tableLoading, checkbox: isEditor ? true : false, selectAll: selectAll, selectedIds: selectedIds, selectAllText: selectAll ? "from filter" : "", multiActionButton: react_1.default.createElement(textButton_1.TextButton, { className: "text-sm", text: "Delete", onClick: function () {
2218
- handleGenerateDeletePasscode();
2219
- setDeleteModal(true);
2220
- } }), handleSelectAll: handleSelectAllPages, handleSelectedIds: handleSelectIds, header: renderTableHeader(), pageIndex: pageIndex, onClickRow: function (id) {
2348
+ return (react_1.default.createElement(table_1.Table, { paginationType: devSettings.server === "mongoServer" ? "page" : "cursor", data: tableData, space: props.space, spaceData: spaceTableData, size: size, limit: limit, cursor: cursor, loading: tableLoading, checkbox: isEditor ? true : false, selectAll: selectAll, selectedIds: selectedIds, selectAllText: selectAll ? "from filter" : "", multiActionButton: react_1.default.createElement("div", { className: "flex flex-row space-x-3" },
2349
+ react_1.default.createElement(textButton_1.TextButton, { className: "text-sm text-red-500 hover:text-red-600", text: "Delete", onClick: function () {
2350
+ handleGenerateDeletePasscode();
2351
+ setDeleteModal(true);
2352
+ } }),
2353
+ !selectAll && (react_1.default.createElement(textButton_1.TextButton, { className: "text-sm", text: "Update", onClick: function () {
2354
+ setBatchUpdateModal(true);
2355
+ } }))), handleSelectAll: handleSelectAllPages, handleSelectedIds: handleSelectIds, header: renderTableHeader(), pageIndex: pageIndex, onClickRow: function (id) {
2221
2356
  handleNavigate("".concat(props.localURLEndpoint, "?data=").concat(id, "&type=read&collection=").concat(props.collectionId, "&view=general"));
2222
2357
  }, 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", lib: { axios: (_a = props.lib) === null || _a === void 0 ? void 0 : _a.axios }, devSettings: {
2223
2358
  schemaEndpoint: devSettings.schemaEndpoint,
@@ -2436,6 +2571,60 @@ function DataTemplate(props) {
2436
2571
  }
2437
2572
  } })))));
2438
2573
  };
2574
+ var renderBatchUpdateModalContent = function () {
2575
+ var _a;
2576
+ if (batchUpdateModal) {
2577
+ var unsupportedModelType_1 = [
2578
+ "object",
2579
+ "listObject",
2580
+ "multipleFile",
2581
+ "multipleImage",
2582
+ ];
2583
+ var columnIdOptions = props.model
2584
+ .filter(function (eachModel) {
2585
+ return eachModel.id !== "id" &&
2586
+ !eachModel.unique &&
2587
+ !eachModel.disabled &&
2588
+ !unsupportedModelType_1.includes(eachModel.type);
2589
+ })
2590
+ .map(function (eachModel) { return ({ key: eachModel.id, label: eachModel.name }); });
2591
+ var defaultModel = {
2592
+ id: "text",
2593
+ name: "Value",
2594
+ disabled: true,
2595
+ type: "string",
2596
+ };
2597
+ var modelFound = props.model.find(function (eachModel) { return eachModel.id === batchUpdateData.columnId; });
2598
+ var model = modelFound !== null && modelFound !== void 0 ? modelFound : defaultModel;
2599
+ return (react_1.default.createElement(react_1.default.Fragment, null,
2600
+ react_1.default.createElement(form_1.Form, { ref: batchUpdateFormRef, refList: [batchUpdateColumnIdRef, batchUpdateInputRef], handleComplete: handleBatchUpdateData },
2601
+ react_1.default.createElement(select_1.Select, { ref: batchUpdateColumnIdRef, id: "columnId", value: (_a = batchUpdateData.columnId) !== null && _a !== void 0 ? _a : "", label: "Column ID", options: columnIdOptions, onChange: function (value) {
2602
+ var _a;
2603
+ setBatchUpdateData({
2604
+ columnId: value,
2605
+ columnData: (_a = {}, _a[value] = undefined, _a),
2606
+ });
2607
+ }, containerClassName: "mb-6", staticDropdown: true }),
2608
+ renderDataTemplateFormContent(batchUpdateData.columnData, [model], [batchUpdateInputRef], false, false, true)),
2609
+ react_1.default.createElement("div", { className: "flex flex-row justify-end pt-5 mt-6 space-x-2" },
2610
+ react_1.default.createElement(button_1.Button, { text: "Close", size: "small", type: "light", onClick: function () {
2611
+ setBatchUpdateData({ columnId: "", columnData: {} });
2612
+ setBatchUpdateModal(false);
2613
+ } }),
2614
+ react_1.default.createElement(button_1.Button, { text: "Update", size: "small", type: "normal", onClick: function () { return __awaiter(_this, void 0, void 0, function () {
2615
+ return __generator(this, function (_a) {
2616
+ switch (_a.label) {
2617
+ case 0: return [4 /*yield*/, batchUpdateFormRef.current.handleSubmit()];
2618
+ case 1:
2619
+ _a.sent();
2620
+ return [2 /*return*/];
2621
+ }
2622
+ });
2623
+ }); } }))));
2624
+ }
2625
+ else
2626
+ return null;
2627
+ };
2439
2628
  var renderModalTitle = function () {
2440
2629
  if (excelModal)
2441
2630
  return "Import CSV";
@@ -2452,16 +2641,20 @@ function DataTemplate(props) {
2452
2641
  };
2453
2642
  return (react_1.default.createElement(react_1.default.Fragment, null,
2454
2643
  renderNotification("root"),
2455
- react_1.default.createElement(modal_1.Modal, { maxWidth: selectedObjectStructureId || excelModal ? "2xl" : undefined, open: modalVisible, title: renderModalTitle(), 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: renderModalContent, onClose: function () {
2644
+ react_1.default.createElement(modal_1.Modal, { maxWidth: selectedObjectStructureId || excelModal ? "2xl" : undefined, open: modalVisible, title: renderModalTitle(), lib: { Dialog: (_g = props.lib) === null || _g === void 0 ? void 0 : _g.Dialog, Transition: (_h = props.lib) === null || _h === void 0 ? void 0 : _h.Transition }, renderContent: renderModalContent, onClose: function () {
2456
2645
  if (queryForm)
2457
2646
  handleViewQuery(-1);
2458
2647
  else
2459
2648
  handlePopUpModal(false);
2460
2649
  }, notification: react_1.default.createElement(react_1.default.Fragment, null, renderNotification("modal")) }),
2461
- react_1.default.createElement(modal_1.Modal, { open: deleteModal, lib: { Dialog: (_h = props.lib) === null || _h === void 0 ? void 0 : _h.Dialog, Transition: (_j = props.lib) === null || _j === void 0 ? void 0 : _j.Transition }, renderContent: renderDeleteModalContent, onClose: function () {
2650
+ react_1.default.createElement(modal_1.Modal, { open: deleteModal, lib: { Dialog: (_j = props.lib) === null || _j === void 0 ? void 0 : _j.Dialog, Transition: (_k = props.lib) === null || _k === void 0 ? void 0 : _k.Transition }, renderContent: renderDeleteModalContent, onClose: function () {
2462
2651
  setDeletePasscodeInput("");
2463
2652
  setDeleteModal(!deleteModal);
2464
2653
  }, notification: react_1.default.createElement(react_1.default.Fragment, null, renderNotification("modal")) }),
2654
+ react_1.default.createElement(modal_1.Modal, { open: batchUpdateModal, lib: { Dialog: (_l = props.lib) === null || _l === void 0 ? void 0 : _l.Dialog, Transition: (_m = props.lib) === null || _m === void 0 ? void 0 : _m.Transition }, renderContent: renderBatchUpdateModalContent, onClose: function () {
2655
+ setBatchUpdateData({ columnId: "", columnData: {} });
2656
+ setBatchUpdateModal(false);
2657
+ }, notification: react_1.default.createElement(react_1.default.Fragment, null, renderNotification("modal")) }),
2465
2658
  renderContent()));
2466
2659
  }
2467
2660
  exports.DataTemplate = DataTemplate;