Bugzilla – Attachment 149415 Details for
Bug 33480
Improve display of the vendor aliases in the ERM module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33480: Improve vendor aliases display in dropdown list
Bug-33480-Improve-vendor-aliases-display-in-dropdo.patch (text/plain), 11.72 KB, created by
Jonathan Druart
on 2023-04-11 09:10:07 UTC
(
hide
)
Description:
Bug 33480: Improve vendor aliases display in dropdown list
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2023-04-11 09:10:07 UTC
Size:
11.72 KB
patch
obsolete
>From d5d03dc6705a17fe3f3542370881efaa5ab91ab0 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Tue, 11 Apr 2023 11:05:07 +0200 >Subject: [PATCH] Bug 33480: Improve vendor aliases display in dropdown list > >On bug 33103 we are adding the ability to filter vendors by aliases. >To make it possible in the ERM module we are adding the alias list in >the dropdown list. However it's not nicely displayed, especially if >there are several entries. > >This patch suggests to display the aliases in a different line, and not >for the selected option. > >To acchieve that we create a new Vue component FormSelectVendors. > >Test plan: >Create several vendors, and add some aliases to them (keep one vendor >without alias) >Go to the ERM module go to the following page, search for vendors by >aliases, save the form, and confirm that everything is nice and works >correctly: >* Add/edit an agreement >* Add/edit a license >* Add/edit a local package >* Add a new package to a title (edit a title) >--- > .../vue/components/ERM/AgreementsFormAdd.vue | 11 ++--- > .../ERM/EHoldingsLocalPackagesFormAdd.vue | 10 ++-- > .../EHoldingsLocalTitlesFormAddResources.vue | 16 ++----- > .../js/vue/components/ERM/LicensesFormAdd.vue | 11 ++--- > .../prog/js/vue/components/ERM/Main.vue | 11 +---- > .../js/vue/components/FormSelectVendors.vue | 47 +++++++++++++++++++ > 6 files changed, 61 insertions(+), 45 deletions(-) > create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/FormSelectVendors.vue > >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue >index 3e2492d2c33..5d892b4b1c6 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue >@@ -28,12 +28,9 @@ > <label for="agreement_vendor_id" > >{{ $__("Vendor") }}:</label > > >- <v-select >+ <FormSelectVendors > id="agreement_vendor_id" > v-model="agreement.vendor_id" >- label="display_name" >- :reduce="vendor => vendor.id" >- :options="vendors" > /> > </li> > <li> >@@ -186,15 +183,13 @@ import AgreementLicenses from "./AgreementLicenses.vue" > import AgreementRelationships from "./AgreementRelationships.vue" > import Documents from "./Documents.vue" > import ButtonSubmit from "../ButtonSubmit.vue" >+import FormSelectVendors from "../FormSelectVendors.vue" > import { setMessage, setError, setWarning } from "../../messages" > import { APIClient } from "../../fetch/api-client.js" > import { storeToRefs } from "pinia" > > export default { > setup() { >- const vendorStore = inject("vendorStore") >- const { vendors } = storeToRefs(vendorStore) >- > const AVStore = inject("AVStore") > const { > av_agreement_statuses, >@@ -207,7 +202,6 @@ export default { > } = storeToRefs(AVStore) > > return { >- vendors, > av_agreement_statuses, > av_agreement_closure_reasons, > av_agreement_renewal_priorities, >@@ -403,6 +397,7 @@ export default { > AgreementRelationships, > Documents, > ButtonSubmit, >+ FormSelectVendors, > }, > name: "AgreementsFormAdd", > } >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackagesFormAdd.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackagesFormAdd.vue >index 1aa1f9754cc..b3ec88ff00b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackagesFormAdd.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackagesFormAdd.vue >@@ -25,12 +25,9 @@ > <label for="package_vendor_id" > >{{ $__("Vendor") }}:</label > > >- <v-select >+ <FormSelectVendors > id="package_vendor_id" > v-model="erm_package.vendor_id" >- label="display_name" >- :reduce="vendor => vendor.id" >- :options="vendors" > /> > </li> > <li> >@@ -87,20 +84,18 @@ > <script> > import { inject } from "vue" > import EHoldingsPackageAgreements from "./EHoldingsLocalPackageAgreements.vue" >+import FormSelectVendors from "../FormSelectVendors.vue" > import { setMessage, setError, setWarning } from "../../messages" > import { APIClient } from "../../fetch/api-client.js" > import { storeToRefs } from "pinia" > > export default { > setup() { >- const vendorStore = inject("vendorStore") >- const { vendors } = storeToRefs(vendorStore) > const AVStore = inject("AVStore") > const { av_package_types, av_package_content_types } = > storeToRefs(AVStore) > > return { >- vendors, > av_package_types, > av_package_content_types, > } >@@ -205,6 +200,7 @@ export default { > }, > components: { > EHoldingsPackageAgreements, >+ FormSelectVendors, > }, > name: "EHoldingsEBSCOPackagesFormAdd", > } >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormAddResources.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormAddResources.vue >index badeeee673a..3ab53bf77ce 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormAddResources.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormAddResources.vue >@@ -43,12 +43,9 @@ > <label :for="`resource_vendor_id_${counter}`" > >{{ $__("Vendor") }}:</label > > >- <v-select >+ <FormSelectVendors > :id="`resource_vendor_id_${counter}`" > v-model="resource.vendor_id" >- label="display_name" >- :reduce="vendor => vendor.id" >- :options="vendors" > /> > </li> > >@@ -92,17 +89,12 @@ > </template> > > <script> >-import { inject } from "vue" > import flatPickr from "vue-flatpickr-component" >-import { storeToRefs } from "pinia" > import { APIClient } from "../../fetch/api-client.js" >+import FormSelectVendors from "../FormSelectVendors.vue" > > export default { >- setup() { >- const vendorStore = inject("vendorStore") >- const { vendors } = storeToRefs(vendorStore) >- return { vendors } >- }, >+ setup() {}, > data() { > return { > packages: [], >@@ -136,7 +128,7 @@ export default { > props: { > resources: Array, > }, >- components: { flatPickr }, >+ components: { flatPickr, FormSelectVendors }, > name: "EHoldingsLocalTitlesFormAddResources", > } > </script> >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesFormAdd.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesFormAdd.vue >index 611b3ac9579..40b5062f5d9 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesFormAdd.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesFormAdd.vue >@@ -28,12 +28,9 @@ > <label for="license_vendor_id" > >{{ $__("Vendor") }}:</label > > >- <v-select >+ <FormSelectVendors > id="license_vendor_id" > v-model="license.vendor_id" >- label="display_name" >- :reduce="vendor => vendor.id" >- :options="vendors" > /> > </li> > <li> >@@ -151,21 +148,18 @@ import { inject } from "vue" > import flatPickr from "vue-flatpickr-component" > import UserRoles from "./UserRoles.vue" > import Documents from "./Documents.vue" >+import FormSelectVendors from "../FormSelectVendors.vue" > import { setMessage, setWarning } from "../../messages" > import { APIClient } from "../../fetch/api-client.js" > import { storeToRefs } from "pinia" > > export default { > setup() { >- const vendorStore = inject("vendorStore") >- const { vendors } = storeToRefs(vendorStore) >- > const AVStore = inject("AVStore") > const { av_license_types, av_license_statuses, av_user_roles } = > storeToRefs(AVStore) > > return { >- vendors, > av_license_types, > av_license_statuses, > av_user_roles, >@@ -285,6 +279,7 @@ export default { > flatPickr, > UserRoles, > Documents, >+ FormSelectVendors, > }, > name: "LicensesFormAdd", > } >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue >index f156b2861c5..fe65f2188c2 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue >@@ -165,16 +165,7 @@ export default { > const acq_client = APIClient.acquisition > acq_client.vendors.getAll().then( > vendors => { >- this.vendorStore.vendors = vendors.map(v => ({ >- ...v, >- display_name: >- v.name + >- (v.aliases.length > 0 >- ? " (" + >- v.aliases.map(a => a.alias).join(", ") + >- ")" >- : ""), >- })) >+ this.vendorStore.vendors = vendors > }, > error => {} > ) >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormSelectVendors.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormSelectVendors.vue >new file mode 100644 >index 00000000000..fe6db5a1026 >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormSelectVendors.vue >@@ -0,0 +1,47 @@ >+<template> >+ <v-select >+ label="name" >+ :reduce="vendor => vendor.id" >+ :options="vendorOptions" >+ :filter-by="filterVendors" >+ > >+ <template v-slot:option="v"> >+ {{ v.name }} >+ <br /> >+ <cite>{{ v.aliases.map(a => a.alias).join(", ") }}</cite> >+ </template> >+ </v-select> >+</template> >+ >+<script> >+import { inject } from "vue" >+import { storeToRefs } from "pinia" >+export default { >+ setup() { >+ const vendorStore = inject("vendorStore") >+ const { vendors } = storeToRefs(vendorStore) >+ return { vendors } >+ }, >+ computed: { >+ vendorOptions() { >+ return this.vendors.map(v => ({ >+ ...v, >+ full_search: >+ v.name + >+ (v.aliases.length > 0 >+ ? " (" + v.aliases.map(a => a.alias).join(", ") + ")" >+ : ""), >+ })) >+ }, >+ }, >+ methods: { >+ filterVendors(vendor, label, search) { >+ return ( >+ (vendor.full_search || "") >+ .toLocaleLowerCase() >+ .indexOf(search.toLocaleLowerCase()) > -1 >+ ) >+ }, >+ }, >+} >+</script> >-- >2.25.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 33480
:
149415
|
149416
|
149418
|
154936
|
154937
|
154942
|
154943
|
155277