From decd0980a482f9ffe49521b3282652aaa209e0db Mon Sep 17 00:00:00 2001 From: Pedro Amorim Date: Wed, 19 Nov 2025 17:29:42 +0000 Subject: [PATCH] Bug 41275: Drop vendor in favor of relationshipSelect This is only a PoC for AgreementResource. More are needed. Type = 'vendor' was a measure taken at the time to solve the issue immediatelly, but we have since abstracted 'simple' relationships to use relationshipSelect and there's no reason to continue using type: 'vendor'. The thing I'd like comments on here is that an API call is done by relationshipSelect, whereas before the vendors were coming from the vendorStore loaded in ERM. AFAIK, this vendorStore load in ERM is still required to populate the 'vendor' table column filter options. Thoughts? --- .../vue/components/ERM/AgreementResource.vue | 5 ++- .../prog/js/vue/components/FormElement.vue | 9 ---- .../js/vue/components/FormSelectVendors.vue | 45 ------------------- .../prog/js/vue/components/ResourceList.vue | 18 -------- .../prog/js/vue/composables/base-element.js | 3 -- 5 files changed, 4 insertions(+), 76 deletions(-) delete mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/FormSelectVendors.vue 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 a1075e8a866..a31f208a545 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 @@ -108,7 +108,7 @@ export default { }, { name: "vendor_id", - type: "vendor", + type: "relationshipSelect", label: $__("Vendor"), showElement: { type: "text", @@ -118,6 +118,9 @@ export default { slug: "vendor_id", }, }, + relationshipAPIClient: APIClient.acquisition.vendors, + relationshipOptionLabelAttr: "name", + relationshipRequiredKey: "id", }, { name: "description", diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormElement.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormElement.vue index fbdec2a7648..22fa86ba39e 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormElement.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormElement.vue @@ -122,15 +122,6 @@ - - - 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 636857763df..62c366ed3e6 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ResourceList.vue @@ -159,24 +159,6 @@ export default { }); return acc; } - if (attr.type === "vendor") { - acc.push({ - title: attr.label, - data: attr.name, - searchable: true, - orderable: true, - render: function (data, type, row, meta) { - return row.vendor_id != undefined - ? '' + - escape_str(row.vendor.name) + - "" - : ""; - }, - }); - return acc; - } if (attr.type === "relationshipSelect") { acc.push({ title: attr.label, diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/composables/base-element.js b/koha-tmpl/intranet-tmpl/prog/js/vue/composables/base-element.js index b54eb0fdd8f..8657d10386c 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/composables/base-element.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/composables/base-element.js @@ -10,9 +10,6 @@ export function useBaseElement(instancedElement) { if (attr.type === "date") { attr.componentPath = "@koha-vue/components/FlatPickrWrapper.vue"; } - if (attr.type === "vendor") { - attr.componentPath = "@koha-vue/components/FormSelectVendors.vue"; - } if (attr.type === "relationshipWidget") { attr.componentPath = "@koha-vue/components/RelationshipWidget.vue"; } -- 2.39.5