source: main/trunk/greenstone3/web/interfaces/default/js/facet-scripts.js@ 33322

Last change on this file since 33322 was 33322, checked in by ak19, 5 years ago

Getting faceted searching working with the map shapes.

  • Property svn:executable set to *
File size: 3.9 KB
Line 
1function performRefinedSearch()
2{
3 var allCheckBoxes = $("#facetSelector input");
4 var counts = new Array();
5 for(var i = 0; i < allCheckBoxes.length; i++)
6 {
7 var current = $(allCheckBoxes[i]);
8 if(current.prop("checked"))
9 {
10 counts.push(current.parent().parent().attr("indexName") + ":(\"" + current.siblings("span").first().html() + "\")");
11 }
12 }
13
14 var searchString = "";
15 for(var key in gs.cgiParams)
16 {
17 if (gs.cgiParams.hasOwnProperty(key))
18 {
19 searchString += key.replace(/_/g, ".") + "=" + gs.cgiParams[key] + "&";
20 }
21 }
22
23 var countsString = "s1.facetQueries=";
24 if(counts.length > 0)
25 {
26 var countsStringBuffer = "[";
27 for(var i = 0; i < counts.length; i++)
28 {
29 // escape any apostrophes in facet query terms
30 // (ext/solr's Greenstone3SearchHandler does the other half of handling them)
31 //countsStringBuffer += "\"" + encodeURI(counts[i]).replace(/'/g, "%2527") + "\"";
32 // calling makeURLSafe() here will ensure percent signs are escaped away too
33 // by the end of makeURLComponentSafe() call below
34 countsStringBuffer += "\"" + makeURLSafe(counts[i]).replace(/'/g, "%2527") + "\"";
35 if(i < counts.length - 1)
36 {
37 countsStringBuffer += ", ";
38 }
39 }
40
41 countsStringBuffer += "]";
42
43 // We need to ensure that the *value* of s1.facetQueries (so everything after
44 // s1.facetQueries= and before the connecting &) are safe, which requires escaping,
45 // and are further also escaped to not be mistaken for their reserved meaning.
46 // : is a reserved character in URLs, [] are unsafe characters. All need escaping.
47 // So call makeURLComponentSafe(), not makeURLSafe()
48 countsString = countsString + makeURLComponentSafe(countsStringBuffer, 1);
49 }
50
51 countsString += "&";
52 //console.log("STRING IS " + countsString);
53
54 $.ajax(gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/search/" + gs.cgiParams.s + "?" + searchString + countsString + "excerptid=resultsArea")
55 .done(function(response)
56 {
57 $("#resultsArea").html("");
58 $("#resultsArea").html(response.substring(response.indexOf(">") + 1, response.lastIndexOf("<")));
59 if(gs.cgiParams.berrybasket == "on") {
60 berryCheckout(); // called to add back in berries (if berrybasket active)
61 }
62 if(gs.cgiParams.favouritebasket == "on") {
63 favouritesCheckout(); // called to add back in favourites icons (if favouritebasket active)
64 }
65 if(typeof mapEnabled !== 'undefined') {
66
67 facetedMapSearch(gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/search/" + gs.cgiParams.s + "?" + searchString + countsString);
68
69 }
70 });
71}
72
73function expandFacetList(indexName, countSize)
74{
75 var tables = $(".facetTable");
76
77 for(var i = 0; i < tables.length; i++)
78 {
79 var current = $(tables[i]);
80 if(current.attr("indexName") == indexName)
81 {
82 var items = current.children("li");
83
84 for(var j = 0; j < items.length; j++)
85 {
86 $(items[j]).css("display", "block");
87 }
88
89 break;
90 }
91 }
92
93 // the above code has made both see more and see less links display=block, so we need to hide
94 // see more
95 var morelink = $(".expandFacetList" + indexName);
96 morelink.css("display", "none");
97
98}
99
100function collapseFacetList(indexName, countSize)
101{
102 var tables = $(".facetTable");
103
104 for(var i = 0; i < tables.length; i++)
105 {
106 var current = $(tables[i]);
107 if(current.attr("indexName") == indexName)
108 {
109 var items = current.children("li");
110
111 for(var j = 0; j < items.length; j++)
112 {
113 if(j > countSize)
114 {
115 $(items[j]).css("display", "none");
116 }
117 }
118
119 break;
120 }
121 }
122
123 // the above code has hidden both the see more and see less links.
124 // display the see more one
125 var morelink = $(".expandFacetList" + indexName);
126 morelink.css("display", "block");
127
128}
129
Note: See TracBrowser for help on using the repository browser.