1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-24 15:59:41 +02:00

refactor(k8s): namespace core logic (#12142)

Co-authored-by: testA113 <aliharriss1995@gmail.com>
Co-authored-by: Anthony Lapenna <anthony.lapenna@portainer.io>
Co-authored-by: James Carppe <85850129+jamescarppe@users.noreply.github.com>
Co-authored-by: Ali <83188384+testA113@users.noreply.github.com>
This commit is contained in:
Steven Kang 2024-10-01 14:15:51 +13:00 committed by GitHub
parent da010f3d08
commit ea228c3d6d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
276 changed files with 9241 additions and 3361 deletions

View file

@ -0,0 +1,12 @@
import { formatDate } from '@/portainer/filters/filters';
import { columnHelper } from './helper';
export const created = columnHelper.accessor(
(row) => formatDate(row.creationDate),
{
header: 'Created',
id: 'created',
cell: ({ getValue }) => getValue(),
}
);

View file

@ -0,0 +1,5 @@
import { createColumnHelper } from '@tanstack/react-table';
import { ClusterRoleBinding } from '../types';
export const columnHelper = createColumnHelper<ClusterRoleBinding>();

View file

@ -0,0 +1,17 @@
import { name } from './name';
import { roleName } from './roleName';
import { kind } from './kind';
import { created } from './created';
import { subjectKind } from './subjectKind';
import { subjectName } from './subjectName';
import { subjectNamespace } from './subjectNamespace';
export const columns = [
name,
roleName,
kind,
subjectKind,
subjectName,
subjectNamespace,
created,
];

View file

@ -0,0 +1,6 @@
import { columnHelper } from './helper';
export const kind = columnHelper.accessor('roleRef.kind', {
header: 'Role Kind',
id: 'roleKind',
});

View file

@ -0,0 +1,22 @@
import { SystemBadge } from '@@/Badge/SystemBadge';
import { columnHelper } from './helper';
export const name = columnHelper.accessor(
(row) => {
if (row.isSystem) {
return `${row.name} system`;
}
return row.name;
},
{
header: 'Name',
id: 'name',
cell: ({ row }) => (
<div className="flex gap-2">
{row.original.name}
{row.original.isSystem && <SystemBadge />}
</div>
),
}
);

View file

@ -0,0 +1,6 @@
import { columnHelper } from './helper';
export const roleName = columnHelper.accessor('roleRef.name', {
header: 'Role Name',
id: 'roleName',
});

View file

@ -0,0 +1,13 @@
import { columnHelper } from './helper';
export const subjectKind = columnHelper.accessor(
(row) => row.subjects?.map((sub) => sub.kind).join(', '),
{
header: 'Subject Kind',
id: 'subjectKind',
cell: ({ row }) =>
row.original.subjects?.map((sub, index) => (
<div key={index}>{sub.kind}</div>
)) || '-',
}
);

View file

@ -0,0 +1,13 @@
import { columnHelper } from './helper';
export const subjectName = columnHelper.accessor(
(row) => row.subjects?.map((sub) => sub.name).join(' '),
{
header: 'Subject Name',
id: 'subjectName',
cell: ({ row }) =>
row.original.subjects?.map((sub, index) => (
<div key={index}>{sub.name}</div>
)) || '-',
}
);

View file

@ -0,0 +1,42 @@
import { Link } from '@@/Link';
import { filterHOC } from '@@/datatables/Filter';
import { filterFn, filterNamespaceOptionsTransformer } from '../../utils';
import { columnHelper } from './helper';
export const subjectNamespace = columnHelper.accessor(
(row) => row.subjects?.flatMap((sub) => sub.namespace || '-') || [],
{
header: 'Subject Namespace',
id: 'subjectNamespace',
cell: ({ row }) =>
row.original.subjects?.map((sub, index) => (
<div key={index}>
{sub.namespace ? (
<Link
to="kubernetes.resourcePools.resourcePool"
params={{
id: sub.namespace,
}}
title={sub.namespace}
data-cy={`subject-namespace-link-${row.original.name}_${index}`}
>
{sub.namespace}
</Link>
) : (
'-'
)}
</div>
)) || '-',
enableColumnFilter: true,
// use a custom filter, to remove empty namespace values
meta: {
filter: filterHOC(
'Filter by subject namespace',
filterNamespaceOptionsTransformer
),
},
filterFn,
}
);