From: Lebbeous Fogle-Weekley Date: Fri, 26 Apr 2013 20:58:33 +0000 (-0400) Subject: Return fields where terms used, also return multiple authorities X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=f224dc1b8caa7dddc13c2cf88c33c80a8bfce9e8;p=evergreen%2Fequinox.git Return fields where terms used, also return multiple authorities Signed-off-by: Lebbeous Fogle-Weekley --- diff --git a/Open-ILS/src/sql/Pg/upgrade/YYYY.schema.bib-auth-browse.sql b/Open-ILS/src/sql/Pg/upgrade/YYYY.schema.bib-auth-browse.sql index 5e6fa8b986..fbbe7bfc9a 100644 --- a/Open-ILS/src/sql/Pg/upgrade/YYYY.schema.bib-auth-browse.sql +++ b/Open-ILS/src/sql/Pg/upgrade/YYYY.schema.bib-auth-browse.sql @@ -6915,10 +6915,12 @@ CREATE INDEX CONCURRENTLY browse_entry_sort_value_idx -- CREATE INDEX CONCURRENTLY browse_entry_sort_value_idx_desc -- ON metabib.browse_entry USING BTREE (sort_value DESC); -CREATE TYPE metabib.slim_browse_entry AS ( +CREATE TYPE metabib.flat_browse_entry_appearance AS ( browse_entry BIGINT, value TEXT, - authority BIGINT + fields TEXT, + authorities TEXT, + sources INT ); @@ -7004,7 +7006,7 @@ CREATE OR REPLACE FUNCTION metabib.browse( context_loc_group INT DEFAULT NULL, result_limit INT DEFAULT 10, result_offset INT DEFAULT 0 -- Can be negative! -) RETURNS SETOF metabib.slim_browse_entry AS $p$ +) RETURNS SETOF metabib.flat_browse_entry_appearance AS $p$ DECLARE joins TEXT; where_clause TEXT; @@ -7012,7 +7014,7 @@ DECLARE result_query TEXT; pivot_sort_value TEXT; f RECORD; - r metabib.slim_browse_entry%ROWTYPE; + r metabib.flat_browse_entry_appearance%ROWTYPE; use_offset INT; BEGIN pivot_sort_value := metabib.browse_pivot( @@ -7031,7 +7033,17 @@ BEGIN where_clause := joins_and_where[2]; result_query := - 'SELECT mbe.id, mbe.value, mbedm.authority, mbe.sort_value + 'SELECT mbe.id, mbe.value, mbe.sort_value, + ARRAY_TO_STRING( + (SELECT ARRAY_AGG(field) FROM ( + SELECT DISTINCT UNNEST(ARRAY_AGG(mbedm.def)) AS field + ) y), + $$,$$ + ) AS fields, + ARRAY_TO_STRING(ARRAY_AGG(mbedm.authority), $$,$$) AS authorities, + (SELECT COUNT(source) FROM ( + SELECT DISTINCT UNNEST(ARRAY_AGG(mbedm.source)) AS source + ) x) sources FROM metabib.browse_entry mbe ' || joins || 'WHERE ' || where_clause; @@ -7041,12 +7053,12 @@ BEGIN use_offset := result_offset; result_query := result_query || ' mbe.sort_value >= ' || quote_literal(pivot_sort_value) || - ' GROUP BY 1,2,3,4 ORDER BY mbe.sort_value '; + ' GROUP BY 1,2,3 ORDER BY mbe.sort_value '; ELSE -- Step 1 of 2 to deliver what the user wants with a negative offset: result_query := result_query || ' mbe.sort_value < ' || quote_literal(pivot_sort_value) || - ' GROUP BY 1,2,3,4 ORDER BY mbe.sort_value DESC '; + ' GROUP BY 1,2,3 ORDER BY mbe.sort_value DESC '; use_offset := ABS(result_offset) - result_limit; IF use_offset < 0 THEN @@ -7072,7 +7084,9 @@ BEGIN FOR f IN EXECUTE result_query LOOP r.browse_entry := f.id; r.value := f.value; - r.authority := f.authority; + r.fields := f.fields; + r.authorities := f.authorities; + r.sources := f.sources; RETURN NEXT r; END LOOP; @@ -7086,7 +7100,7 @@ CREATE OR REPLACE FUNCTION metabib.browse( context_loc_group INT DEFAULT NULL, result_limit INT DEFAULT 10, result_offset INT DEFAULT 0 -- Can be negative! -) RETURNS SETOF metabib.slim_browse_entry AS $p$ +) RETURNS SETOF metabib.flat_browse_entry_appearance AS $p$ BEGIN RETURN QUERY SELECT * FROM metabib.browse( (SELECT COALESCE(ARRAY_AGG(id), ARRAY[]::INT[]) diff --git a/Open-ILS/src/templates/opac/browse.tt2 b/Open-ILS/src/templates/opac/browse.tt2 index 04655f9549..5543d54f57 100644 --- a/Open-ILS/src/templates/opac/browse.tt2 +++ b/Open-ILS/src/templates/opac/browse.tt2 @@ -11,7 +11,7 @@ %]
- [%# XXX TODO Give searchbar smarts so we can just do: + [%# XXX TODO Give searchbar.tt2 more smarts so we can just do: # INCLUDE "opac/parts/searchbar.tt2" %]
[% l('Search the Catalog') %] @@ -77,7 +77,10 @@ [% ELSE %] [% FOR result IN ctx.browse_results %] - [% result.value | html %]
+
+ [% result.value | html %] + ([% result.sources %]) +
[% END %] [% END %]