From 4cf1357d564f434846668c20101f1874cc227543 Mon Sep 17 00:00:00 2001 From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Date: Thu, 11 Jul 2024 15:55:38 +0200 Subject: [PATCH] Bug 37301: Remove toToResource* methods to BaseResource --- .../prog/js/vue/components/BaseResource.vue | 37 +++++++++++++++++-- .../vue/components/ERM/AgreementResource.vue | 26 ++++--------- .../js/vue/components/ERM/AgreementsList.vue | 7 +--- .../js/vue/components/ERM/AgreementsShow.vue | 10 ++++- .../prog/js/vue/components/ToolbarButton.vue | 11 ++++-- 5 files changed, 58 insertions(+), 33 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseResource.vue index 701b1056cf1..1c782bc44ab 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseResource.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseResource.vue @@ -2,15 +2,46 @@ import { inject } from "vue" export default { - setup() { + setup(props) { //global setup for all resource (list and show for now, but maybe others?) components here const { setConfirmationDialog, setMessage, setError } = inject("mainStore") - return { setConfirmationDialog, setMessage, setError } + return { ...props, setConfirmationDialog, setMessage, setError } }, methods: { - // goToResourceEdit: function () {}, + /** + * Navigates to the edit page of the given resource. + * + * @param {Object} resource - The resource to navigate to (optional) + * @return {void} + */ + goToResourceEdit: function (resource) { + this.$router.push({ + name: this.edit_component, + params: { + [this.id_attr]: resource + ? resource[this.id_attr] + : this[this.resource_name][this.id_attr], + }, + }) + }, + /** + * Navigates to the creation page of the given resource. + * + * @return {void} + */ + goToResourceAdd: function () { + this.$router.push({ + name: this.add_component, + }) + }, }, name: "BaseResource", + props: { + resource_name: String, + id_attr: String, + add_component: String, + edit_component: String, + }, } </script> diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementResource.vue index 5442eee1efb..a05a0f028f8 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementResource.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementResource.vue @@ -3,28 +3,18 @@ import BaseResource from "../BaseResource.vue" export default { extends: BaseResource, - setup() { + setup(props) { return { - ...BaseResource.setup(), + ...BaseResource.setup({ + resource_name: "agreement", + id_attr: "agreement_id", + add_component: "AgreementsFormAdd", + edit_component: "AgreementsFormAddEdit", + }), //AgreementResource specific setup here } }, - methods: { - /** - * Navigates to the edit page of the given agreement. - * - * @param {Object} agreement - The agreement to navigate to (optional) - * @return {void} - */ - goToResourceEdit: function (agreement) { - let agreement_id = - agreement?.agreement_id || this.agreement.agreement_id - this.$router.push({ - name: "AgreementsFormAddEdit", - params: { agreement_id: agreement_id }, - }) - }, - }, + methods: {}, name: "AgreementResource", } </script> diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsList.vue index eabfdd32702..a7ffea17ff7 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsList.vue @@ -4,7 +4,7 @@ <Toolbar v-if="!embedded"> <ToolbarButton action="add" - @addResource="add_agreement" + @go-to-add-resource="goToResourceAdd" :title="$__('New agreement')" /> </Toolbar> @@ -222,11 +222,6 @@ export default { }) }) }, - add_agreement: function () { - this.$router.push({ - name: "AgreementsFormAdd", - }) - }, doShow: function ({ agreement_id }, dt, event) { event.preventDefault() this.$router.push({ diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsShow.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsShow.vue index 0867e15bd03..36ed6d13e70 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsShow.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsShow.vue @@ -2,8 +2,14 @@ <div v-if="!initialized">{{ $__("Loading") }}</div> <div v-else id="agreements_show"> <Toolbar> - <ToolbarButton action="edit" @editResource="goToResourceEdit" /> - <ToolbarButton action="delete" @deleteResource="delete_agreement" /> + <ToolbarButton + action="edit" + @go-to-edit-resource="goToResourceEdit" + /> + <ToolbarButton + action="delete" + @delete_resource="delete_agreement" + /> </Toolbar> <h2> diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ToolbarButton.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ToolbarButton.vue index f74760d79c3..65019eacb2c 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ToolbarButton.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ToolbarButton.vue @@ -1,16 +1,19 @@ <template> - <a v-if="action === 'add'" @click="$emit('addResource')" class="btn btn-default" + <a + v-if="action === 'add'" + @click="$emit('go-to-add-resource')" + class="btn btn-default" ><font-awesome-icon icon="plus" /> {{ title }}</a > <a v-else-if="action === 'delete'" - @click="$emit('deleteResource')" + @click="$emit('delete-resource')" class="btn btn-default" ><font-awesome-icon icon="trash" /> {{ $__("Delete") }}</a > <a v-else-if="action === 'edit'" - @click="$emit('editResource')" + @click="$emit('go-to-edit-resource')" class="btn btn-default" ><font-awesome-icon icon="pencil" /> {{ $__("Edit") }}</a > @@ -35,7 +38,7 @@ export default { type: String, }, }, - emits: ["addResource", "deleteResource", "editResource"], + emits: ["go-to-add-resource", "go-to-edit-resource", "delete-resource"], name: "Toolbar", } </script> -- 2.39.5