From b2dc4e6d9ae527137fede930d151e8f84f028c8d Mon Sep 17 00:00:00 2001 From: Pedro Amorim Date: Thu, 23 Feb 2023 12:28:18 +0000 Subject: [PATCH] Bug 32983: Use REST API route to retrieve authorised values Make one API call for all AV categories+values instead of one API call per AV category required --- .../prog/js/vue/components/ERM/Main.vue | 19 ++++++++++--------- .../prog/js/vue/fetch/authorised-values.js | 12 ++++++++---- 2 files changed, 18 insertions(+), 13 deletions(-) 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 03c914bd86..9dea457fde 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 @@ -181,15 +181,16 @@ export default { av_package_content_types: "ERM_PACKAGE_CONTENT_TYPE", av_title_publication_types: "ERM_TITLE_PUBLICATION_TYPE", } - let promises = [] - Object.entries(authorised_values).forEach(([av_var, av_cat]) => { - promises.push( - av_client.values.getAll(av_cat).then(av => { - this.AVStore[av_var] = av - }) - ) - }) - Promise.all(promises).then(() => (this.mainStore.is_loading = false)) + + let av_cat_array = Object.keys(authorised_values).map(function(av_cat){return "\""+authorised_values[av_cat]+"\""}); + + av_client.values.getCategoriesWithValues(av_cat_array).then(av_categories => { + Object.entries(authorised_values).forEach(([av_var, av_cat]) => { + const av_match = av_categories.find(element => element.category_name == av_cat); + this.AVStore[av_var] = av_match.authorised_values; + + }) + }).then(() => (this.mainStore.is_loading = false)); }, components: { Breadcrumb, diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js index 639d8cf99f..bd3887af53 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js @@ -3,16 +3,20 @@ import HttpClient from "./http-client"; export class AVAPIClient extends HttpClient { constructor() { super({ - baseURL: "/api/v1/authorised_value_categories/", + baseURL: "/api/v1/authorised_value_categories", }); } get values() { return { - getAll: (category_name, query) => + getCategoriesWithValues: (cat_array) => this.get({ - endpoint: category_name + "/values?" + (query || "_per_page=-1"), - }), + endpoint: "?q={\"me.category_name\":["+(cat_array.join(", "))+"]}", + headers: { + "x-koha-embed": + "authorised_values", + }, + }), }; } } -- 2.30.2