From 4d586f7a853d3815dcfc2c3bc50766815bb0ac39 Mon Sep 17 00:00:00 2001 From: Oscar Zhou <100548325+oscarzhou-portainer@users.noreply.github.com> Date: Tue, 30 Jul 2024 08:53:17 +1200 Subject: [PATCH] fix(docker): missing browse volume option [EE-7179] (#11901) --- .../components/FilesTable/FilesTable.tsx | 21 +++++++++++-------- .../ContainerNetworksDatatable.tsx | 11 ++++++---- .../NodesDatatable/NodesDatatable.tsx | 11 ++++++---- .../VolumesDatatable/VolumesDatatable.tsx | 12 +++++------ .../ResultsDatatable/ResultsDatatable.tsx | 11 ++++++---- .../AccessDatatable/AccessDatatable.tsx | 11 ++++++---- .../GitlabProjectsTable.tsx | 9 +++++--- .../ItemView/TagsDatatable/TagsDatatable.tsx | 17 ++++++++------- 8 files changed, 61 insertions(+), 42 deletions(-) diff --git a/app/react/docker/components/FilesTable/FilesTable.tsx b/app/react/docker/components/FilesTable/FilesTable.tsx index 385ab93d4..4ffbcbdfa 100644 --- a/app/react/docker/components/FilesTable/FilesTable.tsx +++ b/app/react/docker/components/FilesTable/FilesTable.tsx @@ -8,6 +8,7 @@ import { BasicTableSettings } from '@@/datatables/types'; import { Button } from '@@/buttons'; import { TableState } from '@@/datatables/useTableState'; import { withMeta } from '@@/datatables/extend-options/withMeta'; +import { mergeOptions } from '@@/datatables/extend-options/mergeOptions'; import { FileData } from './types'; import { columns } from './columns'; @@ -86,15 +87,17 @@ export function FilesTable({ Dir: false, }, }} - extendTableOptions={withMeta({ - table: 'files', - isEdit, - setIsEdit, - onRename, - onBrowse, - onDownload, - onDelete, - })} + extendTableOptions={mergeOptions( + withMeta({ + table: 'files', + isEdit, + setIsEdit, + onRename, + onBrowse, + onDownload, + onDelete, + }) + )} disableSelect data-cy="files-datatable" renderTableActions={() => { diff --git a/app/react/docker/containers/ItemView/ContainerNetworksDatatable/ContainerNetworksDatatable.tsx b/app/react/docker/containers/ItemView/ContainerNetworksDatatable/ContainerNetworksDatatable.tsx index d55fb213a..8612a09d0 100644 --- a/app/react/docker/containers/ItemView/ContainerNetworksDatatable/ContainerNetworksDatatable.tsx +++ b/app/react/docker/containers/ItemView/ContainerNetworksDatatable/ContainerNetworksDatatable.tsx @@ -6,6 +6,7 @@ import { createPersistedStore } from '@@/datatables/types'; import { useTableState } from '@@/datatables/useTableState'; import { ExpandableDatatable } from '@@/datatables/ExpandableDatatable'; import { withMeta } from '@@/datatables/extend-options/withMeta'; +import { mergeOptions } from '@@/datatables/extend-options/mergeOptions'; import { ContainerListViewModel } from '../../types'; @@ -60,10 +61,12 @@ export function ContainerNetworksDatatable({ selectedNetworks={networks.map((n) => n.id)} /> } - extendTableOptions={withMeta({ - table: 'container-networks', - containerId: container.Id, - })} + extendTableOptions={mergeOptions( + withMeta({ + table: 'container-networks', + containerId: container.Id, + }) + )} data-cy="container-networks-datatable" /> ); diff --git a/app/react/docker/swarm/SwarmView/NodesDatatable/NodesDatatable.tsx b/app/react/docker/swarm/SwarmView/NodesDatatable/NodesDatatable.tsx index 7fe68316d..6a4f32a84 100644 --- a/app/react/docker/swarm/SwarmView/NodesDatatable/NodesDatatable.tsx +++ b/app/react/docker/swarm/SwarmView/NodesDatatable/NodesDatatable.tsx @@ -13,6 +13,7 @@ import { useTableState } from '@@/datatables/useTableState'; import { useRepeater } from '@@/datatables/useRepeater'; import { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh'; import { withMeta } from '@@/datatables/extend-options/withMeta'; +import { mergeOptions } from '@@/datatables/extend-options/mergeOptions'; import { useColumns } from './columns'; @@ -52,10 +53,12 @@ export function NodesDatatable({ dataset={dataset || []} isLoading={!dataset} settingsManager={tableState} - extendTableOptions={withMeta({ - table: 'nodes', - haveAccessToNode, - })} + extendTableOptions={mergeOptions( + withMeta({ + table: 'nodes', + haveAccessToNode, + }) + )} renderTableSettings={() => ( )} - extendTableOptions={ - (withMeta({ + extendTableOptions={mergeOptions( + withMeta({ table: 'volumes', isBrowseVisible, }), - withColumnFilters( - tableState.columnFilters, - tableState.setColumnFilters - )) - } + withColumnFilters(tableState.columnFilters, tableState.setColumnFilters) + )} data-cy="docker-volumes-datatable" /> ); diff --git a/app/react/edge/edge-jobs/ItemView/ResultsDatatable/ResultsDatatable.tsx b/app/react/edge/edge-jobs/ItemView/ResultsDatatable/ResultsDatatable.tsx index bacb19e62..7054226f5 100644 --- a/app/react/edge/edge-jobs/ItemView/ResultsDatatable/ResultsDatatable.tsx +++ b/app/react/edge/edge-jobs/ItemView/ResultsDatatable/ResultsDatatable.tsx @@ -7,6 +7,7 @@ import { useEnvironmentList } from '@/react/portainer/environments/queries'; import { Datatable } from '@@/datatables'; import { useTableState } from '@@/datatables/useTableState'; import { withMeta } from '@@/datatables/extend-options/withMeta'; +import { mergeOptions } from '@@/datatables/extend-options/mergeOptions'; import { EdgeJob, JobResult, LogsStatus } from '../../types'; import { useJobResults } from '../../queries/jobResults/useJobResults'; @@ -68,10 +69,12 @@ export function ResultsDatatable({ jobId }: { jobId: EdgeJob['Id'] }) { title="Results" titleIcon={List} settingsManager={tableState} - extendTableOptions={withMeta({ - table: 'edge-job-results', - jobId, - })} + extendTableOptions={mergeOptions( + withMeta({ + table: 'edge-job-results', + jobId, + }) + )} data-cy="edge-job-results-datatable" /> ); diff --git a/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx b/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx index 9fcdbd377..6cc49bf62 100644 --- a/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx +++ b/app/react/portainer/access-control/AccessManagement/AccessDatatable/AccessDatatable.tsx @@ -14,6 +14,7 @@ import { useTableState } from '@@/datatables/useTableState'; import { withMeta } from '@@/datatables/extend-options/withMeta'; import { Button } from '@@/buttons'; import { TextTip } from '@@/Tip/TextTip'; +import { mergeOptions } from '@@/datatables/extend-options/mergeOptions'; import { useColumns } from './columns/useColumns'; import { Access } from './types'; @@ -55,10 +56,12 @@ export function AccessDatatable({ isLoading={!dataset} columns={columns} settingsManager={tableState} - extendTableOptions={withMeta({ - table: 'access-table', - roles: rolesState, - })} + extendTableOptions={mergeOptions( + withMeta({ + table: 'access-table', + roles: rolesState, + }) + )} isRowSelectable={({ original: item }) => !inheritFrom || !item.Inherited} renderTableActions={(selectedItems) => ( <> diff --git a/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx b/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx index ac51c0127..f1494975b 100644 --- a/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx +++ b/app/react/portainer/registries/CreateView/GitlabProjectsTable/GitlabProjectsTable.tsx @@ -5,6 +5,7 @@ import { createPersistedStore } from '@@/datatables/types'; import { useTableState } from '@@/datatables/useTableState'; import { Datatable } from '@@/datatables'; import { withControlledSelected } from '@@/datatables/extend-options/withControlledSelected'; +import { mergeOptions } from '@@/datatables/extend-options/mergeOptions'; import { RegistryGitlabProject } from '../../types/gitlabProject'; @@ -40,9 +41,11 @@ export function GitlabProjectTable({ settingsManager={tableState} title="Gitlab projects" titleIcon={ListIcon} - extendTableOptions={withControlledSelected( - (ids) => onChange(dataset.filter(({ Id }) => ids.includes(`${Id}`))), - value.map(({ Id }) => `${Id}`) + extendTableOptions={mergeOptions( + withControlledSelected( + (ids) => onChange(dataset.filter(({ Id }) => ids.includes(`${Id}`))), + value.map(({ Id }) => `${Id}`) + ) )} isRowSelectable={({ original: item }) => item.RegistryEnabled} data-cy="gitlab-projects-datatable" diff --git a/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx b/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx index 3b94ae46d..907890a3a 100644 --- a/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx +++ b/app/react/portainer/registries/repositories/ItemView/TagsDatatable/TagsDatatable.tsx @@ -5,6 +5,7 @@ import { Datatable } from '@@/datatables'; import { useTableStateWithStorage } from '@@/datatables/useTableState'; import { DeleteButton } from '@@/buttons/DeleteButton'; import { withMeta } from '@@/datatables/extend-options/withMeta'; +import { mergeOptions } from '@@/datatables/extend-options/mergeOptions'; import { Tag } from './types'; import { useColumns } from './columns/useColumns'; @@ -45,13 +46,15 @@ export function TagsDatatable({ ) } getRowId={(tag) => tag.Name} - extendTableOptions={withMeta({ - onUpdate: async () => { - await onRetag(updatesState.updates); - updatesState.clear(); - }, - table: 'registry-repository-tags', - })} + extendTableOptions={mergeOptions( + withMeta({ + onUpdate: async () => { + await onRetag(updatesState.updates); + updatesState.clear(); + }, + table: 'registry-repository-tags', + }) + )} data-cy="registry-tags-datatable" /> );