diff --git a/vue3/src/components/dialogs/ModelMergeDialog.vue b/vue3/src/components/dialogs/ModelMergeDialog.vue
new file mode 100644
index 000000000..867410d82
--- /dev/null
+++ b/vue3/src/components/dialogs/ModelMergeDialog.vue
@@ -0,0 +1,41 @@
+
+
+
+ {{ $t('merge_title', {type: getGenericModelFromString(props.model).model.name}) }}
+
+
+ {{ $t('merge_selection', {source: '', type: getGenericModelFromString(props.model).model.name}) }}
+
+
+
+ {{ $t('Cancel') }}
+ {{ $t('Merge') }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue3/src/pages/ModelListPage.vue b/vue3/src/pages/ModelListPage.vue
index a40a3347f..0f4a44a9a 100644
--- a/vue3/src/pages/ModelListPage.vue
+++ b/vue3/src/pages/ModelListPage.vue
@@ -44,8 +44,19 @@
:items-per-page="useUserPreferenceStore().deviceSettings.general_tableItemsPerPage"
>
-
-
+
+
+
+
+
+ {{ $t('Edit') }}
+
+
+ {{ $t('Merge') }}
+
+
+
+
@@ -71,6 +82,7 @@ import {useUrlSearchParams} from "@vueuse/core";
import ModelEditDialog from "@/components/dialogs/ModelEditDialog.vue";
import {useRouter} from "vue-router";
import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
+import ModelMergeDialog from "@/components/dialogs/ModelMergeDialog.vue";
type VDataTableProps = InstanceType['$props']
@@ -156,7 +168,7 @@ function loadItems({page, itemsPerPage, search, sortBy, groupBy}) {
items.value = r.results
itemCount.value = r.count
}).catch((err: any) => {
- useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
+ useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
}).finally(() => {
loading.value = false
tablePage.value = page // TODO remove once page bug is fixed
diff --git a/vue3/src/types/Models.ts b/vue3/src/types/Models.ts
index edf829f28..67414509c 100644
--- a/vue3/src/types/Models.ts
+++ b/vue3/src/types/Models.ts
@@ -83,6 +83,8 @@ export type Model = {
disableListView?: boolean | undefined,
isPaginated: boolean | undefined,
+ isMerge?: boolean | undefined,
+ isTree?: boolean | undefined,
tableHeaders: ModelTableHeaders[],
}
@@ -116,6 +118,7 @@ export const TFood = {
icon: 'fa-solid fa-carrot',
isPaginated: true,
+ isMerge: true,
toStringKeys: ['name'],
tableHeaders: [
diff --git a/vue3/src/vuetify.ts b/vue3/src/vuetify.ts
index 9a4a5da76..889b27b08 100644
--- a/vue3/src/vuetify.ts
+++ b/vue3/src/vuetify.ts
@@ -78,6 +78,7 @@ export default createVuetify({
mealplan: 'fa-solid fa-calendar-days',
recipes: 'fa-solid fa-book',
books: 'fa-solid fa-book-open',
+ menu: 'fa-solid fa-ellipsis-vertical'
},
sets: {
fa,