diff --git a/app/docker/components/datatables/events-datatable/eventsDatatable.html b/app/docker/components/datatables/events-datatable/eventsDatatable.html deleted file mode 100644 index a3b5a9ae2..000000000 --- a/app/docker/components/datatables/events-datatable/eventsDatatable.html +++ /dev/null @@ -1,95 +0,0 @@ -
- - -
-
-
- -
- {{ $ctrl.titleText }} -
- -
-
- - - - - - - - - - - - - - - - - - - - - -
- - - - - -
{{ item.Time | getisodatefromtimestamp }}{{ item.Type }}{{ item.Details }}
Loading...
No event available.
-
- -
-
-
diff --git a/app/docker/components/datatables/events-datatable/eventsDatatable.js b/app/docker/components/datatables/events-datatable/eventsDatatable.js deleted file mode 100644 index 9684b2577..000000000 --- a/app/docker/components/datatables/events-datatable/eventsDatatable.js +++ /dev/null @@ -1,12 +0,0 @@ -angular.module('portainer.docker').component('eventsDatatable', { - templateUrl: './eventsDatatable.html', - controller: 'GenericDatatableController', - bindings: { - titleText: '@', - titleIcon: '@', - dataset: '<', - tableKey: '@', - orderBy: '@', - reverseOrder: '<', - }, -}); diff --git a/app/docker/react/components/index.ts b/app/docker/react/components/index.ts index 0acc32a64..3e0d0a977 100644 --- a/app/docker/react/components/index.ts +++ b/app/docker/react/components/index.ts @@ -17,8 +17,9 @@ import { GpusInsights } from '@/react/docker/host/SetupView/GpusInsights'; import { InsightsBox } from '@/react/components/InsightsBox'; import { BetaAlert } from '@/react/portainer/environments/update-schedules/common/BetaAlert'; import { ImagesDatatable } from '@/react/docker/images/ListView/ImagesDatatable/ImagesDatatable'; +import { EventsDatatable } from '@/react/docker/events/EventsDatatables'; -export const componentsModule = angular +const ngModule = angular .module('portainer.docker.react.components', []) .component('dockerfileDetails', r2a(DockerfileDetails, ['image'])) .component('dockerHealthStatus', r2a(HealthStatus, ['health'])) @@ -80,4 +81,7 @@ export const componentsModule = angular 'onRefresh', 'onRemove', ]) - ).name; + ) + .component('dockerEventsDatatable', r2a(EventsDatatable, ['dataset'])); + +export const componentsModule = ngModule.name; diff --git a/app/docker/views/events/events.html b/app/docker/views/events/events.html index 0c0f4094b..b85942243 100644 --- a/app/docker/views/events/events.html +++ b/app/docker/views/events/events.html @@ -1,7 +1,3 @@ -
-
- -
-
+ diff --git a/app/react/docker/events/EventsDatatables.tsx b/app/react/docker/events/EventsDatatables.tsx new file mode 100644 index 000000000..c5bc35a09 --- /dev/null +++ b/app/react/docker/events/EventsDatatables.tsx @@ -0,0 +1,54 @@ +import { createColumnHelper } from '@tanstack/react-table'; +import { Clock } from 'lucide-react'; + +import { isoDateFromTimestamp } from '@/portainer/filters/filters'; + +import { Datatable } from '@@/datatables'; +import { createPersistedStore } from '@@/datatables/types'; +import { useTableState } from '@@/datatables/useTableState'; + +type DockerEvent = { + Time: number; + Type: string; + Details: string; +}; + +const columnHelper = createColumnHelper(); + +export const columns = [ + columnHelper.accessor('Time', { + header: 'Date', + cell: ({ getValue }) => { + const value = getValue(); + return isoDateFromTimestamp(value); + }, + }), + columnHelper.accessor('Type', { + header: 'Type', + }), + columnHelper.accessor('Details', { + header: 'Details', + }), +]; + +const tableKey = 'docker-events'; +const settingsStore = createPersistedStore(tableKey, { + id: 'Time', + desc: true, +}); + +export function EventsDatatable({ dataset }: { dataset: Array }) { + const tableState = useTableState(settingsStore, tableKey); + + return ( + + ); +}