Skip to content

Commit 4ce85fb

Browse files
committed
[ML] show success toast on model deletion, fix models counter
1 parent d6123a3 commit 4ce85fb

File tree

1 file changed

+36
-14
lines changed
  • x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/models_management

1 file changed

+36
-14
lines changed

x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/models_management/models_list.tsx

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,16 @@ export const ModelsList: FC = () => {
6060
const [sortDirection, setSortDirection] = useState<Direction>('asc');
6161

6262
const [isLoading, setIsLoading] = useState(false);
63-
const [modelsStats, setModelsStats] = useState<ModelsBarStats | undefined>();
6463
const [items, setItems] = useState<ModelItem[]>([]);
6564
const [selectedModels, setSelectedModels] = useState<ModelItem[]>([]);
6665

6766
const [modelsToDelete, setModelsToDelete] = useState<ModelWithStats[]>([]);
6867

6968
const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState<Record<string, any>>({});
7069

70+
/**
71+
* Fetches inference trained models.
72+
*/
7173
async function fetchData() {
7274
setIsLoading(true);
7375
try {
@@ -80,16 +82,6 @@ export const ModelsList: FC = () => {
8082
: {}),
8183
}))
8284
);
83-
84-
setModelsStats({
85-
total: {
86-
show: true,
87-
value: response.trained_model_configs.length,
88-
label: i18n.translate('xpack.ml.inference.modelsList.totalAmountLabel', {
89-
defaultMessage: 'Total inference trained models',
90-
}),
91-
},
92-
});
9385
} catch (error) {
9486
toasts.addError(new Error(error.body.message), {
9587
title: i18n.translate('xpack.ml.inference.modelsList.fetchFailedErrorMessage', {
@@ -100,6 +92,18 @@ export const ModelsList: FC = () => {
10092
setIsLoading(false);
10193
}
10294

95+
const modelsStats: ModelsBarStats = useMemo(() => {
96+
return {
97+
total: {
98+
show: true,
99+
value: items.length,
100+
label: i18n.translate('xpack.ml.inference.modelsList.totalAmountLabel', {
101+
defaultMessage: 'Total inference trained models',
102+
}),
103+
},
104+
};
105+
}, [items]);
106+
103107
useEffect(() => {
104108
fetchData();
105109
}, []);
@@ -167,20 +171,38 @@ export const ModelsList: FC = () => {
167171
}
168172
}
169173

174+
/**
175+
* Deletes the models marked for deletion.
176+
*/
170177
async function deleteModels() {
178+
const modelsToDeleteIds = modelsToDelete.map((model) => model.model_id);
179+
171180
try {
172181
await Promise.all(
173-
modelsToDelete.map((model) => inferenceApiService.deleteInferenceModel(model.model_id))
182+
modelsToDeleteIds.map((modelId) => inferenceApiService.deleteInferenceModel(modelId))
174183
);
175184
setItems(
176185
items.filter(
177186
(model) => !modelsToDelete.some((toDelete) => toDelete.model_id === model.model_id)
178187
)
179188
);
189+
toasts.addSuccess(
190+
i18n.translate('xpack.ml.inference.modelsList.successfullyDeletedMessage', {
191+
defaultMessage:
192+
'{modelsCount, plural, one {Model} other {Models}} {modelsToDeleteIds} {modelsCount, plural, one {has} other {have}} been successfully deleted',
193+
values: {
194+
modelsCount: modelsToDeleteIds.length,
195+
modelsToDeleteIds: modelsToDeleteIds.join(', '),
196+
},
197+
})
198+
);
180199
} catch (error) {
181-
toasts.addError(new Error(error.body.message), {
200+
toasts.addError(new Error(error?.body?.message), {
182201
title: i18n.translate('xpack.ml.inference.modelsList.fetchDeletionErrorMessage', {
183-
defaultMessage: 'Model deletion failed',
202+
defaultMessage: '{modelsCount, plural, one {Model} other {Models}} deletion failed',
203+
values: {
204+
modelsCount: modelsToDeleteIds.length,
205+
},
184206
}),
185207
});
186208
}

0 commit comments

Comments
 (0)