rez-table-listing-mui 1.3.57 → 1.3.58
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 +2 -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/listing/components/filter/components/attributes-filter.tsx +2 -2
- package/src/listing/components/filter/components/forms/components/Filter-criteria.tsx +4 -5
- package/src/listing/components/login/index.tsx +39 -25
- package/src/listing/components/table-body.tsx +14 -2
- package/src/listing/components/table-settings/components/sorting.tsx +2 -10
- package/src/listing/components/table-settings/index.tsx +3 -3
- package/src/listing/libs/hooks/useEntityTableAPI.tsx +16 -24
- package/src/listing/libs/utils/apiColumn.ts +11 -11
- package/src/listing/libs/utils/common.ts +9 -3
- package/src/listing/types/filter.ts +2 -2
- package/src/testing-grounds/filter-in-modal/saved-filter-modal.tsx +2 -1
- package/src/view/FIlterWrapper.tsx +1 -2
- package/src/view/ListingView.tsx +66 -65
package/package.json
CHANGED
|
@@ -76,7 +76,7 @@ const AttributesFilter = ({
|
|
|
76
76
|
} else {
|
|
77
77
|
// Else, replace with new single selection
|
|
78
78
|
const defaultOperator =
|
|
79
|
-
columnsData?.operation_list[matchingColumn.
|
|
79
|
+
columnsData?.operation_list[matchingColumn.data_type]?.[0]?.value ||
|
|
80
80
|
"in";
|
|
81
81
|
|
|
82
82
|
const newFilter = {
|
|
@@ -173,7 +173,7 @@ const AttributesFilter = ({
|
|
|
173
173
|
}}
|
|
174
174
|
>
|
|
175
175
|
{columnsData?.column_list
|
|
176
|
-
?.filter((column) => column.
|
|
176
|
+
?.filter((column) => column.data_type.includes("select"))
|
|
177
177
|
.map((column, index) => (
|
|
178
178
|
<MenuItem
|
|
179
179
|
key={index}
|
|
@@ -62,15 +62,14 @@ const FilterCriteria = ({
|
|
|
62
62
|
const handleAddFilter = (
|
|
63
63
|
attribute: FilterDataMainFilterEntityWiseCriteriaProps
|
|
64
64
|
) => {
|
|
65
|
-
const dropdownOptions =
|
|
66
|
-
columnsData?.operation_list[attribute?.element_type];
|
|
65
|
+
const dropdownOptions = columnsData?.operation_list[attribute?.data_type];
|
|
67
66
|
|
|
68
|
-
const defaultValue = attribute.
|
|
67
|
+
const defaultValue = attribute.data_type === "multiselect" ? [] : "";
|
|
69
68
|
|
|
70
69
|
const defaultOperator = dropdownOptions?.[0]?.value || "";
|
|
71
70
|
|
|
72
71
|
const matchingDropdownList =
|
|
73
|
-
columnsData?.operation_list[attribute.
|
|
72
|
+
columnsData?.operation_list[attribute.data_type] || [];
|
|
74
73
|
|
|
75
74
|
const newFilter = {
|
|
76
75
|
filter_attribute: attribute.attribute_key,
|
|
@@ -84,7 +83,7 @@ const FilterCriteria = ({
|
|
|
84
83
|
// id: attribute?.id,
|
|
85
84
|
filter_attribute_name: attribute?.name,
|
|
86
85
|
filter_attribute_data_type:
|
|
87
|
-
attribute?.
|
|
86
|
+
attribute?.data_type || attribute?.element_type,
|
|
88
87
|
datasource_list: attribute?.datasource_list,
|
|
89
88
|
dropdown_list: matchingDropdownList,
|
|
90
89
|
filter_entity_name: selectedFilterEntity?.label,
|
|
@@ -8,51 +8,65 @@ const LoginButton = () => {
|
|
|
8
8
|
const handleLogin = async () => {
|
|
9
9
|
setLoading(true);
|
|
10
10
|
// const api_url = "https://api.eth-qa.rezolut.in/api/enrol/auth";
|
|
11
|
-
const api_url = "http://localhost:
|
|
12
|
-
const email_id = "
|
|
11
|
+
const api_url = "http://localhost:4011/api/auth";
|
|
12
|
+
const email_id = "shraddha.nandurkar@rezolut.in";
|
|
13
13
|
const email_otp = "123456";
|
|
14
14
|
const sub_domain = "universal";
|
|
15
15
|
|
|
16
16
|
setLoading(true);
|
|
17
17
|
|
|
18
18
|
await axios
|
|
19
|
-
.post(`${api_url}/sso/
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
.post(`${api_url}/sso/check-email`, {
|
|
20
|
+
email_id: email_id,
|
|
21
|
+
subdomain: sub_domain,
|
|
22
22
|
})
|
|
23
|
-
.then(async (
|
|
23
|
+
.then(async (emailAPIResponse) => {
|
|
24
24
|
await axios
|
|
25
|
-
.post(`${api_url}/
|
|
25
|
+
.post(`${api_url}/sso/otp/generate`, {
|
|
26
26
|
identifier: email_id,
|
|
27
27
|
service: "email",
|
|
28
|
-
reset: true,
|
|
29
|
-
otp: "123456",
|
|
30
|
-
otp_id: otpAPIResponse.data.otp_id,
|
|
31
|
-
fcm_token: "",
|
|
32
|
-
subdomain: "platform",
|
|
33
28
|
})
|
|
34
|
-
.then((
|
|
35
|
-
|
|
29
|
+
.then(async (otpAPIResponse) => {
|
|
30
|
+
await axios
|
|
31
|
+
.post(`${api_url}/verify-otp`, {
|
|
32
|
+
fcm_token: "",
|
|
33
|
+
identifier: email_id,
|
|
34
|
+
otp: email_otp,
|
|
35
|
+
otp_id: otpAPIResponse.data.otp_id,
|
|
36
|
+
reset: true,
|
|
37
|
+
service: "email",
|
|
38
|
+
subdomain: "universal",
|
|
39
|
+
})
|
|
40
|
+
.then((otpVerifyResponse) => {
|
|
41
|
+
const token = otpVerifyResponse.data.accessToken;
|
|
36
42
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
if (token) {
|
|
44
|
+
localStorage.setItem("authToken", token);
|
|
45
|
+
alert("Login successful");
|
|
46
|
+
window.location.reload(); // reload app to re-trigger axios with token
|
|
47
|
+
} else {
|
|
48
|
+
alert("Token not found in response.");
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
.catch((error) => {
|
|
52
|
+
console.error("Login failed:", error);
|
|
53
|
+
alert("Login failed. Check console for details.");
|
|
54
|
+
})
|
|
55
|
+
.finally(() => {
|
|
56
|
+
setLoading(false);
|
|
57
|
+
});
|
|
44
58
|
})
|
|
45
59
|
.catch((error) => {
|
|
46
|
-
console.error("
|
|
47
|
-
alert("
|
|
60
|
+
console.error("Login failed:", error);
|
|
61
|
+
alert("Login failed. Check console for details.");
|
|
48
62
|
})
|
|
49
63
|
.finally(() => {
|
|
50
64
|
setLoading(false);
|
|
51
65
|
});
|
|
52
66
|
})
|
|
53
67
|
.catch((error) => {
|
|
54
|
-
console.error("
|
|
55
|
-
alert("
|
|
68
|
+
console.error("Login failed:", error);
|
|
69
|
+
alert("Login failed. Check console for details.");
|
|
56
70
|
})
|
|
57
71
|
.finally(() => {
|
|
58
72
|
setLoading(false);
|
|
@@ -15,7 +15,10 @@ import {
|
|
|
15
15
|
horizontalListSortingStrategy,
|
|
16
16
|
SortableContext,
|
|
17
17
|
} from "@dnd-kit/sortable";
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
getColumnPinningStylesBody,
|
|
20
|
+
getDepthBackground,
|
|
21
|
+
} from "../libs/utils/common";
|
|
19
22
|
import Checkbox from "./inputs/checkbox";
|
|
20
23
|
|
|
21
24
|
interface TableBodyProps<T> {
|
|
@@ -39,7 +42,13 @@ function TableBody<T>({
|
|
|
39
42
|
|
|
40
43
|
const renderRow = (row: Row<T>) => {
|
|
41
44
|
const renderedRow = (
|
|
42
|
-
<tr
|
|
45
|
+
<tr
|
|
46
|
+
key={row.id}
|
|
47
|
+
className="ts__body__tr"
|
|
48
|
+
style={{
|
|
49
|
+
backgroundColor: getDepthBackground(row.depth),
|
|
50
|
+
}}
|
|
51
|
+
>
|
|
43
52
|
{enableRowSelection && (
|
|
44
53
|
<td
|
|
45
54
|
className="ts__body__td ts__body__checkbox"
|
|
@@ -47,6 +56,7 @@ function TableBody<T>({
|
|
|
47
56
|
position: "sticky",
|
|
48
57
|
left: 0,
|
|
49
58
|
width: "50px",
|
|
59
|
+
backgroundColor: "inherit",
|
|
50
60
|
}}
|
|
51
61
|
>
|
|
52
62
|
<Checkbox
|
|
@@ -66,10 +76,12 @@ function TableBody<T>({
|
|
|
66
76
|
width: cell.column.getSize(),
|
|
67
77
|
...((wrapColumns.all_wrap || wrapColumns[cell.column.id]) && {
|
|
68
78
|
wordBreak: "break-all",
|
|
79
|
+
backgroundColor: "inherit",
|
|
69
80
|
// whiteSpace: "normal",
|
|
70
81
|
}),
|
|
71
82
|
} as React.CSSProperties,
|
|
72
83
|
align: (cell.column.columnDef.meta as align)?.align || "left",
|
|
84
|
+
// backgroundColor: getDepthBackground(row.depth),
|
|
73
85
|
};
|
|
74
86
|
|
|
75
87
|
return enableColumnReordering ? (
|
|
@@ -326,21 +326,13 @@ const Sorting = ({
|
|
|
326
326
|
const getCurrentLists = () => {
|
|
327
327
|
if (sortingTabState?.isDefault) {
|
|
328
328
|
return {
|
|
329
|
-
showList:
|
|
330
|
-
columnsData?.map((column: any) => ({
|
|
331
|
-
label: column?.name,
|
|
332
|
-
value: column?.attribute_key,
|
|
333
|
-
})) || [],
|
|
329
|
+
showList: columnsData || [],
|
|
334
330
|
hideList: columnTabState?.hide_list || [],
|
|
335
331
|
};
|
|
336
332
|
} else {
|
|
337
333
|
const currentTab = sortingTabState?.tabs?.[activeTabIndex || 0];
|
|
338
334
|
return {
|
|
339
|
-
showList:
|
|
340
|
-
columnsData?.map((column: any) => ({
|
|
341
|
-
label: column?.name,
|
|
342
|
-
value: column?.attribute_key,
|
|
343
|
-
})) || [],
|
|
335
|
+
showList: columnsData || [],
|
|
344
336
|
// hideList: currentTab?.hide_list || [],
|
|
345
337
|
};
|
|
346
338
|
}
|
|
@@ -54,11 +54,11 @@ export function QuickFilterSettings({
|
|
|
54
54
|
|
|
55
55
|
const hasAPIData = Boolean(Object.entries(columnsData).length);
|
|
56
56
|
let disbaledCondition =
|
|
57
|
-
|
|
58
|
-
columnTabState?.isDefault
|
|
57
|
+
quickTabStates?.show_list?.length === 0 ||
|
|
58
|
+
(columnTabState?.isDefault
|
|
59
59
|
? columnTabState?.show_list?.length === 0
|
|
60
60
|
: columnTabState?.tabs?.find((tab) => tab?.show_list?.length === 0)
|
|
61
|
-
?.show_list?.length === 0;
|
|
61
|
+
?.show_list?.length === 0);
|
|
62
62
|
|
|
63
63
|
const handleTabChange = (_: React.SyntheticEvent, newValue: number) => {
|
|
64
64
|
setTabValue(newValue);
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
viewSettingsDropDown,
|
|
24
24
|
getOperationList,
|
|
25
25
|
getLayoutAttributes,
|
|
26
|
-
|
|
26
|
+
getSettingsColumnAttributes,
|
|
27
27
|
} from "../utils/apiColumn";
|
|
28
28
|
import {
|
|
29
29
|
FilterDataMainFilterEntityListProps,
|
|
@@ -59,7 +59,7 @@ const entityListingCall = async ({
|
|
|
59
59
|
responseStatus: number;
|
|
60
60
|
data: EntityListingResponse;
|
|
61
61
|
}> => {
|
|
62
|
-
const url = `filter
|
|
62
|
+
const url = `filter`;
|
|
63
63
|
|
|
64
64
|
const body = {
|
|
65
65
|
entity_type,
|
|
@@ -113,7 +113,7 @@ export const useEntityTableAPI = ({
|
|
|
113
113
|
});
|
|
114
114
|
|
|
115
115
|
return {
|
|
116
|
-
tableData: data?.data,
|
|
116
|
+
tableData: data?.data.data,
|
|
117
117
|
status: data?.responseStatus,
|
|
118
118
|
isTableDataPending,
|
|
119
119
|
};
|
|
@@ -356,21 +356,13 @@ export const useGetFilterEntityListAndCriteria = ({
|
|
|
356
356
|
|
|
357
357
|
const filterEntityWiseCriteria = useQuery({
|
|
358
358
|
queryKey: ["filterEntityWiseCriteria", selectedFilterEntity],
|
|
359
|
-
queryFn: () =>
|
|
359
|
+
queryFn: () => getFilterCriteriaByEntity(selectedFilterEntity),
|
|
360
360
|
enabled: !!selectedFilterEntity,
|
|
361
361
|
});
|
|
362
362
|
|
|
363
363
|
return { filterEntityList, filterEntityWiseCriteria };
|
|
364
364
|
};
|
|
365
365
|
|
|
366
|
-
export const useGetAttributes = (entity_type: string) => {
|
|
367
|
-
const attributes = useQuery({
|
|
368
|
-
queryKey: ["attributes", entity_type],
|
|
369
|
-
queryFn: () => getAttributes(entity_type),
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
return { attributes };
|
|
373
|
-
};
|
|
374
366
|
export const useGetOperationList = () => {
|
|
375
367
|
// First query to get meta data
|
|
376
368
|
const operationList = useQuery({
|
|
@@ -383,30 +375,30 @@ export const useGetOperationList = () => {
|
|
|
383
375
|
|
|
384
376
|
export const useGetLayoutAttributes = ({
|
|
385
377
|
entity_type,
|
|
386
|
-
|
|
378
|
+
data_type,
|
|
387
379
|
}: {
|
|
388
380
|
entity_type: string;
|
|
389
|
-
|
|
381
|
+
data_type?: string;
|
|
390
382
|
}) => {
|
|
391
383
|
// First query to get meta data
|
|
392
384
|
const layoutAttributes = useQuery({
|
|
393
|
-
queryKey: ["layoutAttributes", entity_type,
|
|
385
|
+
queryKey: ["layoutAttributes", entity_type, data_type],
|
|
394
386
|
queryFn: () =>
|
|
395
387
|
getLayoutAttributes({
|
|
396
388
|
entity_type,
|
|
397
|
-
|
|
389
|
+
data_type,
|
|
398
390
|
}),
|
|
399
391
|
});
|
|
400
392
|
|
|
401
393
|
return { layoutAttributes };
|
|
402
394
|
};
|
|
403
395
|
|
|
404
|
-
|
|
405
|
-
//
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
396
|
+
export const useGetSettingsColumnAttributes = (entity_type: string) => {
|
|
397
|
+
// First query to get meta data
|
|
398
|
+
const settingsColumnAttributes = useQuery({
|
|
399
|
+
queryKey: ["settingsColumnAttributes", entity_type],
|
|
400
|
+
queryFn: () => getSettingsColumnAttributes(entity_type),
|
|
401
|
+
});
|
|
410
402
|
|
|
411
|
-
|
|
412
|
-
|
|
403
|
+
return { settingsColumnAttributes };
|
|
404
|
+
};
|
|
@@ -175,8 +175,12 @@ export const getFilterCriteriaByEntity = async (
|
|
|
175
175
|
) => {
|
|
176
176
|
const params = { entity_type: selectedFilterEntity?.value };
|
|
177
177
|
|
|
178
|
-
const response = await api.
|
|
179
|
-
|
|
178
|
+
const response = await api.post(
|
|
179
|
+
`meta/get-filter-data`,
|
|
180
|
+
{},
|
|
181
|
+
{
|
|
182
|
+
params,
|
|
183
|
+
}
|
|
180
184
|
);
|
|
181
185
|
|
|
182
186
|
return response.data;
|
|
@@ -189,13 +193,13 @@ export const getOperationList = async () => {
|
|
|
189
193
|
|
|
190
194
|
export const getLayoutAttributes = async ({
|
|
191
195
|
entity_type,
|
|
192
|
-
|
|
196
|
+
data_type,
|
|
193
197
|
}: {
|
|
194
198
|
entity_type: string;
|
|
195
|
-
|
|
199
|
+
data_type?: string;
|
|
196
200
|
}) => {
|
|
197
201
|
const params = {
|
|
198
|
-
|
|
202
|
+
data_type,
|
|
199
203
|
};
|
|
200
204
|
const response = await api.post(
|
|
201
205
|
`/layout-preference/attributes`,
|
|
@@ -205,11 +209,7 @@ export const getLayoutAttributes = async ({
|
|
|
205
209
|
return response.data;
|
|
206
210
|
};
|
|
207
211
|
|
|
208
|
-
export const
|
|
209
|
-
const response = await api.get(
|
|
210
|
-
`/attribute-master/getAttributes?direct=false&entity_type=${entity_type}`
|
|
211
|
-
);
|
|
212
|
-
console.log("resss", response);
|
|
213
|
-
|
|
212
|
+
export const getSettingsColumnAttributes = async (entity_type: string) => {
|
|
213
|
+
const response = await api.get(`/attribute-master/getAll/${entity_type}`);
|
|
214
214
|
return response.data;
|
|
215
215
|
};
|
|
@@ -76,14 +76,20 @@ export function customDebounce<T extends (...args: any[]) => any>(
|
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
export const getDepthBackground = (depth: number) => {
|
|
80
|
+
if (depth === 0) return "white";
|
|
81
|
+
const shade = 255 - depth * 8; // reduce brightness per level
|
|
82
|
+
return `rgb(${shade}, ${shade}, ${shade})`;
|
|
83
|
+
};
|
|
84
|
+
|
|
79
85
|
//ENTITY TYPE
|
|
80
|
-
const ENVIRONMENT = "
|
|
81
|
-
export const ENTITY_TYPE = "
|
|
86
|
+
const ENVIRONMENT = "crm_dev";
|
|
87
|
+
export const ENTITY_TYPE = "LEAD";
|
|
82
88
|
export const MAPPED_ENTITY_TYPE = "LYPR"; // LAP OR LYPR
|
|
83
89
|
export const USER_ID = 226;
|
|
84
90
|
|
|
85
91
|
const environments = {
|
|
86
|
-
adm_dev: "http://localhost:
|
|
92
|
+
adm_dev: "http://localhost:4010/api",
|
|
87
93
|
crm_dev: "http://localhost:4011/api",
|
|
88
94
|
uat: "https://api.eth-qa.rezolut.in/api/enrol",
|
|
89
95
|
};
|
|
@@ -80,7 +80,7 @@ export interface FilterColumnsListProps {
|
|
|
80
80
|
searchable: string | null;
|
|
81
81
|
attribute_key: string;
|
|
82
82
|
sort_type: string | null;
|
|
83
|
-
|
|
83
|
+
data_type: FilterInputDataTypes;
|
|
84
84
|
data_source_type: string | null;
|
|
85
85
|
datasource_list: any | null;
|
|
86
86
|
visible: string;
|
|
@@ -356,7 +356,7 @@ export interface FilterDataMainFilterEntityWiseCriteriaProps {
|
|
|
356
356
|
attribute_key: string;
|
|
357
357
|
element_type: FilterInputDataTypes;
|
|
358
358
|
datasource_list: any;
|
|
359
|
-
|
|
359
|
+
data_type: FilterInputDataTypes;
|
|
360
360
|
}
|
|
361
361
|
|
|
362
362
|
export interface FilterDataProps {
|
|
@@ -48,6 +48,7 @@ const SavedFilterModal = ({
|
|
|
48
48
|
entity_type: ENTITY_TYPE,
|
|
49
49
|
selectedFilterEntity,
|
|
50
50
|
});
|
|
51
|
+
|
|
51
52
|
useEffect(() => {
|
|
52
53
|
const data: any = filterEntityList?.data;
|
|
53
54
|
|
|
@@ -64,7 +65,7 @@ const SavedFilterModal = ({
|
|
|
64
65
|
}, [filterEntityList?.data, filterEntityList?.isPending]);
|
|
65
66
|
|
|
66
67
|
useEffect(() => {
|
|
67
|
-
const data = filterEntityWiseCriteria?.data;
|
|
68
|
+
const data = filterEntityWiseCriteria?.data?.data?.attribute_list;
|
|
68
69
|
|
|
69
70
|
setFilterData((prev: any) => ({
|
|
70
71
|
...prev,
|
|
@@ -4,7 +4,6 @@ import { useGetNavigationLayoutAPI } from "../listing/libs/hooks/useGetNavigatio
|
|
|
4
4
|
import { ENTITY_TYPE } from "../listing/libs/utils/common";
|
|
5
5
|
import {
|
|
6
6
|
useDeleteFilterAPI,
|
|
7
|
-
useGetAttributes,
|
|
8
7
|
useGetFilterEntityListAndCriteria,
|
|
9
8
|
useSavedFilterAPI,
|
|
10
9
|
useUpdateFilterAPI,
|
|
@@ -71,7 +70,7 @@ const CraftTableFilterWrapper = ({
|
|
|
71
70
|
}, [filterEntityList?.data, filterEntityList?.isPending]);
|
|
72
71
|
|
|
73
72
|
useEffect(() => {
|
|
74
|
-
const data = filterEntityWiseCriteria?.data;
|
|
73
|
+
const data = filterEntityWiseCriteria?.data?.data?.attribute_list;
|
|
75
74
|
|
|
76
75
|
setFilterData((prev: any) => ({
|
|
77
76
|
...prev,
|
package/src/view/ListingView.tsx
CHANGED
|
@@ -10,8 +10,11 @@ import { ENTITY_TYPE, MAPPED_ENTITY_TYPE } from "../listing/libs/utils/common";
|
|
|
10
10
|
import {
|
|
11
11
|
useCommonFilterDropdownAPI,
|
|
12
12
|
useEntityTableAPI,
|
|
13
|
-
|
|
13
|
+
useGetFilterEntityListAndCriteria,
|
|
14
|
+
useGetLayoutAttributes,
|
|
14
15
|
useGetOperationList,
|
|
16
|
+
useGetSettingsColumnAttributes,
|
|
17
|
+
useGetSettingsDataAPI,
|
|
15
18
|
useSaveSettingsDataAPI,
|
|
16
19
|
useSettingsDropDownAPI,
|
|
17
20
|
} from "../listing/libs/hooks/useEntityTableAPI";
|
|
@@ -52,17 +55,24 @@ function ListingView() {
|
|
|
52
55
|
const { defaultColumns } = useDefaultColumns();
|
|
53
56
|
|
|
54
57
|
const { metaQuery } = useFetchData(ENTITY_TYPE);
|
|
55
|
-
|
|
56
58
|
const { detailsQuery } = useDetailsQueryAPI(
|
|
57
59
|
filterMaster?.saved_filters?.selectedId
|
|
58
60
|
? filterMaster?.saved_filters?.selectedId
|
|
59
61
|
: metaQuery?.data?.default_filter?.value
|
|
60
62
|
);
|
|
61
63
|
const { saveSettingsDataMutation } = useSaveSettingsDataAPI(ENTITY_TYPE);
|
|
64
|
+
const { settingsColumnAttributes } =
|
|
65
|
+
useGetSettingsColumnAttributes(ENTITY_TYPE);
|
|
62
66
|
const { operationList } = useGetOperationList();
|
|
63
67
|
|
|
64
|
-
const {
|
|
68
|
+
const { layoutAttributes: quickTabAttributes } = useGetLayoutAttributes({
|
|
69
|
+
entity_type: ENTITY_TYPE,
|
|
70
|
+
data_type: "select",
|
|
71
|
+
});
|
|
65
72
|
|
|
73
|
+
const { layoutAttributes: sortingTabAttributes } = useGetLayoutAttributes({
|
|
74
|
+
entity_type: ENTITY_TYPE,
|
|
75
|
+
});
|
|
66
76
|
const isColumnDefault =
|
|
67
77
|
filterSettingStates?.columnTabState?.isDefault || false;
|
|
68
78
|
const activeTabIndex = filterSettingStates?.columnTabState?.tabs?.findIndex(
|
|
@@ -108,58 +118,55 @@ function ListingView() {
|
|
|
108
118
|
// ?.filter((col): col is ColumnDef<any> => col !== undefined); // Ensure non-undefined columns are returned
|
|
109
119
|
|
|
110
120
|
// didnt know what above code was doing so rewrote it as below
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return allColumns;
|
|
121
|
+
const res = showList.map((item: any) => ({
|
|
122
|
+
id: item.value,
|
|
123
|
+
accessorKey: item.value,
|
|
124
|
+
header: item.label,
|
|
125
|
+
}));
|
|
126
|
+
|
|
127
|
+
return res;
|
|
119
128
|
};
|
|
120
129
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
// setColumns(allColumns);
|
|
162
|
-
// }
|
|
130
|
+
if (
|
|
131
|
+
savedColumnSettings &&
|
|
132
|
+
!savedColumnSettings.isDefault &&
|
|
133
|
+
savedColumnSettings.tabs
|
|
134
|
+
) {
|
|
135
|
+
// Tab-wise view: find the active tab and use its show_list
|
|
136
|
+
const activeTabSettings = savedColumnSettings.tabs.find(
|
|
137
|
+
(tab) => tab.tab_name?.value == selectedTab.toLowerCase()
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
if (activeTabSettings?.show_list) {
|
|
141
|
+
const visibleColumns = new Set(
|
|
142
|
+
activeTabSettings.show_list.map((c) => c.value)
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
// First, filter columns based on visibleColumns
|
|
146
|
+
const filteredColumns = allColumns.filter((col: any) =>
|
|
147
|
+
visibleColumns.has(col?.accessorKey)
|
|
148
|
+
);
|
|
149
|
+
setColumns(
|
|
150
|
+
getOrderedColumns(activeTabSettings.show_list, filteredColumns)
|
|
151
|
+
);
|
|
152
|
+
} else {
|
|
153
|
+
// Fallback if no specific settings for the active tab are found
|
|
154
|
+
setColumns(allColumns);
|
|
155
|
+
}
|
|
156
|
+
} else if (savedColumnSettings && savedColumnSettings.show_list) {
|
|
157
|
+
// Default view: use the main show_list
|
|
158
|
+
const visibleColumns = new Set(
|
|
159
|
+
savedColumnSettings.show_list.map((c) => c.value)
|
|
160
|
+
);
|
|
161
|
+
const filtered = allColumns.filter((col: any) =>
|
|
162
|
+
visibleColumns.has(col?.accessorKey)
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
setColumns(getOrderedColumns(savedColumnSettings.show_list, filtered));
|
|
166
|
+
} else {
|
|
167
|
+
// No settings found, use all columns
|
|
168
|
+
setColumns(allColumns);
|
|
169
|
+
}
|
|
163
170
|
} catch (error) {
|
|
164
171
|
console.error("Failed to fetch metadata:", error);
|
|
165
172
|
}
|
|
@@ -403,9 +410,6 @@ function ListingView() {
|
|
|
403
410
|
queryClient.invalidateQueries({
|
|
404
411
|
queryKey: ["GET_NAVIGATION_LAYOUT", ENTITY_TYPE],
|
|
405
412
|
});
|
|
406
|
-
queryClient.invalidateQueries({
|
|
407
|
-
queryKey: ["meta", ENTITY_TYPE],
|
|
408
|
-
});
|
|
409
413
|
},
|
|
410
414
|
}
|
|
411
415
|
);
|
|
@@ -537,17 +541,14 @@ function ListingView() {
|
|
|
537
541
|
onClose={() => setShowListViewSettings(false)}
|
|
538
542
|
columnsData={metaQuery.data || {}}
|
|
539
543
|
columnsDataLoading={metaQuery.isPending}
|
|
540
|
-
quickTabAttributes={
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
}))}
|
|
544
|
-
quickTabAttributesLoading={attributes?.data?.isLoading}
|
|
545
|
-
columnTabAttributes={attributes?.data?.filter(
|
|
544
|
+
quickTabAttributes={quickTabAttributes?.data}
|
|
545
|
+
quickTabAttributesLoading={quickTabAttributes?.isLoading}
|
|
546
|
+
columnTabAttributes={settingsColumnAttributes?.data?.filter(
|
|
546
547
|
(item) => item.attribute_key
|
|
547
548
|
)}
|
|
548
|
-
columnAttributesLoading={
|
|
549
|
-
sortingTabAttributes={
|
|
550
|
-
sortingTabAttributesLoading={
|
|
549
|
+
columnAttributesLoading={settingsColumnAttributes?.isLoading}
|
|
550
|
+
sortingTabAttributes={sortingTabAttributes?.data}
|
|
551
|
+
sortingTabAttributesLoading={sortingTabAttributes?.isLoading}
|
|
551
552
|
tabsApiData={settingsTabDropdownData || []}
|
|
552
553
|
tabsApiDataLoading={settingsTabDropdownPending}
|
|
553
554
|
onSaveSettingsData={handleSaveSettingsData}
|