rez-table-listing-mui
Version:
A rez table listing component built on TanStack Table
321 lines (280 loc) • 8.3 kB
text/typescript
import { api, APP_CODE, MAPPED_ENTITY_TYPE } from "./common";
import {
createSavedFilterPayload,
deleteSavedFilterPayload,
FilterDataMainFilterEntityListProps,
updateSavedFilterPayload,
} from "../../types/filter";
import { viewSettingsDropDownAPIProps } from "../../types/common";
export const entityTableMetaMaster = async (entity_type: string) => {
try {
const response = await api.post(
`/meta/get-table-data?entity_type=${entity_type}&list_type=${entity_type}`
);
const rawColumns = response.data?.data?.column_list || [];
const res = rawColumns.map((item: any) => ({
id: item.attribute_key,
accessorKey: item.attribute_key,
header: item.name,
}));
return { res };
} catch (error) {
console.error("Failed to fetch table meta:", error);
return { res: [] };
}
};
export const entityTableFilterMaster = async (
entity_type: string,
payload?: any
) => {
try {
const response = await api.post(
`/meta/get-table-data?entity_type=${entity_type}&list_type=${entity_type}`,
payload
);
// const filteredData = {
// ...response.data.data,
// column_list: response.data.data.column_list.filter(
// (item: any) => item.attribute_key !== "action"
// ),
// };
// return response.data.data;
// return filteredData; // FOR ACTION COLUMN REMOVE
return response.data.data;
} catch (error) {
console.error("Failed to fetch filter operation list meta:", error);
}
};
export const fetchDetailsByFilterId = async (filterId: string | undefined) => {
const response = await api.get(`/filter/${filterId}`);
return response.data;
};
export const commonGetDropdownDataAPI = async (
entity_type: string,
// organization_id?: string | null,
data?: any
) => {
try {
const requestBody = {
status: "ACTIVE",
organization_id: 1,
...data,
};
const response = await api.post(
`/list-master/getDropdownData/${entity_type}`,
requestBody
);
return response.data;
} catch (error) {
console.error("Failed to fetch dropdown data:", error);
throw error;
}
};
export const createSavedFilter = async (
entity_type: string,
payload: createSavedFilterPayload
) => {
try {
const response = await api.post(
`/entity/create?entity_type=${entity_type}`,
payload
);
return response.data;
} catch (error) {
console.error("Failed to fetch saved filter list:", error);
throw error;
}
};
export const deleteSavedFilter = async (
entity_type: string,
payload: deleteSavedFilterPayload
) => {
try {
const response = await api.post(
`/entity/update/${payload?.id}?entity_type=${entity_type}`,
payload
);
return response.data;
} catch (error) {
console.error("Failed to delete saved filter:", error);
throw error;
}
};
export const updateSavedFilter = async (
entity_type: string,
payload: updateSavedFilterPayload
) => {
try {
const response = await api.post(
`/entity/update/${payload?.id}?entity_type=${entity_type}`,
payload
);
return response.data;
} catch (error) {
console.error("Failed to update saved filter:", error);
throw error;
}
};
// ALL View Settings API
export const saveSettingsData = async (payload: any) => {
try {
const response = await api.post(
`/entity/create?entity_type=${MAPPED_ENTITY_TYPE}`,
payload
);
return response.data;
} catch (error) {
console.error("Failed to save settings data:", error);
throw error;
}
};
export const getSettingsData = async (entity_type: string, type: string) => {
let url = `/meta/layout-preference`;
// if (entity_type === USER || entity_type === ROLE || entity_type === ORGP) {
// url = `sso/layout`;
// }
const params = {
entity_type: entity_type,
type: type,
};
try {
const response = await api.get(url, { params });
return response.data;
} catch (error) {
console.error("Failed to fetch settings data:", error);
throw error;
}
};
export const viewSettingsDropDown = async ({
entity_type,
column,
sort_by,
}: viewSettingsDropDownAPIProps): Promise<Array<string>> => {
const response = await api.get(
`meta/layout-preference/column?entity_type=${entity_type}&column=${column}&sort_by=${sort_by}`
);
return response.data;
};
export const getFilterEntityList = async (entity_type: string) => {
const response = await api.get(
`meta/entity-relation/${entity_type}?include=true`
);
return response.data;
};
export const getFilterCriteriaByEntity = async (
selectedFilterEntity: FilterDataMainFilterEntityListProps | undefined
) => {
const params = { entity_type: selectedFilterEntity?.value };
const response = await api.get(
`meta/attribute-master/getAttributes?direct=false&entity_type=${selectedFilterEntity?.value}`
);
return response.data;
};
export const getOperationList = async () => {
const response = await api.post(`/meta/operation-list`);
return response.data;
};
export const getLayoutAttributes = async ({
entity_type,
element_type,
}: {
entity_type: string;
element_type?: string;
}) => {
const params = {
element_type,
};
const response = await api.post(
`meta/layout-preference/attributes`,
{ entity_type },
{ params }
);
return response.data;
};
export const getAttributes = async (
entity_type: string,
element_type?: string
) => {
const response = await api.get("/meta/attribute-master/getAttributes", {
params: {
// direct: false, // commented as per requirement
entity_type,
...(element_type && { element_type }),
},
});
return response.data;
};
export const getTableTabs = async (payload: any) => {
const response = await api.post(`filter/${APP_CODE}/tabs`, payload);
return response.data;
};
export const newCommonGetDropdownDataAPI = async ({
entity_type,
attribute_key,
// organization_id,
data,
inactiveIds,
parentId,
}: {
entity_type: string | undefined;
attribute_key?: string;
// organization_id?: string | null;
data?: any;
inactiveIds?: string | null;
parentId?: number | string;
}) => {
// Body can still accept optional custom data if needed
const requestBody = data || {};
// Build query params dynamically
const queryParams: string[] = [];
if (entity_type) queryParams.push(`entity_type=${entity_type}`);
if (attribute_key) queryParams.push(`attribute_key=${attribute_key}`);
if (!Number.isNaN(Number(inactiveIds)) && inactiveIds)
queryParams.push(`inactiveIds=${inactiveIds}`);
if (parentId !== undefined && parentId !== null)
queryParams.push(`parent=${parentId}`);
const queryString = queryParams.length > 0 ? `?${queryParams.join("&")}` : "";
return await api
.post(`entity/getAttributeDropdown${queryString}`, requestBody)
.then((response) => response.data);
};
export const commonFetchDropdownDataAPI = async ({
entity_type,
enterprise_id,
data,
inactiveIds,
parentId,
}: {
entity_type: string | undefined;
enterprise_id?: number;
data?: any;
inactiveIds?: string | null;
parentId?: number | string;
}) => {
const requestBody = {
// status: "ACTIVE",
enterprise_id,
...data,
};
let params = "";
const queryParams: string[] = [];
if (!Number.isNaN(Number(inactiveIds)) && inactiveIds) {
queryParams.push(`inactiveIds=${inactiveIds}`);
}
if (parentId !== undefined && parentId !== null) {
queryParams.push(`parent=${parentId}`);
}
if (queryParams.length > 0) {
params = `?${queryParams.join("&")}`;
}
// if (entity_type === "ORGP") {
// return await api.get(`organization/sso/getdropdown`).then((response) => {
// return response.data;
// });
// }
return await api
.post(`entity/getListMasterDropdown/${entity_type}${params}`, requestBody)
.then((response) => {
return response.data;
});
};