diff --git a/application/ui/src/features/annotator/labels/labels.component.tsx b/application/ui/src/features/annotator/labels/labels.component.tsx
index 04f7c6eecd5..890f0f58a9f 100644
--- a/application/ui/src/features/annotator/labels/labels.component.tsx
+++ b/application/ui/src/features/annotator/labels/labels.component.tsx
@@ -1,7 +1,7 @@
// Copyright (C) 2026 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
-import { CSSProperties } from 'react';
+import { CSSProperties, Fragment } from 'react';
import { Divider, Flex, Text } from '@geti/ui';
import { clsx } from 'clsx';
@@ -167,16 +167,15 @@ export const Labels = ({ isClassification = false, isMultiLabel = false, isReadO
aria-disabled={isReadOnly}
>
{labels.map((label) => (
- <>
+
{label.id === EMPTY_LABEL_ID && }
handleLabelClick(label)}
/>
- >
+
))}
diff --git a/application/ui/src/features/models/model-listing/components/group-headers/dataset-group-header.component.tsx b/application/ui/src/features/models/model-listing/components/group-headers/dataset-group-header.component.tsx
index f8b33092cc6..a8f4756344c 100644
--- a/application/ui/src/features/models/model-listing/components/group-headers/dataset-group-header.component.tsx
+++ b/application/ui/src/features/models/model-listing/components/group-headers/dataset-group-header.component.tsx
@@ -3,14 +3,14 @@
import { dimensionValue, Flex, Grid, Heading, Text } from '@geti/ui';
import { Image, Tag } from '@geti/ui/icons';
+import { useNumberFormatter } from 'react-aria';
import { TrainModel } from '../../../train-model/train-model.component';
import type { DatasetGroup } from '../../types';
import { DatasetActions } from '../dataset-actions/dataset-actions.component';
+import { ModelBadge } from '../model-row/model-badge.component';
import { ThreeSectionRange } from '../three-section-range/three-section-range.component';
-import classes from './group-headers.module.scss';
-
type DatasetGroupHeaderProps = {
dataset: DatasetGroup;
};
@@ -20,6 +20,7 @@ export const DatasetGroupHeader = ({ dataset }: DatasetGroupHeaderProps) => {
const gridColumns = hasDatasetRevisionData
? ['auto', '1fr', 'auto', '1fr', 'auto']
: ['auto', '1fr', 'auto', 'auto'];
+ const formatter = useNumberFormatter();
return (
@@ -39,12 +40,12 @@ export const DatasetGroupHeader = ({ dataset }: DatasetGroupHeaderProps) => {
-
+
{dataset.labelCount}
-
-
- {dataset.imageCount.toLocaleString()}
-
+
+
+ {formatter.format(dataset.imageCount)}
+
{hasDatasetRevisionData && (
diff --git a/application/ui/src/features/models/model-listing/components/group-headers/group-headers.module.scss b/application/ui/src/features/models/model-listing/components/group-headers/group-headers.module.scss
deleted file mode 100644
index c84d594c6a6..00000000000
--- a/application/ui/src/features/models/model-listing/components/group-headers/group-headers.module.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.tag {
- background-color: var(--spectrum-gray-100);
- border-radius: var(--spectrum-global-dimension-size-50);
- padding: var(--spectrum-global-dimension-size-25) var(--spectrum-global-dimension-size-50);
- align-items: center;
- justify-content: center;
- color: var(--spectrum-global-color-gray-800);
-
- svg {
- fill: var(--spectrum-global-color-gray-800);
- }
-}
diff --git a/application/ui/src/features/models/model-listing/components/group-models-container/group-models-container.component.tsx b/application/ui/src/features/models/model-listing/components/group-models-container/group-models-container.component.tsx
index f3b279e04ad..7e03640a69c 100644
--- a/application/ui/src/features/models/model-listing/components/group-models-container/group-models-container.component.tsx
+++ b/application/ui/src/features/models/model-listing/components/group-models-container/group-models-container.component.tsx
@@ -7,6 +7,7 @@ import type { Model } from '../../../../../constants/shared-types';
import { ModelDetailsTabs } from '../../model-details/model-details-tabs.component';
import { useModelListing } from '../../provider/model-listing-provider';
import { ArchitectureGroup, DatasetGroup } from '../../types';
+import { isFailedModel } from '../../utils/utils';
import { GroupHeader } from '../group-headers/group-header.component';
import { ModelRowContainer } from '../model-row/model-row.container';
import { ModelsTableHeader } from '../models-table-header.component';
@@ -35,6 +36,7 @@ export const GroupModelsContainer = ({ group, models }: GroupModelsContainerProp
isQuiet
UNSAFE_className={classes.disclosure}
isExpanded={expandedModelIds.has(modelId)}
+ isDisabled={isFailedModel(model)}
onExpandedChange={() => onExpandModel(modelId)}
data-testid={`model-disclosure-${modelId}`}
>
diff --git a/application/ui/src/features/models/model-listing/components/model-actions/model-actions.component.tsx b/application/ui/src/features/models/model-listing/components/model-actions/model-actions.component.tsx
index e40b5e6d080..129ad1deb23 100644
--- a/application/ui/src/features/models/model-listing/components/model-actions/model-actions.component.tsx
+++ b/application/ui/src/features/models/model-listing/components/model-actions/model-actions.component.tsx
@@ -11,13 +11,13 @@ import type { Model } from '../../../../../constants/shared-types';
import { usePatchPipeline } from '../../../../../hooks/api/pipeline.hook';
import { useDeleteModel } from '../../../hooks/api/use-delete-model.hook';
import { useRenameModel } from '../../../hooks/api/use-rename-model.hook';
+import { isFailedModel } from '../../utils/utils';
import { RenameModelDialog } from '../model-row/rename-model-dialog.component';
const MODEL_ACTIONS = {
ACTIVE: 'active',
RENAME: 'rename',
DELETE: 'delete',
- EXPORT: 'export',
};
type ModelActionsProps = {
@@ -33,6 +33,8 @@ export const ModelActions = ({ model }: ModelActionsProps) => {
const [isRenameDialogOpen, setIsRenameDialogOpen] = useState(false);
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
+ const disabledKeys = isFailedModel(model) ? [MODEL_ACTIONS.ACTIVE, MODEL_ACTIONS.RENAME] : [];
+
const handleAction = (key: Key) => {
if (key === MODEL_ACTIONS.ACTIVE) {
patchPipelineMutation.mutate({
@@ -70,7 +72,7 @@ export const ModelActions = ({ model }: ModelActionsProps) => {
-