From 62d4eddc4a9ee606c62ddc7e92947aef366c03cc 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 | 2 +- .../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, 34 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 52ac14d708a..4f9e51e4a26 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 @@ -653,23 +653,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 ff9139d44a2..aaf71f7f29f 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,7 @@ export default { ], }, filters_options: { - 1: () => + publication_type: () => map_av_dt_filter( "authorisedValues.av_title_publication_types" ), 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 60c8bfd5da4..859430673e5 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 4f806832c36..8263e9ed0ee 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 @@ -450,7 +450,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 599df4e3ca5..e92c5d433f4 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 @@ -292,15 +292,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: { 0: ["show"], 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 63f09bd11d2..6eb2b86b3c1 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue @@ -235,9 +235,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 1920aba79ed..334281daf69 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 @@ -665,9 +665,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