diff --git a/vue/src/apps/ModelListView/ModelListView.vue b/vue/src/apps/ModelListView/ModelListView.vue index d59f3b94..3c774e2f 100644 --- a/vue/src/apps/ModelListView/ModelListView.vue +++ b/vue/src/apps/ModelListView/ModelListView.vue @@ -97,6 +97,7 @@ import GenericInfiniteCards from "@/components/GenericInfiniteCards"; import GenericHorizontalCard from "@/components/GenericHorizontalCard"; import GenericModalForm from "@/components/Modals/GenericModalForm"; import ModelMenu from "@/components/ModelMenu"; +import {ApiApiFactory} from "@/utils/openapi/api"; Vue.use(BootstrapVue) @@ -179,9 +180,18 @@ export default { this.this_action = this.Actions.MERGE this.show_modal = true } else { - this.mergeThis(e.source.id, e.target.id) + this.mergeThis(e.source, e.target, false) } break; + case 'merge-automate': + if (target == null) { + this.this_item = e.source + this.this_action = this.Actions.MERGE + this.show_modal = true + } else { + this.mergeThis(e.source, e.target, true) + } + break case 'get-children': if (source.show_children) { Vue.set(source, 'show_children', false) @@ -219,7 +229,7 @@ export default { this.saveThis(update) break; case this.Actions.MERGE: - this.mergeThis(this.this_item.id, e.form_data.target.id) + this.mergeThis(this.this_item, e.form_data.target, false) break; case this.Actions.MOVE: this.moveThis(this.this_item.id, e.form_data.target.id) @@ -305,7 +315,9 @@ export default { this.makeToast(this.$t('Error'), err.bodyText, 'danger') }) }, - mergeThis: function (source_id, target_id) { + mergeThis: function (source, target, automate) { + let source_id = source.id + let target_id = target.id if (source_id === target_id) { this.makeToast(this.$t('Error'), this.$t('Cannot merge item with itself'), 'danger') this.clearState() @@ -331,6 +343,28 @@ export default { this.makeToast(this.$t('Error'), err.bodyText, 'danger') }) + if (automate){ + let apiClient = new ApiApiFactory() + + let automation = { + name: `Merge ${source.name} with ${target.name}`, + param_1: source.name, + param_2: target.id + } + + if (this.this_model === this.Models.FOOD){ + automation.type = 'FOOD_ALIAS' + } + if (this.this_model === this.Models.UNIT){ + automation.type = 'UNIT_ALIAS' + } + if (this.this_model === this.Models.KEYWORD){ + automation.type = 'KEYWORD_ALIAS' + } + + apiClient.createAutomation(automation) + } + }, getChildren: function (col, item) { let parent = {} diff --git a/vue/src/components/GenericContextMenu.vue b/vue/src/components/GenericContextMenu.vue index 036ac8f1..227e77de 100644 --- a/vue/src/components/GenericContextMenu.vue +++ b/vue/src/components/GenericContextMenu.vue @@ -1,6 +1,6 @@ diff --git a/vue/src/components/GenericHorizontalCard.vue b/vue/src/components/GenericHorizontalCard.vue index 20bb6938..4b493b40 100644 --- a/vue/src/components/GenericHorizontalCard.vue +++ b/vue/src/components/GenericHorizontalCard.vue @@ -80,13 +80,16 @@ - {{$t('Move')}}: {{$t('move_confirmation', {'child': source.name,'parent':item.name})}} + {{$t('Move')}}: - {{$t('Merge')}}: {{ $t('merge_confirmation', {'source': source.name,'target':item.name}) }} + {{$t('Merge')}}: + + + {{$t('Merge')}} & {{$t('Automate')}}: {{$t('create_rule')}} - {{$t('Cancel')}} + {{$t('Cancel')}} diff --git a/vue/src/components/ModelMenu.vue b/vue/src/components/ModelMenu.vue index 1925ff60..5768adf7 100644 --- a/vue/src/components/ModelMenu.vue +++ b/vue/src/components/ModelMenu.vue @@ -27,7 +27,7 @@ - {{ Models['AUTOMATION'].name }} + {{ Models['AUTOMATION'].name }}