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
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m51s
This commit is contained in:
@@ -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 = () => {
|
||||||
servers.forEach((s) => {
|
if (onSelectGroup) {
|
||||||
const selected = selectedSet.has(s.ip);
|
onSelectGroup(servers, !allSelected);
|
||||||
if (allSelected && selected) onSelect?.(s);
|
} else {
|
||||||
if (!allSelected && !selected) onSelect?.(s);
|
servers.forEach((s) => {
|
||||||
});
|
const selected = selectedSet.has(s.ip);
|
||||||
|
if (allSelected && selected) onSelect?.(s);
|
||||||
|
if (!allSelected && !selected) onSelect?.(s);
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user