From 6f9353641b90af99109a5c3ebd3593d6ba36d6b3 Mon Sep 17 00:00:00 2001
From: Pedro Amorim <pedro.amorim@ptfs-europe.com>
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
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
---
.../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 03c914bd866..9dea457fde7 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 639d8cf99fb..bd3887af534 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.25.1