Composite Record Attributes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Evergreen |
Fix Released
|
Wishlist
|
Unassigned |
Bug Description
This follows on from the new Multi-Valued Record Attributes work ( https:/
In Evergreen, the administrator has the ability to define Record Attributes for use as filters and sorters. However, each field is defined separately, and there is no way to specify a combination of values in a single search filter. Because of this, one cannot create a single dynamic user interface component that uses more than one Record Attribute for filtering.
Likewise, even though combinations of Record Attribute Values can be evaluated within custom TPAC code, there is not centralized mechanism for defining and examining calculated or derived states or attributes of a bibliographic record, making custom UI behavior significantly more difficult to design and implement, as well as brittle and upgrade-resistant.
Overview
-------------
ESI will create an abstraction on top of the Record Attribute infrastructure to allow the aggregation of multiple, cross-Attribute values under a single search filter value, accessible through new, dynamic filters.
Each QueryParser filter will be created by the addition of a Composite Record Attribute Definition. For instance, one may wish to create a Composite Record Attribute Definition for an abstract "Item Type" interface component that uses information from the item_type, vr_format, bib_level and item_form Record Attribute Definitions, with each Composite Record Attribute Value having a different combination of Record Attribute Values from some or all of these Record Attribute Definitions. In this way, as single interface component might be presented as a dropdown with options such as "All Books", "All video recordings", "DVDs", "VHS Tapes", "E-Books", "Audio Books" and "Large Print Books". Of particular note are the "DVDs" and "VHS Tapes" entries, which include information from Record Attribute Definitions completely separate from the others. Additionally, the Composite Record Attribute Values defined by this Composite Record Attribute Definition can be used to drive behavioral logic, such as alternate icon display or link generation, in upgrade-friendly template adjustments.
Plan
------
This feature set will require UI, Database and QueryParser work to accomplish, with seed data work to implement examples.
Two new data structures are required: Composite Record Attribute Definition, which will record the filter name for use in queries and a translatable label for display in the OPAC and elsewhere, and group Composite Record Attributes together; Composite Record Attribute Values, which will record the new coded values to represent a combination of Record Attribute Values, a translatable label for display in interfaces, and a mapping table to aggregate entries in the Code Value Map under the Composite Record Attribute Value. The Composite Record Attribute Definition filter name must be unique with respect to both other Composite Record Attribute Definitions and existing Record Attribute Definitions. The derived values mapped from Composite Record Attribute Values will be stored in the record attribute table along side existing Record Attribute Values.
QueryParser will be modified to accept Composite Record Attribute Definitions as initial setup data. These will be interpreted in a way similar to Record Attribute Definitions, and will look like standard QP filter syntax elements for user input. When generating SQL, the Composite Record Attribute Values will be searched in exactly the same way as Record Attribute Values.
The seed data will ship a basic replacement for the record format filter implemented as an Composite Record Attribute Definition, and the TPAC will be given the ability to use this instead of the hard-coded version available today.
This work is also intended to support improved Metarecord Hold functionality by providing a configurable "format" selection set for use by MR hold users.
Changed in evergreen: | |
milestone: | none → 2.6.0-alpha1 |
Changed in evergreen: | |
milestone: | 2.6.0-alpha1 → 2.6.0-beta1 |
Changed in evergreen: | |
status: | New → Triaged |
Changed in evergreen: | |
status: | Triaged → Fix Committed |
Changed in evergreen: | |
status: | Fix Committed → Fix Released |
I can haz composite attributes!
You'll find the code, sans the "icon project" seed data that is still being defined, linked below. This is an official pullrequest, but merging can wait until the icon selector attribute defs are available, assuming that happens soon.
http:// git.evergreen- ils.org/ ?p=working/ Evergreen. git;a=shortlog; h=refs/ heads/user/ miker/composite -record- attributes