feat(ServerManager): add group selection functionality for servers in ServerManager and ServerGroupCard components
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m51s

This commit is contained in:
2026-02-17 12:10:49 +07:00
parent e09976b64e
commit 7cd33384b7
2 changed files with 22 additions and 5 deletions
+12
View File
@@ -284,6 +284,17 @@ function ServerManager() {
setSelectedServers(newSet); setSelectedServers(newSet);
}; };
const toggleGroupSelection = (servers, selectAll) => {
setSelectedServers((prev) => {
const next = new Set(prev);
servers.forEach((s) => {
if (selectAll) next.add(s.ip);
else next.delete(s.ip);
});
return next;
});
};
const selectAllServers = () => { const selectAllServers = () => {
if (selectedServers.size === filteredServers.length) { if (selectedServers.size === filteredServers.length) {
setSelectedServers(new Set()); setSelectedServers(new Set());
@@ -838,6 +849,7 @@ function ServerManager() {
servers={item.servers} servers={item.servers}
selectedSet={selectedServers} selectedSet={selectedServers}
onSelect={toggleServerSelection} onSelect={toggleServerSelection}
onSelectGroup={toggleGroupSelection}
onEdit={handleEdit} onEdit={handleEdit}
onDelete={confirmDelete} onDelete={confirmDelete}
/> />
@@ -31,6 +31,7 @@ export default function ServerGroupCard({
servers, servers,
selectedSet, selectedSet,
onSelect, onSelect,
onSelectGroup,
onEdit, onEdit,
onDelete onDelete
}) { }) {
@@ -43,11 +44,15 @@ export default function ServerGroupCard({
const allSelected = servers.length > 0 && servers.every((s) => selectedSet.has(s.ip)); const allSelected = servers.length > 0 && servers.every((s) => selectedSet.has(s.ip));
const handleGroupSelect = () => { const handleGroupSelect = () => {
if (onSelectGroup) {
onSelectGroup(servers, !allSelected);
} else {
servers.forEach((s) => { servers.forEach((s) => {
const selected = selectedSet.has(s.ip); const selected = selectedSet.has(s.ip);
if (allSelected && selected) onSelect?.(s); if (allSelected && selected) onSelect?.(s);
if (!allSelected && !selected) onSelect?.(s); if (!allSelected && !selected) onSelect?.(s);
}); });
}
}; };
return ( return (