import { Minimize2 } from 'lucide-react'; import { BasicTableSettings, createPersistedStore, refreshableSettings, RefreshableTableSettings, } from '@@/datatables/types'; import { ExpandableDatatable } from '@@/datatables/ExpandableDatatable'; import { useRepeater } from '@@/datatables/useRepeater'; import { TableSettingsMenu } from '@@/datatables'; import { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh'; import { useTableState } from '@@/datatables/useTableState'; import { Node } from '../types'; import { SubRow } from './PlacementsDatatableSubRow'; import { columns } from './columns'; interface TableSettings extends BasicTableSettings, RefreshableTableSettings {} function createStore(storageKey: string) { return createPersistedStore(storageKey, 'node', (set) => ({ ...refreshableSettings(set), })); } const storageKey = 'kubernetes.application.placements'; const settingsStore = createStore(storageKey); export function PlacementsDatatable({ dataset, onRefresh, }: { dataset: Node[]; onRefresh: () => Promise; }) { const tableState = useTableState(settingsStore, storageKey); useRepeater(tableState.autoRefreshRate, onRefresh); return ( !row.original.AcceptsApplication} title="Placement constraints/preferences" titleIcon={Minimize2} dataset={dataset} settingsManager={tableState} columns={columns} disableSelect noWidget renderTableSettings={() => ( )} emptyContentLabel="No node available." renderSubRow={(row) => ( )} /> ); }