chore: add Material column and show the Parent array
This commit is contained in:
@@ -34,7 +34,24 @@ export default function Categories() {
|
||||
try {
|
||||
const data = await api.getAll();
|
||||
const list = Array.isArray(data) ? data : [];
|
||||
setRows(list);
|
||||
|
||||
// Build a map of parentId -> array of child tagNames
|
||||
const parentToChildren = {};
|
||||
for (const item of list) {
|
||||
const parents = Array.isArray(item?.parentTagId) ? item.parentTagId : [];
|
||||
for (const pid of parents) {
|
||||
if (!parentToChildren[pid]) parentToChildren[pid] = [];
|
||||
if (item?.tagName) parentToChildren[pid].push(item.tagName);
|
||||
}
|
||||
}
|
||||
|
||||
// Enrich each row with `material` (children whose parentTagId includes this _id)
|
||||
const enriched = list.map((r) => ({
|
||||
...r,
|
||||
material: Array.isArray(parentToChildren[r?._id]) ? parentToChildren[r._id].join(', ') : '',
|
||||
}));
|
||||
|
||||
setRows(enriched);
|
||||
} catch (e) {
|
||||
console.error('Failed to load categories:', e);
|
||||
setRows([]);
|
||||
@@ -148,28 +165,33 @@ export default function Categories() {
|
||||
{ field: 'tagName', headerName: 'Name', flex: 1.2, minWidth: 180 },
|
||||
{ field: 'slug', headerName: 'Slug', flex: 1.0, minWidth: 160 },
|
||||
{ field: 'icon', headerName: 'Icon', flex: 0.7, minWidth: 120 },
|
||||
// New computed column
|
||||
{ field: 'material', headerName: 'Material', flex: 1.2, minWidth: 200 },
|
||||
// Hidden audit columns
|
||||
{
|
||||
field: 'createdAt',
|
||||
headerName: 'Created Date',
|
||||
flex: 1.0,
|
||||
minWidth: 180,
|
||||
hide: true,
|
||||
valueFormatter: (p) => {
|
||||
const v = p?.value;
|
||||
return v ? new Date(v).toLocaleString() : '—';
|
||||
},
|
||||
},
|
||||
{ field: 'createdBy', headerName: 'Created By', flex: 0.9, minWidth: 160 },
|
||||
{ field: 'createdBy', headerName: 'Created By', flex: 0.9, minWidth: 160, hide: true },
|
||||
{
|
||||
field: 'updatedAt',
|
||||
headerName: 'Updated Date',
|
||||
flex: 1.0,
|
||||
minWidth: 180,
|
||||
hide: true,
|
||||
valueFormatter: (p) => {
|
||||
const v = p?.value;
|
||||
return v ? new Date(v).toLocaleString() : '—';
|
||||
},
|
||||
},
|
||||
{ field: 'updatedBy', headerName: 'Updated By', flex: 0.9, minWidth: 160 },
|
||||
{ field: 'updatedBy', headerName: 'Updated By', flex: 0.9, minWidth: 160, hide: true },
|
||||
{ field: 'status', headerName: 'Status', flex: 0.7, minWidth: 120 },
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user