From be28447afd883739359873755201aa75e134ae04 Mon Sep 17 00:00:00 2001 From: Matt Blenkinsop Date: Wed, 29 Jan 2025 12:58:19 +0000 Subject: [PATCH] Bug 38201: Migrate AgreementRelationships to RelationshipWidget Signed-off-by: Michaela Sieber Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass --- .../prog/js/vue/components/BaseElement.vue | 26 ++++ .../components/ERM/AgreementRelationships.vue | 143 ------------------ .../vue/components/ERM/AgreementResource.vue | 44 ++++-- .../prog/js/vue/components/FormElement.vue | 6 +- .../js/vue/components/RelationshipWidget.vue | 23 ++- .../js/vue/components/ResourceFormAdd.vue | 6 +- 6 files changed, 83 insertions(+), 165 deletions(-) delete mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementRelationships.vue diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseElement.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseElement.vue index 814767d270..6b975457a6 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseElement.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/BaseElement.vue @@ -62,6 +62,32 @@ export default { const currentValue = acc[key]; acc[key] = !!currentValue; } + + if (prop.type === "filter") { + Object.keys(prop.keys).forEach(k => { + if ( + prop.keys[k].hasOwnProperty("filterType") && + prop.keys[k].filterType + ) { + acc[key] = { + [k]: { + [prop.keys[k].filterType]: + this.accessNestedProperty( + prop.keys[k].property, + this.resource + ), + }, + }; + } else { + acc[key] = { + [k]: this.accessNestedProperty( + prop.keys[k].property, + this.resource + ), + }; + } + }); + } return acc; }, {}); const attr = show ? this.attr.showElement : this.attr; diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementRelationships.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementRelationships.vue deleted file mode 100644 index 127ab65380..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementRelationships.vue +++ /dev/null @@ -1,143 +0,0 @@ - - - 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 0b762abaa3..6e60938471 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 @@ -233,7 +233,7 @@ export default { }, { name: "periods", - type: "relationship", + type: "relationshipWidget", showElement: { type: "table", columnData: "periods", @@ -418,7 +418,7 @@ export default { }, { name: "licenses", - type: "relationship", + type: "relationshipWidget", label: __("Licenses"), showElement: { type: "table", @@ -541,8 +541,8 @@ export default { }, { name: "relationships", - type: "relationship", - componentPath: "./ERM/AgreementRelationships.vue", + type: "relationshipWidget", + label: __("Relationships"), showElement: { type: "component", hidden: agreement => @@ -556,19 +556,37 @@ export default { }, }, }, + apiClient: APIClient.erm.agreements, props: { - agreement_id: { - type: "resourceProperty", - resourceProperty: "agreement_id", + newRelationship: { + type: "object", + value: { + related_agreement_id: null, + relationship: null, + notes: "", + }, }, - av_agreement_relationships: { - type: "av", - av: null, - }, - relationships: { + resourceRelationships: { type: "resourceProperty", resourceProperty: "agreement_relationships", }, + resourceName: { + type: "string", + value: "relationship", + }, + filters: { + type: "filter", + keys: { + "me.agreement_id": { + property: "agreement_id", + filterType: "!=", + }, + }, + }, + fetchOptions: { + type: "boolean", + value: true, + }, }, subFields: [ { @@ -577,12 +595,14 @@ export default { label: __("Related agreement"), requiredKey: "agreement_id", selectLabel: "name", + required: true, }, { name: "relationship", type: "select", label: __("Relationship"), avCat: "av_agreement_relationships", + required: true, }, { name: "notes", 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 7704658b87..fd78f2b56a 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormElement.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/FormElement.vue @@ -122,11 +122,7 @@ v-on="getEventHandlers()" > -