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