rez-table-listing-mui 2.0.12 → 2.0.14
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/dist/index.d.ts +11 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/kanban/hooks/hooks.ts +21 -1
- package/src/listing/components/filter/components/attributes-filter.tsx +1 -1
- package/src/listing/components/filter/components/forms/components/Filter-criteria.tsx +4 -2
- package/src/listing/components/filter/components/forms/utils/filter-date-input-resolver.tsx +36 -1
- package/src/listing/components/login/index.tsx +3 -3
- package/src/listing/components/table-settings/components/lane.tsx +142 -307
- package/src/listing/components/table-settings/components/quick-tab.tsx +14 -3
- package/src/listing/components/table-settings/components/swim-lane.tsx +240 -0
- package/src/listing/components/table-settings/constants.ts +2 -1
- package/src/listing/components/table-settings/index.tsx +60 -31
- package/src/listing/libs/hooks/useEntityTableAPI.tsx +8 -2
- package/src/listing/libs/utils/apiColumn.ts +48 -2
- package/src/listing/libs/utils/common.ts +5 -3
- package/src/listing/types/common.ts +1 -0
- package/src/listing/types/filter-settings.ts +4 -0
- package/src/listing/types/filter.ts +2 -1
- package/src/view/KanbanView.tsx +6 -1
- package/src/view/ListingView.tsx +6 -20
- package/src/listing/components/table-settings/components/group-by.tsx +0 -511
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Box,
|
|
4
|
+
Select,
|
|
5
|
+
MenuItem,
|
|
6
|
+
FormControl,
|
|
7
|
+
Typography,
|
|
8
|
+
Grid,
|
|
9
|
+
} from "@mui/material";
|
|
10
|
+
|
|
11
|
+
import ListingValues from "../common/listing-values";
|
|
12
|
+
import {
|
|
13
|
+
DndContext,
|
|
14
|
+
closestCenter,
|
|
15
|
+
KeyboardSensor,
|
|
16
|
+
MouseSensor,
|
|
17
|
+
TouchSensor,
|
|
18
|
+
useSensor,
|
|
19
|
+
useSensors,
|
|
20
|
+
DragEndEvent,
|
|
21
|
+
} from "@dnd-kit/core";
|
|
22
|
+
import { TabsStyles } from "../style";
|
|
23
|
+
import { craftTableFilterSettingsOptionsProps } from "../../../types/table-options";
|
|
24
|
+
import { LANE_SELECTS } from "../constants";
|
|
25
|
+
|
|
26
|
+
const GroupBy = ({
|
|
27
|
+
filterSettingStates,
|
|
28
|
+
columnsData,
|
|
29
|
+
tabsApiData,
|
|
30
|
+
tabsApiDataLoading,
|
|
31
|
+
}: {
|
|
32
|
+
filterSettingStates: craftTableFilterSettingsOptionsProps;
|
|
33
|
+
columnsData: any;
|
|
34
|
+
tabsApiData?: any[];
|
|
35
|
+
tabsApiDataLoading?: boolean;
|
|
36
|
+
}) => {
|
|
37
|
+
const { settingsData, setSettingsData } = filterSettingStates;
|
|
38
|
+
|
|
39
|
+
const quickTabStates = settingsData?.quick_tab as any;
|
|
40
|
+
const [searchTerm, setSearchTerm] = useState("");
|
|
41
|
+
|
|
42
|
+
const isStatus = quickTabStates?.attribute === "Status";
|
|
43
|
+
const enableDND =
|
|
44
|
+
quickTabStates?.attribute === "Source" &&
|
|
45
|
+
quickTabStates?.sorting === "custom";
|
|
46
|
+
|
|
47
|
+
const sensors = useSensors(
|
|
48
|
+
useSensor(MouseSensor),
|
|
49
|
+
useSensor(TouchSensor),
|
|
50
|
+
useSensor(KeyboardSensor)
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (!quickTabStates || !quickTabStates.attribute) {
|
|
55
|
+
setSettingsData((prev) => ({
|
|
56
|
+
...prev,
|
|
57
|
+
quick_tab: {
|
|
58
|
+
attribute: "Status",
|
|
59
|
+
sorting: "asc",
|
|
60
|
+
show_list: [],
|
|
61
|
+
hide_list: [],
|
|
62
|
+
},
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
}, []);
|
|
66
|
+
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
if (!tabsApiData) return;
|
|
69
|
+
|
|
70
|
+
setSettingsData((prev) => ({
|
|
71
|
+
...prev,
|
|
72
|
+
quick_tab: {
|
|
73
|
+
...prev.quick_tab,
|
|
74
|
+
hide_list: tabsApiData,
|
|
75
|
+
show_list: [],
|
|
76
|
+
sorting: quickTabStates?.attribute === "Source" ? "count_dsc" : "asc",
|
|
77
|
+
},
|
|
78
|
+
}));
|
|
79
|
+
}, [quickTabStates?.attribute]);
|
|
80
|
+
|
|
81
|
+
/* Drag logic unchanged */
|
|
82
|
+
const handleDragEnd = (event: DragEndEvent) => {
|
|
83
|
+
const { active, over } = event;
|
|
84
|
+
if (!over) return;
|
|
85
|
+
|
|
86
|
+
const from = active.data.current?.containerId;
|
|
87
|
+
const to = over.data.current?.containerId;
|
|
88
|
+
if (!from || !to) return;
|
|
89
|
+
|
|
90
|
+
const showList = [...(quickTabStates.show_list ?? [])];
|
|
91
|
+
const hideList = [...(quickTabStates.hide_list ?? [])];
|
|
92
|
+
|
|
93
|
+
if (from === to) {
|
|
94
|
+
const list = from === "lanes" ? showList : hideList;
|
|
95
|
+
const oldIndex = list.indexOf(String(active.id));
|
|
96
|
+
const newIndex = list.indexOf(String(over.id));
|
|
97
|
+
if (oldIndex !== -1 && newIndex !== -1) {
|
|
98
|
+
const [moved] = list.splice(oldIndex, 1);
|
|
99
|
+
list.splice(newIndex, 0, moved);
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
if (from === "list" && to === "lanes") {
|
|
103
|
+
hideList.splice(hideList.indexOf(String(active.id)), 1);
|
|
104
|
+
showList.push(String(active.id));
|
|
105
|
+
}
|
|
106
|
+
if (from === "lanes" && to === "list") {
|
|
107
|
+
showList.splice(showList.indexOf(String(active.id)), 1);
|
|
108
|
+
hideList.push(String(active.id));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
setSettingsData((prev) => ({
|
|
113
|
+
...prev,
|
|
114
|
+
quick_tab: {
|
|
115
|
+
...prev.quick_tab,
|
|
116
|
+
show_list: showList,
|
|
117
|
+
hide_list: hideList,
|
|
118
|
+
},
|
|
119
|
+
}));
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const handleItemToggle = (itemId: string, fromContainerId: string) => {
|
|
123
|
+
const showList = [...(quickTabStates.show_list ?? [])];
|
|
124
|
+
const hideList = [...(quickTabStates.hide_list ?? [])];
|
|
125
|
+
|
|
126
|
+
if (fromContainerId === "list") {
|
|
127
|
+
hideList.splice(hideList.indexOf(itemId), 1);
|
|
128
|
+
showList.push(itemId);
|
|
129
|
+
} else {
|
|
130
|
+
showList.splice(showList.indexOf(itemId), 1);
|
|
131
|
+
hideList.push(itemId);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
setSettingsData((prev) => ({
|
|
135
|
+
...prev,
|
|
136
|
+
quick_tab: {
|
|
137
|
+
...prev.quick_tab,
|
|
138
|
+
show_list: showList,
|
|
139
|
+
hide_list: hideList,
|
|
140
|
+
},
|
|
141
|
+
}));
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const sortingOptions = [
|
|
145
|
+
{ label: "A-Z", value: "asc" },
|
|
146
|
+
{ label: "Z-A", value: "dsc" },
|
|
147
|
+
{ label: "Count (Ascending)", value: "count_asc" },
|
|
148
|
+
{ label: "Count (Descending)", value: "count_dsc" },
|
|
149
|
+
{ label: "Custom", value: "custom" },
|
|
150
|
+
];
|
|
151
|
+
|
|
152
|
+
return (
|
|
153
|
+
<Box sx={{ display: "flex", flexDirection: "column", height: "100%" }}>
|
|
154
|
+
<Typography variant="caption" sx={TabsStyles.mainTabsHeader}>
|
|
155
|
+
**Swim Lane settings will be reflected in vertical lanes
|
|
156
|
+
</Typography>
|
|
157
|
+
|
|
158
|
+
<Grid sx={{ position: "relative" }} container>
|
|
159
|
+
<Grid size={12}>
|
|
160
|
+
<Grid sx={TabsStyles.mainTabDropdown} size={6}>
|
|
161
|
+
<FormControl sx={TabsStyles.mainTabSelect} size="small">
|
|
162
|
+
<Select
|
|
163
|
+
value={quickTabStates?.attribute || ""}
|
|
164
|
+
onChange={(e) =>
|
|
165
|
+
setSettingsData((prev) => ({
|
|
166
|
+
...prev,
|
|
167
|
+
quick_tab: {
|
|
168
|
+
...prev.quick_tab,
|
|
169
|
+
attribute: e.target.value,
|
|
170
|
+
},
|
|
171
|
+
}))
|
|
172
|
+
}
|
|
173
|
+
>
|
|
174
|
+
{LANE_SELECTS?.map((lane: any) => (
|
|
175
|
+
<MenuItem key={lane?.key} value={lane?.value}>
|
|
176
|
+
{lane?.value}
|
|
177
|
+
</MenuItem>
|
|
178
|
+
))}
|
|
179
|
+
</Select>
|
|
180
|
+
</FormControl>
|
|
181
|
+
|
|
182
|
+
<FormControl sx={TabsStyles.selectDropdownSeparator} size="small">
|
|
183
|
+
<Select
|
|
184
|
+
disabled={isStatus}
|
|
185
|
+
value={quickTabStates?.sorting}
|
|
186
|
+
onChange={(e) =>
|
|
187
|
+
setSettingsData((prev) => ({
|
|
188
|
+
...prev,
|
|
189
|
+
quick_tab: {
|
|
190
|
+
...prev.quick_tab,
|
|
191
|
+
sorting: e.target.value,
|
|
192
|
+
},
|
|
193
|
+
}))
|
|
194
|
+
}
|
|
195
|
+
>
|
|
196
|
+
{!isStatus &&
|
|
197
|
+
sortingOptions.map((opt) => (
|
|
198
|
+
<MenuItem key={opt.value} value={opt.value}>
|
|
199
|
+
{opt.label}
|
|
200
|
+
</MenuItem>
|
|
201
|
+
))}
|
|
202
|
+
</Select>
|
|
203
|
+
</FormControl>
|
|
204
|
+
</Grid>
|
|
205
|
+
</Grid>
|
|
206
|
+
|
|
207
|
+
<DndContext
|
|
208
|
+
sensors={sensors}
|
|
209
|
+
collisionDetection={closestCenter}
|
|
210
|
+
onDragEnd={handleDragEnd}
|
|
211
|
+
>
|
|
212
|
+
<Grid sx={{ mt: 2 }} container spacing={2} size={12}>
|
|
213
|
+
<ListingValues
|
|
214
|
+
buttonText="Show All"
|
|
215
|
+
headerText="List of Values"
|
|
216
|
+
filteredValues={quickTabStates?.hide_list || []}
|
|
217
|
+
searchTerm={searchTerm}
|
|
218
|
+
setSearchTerm={setSearchTerm}
|
|
219
|
+
containerId="list"
|
|
220
|
+
tabsApiDataLoading={tabsApiDataLoading}
|
|
221
|
+
onItemToggle={handleItemToggle}
|
|
222
|
+
enableDragAndDrop={enableDND}
|
|
223
|
+
/>
|
|
224
|
+
|
|
225
|
+
<ListingValues
|
|
226
|
+
buttonText="Hide All"
|
|
227
|
+
headerText="View as Lanes"
|
|
228
|
+
filteredValues={quickTabStates?.show_list || []}
|
|
229
|
+
containerId="lanes"
|
|
230
|
+
onItemToggle={handleItemToggle}
|
|
231
|
+
enableDragAndDrop={enableDND}
|
|
232
|
+
/>
|
|
233
|
+
</Grid>
|
|
234
|
+
</DndContext>
|
|
235
|
+
</Grid>
|
|
236
|
+
</Box>
|
|
237
|
+
);
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
export default GroupBy;
|
|
@@ -8,7 +8,7 @@ export const SETTINGS_TABS: { label: string }[] = [
|
|
|
8
8
|
|
|
9
9
|
export const KANBAN_SETTINGS_TABS: { label: string }[] = [
|
|
10
10
|
{ label: "Lane" },
|
|
11
|
-
{ label: "
|
|
11
|
+
{ label: "Swim Lane" },
|
|
12
12
|
];
|
|
13
13
|
|
|
14
14
|
export const LANE_SELECTS = [
|
|
@@ -22,3 +22,4 @@ export const TOGGLE_BUTTON_TABS: ToggleButtonTabsProps[] = [
|
|
|
22
22
|
{ label: "Default", value: true, isDisabled: false },
|
|
23
23
|
{ label: "Tab Wise", value: false, isDisabled: false },
|
|
24
24
|
];
|
|
25
|
+
|
|
@@ -20,11 +20,12 @@ import CustomButton from "./components/custom-button";
|
|
|
20
20
|
import { KANBAN_SETTINGS_TABS, SETTINGS_TABS } from "./constants";
|
|
21
21
|
import Loader from "../common/loader/loader";
|
|
22
22
|
import Lane from "./components/lane";
|
|
23
|
-
import GroupBy from "./components/
|
|
23
|
+
import GroupBy from "./components/swim-lane";
|
|
24
24
|
import { useFullscreenPopoverContainer } from "../../libs/hooks/useFullScreen";
|
|
25
25
|
|
|
26
26
|
export function QuickFilterSettings({
|
|
27
27
|
view = "listing",
|
|
28
|
+
isFlatJson,
|
|
28
29
|
show,
|
|
29
30
|
filterSettingStates,
|
|
30
31
|
onClose,
|
|
@@ -40,6 +41,8 @@ export function QuickFilterSettings({
|
|
|
40
41
|
tabsApiDataLoading,
|
|
41
42
|
onSaveSettingsData,
|
|
42
43
|
activeTab,
|
|
44
|
+
selectAttributeData,
|
|
45
|
+
selectSwinLandData,
|
|
43
46
|
}: QuickFilterModalProps) {
|
|
44
47
|
const [tabValue, setTabValue] = useState(0);
|
|
45
48
|
const { container: fullscreenContainer } = useFullscreenPopoverContainer();
|
|
@@ -65,27 +68,27 @@ export function QuickFilterSettings({
|
|
|
65
68
|
};
|
|
66
69
|
|
|
67
70
|
const handleSaveSetSettingsData = () => {
|
|
68
|
-
const copyColumnTabState =
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const copySortingTabState =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
const copyColumnTabState = {
|
|
72
|
+
isDefault: columnTabState?.isDefault,
|
|
73
|
+
show_list: columnTabState?.show_list || [],
|
|
74
|
+
hide_list: columnTabState?.hide_list || [],
|
|
75
|
+
tabs: columnTabState?.tabs || [],
|
|
76
|
+
};
|
|
77
|
+
// : {
|
|
78
|
+
// isDefault: false,
|
|
79
|
+
// tabs: columnTabState?.tabs || [],
|
|
80
|
+
// };
|
|
81
|
+
// commented as per the requirement
|
|
82
|
+
const copySortingTabState = {
|
|
83
|
+
isDefault: sortingTabState?.isDefault,
|
|
84
|
+
sortby:
|
|
85
|
+
sortingTabState?.sortby?.filter((item) => item.column !== "") || [],
|
|
86
|
+
tabs: sortingTabState?.tabs || [],
|
|
87
|
+
};
|
|
88
|
+
// : {
|
|
89
|
+
// isDefault: false,
|
|
90
|
+
// tabs: sortingTabState?.tabs || [],
|
|
91
|
+
// };
|
|
89
92
|
|
|
90
93
|
const modifiedSettingsData = {
|
|
91
94
|
quick_tab: quickTabStates,
|
|
@@ -108,7 +111,12 @@ export function QuickFilterSettings({
|
|
|
108
111
|
container={fullscreenContainer}
|
|
109
112
|
>
|
|
110
113
|
<DialogTitle sx={dialogStyles.dialogTitle}>
|
|
111
|
-
<Typography sx={{ fontSize: "1.125rem" }}>
|
|
114
|
+
<Typography sx={{ fontSize: "1.125rem" }}>
|
|
115
|
+
{view === "listing"
|
|
116
|
+
? "Quick Filter Settings"
|
|
117
|
+
: "Kanban View Settings"}
|
|
118
|
+
</Typography>
|
|
119
|
+
|
|
112
120
|
<IconButton
|
|
113
121
|
size="small"
|
|
114
122
|
color="inherit"
|
|
@@ -146,6 +154,7 @@ export function QuickFilterSettings({
|
|
|
146
154
|
tabsApiDataLoading={tabsApiDataLoading}
|
|
147
155
|
activeTab={activeTab}
|
|
148
156
|
columnTabAttributes={columnTabAttributes}
|
|
157
|
+
isFlatJson={isFlatJson}
|
|
149
158
|
/>
|
|
150
159
|
)}
|
|
151
160
|
</CustomTabPanel>
|
|
@@ -180,6 +189,7 @@ export function QuickFilterSettings({
|
|
|
180
189
|
<Lane
|
|
181
190
|
filterSettingStates={filterSettingStates}
|
|
182
191
|
columnsData={columnsData}
|
|
192
|
+
selectAttributeData={selectAttributeData}
|
|
183
193
|
/>
|
|
184
194
|
)}
|
|
185
195
|
</CustomTabPanel>
|
|
@@ -191,6 +201,7 @@ export function QuickFilterSettings({
|
|
|
191
201
|
<GroupBy
|
|
192
202
|
filterSettingStates={filterSettingStates}
|
|
193
203
|
columnsData={columnsData}
|
|
204
|
+
selectSwinLandData={selectSwinLandData}
|
|
194
205
|
/>
|
|
195
206
|
)}
|
|
196
207
|
</CustomTabPanel>
|
|
@@ -201,15 +212,33 @@ export function QuickFilterSettings({
|
|
|
201
212
|
</DialogContent>
|
|
202
213
|
|
|
203
214
|
{!columnsDataLoading && hasAPIData && (
|
|
215
|
+
// <DialogActions>
|
|
216
|
+
// <CustomButton
|
|
217
|
+
// // disabled={saveButtonError?.hasError}
|
|
218
|
+
// // disabled={saveButtonError?.hasError}
|
|
219
|
+
// disabled={disbaledCondition}
|
|
220
|
+
// onClick={handleSaveSetSettingsData}
|
|
221
|
+
// >
|
|
222
|
+
// {view === "listing" ? "Save Quick Filter" : "Save Kanban Layout"}
|
|
223
|
+
// </CustomButton>
|
|
224
|
+
// </DialogActions>
|
|
204
225
|
<DialogActions>
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
226
|
+
{view === "kanban" && tabValue === 0 && (
|
|
227
|
+
<>
|
|
228
|
+
<CustomButton onClick={handleSaveSetSettingsData}>
|
|
229
|
+
Save & Close
|
|
230
|
+
</CustomButton>
|
|
231
|
+
<CustomButton onClick={() => setTabValue(1)} variant="contained">
|
|
232
|
+
Next
|
|
233
|
+
</CustomButton>
|
|
234
|
+
</>
|
|
235
|
+
)}
|
|
236
|
+
|
|
237
|
+
{view === "kanban" && tabValue === 1 && (
|
|
238
|
+
<CustomButton onClick={handleSaveSetSettingsData}>
|
|
239
|
+
Save
|
|
240
|
+
</CustomButton>
|
|
241
|
+
)}
|
|
213
242
|
</DialogActions>
|
|
214
243
|
)}
|
|
215
244
|
</CustomDialog>
|
|
@@ -4,7 +4,12 @@ import {
|
|
|
4
4
|
useQuery,
|
|
5
5
|
useQueryClient,
|
|
6
6
|
} from "@tanstack/react-query";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
api,
|
|
9
|
+
APP_CODE,
|
|
10
|
+
ENTITY_TYPE,
|
|
11
|
+
MAPPED_ENTITY_TYPE,
|
|
12
|
+
} from "../utils/common";
|
|
8
13
|
import {
|
|
9
14
|
APIParamsProps,
|
|
10
15
|
EntityListingResponse,
|
|
@@ -62,7 +67,7 @@ const entityListingCall = async ({
|
|
|
62
67
|
responseStatus: number;
|
|
63
68
|
data: EntityListingResponse;
|
|
64
69
|
}> => {
|
|
65
|
-
const url = `filter
|
|
70
|
+
const url = `filter/${APP_CODE}`;
|
|
66
71
|
|
|
67
72
|
const body = {
|
|
68
73
|
entity_type,
|
|
@@ -102,6 +107,7 @@ export const useEntityTableAPI = ({
|
|
|
102
107
|
],
|
|
103
108
|
attributeFilter = [],
|
|
104
109
|
flatJson,
|
|
110
|
+
module_code,
|
|
105
111
|
}: EntityTableAPIProps) => {
|
|
106
112
|
const { data, isPending: isTableDataPending } = useQuery({
|
|
107
113
|
queryKey: ["entityTable", page, size, tabs, quickFilter],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { api, MAPPED_ENTITY_TYPE } from "./common";
|
|
1
|
+
import { api, APP_CODE, MAPPED_ENTITY_TYPE } from "./common";
|
|
2
2
|
import {
|
|
3
3
|
createSavedFilterPayload,
|
|
4
4
|
deleteSavedFilterPayload,
|
|
@@ -225,7 +225,7 @@ export const getAttributes = async (
|
|
|
225
225
|
};
|
|
226
226
|
|
|
227
227
|
export const getTableTabs = async (payload: any) => {
|
|
228
|
-
const response = await api.post(`filter/
|
|
228
|
+
const response = await api.post(`filter/${APP_CODE}/tabs`, payload);
|
|
229
229
|
return response.data;
|
|
230
230
|
};
|
|
231
231
|
|
|
@@ -263,3 +263,49 @@ export const newCommonGetDropdownDataAPI = async ({
|
|
|
263
263
|
.post(`entity/getAttributeDropdown${queryString}`, requestBody)
|
|
264
264
|
.then((response) => response.data);
|
|
265
265
|
};
|
|
266
|
+
|
|
267
|
+
export const commonFetchDropdownDataAPI = async ({
|
|
268
|
+
entity_type,
|
|
269
|
+
enterprise_id,
|
|
270
|
+
data,
|
|
271
|
+
inactiveIds,
|
|
272
|
+
parentId,
|
|
273
|
+
}: {
|
|
274
|
+
entity_type: string | undefined;
|
|
275
|
+
enterprise_id?: string | null;
|
|
276
|
+
data?: any;
|
|
277
|
+
inactiveIds?: string | null;
|
|
278
|
+
parentId?: number | string;
|
|
279
|
+
}) => {
|
|
280
|
+
const requestBody = {
|
|
281
|
+
// status: "ACTIVE",
|
|
282
|
+
enterprise_id,
|
|
283
|
+
...data,
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
let params = "";
|
|
287
|
+
|
|
288
|
+
const queryParams: string[] = [];
|
|
289
|
+
|
|
290
|
+
if (!Number.isNaN(Number(inactiveIds)) && inactiveIds) {
|
|
291
|
+
queryParams.push(`inactiveIds=${inactiveIds}`);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (parentId !== undefined && parentId !== null) {
|
|
295
|
+
queryParams.push(`parent=${parentId}`);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (queryParams.length > 0) {
|
|
299
|
+
params = `?${queryParams.join("&")}`;
|
|
300
|
+
}
|
|
301
|
+
// if (entity_type === "ORGP") {
|
|
302
|
+
// return await api.get(`organization/sso/getdropdown`).then((response) => {
|
|
303
|
+
// return response.data;
|
|
304
|
+
// });
|
|
305
|
+
// }
|
|
306
|
+
return await api
|
|
307
|
+
.post(`entity/getListMasterDropdown/${entity_type}${params}`, requestBody)
|
|
308
|
+
.then((response) => {
|
|
309
|
+
return response.data;
|
|
310
|
+
});
|
|
311
|
+
};
|
|
@@ -77,14 +77,16 @@ export function customDebounce<T extends (...args: any[]) => any>(
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
//ENTITY TYPE
|
|
80
|
-
const ENVIRONMENT = "
|
|
81
|
-
export const ENTITY_TYPE = "
|
|
80
|
+
const ENVIRONMENT = "crm_dev";
|
|
81
|
+
export const ENTITY_TYPE = "LEAD";
|
|
82
|
+
export const MODULE_CODE = "school_adm_org";
|
|
82
83
|
export const MAPPED_ENTITY_TYPE = "LYPR"; // LAP OR LYPR
|
|
83
84
|
export const USER_ID = 226;
|
|
85
|
+
export const APP_CODE = "crm";
|
|
84
86
|
|
|
85
87
|
const environments = {
|
|
86
88
|
adm_dev: "http://localhost:6010/api",
|
|
87
|
-
crm_dev: "http://localhost:
|
|
89
|
+
crm_dev: "http://localhost:6011/api",
|
|
88
90
|
uat: "https://api.eth-qa.rezolut.in/api/enrol",
|
|
89
91
|
};
|
|
90
92
|
|
|
@@ -3,6 +3,7 @@ import { craftTableFilterSettingsOptionsProps } from "./table-options";
|
|
|
3
3
|
|
|
4
4
|
export interface QuickFilterModalProps {
|
|
5
5
|
view?: string;
|
|
6
|
+
isFlatJson: boolean;
|
|
6
7
|
show?: boolean;
|
|
7
8
|
filterSettingStates: craftTableFilterSettingsOptionsProps;
|
|
8
9
|
onClose?: () => void;
|
|
@@ -18,6 +19,8 @@ export interface QuickFilterModalProps {
|
|
|
18
19
|
tabsApiDataLoading?: boolean;
|
|
19
20
|
onSaveSettingsData?: (data: any) => void;
|
|
20
21
|
activeTab?: string;
|
|
22
|
+
selectAttributeData?: { label: string; value: string }[];
|
|
23
|
+
selectSwinLandData?: { label: string; value: string }[];
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
type TabName = string;
|
|
@@ -102,6 +105,7 @@ export interface SettingsQuickTabProps {
|
|
|
102
105
|
activeTab?: string;
|
|
103
106
|
columnTabAttributes?: any[];
|
|
104
107
|
columnTabAttributesLoading?: boolean;
|
|
108
|
+
isFlatJson: boolean;
|
|
105
109
|
}
|
|
106
110
|
|
|
107
111
|
export interface SettingsDataProps {
|
package/src/view/KanbanView.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
2
|
import Kanban from "../kanban";
|
|
3
3
|
import LeadCard from "../kanban/components/LeadCard";
|
|
4
|
-
import { useGetKanbanData } from "../kanban/hooks/hooks";
|
|
4
|
+
import { kanbanDropdownResults, useGetKanbanData } from "../kanban/hooks/hooks";
|
|
5
5
|
import { useCraftTable } from "../listing/libs/hooks/useCraftTable";
|
|
6
6
|
import {
|
|
7
7
|
useEntityTableAPI,
|
|
@@ -16,6 +16,9 @@ const KanbanView = () => {
|
|
|
16
16
|
const { getSettingsAPIData } = useGetSettingsDataAPI(ENTITY_TYPE);
|
|
17
17
|
const [selectedTab, setSelectedTab] = useState("All");
|
|
18
18
|
const tableStates = useCraftTable();
|
|
19
|
+
const [selectAttributeData] = kanbanDropdownResults("ATT", "1001");
|
|
20
|
+
const [selectSwinLandData] = kanbanDropdownResults("SWM", "1001");
|
|
21
|
+
|
|
19
22
|
const { tableData } = useEntityTableAPI({
|
|
20
23
|
page: 0,
|
|
21
24
|
size: 20,
|
|
@@ -57,6 +60,8 @@ const KanbanView = () => {
|
|
|
57
60
|
onClose={() => setShowListViewSettings(false)}
|
|
58
61
|
columnsData={metaData || {}}
|
|
59
62
|
columnsDataLoading={isLoading}
|
|
63
|
+
selectAttributeData={selectAttributeData?.data}
|
|
64
|
+
selectSwinLandData={selectSwinLandData?.data}
|
|
60
65
|
// tabsApiData={settingsTabDropdownData || []}
|
|
61
66
|
// tabsApiDataLoading={settingsTabDropdownPending}
|
|
62
67
|
// onSaveSettingsData={handleSaveSettingsData}
|
package/src/view/ListingView.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
ENTITY_TYPE,
|
|
11
11
|
formatTableHeaders,
|
|
12
12
|
MAPPED_ENTITY_TYPE,
|
|
13
|
+
MODULE_CODE,
|
|
13
14
|
} from "../listing/libs/utils/common";
|
|
14
15
|
import {
|
|
15
16
|
useCommonFilterDropdownAPI,
|
|
@@ -135,7 +136,7 @@ function ListingView() {
|
|
|
135
136
|
// }, 1000);
|
|
136
137
|
|
|
137
138
|
fetchMeta();
|
|
138
|
-
}, [selectedTab]);
|
|
139
|
+
}, [selectedTab, metaQuery?.data]);
|
|
139
140
|
|
|
140
141
|
// useEffect(() => {
|
|
141
142
|
// setFilters(detailsQuery.data ?? []);
|
|
@@ -187,6 +188,7 @@ function ListingView() {
|
|
|
187
188
|
],
|
|
188
189
|
attributeFilter: [],
|
|
189
190
|
flatJson: metaQuery.data?.is_flat_json || false,
|
|
191
|
+
// module_code: MODULE_CODE,
|
|
190
192
|
});
|
|
191
193
|
|
|
192
194
|
const newData = useMemo(
|
|
@@ -381,24 +383,7 @@ function ListingView() {
|
|
|
381
383
|
);
|
|
382
384
|
};
|
|
383
385
|
|
|
384
|
-
return
|
|
385
|
-
<Box
|
|
386
|
-
sx={{
|
|
387
|
-
// full viewport height
|
|
388
|
-
display: "flex",
|
|
389
|
-
flexDirection: "column",
|
|
390
|
-
alignItems: "center",
|
|
391
|
-
justifyContent: "center",
|
|
392
|
-
gap: 2,
|
|
393
|
-
bgcolor: "background.default",
|
|
394
|
-
}}
|
|
395
|
-
>
|
|
396
|
-
<CircularProgress size={60} thickness={5} color="primary" />
|
|
397
|
-
<Typography variant="body1" color="text.secondary">
|
|
398
|
-
Loading, please wait...
|
|
399
|
-
</Typography>
|
|
400
|
-
</Box>
|
|
401
|
-
) : (
|
|
386
|
+
return (
|
|
402
387
|
<TableWrapper
|
|
403
388
|
data={filteredData}
|
|
404
389
|
activeTab={selectedTab}
|
|
@@ -503,6 +488,7 @@ function ListingView() {
|
|
|
503
488
|
|
|
504
489
|
<QuickFilterSettings
|
|
505
490
|
view="listing"
|
|
491
|
+
isFlatJson={metaQuery.data?.is_flat_json || false}
|
|
506
492
|
filterSettingStates={filterSettingStates}
|
|
507
493
|
onClose={() => setShowListViewSettings(false)}
|
|
508
494
|
columnsData={metaQuery.data || {}}
|
|
@@ -527,7 +513,7 @@ function ListingView() {
|
|
|
527
513
|
),
|
|
528
514
|
searchValue: searchTerm,
|
|
529
515
|
onSearchChange: (val) => setSearchTerm(val),
|
|
530
|
-
showFilterToggle:
|
|
516
|
+
showFilterToggle: true,
|
|
531
517
|
onFilterButtonClick: () =>
|
|
532
518
|
tableStates.setShowTableFilter(!tableStates.showTableFilter),
|
|
533
519
|
showColumnToggle: false,
|