diff --git a/web/public/locales/en/views/classificationModel.json b/web/public/locales/en/views/classificationModel.json index f77d8067a..f8aef1b8f 100644 --- a/web/public/locales/en/views/classificationModel.json +++ b/web/public/locales/en/views/classificationModel.json @@ -44,7 +44,9 @@ }, "deleteCategory": { "title": "Delete Class", - "desc": "Are you sure you want to delete the class {{name}}? This will permanently delete all associated images and require re-training the model." + "desc": "Are you sure you want to delete the class {{name}}? This will permanently delete all associated images and require re-training the model.", + "minClassesTitle": "Cannot Delete Class", + "minClassesDesc": "A classification model must have at least 2 classes. Add another class before deleting this one." }, "deleteModel": { "title": "Delete Classification Model", diff --git a/web/src/views/classification/ModelTrainingView.tsx b/web/src/views/classification/ModelTrainingView.tsx index 61c99b15f..b0664534c 100644 --- a/web/src/views/classification/ModelTrainingView.tsx +++ b/web/src/views/classification/ModelTrainingView.tsx @@ -265,10 +265,11 @@ export default function ModelTrainingView({ model }: ModelTrainingViewProps) { ); } + // Always refresh dataset to update the categories list + refreshDataset(); + if (pageToggle == "train") { refreshTrain(); - } else { - refreshDataset(); } } }) @@ -572,27 +573,44 @@ function LibrarySelector({ > - {t("deleteCategory.title")} + + {Object.keys(dataset).length <= 2 + ? t("deleteCategory.minClassesTitle") + : t("deleteCategory.title")} + - {t("deleteCategory.desc", { name: confirmDelete })} + {Object.keys(dataset).length <= 2 + ? t("deleteCategory.minClassesDesc") + : t("deleteCategory.desc", { name: confirmDelete })}
- - + {Object.keys(dataset).length <= 2 ? ( + + ) : ( + <> + + + + )}