LP#1849212 OPAC search course reserves facet user/zbanks/lp1849212-OPAC-search-course-reserves-facet
authorZavier Banks <zbanks@catalyte.io>
Tue, 26 Nov 2019 22:02:26 +0000 (22:02 +0000)
committerZavier Banks <zbanks@catalyte.io>
Tue, 26 Nov 2019 22:02:26 +0000 (22:02 +0000)
I completed my take on filtering for the course
materials. Adding in a facet that allows the user to
toggle, on and off, the course materials filter
mechanic.

Signed-off-by: Zavier Banks <zbanks@catalyte.io>
Open-ILS/src/templates/opac/parts/advanced/search.tt2
Open-ILS/src/templates/opac/parts/result/adv_filter.tt2
Open-ILS/web/js/ui/default/opac/copyloc.js

index b193c25..196cd49 100644 (file)
                         </div>
                     [% END %]
 
-                <div class="adv_course_materials_filter" id='course_reserves_facet'>
-                    <input type='checkbox' name="coursereserves" value="filtercoursereserves"
-                        onclick="add_course_reserves_ids_to_query()"
-                        [%- CGI.param('coursereserves').grep(filtercoursereserves).size ?
-                            'checked="checked"' : '' %]
-                        id='opac.result.filterwithreserves' />
-                        <label for='opac.result.filterwithreserves'>
-                            [% l("Filter With Course Reserves") %]</label>
-                    <input type='checkbox' name="query" value=""
-                        [%- CGI.param('coursereserves').grep(filtercoursereserves).size ?
-                            'checked="checked"' : '' %] id='coursereservesvalue' hidden />
-                    <input type='checkbox' name="qtype" value="keyword"
-                        [%- CGI.param('coursereserves').grep(filtercoursereserves).size ?
-                            'checked="checked"' : '' %] id='coursereservesqtype' hidden />
-                    <input type='checkbox' name="contains" value="contains"
-                        [%- CGI.param('coursereserves').grep(filtercoursereserves).size ?
-                            'checked="checked"' : '' %] id='coursereservescontains' hidden />
-                </div>
-
+                
                 [% CASE "copy_location" %]
                     <select id="adv_copy_location_selector"
                         title="[% l('Select Shelving Location') %]"
     END; %]
 
         </div>
+        <div class="adv_filter_block" id='course_reserves_facet'>
+            <div class="adv_filter_block_item">
+                <input type='checkbox' name="coursereserves" value="filtercoursereserves"
+                    onchange="add_course_reserves_ids_to_query()"
+                    [%- CGI.param('coursereserves').grep('filtercoursereserves').size ?
+                        'checked="checked"' : '' %]
+                    id='opac.result.coursereserves' />
+                    <label for='opac.result.coursereserves'>
+                        [% l("Filter With Course Reserves") %]</label>
+                <input type='checkbox' name="query" value=""
+                    [%- CGI.param('coursereserves').grep('filtercoursereserves').size ?
+                        'checked="checked"' : '' %] id='coursereservesvalue' hidden />
+                <input type='checkbox' name="qtype" value="keyword"
+                    [%- CGI.param('coursereserves').grep('filtercoursereserves').size ?
+                        'checked="checked"' : '' %] id='coursereservesqtype' hidden />
+                <input type='checkbox' name="contains" value="contains"
+                    [%- CGI.param('coursereserves').grep('filtercoursereserves').size ?
+                        'checked="checked"' : '' %] id='coursereservescontains' hidden />
+            </div>
+        </div>
     </div>
 </div>
 </form>
index 35b2c77..5b8cf68 100644 (file)
@@ -83,3 +83,14 @@ FOR filter IN ctx.query_struct.filters;
 
 [%- END; # IF pubdate_filters -%]
 [%- END; # FOR -%]
+
+[%IF CGI.param('coursereserves').grep('filtercoursereserves').size >0 %]
+    <div class="adv_filter_results_group_wrapper">
+        <div class="adv_filter_results_group">
+                <h4 class="title">[% l('Course Reserves') %]</h4>
+                <a class="button remove_filter"
+                title="[% l('Remove course reserves filter') %]"
+                href="[% mkurl('', {}, ['coursereserves']) %]" rel="nofollow" vocab=""> &times;</a>
+        </div>
+    </div>
+[%- END %]
index 5b3ee03..2081131 100644 (file)
@@ -3,6 +3,10 @@ dojo.require("openils.CGI");
 
 
 var course_list_query=[];
+course_reserves = dojo.byId("opac.result.coursereserves");
+value = dojo.byId("coursereservesvalue");
+qtype = dojo.byId("coursereservesqtype");
+contains = dojo.byId("coursereservescontains");
 
 /**
  * Query the database for the course reserves materials.
@@ -24,47 +28,43 @@ function get_course_reserves(display_orgs) {
                 //List out all the items, and add them to a list.
                 dojo.forEach(list, function(item, index) {
                     if(index == 0){ //If this is the first entry, create the string.
-                        course_list_query = "(id:"+item.item+") ";
-                    } else{ course_list_query += "|| (id:"+item.item+") ";}
+                        course_list_query = "((id:"+item.item+")";
+                    } else{ course_list_query += "||(id:"+item.item+")";}
                 })
+                course_list_query += ")";
                 filter_reserves();
             }
         }
     }).send(); 
 }
 
-
 /**
  * Add the query to the filterwithreserves checkbox
  */
 function filter_reserves() {
-    dojo.byId("coursereservesvalue").setAttribute('value',course_list_query)
+    value.setAttribute('value', course_list_query)
 }
 
 
 window.add_course_reserves_ids_to_query = add_course_reserves_ids_to_query;
 function add_course_reserves_ids_to_query() {
-    course_reserves = dojo.byId("opac.result.filterwithreserves");
-    
-    if(!course_reserves.getAttribute("checked") || course_reserves.getAttribute("checked")=="") {
-        console.log("Checked", course_reserves.getAttribute("checked") )
+    //Resets the Course Reserves Facet, if unchecked.
+    if(!course_reserves.getAttribute("checked") || course_reserves.getAttribute("checked") == "") {
         course_reserves.setAttribute("checked", 'checked')
-        dojo.byId("coursereservesvalue").setAttribute("checked", 'checked')
-        dojo.byId("coursereservesqtype").setAttribute("checked", 'checked')
-        dojo.byId("coursereservescontains").setAttribute("checked", 'checked')
+        value.setAttribute("checked", 'checked')
+        qtype.setAttribute("checked", 'checked')
+        contains.setAttribute("checked", 'checked')
     }else {
-        console.log("Unchecked", course_reserves.getAttribute("checked") )
-        course_reserves.setAttribute("checked", '')
-        dojo.byId("coursereservesvalue").setAttribute("checked", '')
-        dojo.byId("coursereservesqtype").setAttribute("checked", '')
-        dojo.byId("coursereservescontains").setAttribute("checked", '')
-    } 
+        dojo.removeAttr(course_reserves, 'checked');
+        dojo.removeAttr(value, 'checked');
+        dojo.removeAttr(qtype, 'checked');
+        dojo.removeAttr(contains, 'checked');
+    }
 }
 
 // called on initial page load and when the advance search org unit
 // selector is changed.
 function apply_adv_copy_locations() {
-
     // patron selected org
     var sel = dojo.byId('adv_org_selector');
     var selected_id = sel.options[sel.selectedIndex].getAttribute('value');