forked from kubeflow/model-registry
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModelRegistriesTableRow.tsx
More file actions
95 lines (91 loc) · 3.09 KB
/
ModelRegistriesTableRow.tsx
File metadata and controls
95 lines (91 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import React from 'react';
import { ActionsColumn, Td, Tr } from '@patternfly/react-table';
import { useNavigate } from 'react-router-dom';
import { Button, Tooltip } from '@patternfly/react-core';
import { FetchStateObject } from 'mod-arch-shared/dist/types/common';
import {
ModelRegistryKind,
ResourceNameTooltip,
RoleBindingKind,
TruncatedText,
} from 'mod-arch-shared';
import { DeploymentMode, useModularArchContext } from 'mod-arch-core';
import { ModelRegistryTableRowStatus } from './ModelRegistryTableRowStatus';
type ModelRegistriesTableRowProps = {
modelRegistry: ModelRegistryKind;
roleBindings: FetchStateObject<RoleBindingKind[]>;
onEditRegistry: (obj: ModelRegistryKind) => void;
onDeleteRegistry: (obj: ModelRegistryKind) => void;
};
const ModelRegistriesTableRow: React.FC<ModelRegistriesTableRowProps> = ({
modelRegistry: mr,
roleBindings,
onEditRegistry,
onDeleteRegistry,
}) => {
const navigate = useNavigate();
const { config } = useModularArchContext();
const { deploymentMode } = config;
const isDeploymentKubeflow = deploymentMode === DeploymentMode.Kubeflow;
const filteredRoleBindings = roleBindings.data.filter(
(rb) =>
rb.metadata.labels?.['app.kubernetes.io/name'] ===
(mr.metadata.name || mr.metadata.annotations?.['openshift.io/display-name']),
);
return (
<Tr>
<Td dataLabel="Model registry name" style={{ verticalAlign: 'middle' }}>
<ResourceNameTooltip resource={mr}>
<strong>
{mr.metadata.annotations?.['openshift.io/display-name'] || mr.metadata.name}
</strong>
</ResourceNameTooltip>
{mr.metadata.annotations?.['openshift.io/description'] && (
<TruncatedText
maxLines={2}
content={mr.metadata.annotations['openshift.io/description']}
/>
)}
</Td>
<Td dataLabel="Status" style={{ verticalAlign: 'middle' }}>
<ModelRegistryTableRowStatus conditions={mr.status?.conditions} />
</Td>
<Td modifier="fitContent" style={{ verticalAlign: 'middle' }}>
{filteredRoleBindings.length === 0 ? (
<Tooltip content="You can manage permissions when the model registry becomes available.">
<Button isAriaDisabled variant="link">
Manage permissions
</Button>
</Tooltip>
) : (
<Button
variant="link"
onClick={() => navigate(`/model-registry-settings/permissions/${mr.metadata.name}`)}
>
Manage permissions
</Button>
)}
</Td>
<Td isActionCell style={{ verticalAlign: 'middle' }}>
<ActionsColumn
items={[
{
title: 'Edit model registry',
onClick: () => {
onEditRegistry(mr);
},
},
{
title: 'Delete model registry',
disabled: isDeploymentKubeflow,
onClick: () => {
onDeleteRegistry(mr);
},
},
]}
/>
</Td>
</Tr>
);
};
export default ModelRegistriesTableRow;