blixify-ui-web 0.2.46 → 0.2.48

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAQN,MAAM,OAAO,CAAC;AAsDf,OAAO,EACL,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAO1B,eAAO,MAAM,YAAY,mFA+jJvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataTemplate/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAQN,MAAM,OAAO,CAAC;AAsDf,OAAO,EACL,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,YAAY,mFAq3JvB,CAAC"}
@@ -110,6 +110,7 @@ var modal_1 = require("../../display/modal");
110
110
  var notification_1 = require("../../display/notification");
111
111
  var stepper_1 = require("../../display/stepper");
112
112
  var table_1 = require("../../display/table");
113
+ var address_1 = require("../../input/address");
113
114
  var form_1 = require("../../input/form");
114
115
  var select_1 = require("../../input/select");
115
116
  var textInput_1 = require("../../input/textInput");
@@ -130,10 +131,13 @@ var dataStateModel_1 = require("./dataStateModel");
130
131
  var indexedDb_1 = require("./indexedDb");
131
132
  var pagination_1 = require("./pagination");
132
133
  var settingsModal_1 = require("./settingsModal");
134
+ var mapView_1 = require("../../display/mapView");
133
135
  exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
134
136
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
135
137
  var formRef = (0, react_1.createRef)();
136
138
  var objectFormRef = (0, react_1.createRef)();
139
+ var listAddressFromRef = (0, react_1.createRef)();
140
+ var listAddressInputRef = (0, react_1.createRef)();
137
141
  var modalFormInputRefs = props.model.map(function () { return (0, react_1.createRef)(); });
138
142
  var batchUpdateFormRef = (0, react_1.createRef)();
139
143
  var batchUpdateColumnIdRef = (0, react_1.createRef)();
@@ -201,15 +205,21 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
201
205
  var _38 = (0, react_1.useState)({}), selectedData = _38[0], setSelectedData = _38[1];
202
206
  var _39 = (0, react_1.useState)(""), selectedObjectStructureId = _39[0], setSelectedObjectStructureId = _39[1];
203
207
  var _40 = (0, react_1.useState)(""), selectedObjectId = _40[0], setSelectedObjectId = _40[1];
204
- var _41 = (0, react_1.useState)({}), selectedObjectData = _41[0], setSelectedObjectData = _41[1];
205
- var _42 = (0, react_1.useState)(false), referenceLoading = _42[0], setReferenceLoading = _42[1];
206
- var _43 = (0, react_1.useState)({}), referencesOptions = _43[0], setReferencesOptions = _43[1];
207
- var _44 = (0, react_1.useState)({}), referenceDeleteTableData = _44[0], setReferenceDeleteTableData = _44[1];
208
- var _45 = (0, react_1.useState)(0), referenceDeleteIndex = _45[0], setReferenceDeleteIndex = _45[1];
209
- var _46 = (0, react_1.useState)({}), referenceModelSchema = _46[0], setReferenceSchema = _46[1];
208
+ var _41 = (0, react_1.useState)(""), selectedListAddressId = _41[0], setSelectedListAddressId = _41[1];
209
+ var _42 = (0, react_1.useState)({
210
+ lat: 0,
211
+ lng: 0,
212
+ name: "",
213
+ }), selectedListAddress = _42[0], setSelectedListAddress = _42[1];
214
+ var _43 = (0, react_1.useState)({}), selectedObjectData = _43[0], setSelectedObjectData = _43[1];
215
+ var _44 = (0, react_1.useState)(false), referenceLoading = _44[0], setReferenceLoading = _44[1];
216
+ var _45 = (0, react_1.useState)({}), referencesOptions = _45[0], setReferencesOptions = _45[1];
217
+ var _46 = (0, react_1.useState)({}), referenceDeleteTableData = _46[0], setReferenceDeleteTableData = _46[1];
218
+ var _47 = (0, react_1.useState)(0), referenceDeleteIndex = _47[0], setReferenceDeleteIndex = _47[1];
219
+ var _48 = (0, react_1.useState)({}), referenceModelSchema = _48[0], setReferenceSchema = _48[1];
210
220
  //INFO : Offline
211
- var _47 = (0, react_1.useState)(0), offlineDataLength = _47[0], setOfflineDataLength = _47[1];
212
- var _48 = (0, react_1.useState)(false), offlineModal = _48[0], setOfflineModal = _48[1];
221
+ var _49 = (0, react_1.useState)(0), offlineDataLength = _49[0], setOfflineDataLength = _49[1];
222
+ var _50 = (0, react_1.useState)(false), offlineModal = _50[0], setOfflineModal = _50[1];
213
223
  var devSettings = props.devSettings;
214
224
  var serverId = (0, utils_1.parseServerId)(devSettings.server);
215
225
  var isFirebaseClient = devSettings.server === "firebase";
@@ -302,7 +312,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
302
312
  }
303
313
  }, [props.type, props.id]);
304
314
  (0, react_1.useEffect)(function () {
305
- var _a, _b, _c, _d;
315
+ var _a, _b, _c, _d, _e;
306
316
  if (!selectedTab) {
307
317
  var currentTab = (_b = (_a = props.organise) === null || _a === void 0 ? void 0 : _a.extendedTabs) === null || _b === void 0 ? void 0 : _b.find(function (eachTab) { var _a; return (0, utils_1.lowercaseTextToId)(eachTab.name) === ((_a = props.organise) === null || _a === void 0 ? void 0 : _a.viewId); });
308
318
  if (currentTab) {
@@ -321,6 +331,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
321
331
  viewImage: currentTab.viewImage,
322
332
  calendarSettings: (_c = currentTab.calendarSettings) !== null && _c !== void 0 ? _c : undefined,
323
333
  feedsSettings: (_d = currentTab.feedsSettings) !== null && _d !== void 0 ? _d : undefined,
334
+ mapSettings: (_e = currentTab.mapSettings) !== null && _e !== void 0 ? _e : undefined,
324
335
  });
325
336
  if (listRQueryHocRef.current)
326
337
  listRQueryHocRef.current.handleRefresh();
@@ -475,7 +486,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
475
486
  sort: handleReadQueryHocSort(query),
476
487
  limit: limit,
477
488
  };
478
- if (calendarSettings) {
489
+ if (calendarSettings || (selectedTab && selectedTab.viewType === "map")) {
479
490
  cond.limit = undefined;
480
491
  cond.stopLimit = true;
481
492
  }
@@ -2613,6 +2624,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2613
2624
  if (eachAttribute.id === "baseUpdatedAt" ||
2614
2625
  eachAttribute.id === "baseDraft" ||
2615
2626
  eachAttribute.type === "listObject" ||
2627
+ eachAttribute.type === "listAddress" ||
2616
2628
  eachAttribute.type === "file" ||
2617
2629
  eachAttribute.type === "multipleFile" ||
2618
2630
  eachAttribute.type === "markdown" ||
@@ -2683,6 +2695,76 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2683
2695
  });
2684
2696
  return detailList;
2685
2697
  };
2698
+ var renderListAddressTable = function (data, fieldsId) {
2699
+ var listAddressTable = [];
2700
+ data.map(function (eachDataTable, index) {
2701
+ listAddressTable.push(__assign(__assign({}, eachDataTable), { del: (react_1.default.createElement(outline_1.TrashIcon, { className: "w-5 text-red-600 cursor-pointer", onClick: function (event) {
2702
+ var _a;
2703
+ event.preventDefault();
2704
+ event.stopPropagation();
2705
+ var clonedSelectedData = (0, updateModule_1.handleClonedDataAttribute)(selectedData, props.model, props.devSettings.server);
2706
+ (_a = clonedSelectedData[fieldsId]) === null || _a === void 0 ? void 0 : _a.splice(index, 1);
2707
+ setSelectedData(clonedSelectedData);
2708
+ } })) }));
2709
+ return null;
2710
+ });
2711
+ return listAddressTable;
2712
+ };
2713
+ var renderListAddress = function (type) {
2714
+ var listElement = [];
2715
+ var isListAddress = props.model.filter(function (eachAttribute) { return eachAttribute.type === "listAddress"; });
2716
+ var clonedSelectedData = (0, updateModule_1.handleClonedDataAttribute)(selectedData, props.model, props.devSettings.server, false, showId ? true : false);
2717
+ isListAddress.map(function (eachListAdressFields) {
2718
+ var _a;
2719
+ var header = [
2720
+ {
2721
+ key: "name",
2722
+ title: "Name",
2723
+ },
2724
+ {
2725
+ key: "lat",
2726
+ title: "Latitude",
2727
+ },
2728
+ {
2729
+ key: "lng",
2730
+ title: "Longitude",
2731
+ },
2732
+ ];
2733
+ if (type === "update") {
2734
+ header.push({
2735
+ key: "del",
2736
+ title: "Delete",
2737
+ });
2738
+ }
2739
+ if (props.onComplete &&
2740
+ eachListAdressFields.hideForm &&
2741
+ eachListAdressFields.optional) {
2742
+ return null;
2743
+ }
2744
+ else if ((clonedSelectedData === null || clonedSelectedData === void 0 ? void 0 : clonedSelectedData[eachListAdressFields.id]) &&
2745
+ Array.isArray(clonedSelectedData === null || clonedSelectedData === void 0 ? void 0 : clonedSelectedData[eachListAdressFields.id])) {
2746
+ listElement.push(react_1.default.createElement(react_1.default.Fragment, null, !(clonedSelectedData === null || clonedSelectedData === void 0 ? void 0 : clonedSelectedData[eachListAdressFields.id]) &&
2747
+ type === "update" ? (react_1.default.createElement("button", { type: "button", className: "relative block w-full p-12 mt-5 text-center border-2 border-gray-300 border-dashed rounded-lg", onClick: function () {
2748
+ setSelectedListAddressId(eachListAdressFields.id);
2749
+ setModalVisible(true);
2750
+ } },
2751
+ react_1.default.createElement("svg", { className: "w-12 h-12 mx-auto text-gray-400", stroke: "currentColor", fill: "none", viewBox: "0 0 48 48", "aria-hidden": "true" },
2752
+ 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" })),
2753
+ react_1.default.createElement("span", { className: "block mt-2 text-sm font-medium text-gray-900" },
2754
+ "Create a new",
2755
+ " ", "".concat(eachListAdressFields.name.toLocaleLowerCase())))) : (react_1.default.createElement(react_1.default.Fragment, null, (clonedSelectedData === null || clonedSelectedData === void 0 ? void 0 : clonedSelectedData[eachListAdressFields.id]) && (react_1.default.createElement(react_1.default.Fragment, null,
2756
+ react_1.default.createElement("div", { className: "flex justify-between mt-5" },
2757
+ react_1.default.createElement("h3", { className: "font-medium leading-6 text-gray-900 text-md sm:text-lg" }, eachListAdressFields.name),
2758
+ 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 () {
2759
+ setSelectedListAddressId(eachListAdressFields.id);
2760
+ setModalVisible(true);
2761
+ } }))),
2762
+ react_1.default.createElement(table_1.Table, { data: renderListAddressTable((_a = clonedSelectedData === null || clonedSelectedData === void 0 ? void 0 : clonedSelectedData[eachListAdressFields.id]) !== null && _a !== void 0 ? _a : [], eachListAdressFields.id), header: header, loading: false })))))));
2763
+ }
2764
+ return null;
2765
+ });
2766
+ return listElement;
2767
+ };
2686
2768
  var renderListObject = function (type) {
2687
2769
  var listElement = [];
2688
2770
  var isListObject = props.model.filter(function (eachAttribute) { return eachAttribute.type === "listObject"; });
@@ -2870,7 +2952,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2870
2952
  if (((_d = props.organise) === null || _d === void 0 ? void 0 : _d.extendedTabs) &&
2871
2953
  ((_e = props.organise.extendedTabs) === null || _e === void 0 ? void 0 : _e.length) > 0) {
2872
2954
  (_f = props.organise) === null || _f === void 0 ? void 0 : _f.extendedTabs.map(function (eachTab) {
2873
- var _a, _b;
2955
+ var _a, _b, _c;
2874
2956
  var hrefPoint = "".concat(props.localURLEndpoint, "?type=").concat(props.type, "&collection=").concat(props.collectionId);
2875
2957
  if (props.id)
2876
2958
  hrefPoint += "&data=".concat(props.id);
@@ -2884,6 +2966,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
2884
2966
  viewImage: eachTab.viewImage,
2885
2967
  calendarSettings: (_a = eachTab.calendarSettings) !== null && _a !== void 0 ? _a : undefined,
2886
2968
  feedsSettings: (_b = eachTab.feedsSettings) !== null && _b !== void 0 ? _b : undefined,
2969
+ mapSettings: (_c = eachTab.mapSettings) !== null && _c !== void 0 ? _c : undefined,
2887
2970
  };
2888
2971
  if (eachTab.viewType === "iframe")
2889
2972
  tabData["iframeSrc"] = eachTab.src;
@@ -3002,6 +3085,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3002
3085
  renderDataTemplateFormContent(selectedData, filterModel_1, modalFormInputRefs, false, false),
3003
3086
  ((_t = props.bareSettings) === null || _t === void 0 ? void 0 : _t.bareUpdateComponent) &&
3004
3087
  ((_u = props.bareSettings) === null || _u === void 0 ? void 0 : _u.bareUpdateComponent(selectedData))),
3088
+ react_1.default.createElement("div", { className: "mt-8" }, renderListAddress(props.type)),
3005
3089
  react_1.default.createElement("div", { className: "mt-8" }, renderListObject(props.type)),
3006
3090
  isBottom && renderActionButtons(props.type)));
3007
3091
  case "list":
@@ -3300,6 +3384,7 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3300
3384
  react_1.default.createElement(detailList_1.DetailList, { model: props.model, referenceModel: referenceModelSchema, className: "mt-5 bg-white rounded-md", title: "General Details", list: renderDetailListData(props.model), handleReferenceLink: !schemaPresent && ((_h = props.bareSettings) === null || _h === void 0 ? void 0 : _h.bareReadReferenceView)
3301
3385
  ? props.bareSettings.bareReadReferenceView
3302
3386
  : undefined }),
3387
+ react_1.default.createElement("div", { className: "mt-8" }, renderListAddress(dataType)),
3303
3388
  react_1.default.createElement("div", { className: "mt-8" }, renderListObject(dataType))));
3304
3389
  }
3305
3390
  }
@@ -3478,6 +3563,74 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3478
3563
  react_1.default.createElement("div", { className: "my-10" }),
3479
3564
  contentList_1.length > 0 && !((_u = props.organise) === null || _u === void 0 ? void 0 : _u.hidePagination) && (react_1.default.createElement(pagination_1.Pagination, { data: tableData, size: size, limit: limit, cursor: cursor, pageIndex: pageIndex, paginationType: isFirebase ? "cursor" : "page", handleUpdatePageIndex: handlePagination, darkMode: (_v = props.organise) === null || _v === void 0 ? void 0 : _v.darkMode }))))));
3480
3565
  }
3566
+ else if (selectedTabData.viewType === "map") {
3567
+ var mapSettings_1 = selectedTabData.mapSettings;
3568
+ if (mapSettings_1) {
3569
+ var mapMarkerList_1 = [];
3570
+ var uniqueGroupList_1 = [];
3571
+ var markerColorMap_1 = {};
3572
+ var markerColorList_1 = [
3573
+ "red",
3574
+ "blue",
3575
+ "green",
3576
+ "yellow",
3577
+ "orange",
3578
+ "purple",
3579
+ ];
3580
+ if (mapSettings_1.group) {
3581
+ spaceTableData.map(function (eachData) {
3582
+ if (eachData[mapSettings_1.group] &&
3583
+ !uniqueGroupList_1.includes(eachData[mapSettings_1.group])) {
3584
+ uniqueGroupList_1.push(eachData[mapSettings_1.group]);
3585
+ }
3586
+ return null;
3587
+ });
3588
+ uniqueGroupList_1.forEach(function (group, index) {
3589
+ var colorIndex = index % markerColorList_1.length;
3590
+ markerColorMap_1[group] = markerColorList_1[colorIndex];
3591
+ });
3592
+ }
3593
+ var InfoWindowContent = function (id, data) {
3594
+ return (react_1.default.createElement("div", { key: id, className: "w-72 break-words font-normal" },
3595
+ react_1.default.createElement("p", { className: "text-primary-500 font-semibold text-base" }, data.title),
3596
+ react_1.default.createElement("p", { className: "text-primary-500 font-semibold text-sm" }, data.group),
3597
+ react_1.default.createElement("p", { className: "text-sm" }, data.address)));
3598
+ };
3599
+ spaceTableData.map(function (eachData) {
3600
+ var _a, _b, _c, _d, _e, _f, _g, _h;
3601
+ var eachMarkerColor = mapSettings_1.group
3602
+ ? markerColorMap_1[eachData[mapSettings_1.group]] || "red"
3603
+ : "red";
3604
+ if (eachData[mapSettings_1.address]) {
3605
+ mapMarkerList_1.push({
3606
+ id: eachData.id,
3607
+ coord: {
3608
+ lat: (_b = (_a = eachData[mapSettings_1.address]) === null || _a === void 0 ? void 0 : _a.lat) !== null && _b !== void 0 ? _b : 0,
3609
+ lng: (_d = (_c = eachData[mapSettings_1.address]) === null || _c === void 0 ? void 0 : _c.lng) !== null && _d !== void 0 ? _d : 0,
3610
+ },
3611
+ color: eachMarkerColor,
3612
+ data: {
3613
+ title: mapSettings_1.title
3614
+ ? (_e = eachData[mapSettings_1.title]) !== null && _e !== void 0 ? _e : ""
3615
+ : "",
3616
+ address: (_g = (_f = eachData[mapSettings_1.address]) === null || _f === void 0 ? void 0 : _f.name) !== null && _g !== void 0 ? _g : "",
3617
+ group: mapSettings_1.group
3618
+ ? (_h = eachData[mapSettings_1.group]) !== null && _h !== void 0 ? _h : ""
3619
+ : "",
3620
+ },
3621
+ });
3622
+ }
3623
+ return null;
3624
+ });
3625
+ return (react_1.default.createElement("div", { className: "w-full h-[700px]" },
3626
+ react_1.default.createElement(mapView_1.MapView, { markerList: mapMarkerList_1, enableMapControl: true, enablePolygonSelect: true, infoWindowComponent: InfoWindowContent, handleSelectPolygon: function (ids) { return setSelectedIds(ids); }, handleUpdateOnClick: function () { return setBatchUpdateModal(true); }, handleDeleteOnClick: function () {
3627
+ handleGenerateDeletePasscode();
3628
+ setDeleteModal(true);
3629
+ } })));
3630
+ }
3631
+ else
3632
+ return react_1.default.createElement(react_1.default.Fragment, null);
3633
+ }
3481
3634
  else if (selectedTabData.renderComp) {
3482
3635
  return react_1.default.createElement(react_1.default.Fragment, null, selectedTabData.renderComp());
3483
3636
  }
@@ -3601,6 +3754,41 @@ exports.DataTemplate = (0, react_1.forwardRef)(function (props, ref) {
3601
3754
  } }),
3602
3755
  react_1.default.createElement(button_1.Button, { className: "ml-2", text: "Upload", type: "normal", onClick: handleUploadOfflineData }))));
3603
3756
  }
3757
+ else if (selectedListAddressId) {
3758
+ return (react_1.default.createElement(react_1.default.Fragment, null,
3759
+ react_1.default.createElement(form_1.Form, { className: "grid grid-cols-1 gap-6 pb-20 mt-6", ref: listAddressFromRef, refList: [listAddressInputRef], handleComplete: function () {
3760
+ var clonedSelectedData = (0, updateModule_1.handleClonedDataAttribute)(selectedData, props.model, props.devSettings.server);
3761
+ clonedSelectedData[selectedListAddressId] = __spreadArray(__spreadArray([], clonedSelectedData[selectedListAddressId], true), [
3762
+ selectedListAddress,
3763
+ ], false);
3764
+ setSelectedData(clonedSelectedData);
3765
+ setSelectedListAddress({ lat: 0, lng: 0, name: "" });
3766
+ setSelectedListAddressId("");
3767
+ setModalVisible(false);
3768
+ }, disabledOnEnter: true },
3769
+ react_1.default.createElement(address_1.Address, { id: "", label: "Sub-Address", latLngEditModal: true, ref: listAddressInputRef, value: selectedListAddress, onChange: function (value) {
3770
+ setSelectedListAddress(value);
3771
+ } })),
3772
+ react_1.default.createElement("div", { className: "flex justify-end pt-8" },
3773
+ selectedObjectId && props.type !== "read" && (react_1.default.createElement(button_1.Button, { className: "mr-5", text: "Delete", type: "danger", onClick: function () { } })),
3774
+ react_1.default.createElement(button_1.Button, { text: "".concat(props.type === "read" ? "Close" : "Submit"), type: "normal", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {
3775
+ var _a;
3776
+ return __generator(this, function (_b) {
3777
+ switch (_b.label) {
3778
+ case 0:
3779
+ if (!(props.type === "update")) return [3 /*break*/, 2];
3780
+ return [4 /*yield*/, ((_a = listAddressFromRef.current) === null || _a === void 0 ? void 0 : _a.handleSubmit())];
3781
+ case 1:
3782
+ _b.sent();
3783
+ return [3 /*break*/, 3];
3784
+ case 2:
3785
+ handlePopUpModal(false);
3786
+ _b.label = 3;
3787
+ case 3: return [2 /*return*/];
3788
+ }
3789
+ });
3790
+ }); } }))));
3791
+ }
3604
3792
  else {
3605
3793
  var filterObjectModel = props.model.find(function (eachModel) {
3606
3794
  return eachModel.id === selectedObjectStructureId;