diff --git a/vue3/src/components/dialogs/ModelMergeDialog.vue b/vue3/src/components/dialogs/ModelMergeDialog.vue
index ba89927ac..edaebafe4 100644
--- a/vue3/src/components/dialogs/ModelMergeDialog.vue
+++ b/vue3/src/components/dialogs/ModelMergeDialog.vue
@@ -75,7 +75,7 @@ function mergeModel() {
genericModel.merge(props.source, target.value).then(r => {
useMessageStore().addPreparedMessage(PreparedMessage.UPDATE_SUCCESS)
- emit('change')
+ emit('change', target.value)
if (automate.value && target.value != null && Object.hasOwn(props.source, 'name') && Object.hasOwn(target.value, 'name')) {
let automation = {
diff --git a/vue3/src/components/inputs/ModelSelect.vue b/vue3/src/components/inputs/ModelSelect.vue
index ca9de58dd..895a04eb3 100644
--- a/vue3/src/components/inputs/ModelSelect.vue
+++ b/vue3/src/components/inputs/ModelSelect.vue
@@ -1,8 +1,12 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -72,7 +81,7 @@ const props = defineProps({
label: {type: String, default: ''},
hint: {type: String, default: ''},
- density: {type: String as PropType<''|'compact'|'comfortable'>, default: ''},
+ density: {type: String as PropType<'' | 'compact' | 'comfortable'>, default: ''},
searchOnLoad: {type: Boolean, default: false},
})
diff --git a/vue3/src/pages/IngredientEditorPage.vue b/vue3/src/pages/IngredientEditorPage.vue
index 620061561..ecc6b68b3 100644
--- a/vue3/src/pages/IngredientEditorPage.vue
+++ b/vue3/src/pages/IngredientEditorPage.vue
@@ -8,10 +8,56 @@
text="With the ingredient editor you can edit all Ingredients that use a certain Food and/or Unit at once. This can be used to easily correct errors or change multiple recipes at once.">
-
+
+
+
+
+
+
+
+ {{ $t('Edit') }}
+ {selectedFood = obj}"
+ @delete="selectedFood = null; refreshPage()">
+
+
+ {{ $t('Merge') }}
+ {selectedFood = obj;refreshPage()} ">
+
+
+ {{ $t('Database') }}
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+ {{ $t('Edit') }}
+ {selectedUnit = obj}"
+ @delete="selectedUnit = null; refreshPage()">
+
+
+ {{ $t('Merge') }}
+ {selectedUnit = obj;refreshPage()} ">
+
+
+ {{ $t('Database') }}
+
+
+
+
+
+
@@ -27,6 +73,7 @@
:expanded="items.flatMap((i:Ingredient) => i.id)"
:page="tablePage"
:loading="ingredientsLoading"
+ disable-sort
>
@@ -50,7 +97,8 @@
+ @update:modelValue="item.changed = true">
+
-
+
@@ -91,6 +139,8 @@ import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore";
import {useUrlSearchParams} from "@vueuse/core";
import {VNumberInput} from 'vuetify/labs/VNumberInput'
import DeleteConfirmDialog from "@/components/dialogs/DeleteConfirmDialog.vue";
+import ModelEditDialog from "@/components/dialogs/ModelEditDialog.vue";
+import ModelMergeDialog from "@/components/dialogs/ModelMergeDialog.vue";
const {t} = useI18n()
const params = useUrlSearchParams('history', {})
@@ -214,6 +264,7 @@ function refreshPage() {
function loadItems({page, itemsPerPage, search, sortBy, groupBy}) {
// never load unfiltered, only load if at least one filter is set
if (!selectedFood.value && !selectedUnit.value) {
+ items.value = []
return
}