mirror of
https://github.com/portainer/portainer.git
synced 2025-07-23 15:29:42 +02:00
fix(services): separate table state [BE-11401] (#152)
This commit is contained in:
parent
52c90d4d0a
commit
069f22afa4
4 changed files with 25 additions and 16 deletions
|
@ -31,6 +31,7 @@ const ngModule = angular
|
||||||
'isStackColumnVisible',
|
'isStackColumnVisible',
|
||||||
'onRefresh',
|
'onRefresh',
|
||||||
'titleIcon',
|
'titleIcon',
|
||||||
|
'tableKey',
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -6,4 +6,5 @@
|
||||||
on-refresh="(getServices)"
|
on-refresh="(getServices)"
|
||||||
is-add-action-visible="true"
|
is-add-action-visible="true"
|
||||||
is-stack-column-visible="true"
|
is-stack-column-visible="true"
|
||||||
|
table-key="'services'"
|
||||||
></docker-services-datatable>
|
></docker-services-datatable>
|
||||||
|
|
|
@ -241,7 +241,13 @@
|
||||||
environment="endpoint"
|
environment="endpoint"
|
||||||
></stack-containers-datatable>
|
></stack-containers-datatable>
|
||||||
|
|
||||||
<docker-services-datatable ng-if="services && (!orphaned || orphanedRunning)" dataset="services" title-icon="list" on-refresh="(getServices)"></docker-services-datatable>
|
<docker-services-datatable
|
||||||
|
ng-if="services && (!orphaned || orphanedRunning)"
|
||||||
|
dataset="services"
|
||||||
|
title-icon="list"
|
||||||
|
on-refresh="(getServices)"
|
||||||
|
table-key="'stack-services'"
|
||||||
|
></docker-services-datatable>
|
||||||
|
|
||||||
<!-- access-control-panel -->
|
<!-- access-control-panel -->
|
||||||
<access-control-panel
|
<access-control-panel
|
||||||
|
|
|
@ -28,9 +28,23 @@ import { TableActions } from './TableActions';
|
||||||
import { type TableSettings as TableSettingsType } from './types';
|
import { type TableSettings as TableSettingsType } from './types';
|
||||||
import { TableSettings } from './TableSettings';
|
import { TableSettings } from './TableSettings';
|
||||||
|
|
||||||
const tableKey = 'services';
|
export function ServicesDatatable({
|
||||||
|
titleIcon = Shuffle,
|
||||||
const store = createPersistedStore<TableSettingsType>(
|
dataset,
|
||||||
|
isAddActionVisible,
|
||||||
|
isStackColumnVisible,
|
||||||
|
onRefresh,
|
||||||
|
tableKey,
|
||||||
|
}: {
|
||||||
|
dataset: Array<ServiceViewModel> | undefined;
|
||||||
|
titleIcon?: IconProps['icon'];
|
||||||
|
isAddActionVisible?: boolean;
|
||||||
|
isStackColumnVisible?: boolean;
|
||||||
|
onRefresh?(): void;
|
||||||
|
tableKey: string;
|
||||||
|
}) {
|
||||||
|
// use a unique tableKey so that unrelated services datatables don't share state
|
||||||
|
const store = createPersistedStore<TableSettingsType>(
|
||||||
tableKey,
|
tableKey,
|
||||||
'name',
|
'name',
|
||||||
(set) => ({
|
(set) => ({
|
||||||
|
@ -41,21 +55,8 @@ const store = createPersistedStore<TableSettingsType>(
|
||||||
set({ expanded: value });
|
set({ expanded: value });
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
export function ServicesDatatable({
|
|
||||||
titleIcon = Shuffle,
|
|
||||||
dataset,
|
|
||||||
isAddActionVisible,
|
|
||||||
isStackColumnVisible,
|
|
||||||
onRefresh,
|
|
||||||
}: {
|
|
||||||
dataset: Array<ServiceViewModel> | undefined;
|
|
||||||
titleIcon?: IconProps['icon'];
|
|
||||||
isAddActionVisible?: boolean;
|
|
||||||
isStackColumnVisible?: boolean;
|
|
||||||
onRefresh?(): void;
|
|
||||||
}) {
|
|
||||||
// useRef so that updating the parent filter doesn't cause a re-render
|
// useRef so that updating the parent filter doesn't cause a re-render
|
||||||
const parentFilteredStatusRef = useRef<Map<string, boolean>>(new Map());
|
const parentFilteredStatusRef = useRef<Map<string, boolean>>(new Map());
|
||||||
const environmentId = useEnvironmentId();
|
const environmentId = useEnvironmentId();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue