mirror of https://github.com/portainer/portainer
fix(services): separate table state [BE-11401] (#152)
parent
52c90d4d0a
commit
069f22afa4
|
@ -31,6 +31,7 @@ const ngModule = angular
|
|||
'isStackColumnVisible',
|
||||
'onRefresh',
|
||||
'titleIcon',
|
||||
'tableKey',
|
||||
])
|
||||
);
|
||||
|
||||
|
|
|
@ -6,4 +6,5 @@
|
|||
on-refresh="(getServices)"
|
||||
is-add-action-visible="true"
|
||||
is-stack-column-visible="true"
|
||||
table-key="'services'"
|
||||
></docker-services-datatable>
|
||||
|
|
|
@ -241,7 +241,13 @@
|
|||
environment="endpoint"
|
||||
></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
|
||||
|
|
|
@ -28,34 +28,35 @@ import { TableActions } from './TableActions';
|
|||
import { type TableSettings as TableSettingsType } from './types';
|
||||
import { TableSettings } from './TableSettings';
|
||||
|
||||
const tableKey = 'services';
|
||||
|
||||
const store = createPersistedStore<TableSettingsType>(
|
||||
tableKey,
|
||||
'name',
|
||||
(set) => ({
|
||||
...refreshableSettings(set),
|
||||
...hiddenColumnsSettings(set),
|
||||
expanded: {},
|
||||
setExpanded(value) {
|
||||
set({ expanded: value });
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
export function ServicesDatatable({
|
||||
titleIcon = Shuffle,
|
||||
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,
|
||||
'name',
|
||||
(set) => ({
|
||||
...refreshableSettings(set),
|
||||
...hiddenColumnsSettings(set),
|
||||
expanded: {},
|
||||
setExpanded(value) {
|
||||
set({ expanded: value });
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
// useRef so that updating the parent filter doesn't cause a re-render
|
||||
const parentFilteredStatusRef = useRef<Map<string, boolean>>(new Map());
|
||||
const environmentId = useEnvironmentId();
|
||||
|
|
Loading…
Reference in New Issue