✨ feat(table): Add sorting support for Node and subscription columns
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
deleteNode,
|
||||
getNodeGroupList,
|
||||
getNodeList,
|
||||
nodeSort,
|
||||
updateNode,
|
||||
} from '@/services/admin/server';
|
||||
import { ConfirmButton } from '@repo/ui/confirm-button';
|
||||
@@ -230,6 +231,32 @@ export default function NodeTable() {
|
||||
];
|
||||
},
|
||||
}}
|
||||
onSort={async (source, target, items) => {
|
||||
const sourceIndex = items.findIndex((item) => String(item.id) === source);
|
||||
const targetIndex = items.findIndex((item) => String(item.id) === target);
|
||||
|
||||
const originalSorts = items.map((item) => ({ id: item.id, sort: item.sort || item.id }));
|
||||
|
||||
const [movedItem] = items.splice(sourceIndex, 1);
|
||||
items.splice(targetIndex, 0, movedItem!);
|
||||
|
||||
const updatedItems = items.map((item) => {
|
||||
const originalSort = originalSorts.find((sortItem) => sortItem.id === item.id)?.sort;
|
||||
return {
|
||||
...item,
|
||||
sort: originalSort !== undefined ? originalSort : item.sort,
|
||||
};
|
||||
});
|
||||
nodeSort({
|
||||
sort: updatedItems.map((item) => {
|
||||
return {
|
||||
id: item.id,
|
||||
sort: item.sort,
|
||||
};
|
||||
}),
|
||||
});
|
||||
return updatedItems;
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
deleteSubscribe,
|
||||
getSubscribeGroupList,
|
||||
getSubscribeList,
|
||||
subscribeSort,
|
||||
updateSubscribe,
|
||||
} from '@/services/admin/subscribe';
|
||||
import { ConfirmButton } from '@repo/ui/confirm-button';
|
||||
@@ -237,6 +238,32 @@ export default function SubscribeTable() {
|
||||
/>,
|
||||
],
|
||||
}}
|
||||
onSort={async (source, target, items) => {
|
||||
const sourceIndex = items.findIndex((item) => String(item.id) === source);
|
||||
const targetIndex = items.findIndex((item) => String(item.id) === target);
|
||||
|
||||
const originalSorts = items.map((item) => ({ id: item.id, sort: item.sort || item.id }));
|
||||
|
||||
const [movedItem] = items.splice(sourceIndex, 1);
|
||||
items.splice(targetIndex, 0, movedItem!);
|
||||
|
||||
const updatedItems = items.map((item) => {
|
||||
const originalSort = originalSorts.find((sortItem) => sortItem.id === item.id)?.sort;
|
||||
return {
|
||||
...item,
|
||||
sort: originalSort !== undefined ? originalSort : item.sort,
|
||||
};
|
||||
});
|
||||
subscribeSort({
|
||||
sort: updatedItems.map((item) => {
|
||||
return {
|
||||
id: item.id,
|
||||
sort: item.sort,
|
||||
};
|
||||
}),
|
||||
});
|
||||
return updatedItems;
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user