Skip to content

Commit 950bea3

Browse files
committed
feat(FR-1902): Modify the filtering and sorting options on the reservoir-related page (#5028)
# Enhance Artifact Filtering and Sorting Resolves #5026 ([FR-1902](https://lablup.atlassian.net/browse/FR-1902)) This PR improves artifact filtering and sorting capabilities: 1. Changed `artifactId` filter type from `ID` to `UUIDFilter` in GraphQL schema 2. Fixed default operator for number type from 'eq' to 'equals' in property filter 3. Added secondary sorting by `UPDATED_AT` when artifacts are sorted by version 4. Added size filter to artifact revisions with operators (equals, greaterThan, etc.) 5. Added type filter with MODEL, PACKAGE, and IMAGE options to the reservoir page **Checklist:** - [ ] Documentation - [ ] Minium required manager version - [ ] Specific setting for review (eg., KB link, endpoint or how to setup) - [ ] Minimum requirements to check during review - [ ] Test case(s) to demonstrate the difference of before/after [FR-1902]: https://lablup.atlassian.net/browse/FR-1902?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
1 parent 389ca48 commit 950bea3

26 files changed

Lines changed: 174 additions & 55 deletions

data/schema.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,7 @@ input ArtifactRevisionFilter
882882
"""Added in 25.16.0"""
883883
remoteStatus: ArtifactRevisionRemoteStatusFilter = null
884884
version: StringFilter = null
885-
artifactId: ID = null
885+
artifactId: UUIDFilter = null
886886
size: IntFilter = null
887887
AND: [ArtifactRevisionFilter!] = null
888888
OR: [ArtifactRevisionFilter!] = null

packages/backend.ai-ui/src/components/BAIGraphQLPropertyFilter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ const OPERATOR_SHORT_LABELS: Partial<Record<FilterOperator, string>> = {
189189

190190
const DEFAULT_OPERATOR_BY_TYPE: Record<FilterPropertyType, FilterOperator> = {
191191
string: 'contains',
192-
number: 'eq',
192+
number: 'equals',
193193
boolean: 'eq',
194194
enum: 'eq',
195195
};

packages/backend.ai-ui/src/components/fragments/BAIArtifactTable.tsx

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import {
1111
import BAIFlex from '../BAIFlex';
1212
import BAILink from '../BAILink';
1313
import BAIText from '../BAIText';
14-
import { BAITable, BAITableProps } from '../Table';
14+
import { BAIColumnType, BAITable, BAITableProps } from '../Table';
1515
import BAIArtifactRevisionDownloadButton from './BAIArtifactRevisionDownloadButton';
1616
import BAIArtifactStatusTag from './BAIArtifactStatusTag';
1717
import BAIArtifactTypeTag from './BAIArtifactTypeTag';
1818
import { SyncOutlined } from '@ant-design/icons';
19-
import { Button, TableColumnsType, theme, Typography } from 'antd';
19+
import { Button, theme, Typography } from 'antd';
2020
import dayjs from 'dayjs';
2121
import relativeTime from 'dayjs/plugin/relativeTime';
2222
import _ from 'lodash';
@@ -101,10 +101,21 @@ const BAIArtifactTable = ({
101101
updatedAt
102102
scannedAt
103103
availability
104+
registry {
105+
name
106+
url
107+
}
108+
source {
109+
name
110+
url
111+
}
104112
...BAIArtifactTypeTagFragment
105113
latestVersion: revisions(
106114
limit: 1
107-
orderBy: { field: VERSION, direction: DESC }
115+
orderBy: [
116+
{ field: VERSION, direction: DESC }
117+
{ field: UPDATED_AT, direction: DESC }
118+
]
108119
) {
109120
edges {
110121
node {
@@ -122,7 +133,7 @@ const BAIArtifactTable = ({
122133
artifactFragment,
123134
);
124135

125-
const columns: TableColumnsType<Artifact> = [
136+
const columns: Array<BAIColumnType<Artifact>> = [
126137
{
127138
title: t('comp:BAIArtifactRevisionTable.Name'),
128139
dataIndex: 'name',
@@ -251,6 +262,42 @@ const BAIArtifactTable = ({
251262
);
252263
},
253264
},
265+
{
266+
title: t('comp:BAIArtifactTable.Registry'),
267+
dataIndex: 'registry.name',
268+
key: 'registry.name',
269+
render: (_value, record: Artifact) => {
270+
return record?.source ? (
271+
<Typography>
272+
{record?.registry
273+
? `${record.registry.name} (${record.registry.url})`
274+
: 'N/A'}
275+
</Typography>
276+
) : (
277+
'-'
278+
);
279+
},
280+
defaultHidden: true,
281+
},
282+
{
283+
title: t('comp:BAIArtifactTable.Source'),
284+
dataIndex: 'source.name',
285+
key: 'source.name',
286+
render: (_value, record: Artifact) => {
287+
return record?.source ? (
288+
<Typography.Link
289+
href={record.source.url ?? ''}
290+
target="_blank"
291+
rel="noopener noreferrer"
292+
>
293+
{record.source.name || 'N/A'}
294+
</Typography.Link>
295+
) : (
296+
'-'
297+
);
298+
},
299+
defaultHidden: true,
300+
},
254301
];
255302

256303
return (

packages/backend.ai-ui/src/locale/de.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@
5050
"Controls": "Kontrollen",
5151
"Deactivate": "Deaktivieren",
5252
"PullLatestVersion": "Die neueste Version ziehen",
53+
"Registry": "Registry",
5354
"Scanned": "Gescannt",
5455
"Size": "Größe",
56+
"Source": "Quelle",
5557
"Updated": "Aktualisiert",
5658
"Version": "Version"
5759
},

packages/backend.ai-ui/src/locale/el.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@
5050
"Controls": "Χειριστήρια",
5151
"Deactivate": "Απενεργοποιούμαι",
5252
"PullLatestVersion": "Τραβήξτε την τελευταία έκδοση",
53+
"Registry": "Μητρώο",
5354
"Scanned": "Σαρωμένος",
5455
"Size": "Μέγεθος",
56+
"Source": "Πηγή",
5557
"Updated": "Ενημερωμένος",
5658
"Version": "Εκδοχή"
5759
},

packages/backend.ai-ui/src/locale/en.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@
5050
"Controls": "Controls",
5151
"Deactivate": "Deactivate",
5252
"PullLatestVersion": "Pull latest version",
53+
"Registry": "Registry",
5354
"Scanned": "Scanned",
5455
"Size": "Size",
56+
"Source": "Source",
5557
"Updated": "Updated",
5658
"Version": "Version"
5759
},

packages/backend.ai-ui/src/locale/es.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@
5050
"Controls": "Control",
5151
"Deactivate": "Desactivar",
5252
"PullLatestVersion": "Tire de la última versión",
53+
"Registry": "Registro",
5354
"Scanned": "Escaneado",
5455
"Size": "Tamaño",
56+
"Source": "Origen",
5557
"Updated": "Actualizado",
5658
"Version": "Versión"
5759
},

packages/backend.ai-ui/src/locale/fi.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@
5050
"Controls": "Hallintalaitteet",
5151
"Deactivate": "Deaktivoida",
5252
"PullLatestVersion": "Vedä uusin versio",
53+
"Registry": "Rekisteri",
5354
"Scanned": "Skannattu",
5455
"Size": "Koko",
56+
"Source": "Lähde",
5557
"Updated": "Päivitetty",
5658
"Version": "Versio"
5759
},

packages/backend.ai-ui/src/locale/fr.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@
5050
"Controls": "Commandes",
5151
"Deactivate": "Désactiver",
5252
"PullLatestVersion": "Tirez la dernière version",
53+
"Registry": "Registre",
5354
"Scanned": "Numérisé",
5455
"Size": "Taille",
56+
"Source": "Source",
5557
"Updated": "Mis à jour",
5658
"Version": "Version"
5759
},

packages/backend.ai-ui/src/locale/id.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@
5050
"Controls": "Kontrol",
5151
"Deactivate": "Menonaktifkan",
5252
"PullLatestVersion": "Tarik versi terbaru",
53+
"Registry": "Registri",
5354
"Scanned": "Dipindai",
5455
"Size": "Ukuran",
56+
"Source": "Sumber",
5557
"Updated": "Diperbarui",
5658
"Version": "Versi"
5759
},

0 commit comments

Comments
 (0)