From 5725ecf3f69a4e89ad8eac39ee11e9ad0f78cf20 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 31 Jul 2025 15:43:36 +0200 Subject: [PATCH] Bug 38311: Add dropdown list to column filters linked to an AV - Vue components --- .../js/vue/components/ERM/AgreementResource.vue | 15 +++++++-------- .../ERM/EHoldingsEBSCOPackageTitlesList.vue | 3 ++- .../components/ERM/EHoldingsEBSCOTitlesList.vue | 3 ++- .../ERM/EHoldingsLocalPackageResource.vue | 7 ++++--- .../ERM/EHoldingsLocalTitleResource.vue | 2 +- .../js/vue/components/ERM/LicenseResource.vue | 7 ++++--- .../prog/js/vue/components/ResourceList.vue | 13 ++++++++++++- .../js/vue/components/Vendors/VendorResource.vue | 5 +++-- 8 files changed, 35 insertions(+), 20 deletions(-) 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 e3b26a33094..3cad8066da3 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 @@ -658,23 +658,22 @@ export default { table_settings: agreement_table_settings, add_filters: true, filters_options: { - 2: [ + vendor_id: [ ...vendors.value.map(e => { e["_id"] = e["id"]; e["_str"] = e["name"]; return e; }), ], - 4: () => baseResource.map_av_dt_filter("av_agreement_statuses"), - 5: () => - baseResource.map_av_dt_filter( - "av_agreement_closure_reasons" - ), - 6: [ + status: baseResource.map_av_dt_filter("av_agreement_statuses"), + closure_reason: baseResource.map_av_dt_filter( + "av_agreement_closure_reasons" + ), + is_perpetual: [ { _id: 0, _str: $__("No") }, { _id: 1, _str: $__("Yes") }, ], - 7: () => + renewal_priority: () => baseResource.map_av_dt_filter( "av_agreement_renewal_priorities" ), diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOPackageTitlesList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOPackageTitlesList.vue index 38d4cd07a7c..d67efbc6753 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOPackageTitlesList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOPackageTitlesList.vue @@ -154,7 +154,8 @@ export default { ], }, filters_options: { - 1: () => map_av_dt_filter("av_title_publication_types"), + publication_type: () => + map_av_dt_filter("av_title_publication_types"), }, actions: { 0: ["show"] }, default_filters: { diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOTitlesList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOTitlesList.vue index b34d89e0a48..20903161d7a 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOTitlesList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOTitlesList.vue @@ -186,7 +186,8 @@ export default { ], }, filters_options: { - 1: () => map_av_dt_filter("av_title_publication_types"), + publication_type: () => + map_av_dt_filter("av_title_publication_types"), }, actions: { 0: ["show"] }, default_filters: { diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue index c146d1d8bce..54e10e123bc 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue @@ -193,15 +193,16 @@ export default { table_settings: eholdings_packages_table_settings, add_filters: true, filters_options: { - 1: [ + vendor_id: [ ...vendors.value.map(e => { e["_id"] = e["id"]; e["_str"] = e["name"]; return e; }), ], - 2: () => baseResource.map_av_dt_filter("av_package_types"), - 3: () => + package_type: () => + baseResource.map_av_dt_filter("av_package_types"), + content_type: () => baseResource.map_av_dt_filter("av_package_content_types"), }, actions: { diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue index 11b0caa0452..8910b114ddf 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue @@ -451,7 +451,7 @@ export default { table_settings: eholdings_titles_table_settings, add_filters: true, filters_options: { - 3: () => + publication_type: () => baseResource.map_av_dt_filter("av_title_publication_types"), }, actions: { diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue index f21b4523aec..766562e7b2d 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue @@ -295,15 +295,16 @@ export default { table_settings: license_table_settings, add_filters: true, filters_options: { - 2: [ + vendor_id: [ ...vendors.value.map(e => { e["_id"] = e["id"]; e["_str"] = e["name"]; return e; }), ], - 4: () => baseResource.map_av_dt_filter("av_license_types"), - 5: () => baseResource.map_av_dt_filter("av_license_statuses"), + type: () => baseResource.map_av_dt_filter("av_license_types"), + status: () => + baseResource.map_av_dt_filter("av_license_statuses"), }, actions: { "-1": ["edit", "delete"], diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue index 705c26dfd17..8970383385e 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue @@ -246,9 +246,20 @@ export default { const tableOptionsWithColumns = computed(() => { props.instancedResource.tableOptions.columns = getTableColumns( props.instancedResource.resourceAttrs - ); + ).map(col => { + const filterOptions = + props.instancedResource.tableOptions.filters_options; + const filterRequired = Object.keys(filterOptions).includes( + col.data + ); + if (filterRequired) { + col.dataFilter = col.data; + } + return col; + }); return props.instancedResource.tableOptions; }); + const tableEventList = computed(() => { const actionButtons = props.instancedResource.tableOptions.actions[ "-1" diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue index a87ce3a1b7d..096f7f4a1e9 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue @@ -679,9 +679,10 @@ export default { add_filters: true, filters_options: { ...(baseResource.map_av_dt_filter("av_vendor_types").length && { - 2: () => baseResource.map_av_dt_filter("av_vendor_types"), + type: () => + baseResource.map_av_dt_filter("av_vendor_types"), }), - 3: [ + active: [ { _id: 0, _str: $__("Inactive") }, { _id: 1, _str: $__("Active") }, ], -- 2.34.1