Bugzilla – Attachment 180560 Details for
Bug 38262
Add additional fields to Vendors
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 38262: Update UI
Bug-38262-Update-UI.patch (text/plain), 11.30 KB, created by
Matt Blenkinsop
on 2025-04-03 13:59:50 UTC
(
hide
)
Description:
Bug 38262: Update UI
Filename:
MIME Type:
Creator:
Matt Blenkinsop
Created:
2025-04-03 13:59:50 UTC
Size:
11.30 KB
patch
obsolete
>From cee5d7514253ced501019d507bb074084d80c7f2 Mon Sep 17 00:00:00 2001 >From: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com> >Date: Tue, 29 Oct 2024 17:12:24 +0000 >Subject: [PATCH] Bug 38262: Update UI > >--- > .../en/modules/admin/additional-fields.tt | 3 +- > .../prog/js/fetch/acquisition-api-client.js | 2 +- > .../vue/components/Vendors/VendorFormAdd.vue | 12 +++ > .../js/vue/components/Vendors/VendorList.vue | 86 ++++++++++++++++++- > .../js/vue/components/Vendors/VendorShow.vue | 9 ++ > 5 files changed, 108 insertions(+), 4 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt >index 8b97922eb2a..698e8465317 100755 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt >@@ -30,7 +30,7 @@ > </head> > > [% marcfield_tables = ['subscription', 'aqorders'] %] >-[% searchable_tables = ['subscription', 'aqbasket', 'aqinvoices', 'erm_licenses', 'erm_agreements', 'erm_packages'] %] >+[% searchable_tables = ['subscription', 'aqbasket', 'aqinvoices', 'erm_licenses', 'erm_agreements', 'erm_packages', 'aqbooksellers'] %] > [% show_marcfield = marcfield_tables.grep('^' _ tablename _ '$').size ? 1 : 0 %] > [% show_searchable = searchable_tables.grep('^' _ tablename _ '$').size ? 1 : 0 %] > >@@ -130,6 +130,7 @@ > [% IF CAN_user_acquisition_order_manage %] > [% WRAPPER table_option value="aqbasket" %]<span>Order baskets</span>[% END %] > [% WRAPPER table_option value="aqorders" %]<span>Order lines</span>[% END %] >+ [% WRAPPER table_option value="aqbooksellers:vendor" %]<span>Vendors</span>[% END %] > [% END %] > </ul> > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/js/fetch/acquisition-api-client.js b/koha-tmpl/intranet-tmpl/prog/js/fetch/acquisition-api-client.js >index 0316beb3b33..7c7a8d7345c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/fetch/acquisition-api-client.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/fetch/acquisition-api-client.js >@@ -12,7 +12,7 @@ export class AcquisitionAPIClient { > endpoint: "vendors/" + id, > headers: { > "x-koha-embed": >- "aliases,subscriptions+count,interfaces,contacts,contracts,baskets", >+ "aliases,subscriptions+count,interfaces,contacts,contracts,baskets,extended_attributes,+strings", > }, > }), > getAll: (query, params) => >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorFormAdd.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorFormAdd.vue >index abfbb45e562..6fbe6d6fa24 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorFormAdd.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorFormAdd.vue >@@ -19,6 +19,11 @@ > <VendorContacts :vendor="vendor" /> > <VendorInterfaces :vendor="vendor" /> > <VendorOrderingInformation :vendor="vendor" /> >+ <AdditionalFieldsEntry >+ resource_type="vendor" >+ :additional_field_values="vendor.extended_attributes" >+ @additional-fields-changed="additionalFieldsChanged" >+ /> > </form> > </template> > </template> >@@ -33,6 +38,7 @@ import VendorOrderingInformation from "./VendorOrderingInformation.vue"; > import VendorInterfaces from "./VendorInterfaces.vue"; > import Toolbar from "../Toolbar.vue"; > import ToolbarButton from "../ToolbarButton.vue"; >+import AdditionalFieldsEntry from "../AdditionalFieldsEntry.vue"; > > export default { > data() { >@@ -66,6 +72,7 @@ export default { > aliases: [], > contacts: [], > interfaces: [], >+ extended_attributes: [], > }, > initialized: false, > }; >@@ -118,6 +125,7 @@ export default { > } > delete vendor.physical; > delete vendor.subscriptions_count; >+ delete vendor._strings; > > vendor.contacts = this.checkContactOrInterface( > vendor.contacts.map( >@@ -168,6 +176,9 @@ export default { > return acc; > }, []); > }, >+ additionalFieldsChanged(additionalFieldValues) { >+ this.vendor.extended_attributes = additionalFieldValues; >+ }, > }, > components: { > ButtonSubmit, >@@ -177,6 +188,7 @@ export default { > VendorInterfaces, > Toolbar, > ToolbarButton, >+ AdditionalFieldsEntry, > }, > name: "VendorFormAdd", > }; >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue >index 4ea2d7be2df..04bfdc7d3e0 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue >@@ -17,6 +17,8 @@ > @delete="doDelete" > @select="doSelect" > @receive="doReceive" >+ :searchable_additional_fields="searchable_additional_fields" >+ :searchable_av_options="searchable_av_options" > ></KohaTable> > </div> > <div v-else class="alert alert-info"> >@@ -64,10 +66,12 @@ export default { > vendor_count: 0, > initialized: false, > searchTerm: null, >+ searchable_av_options: [], >+ searchable_additional_fields: [], > tableOptions: { > columns: this.getTableColumns(), > options: { >- embed: "aliases,baskets,subscriptions+count,invoices", >+ embed: "aliases,baskets,subscriptions+count,invoices,extended_attributes,+strings", > }, > url: () => this.tableURL(), > add_filters: true, >@@ -118,7 +122,15 @@ export default { > }, > beforeRouteEnter(to, from, next) { > next(vm => { >- vm.getVendorCount().then(() => (vm.initialized = true)); >+ vm.getVendorCount().then(() => >+ vm >+ .getSearchableAdditionalFields() >+ .then(() => >+ vm >+ .getSearchableAVOptions() >+ .then(() => (vm.initialized = true)) >+ ) >+ ); > if (to.query.supplier) { > vm.searchTerm = to.query.supplier; > } >@@ -272,6 +284,76 @@ export default { > }, > ]; > }, >+ async getSearchableAdditionalFields() { >+ const client = APIClient.additional_fields; >+ await client.additional_fields.getAll("vendor").then( >+ searchable_additional_fields => { >+ this.searchable_additional_fields = >+ searchable_additional_fields.filter( >+ field => field.searchable >+ ); >+ }, >+ error => {} >+ ); >+ }, >+ async getSearchableAVOptions() { >+ const client_av = APIClient.authorised_values; >+ let av_cat_array = this.searchable_additional_fields >+ .filter(field => field.authorised_value_category_name) >+ .map(field => field.authorised_value_category_name); >+ >+ await client_av.values >+ .getCategoriesWithValues([ >+ ...new Set(av_cat_array.map(av_cat => '"' + av_cat + '"')), >+ ]) // unique >+ .then(av_categories => { >+ av_cat_array.forEach(av_cat => { >+ let av_match = av_categories.find( >+ element => element.category_name == av_cat >+ ); >+ this.searchable_av_options[av_cat] = >+ av_match.authorised_values.map(av => ({ >+ value: av.value, >+ label: av.description, >+ })); >+ }); >+ }); >+ }, >+ async getSearchableAdditionalFields() { >+ const client = APIClient.additional_fields; >+ await client.additional_fields.getAll("vendor").then( >+ searchable_additional_fields => { >+ this.searchable_additional_fields = >+ searchable_additional_fields.filter( >+ field => field.searchable >+ ); >+ }, >+ error => {} >+ ); >+ }, >+ async getSearchableAVOptions() { >+ const client_av = APIClient.authorised_values; >+ let av_cat_array = this.searchable_additional_fields >+ .filter(field => field.authorised_value_category_name) >+ .map(field => field.authorised_value_category_name); >+ >+ await client_av.values >+ .getCategoriesWithValues([ >+ ...new Set(av_cat_array.map(av_cat => '"' + av_cat + '"')), >+ ]) // unique >+ .then(av_categories => { >+ av_cat_array.forEach(av_cat => { >+ let av_match = av_categories.find( >+ element => element.category_name == av_cat >+ ); >+ this.searchable_av_options[av_cat] = >+ av_match.authorised_values.map(av => ({ >+ value: av.value, >+ label: av.description, >+ })); >+ }); >+ }); >+ }, > }, > components: { flatPickr, Toolbar, ToolbarButton, KohaTable }, > name: "VendorList", >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue >index e0114e8b137..34ff9bf2e3e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue >@@ -77,6 +77,13 @@ > <div class="col-sm-6"> > <VendorContacts :vendor="vendor" :display="true" /> > <VendorSubscriptions :vendor="vendor" /> >+ <AdditionalFieldsDisplay >+ v-if="vendor._strings" >+ resource_type="vendor" >+ :additional_field_values=" >+ vendor._strings.additional_field_values >+ " >+ /> > </div> > </div> > <div >@@ -100,6 +107,7 @@ import VendorContacts from "./VendorContacts.vue"; > import VendorSubscriptions from "./VendorSubscriptions.vue"; > import VendorContracts from "./VendorContracts.vue"; > import DropdownButtons from "../DropdownButtons.vue"; >+import AdditionalFieldsDisplay from "../AdditionalFieldsDisplay.vue"; > > export default { > setup() { >@@ -172,6 +180,7 @@ export default { > VendorContacts, > VendorSubscriptions, > VendorContracts, >+ AdditionalFieldsDisplay, > DropdownButtons, > }, > name: "VendorShow", >-- >2.48.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 38262
:
175147
|
175148
|
175149
|
175712
|
175713
|
175714
|
180558
|
180559
|
180560
|
182602
|
182603
|
182604