mirror of
https://github.com/portainer/portainer.git
synced 2025-07-22 14:59:41 +02:00
refactor(docker/swarm): migrate nodes table to react [EE-4672] (#10184)
This commit is contained in:
parent
fbdbd277f7
commit
bf85a8861d
18 changed files with 210 additions and 255 deletions
|
@ -0,0 +1,70 @@
|
|||
import { Trello } from 'lucide-react';
|
||||
|
||||
import { NodeViewModel } from '@/docker/models/node';
|
||||
|
||||
import { Datatable, TableSettingsMenu } from '@@/datatables';
|
||||
import {
|
||||
BasicTableSettings,
|
||||
RefreshableTableSettings,
|
||||
createPersistedStore,
|
||||
refreshableSettings,
|
||||
} from '@@/datatables/types';
|
||||
import { useTableState } from '@@/datatables/useTableState';
|
||||
import { useRepeater } from '@@/datatables/useRepeater';
|
||||
import { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';
|
||||
import { withMeta } from '@@/datatables/extend-options/withMeta';
|
||||
|
||||
import { useColumns } from './columns';
|
||||
|
||||
const tableKey = 'nodes';
|
||||
|
||||
interface TableSettings extends BasicTableSettings, RefreshableTableSettings {}
|
||||
|
||||
const store = createPersistedStore<TableSettings>(
|
||||
tableKey,
|
||||
undefined,
|
||||
(set) => ({
|
||||
...refreshableSettings(set),
|
||||
})
|
||||
);
|
||||
|
||||
export function NodesDatatable({
|
||||
dataset,
|
||||
isIpColumnVisible,
|
||||
haveAccessToNode,
|
||||
onRefresh,
|
||||
}: {
|
||||
dataset?: Array<NodeViewModel>;
|
||||
isIpColumnVisible: boolean;
|
||||
haveAccessToNode: boolean;
|
||||
onRefresh(): Promise<void>;
|
||||
}) {
|
||||
const columns = useColumns(isIpColumnVisible);
|
||||
const tableState = useTableState(store, tableKey);
|
||||
useRepeater(tableState.autoRefreshRate, onRefresh);
|
||||
|
||||
return (
|
||||
<Datatable<NodeViewModel>
|
||||
disableSelect
|
||||
title="Nodes"
|
||||
titleIcon={Trello}
|
||||
columns={columns}
|
||||
dataset={dataset || []}
|
||||
isLoading={!dataset}
|
||||
emptyContentLabel="No node available"
|
||||
settingsManager={tableState}
|
||||
extendTableOptions={withMeta({
|
||||
table: 'nodes',
|
||||
haveAccessToNode,
|
||||
})}
|
||||
renderTableSettings={() => (
|
||||
<TableSettingsMenu>
|
||||
<TableSettingsMenuAutoRefresh
|
||||
value={tableState.autoRefreshRate}
|
||||
onChange={(value) => tableState.setAutoRefreshRate(value)}
|
||||
/>
|
||||
</TableSettingsMenu>
|
||||
)}
|
||||
/>
|
||||
);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue