1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-02 20:35:25 +02:00

fix(swarm/service): list task when filtering service [BE-11029] (#12146)
Some checks are pending
ci / build_images (map[arch:arm platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:s390x platform:linux version:]) (push) Waiting to run
ci / build_manifests (push) Blocked by required conditions
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
/ triage (push) Waiting to run
Lint / Run linters (push) Waiting to run
Test / test-client (push) Waiting to run
Test / test-server (map[arch:amd64 platform:linux]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
Test / test-server (map[arch:arm64 platform:linux]) (push) Waiting to run

This commit is contained in:
Oscar Zhou 2024-08-28 18:28:38 +12:00 committed by GitHub
parent e8ec648886
commit f59dd34154
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 27 additions and 14 deletions

View file

@ -1,5 +1,6 @@
import { Shuffle } from 'lucide-react';
import { Row } from '@tanstack/react-table';
import { useRef } from 'react';
import { ServiceViewModel } from '@/docker/models/service';
import { useApiVersion } from '@/react/docker/proxy/queries/useVersion';
@ -55,6 +56,8 @@ export function ServicesDatatable({
isStackColumnVisible?: boolean;
onRefresh?(): void;
}) {
// useRef so that updating the parent filter doesn't cause a re-render
const parentFilteredStatusRef = useRef<Map<string, boolean>>(new Map());
const environmentId = useEnvironmentId();
const apiVersion = useApiVersion(environmentId);
const tableState = useTableState(store, tableKey);
@ -76,7 +79,11 @@ export function ServicesDatatable({
<td colSpan={Number.MAX_SAFE_INTEGER}>
<TasksDatatable
dataset={item.Tasks as Array<DecoratedTask>}
search={tableState.search}
search={
parentFilteredStatusRef.current.get(item.Id)
? ''
: tableState.search
}
/>
</td>
</tr>
@ -111,19 +118,24 @@ export function ServicesDatatable({
data-cy="services-datatable"
/>
);
}
function filter(
row: Row<ServiceViewModel>,
columnId: string,
filterValue: null | { search: string }
) {
return (
defaultGlobalFilterFn(row, columnId, filterValue) ||
row.original.Tasks.some((task) =>
Object.values(task).some(
(value) => value && value.toString().includes(filterValue?.search || '')
function filter(
row: Row<ServiceViewModel>,
columnId: string,
filterValue: null | { search: string }
) {
parentFilteredStatusRef.current = parentFilteredStatusRef.current.set(
row.id,
defaultGlobalFilterFn(row, columnId, filterValue)
);
return (
parentFilteredStatusRef.current.get(row.id) ||
row.original.Tasks.some((task) =>
Object.values(task).some(
(value) =>
value && value.toString().includes(filterValue?.search || '')
)
)
)
);
);
}
}

View file

@ -38,6 +38,7 @@ function Cell({
.filter((port) => port.PublishedPort)
.map((port) => (
<PublishedPortLink
key={port.PublishedPort}
hostPort={port.PublishedPort}
containerPort={port.TargetPort}
hostURL={environmentQuery.data.PublicURL}