]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/rresult.js
in mr page, clicking on format does not change the search criteria
[Evergreen.git] / Open-ILS / web / opac / skin / default / js / rresult.js
1 var records = new Array();
2 var table;
3 var rowtemplate;
4 var rresultLimit = 200;
5
6 function rresultUnload() { removeChildren(table); table = null;}
7
8 attachEvt("common", "unload", rresultUnload);
9 attachEvt("common", "run", rresultDoSearch);
10 attachEvt("result", "idsReceived", rresultCollectRecords); 
11 attachEvt("result", "recordDrawn", rresultLaunchDrawn); 
12
13 hideMe($('copyright_block')); 
14
15 function rresultDoSearch() {
16         table = G.ui.result.main_table;
17         hideMe(G.ui.result.row_template);
18         while( table.parentNode.rows.length <= (getDisplayCount() +1) ) 
19                 hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));
20         rresultCollectIds();
21 }
22
23 function rresultCollectIds() {
24         var ids;
25         switch(getRtype()) {
26
27                 case RTYPE_COOKIE:
28                         ids = JSON2js(cookieManager.read(COOKIE_RIDS));
29                         _rresultHandleIds( ids, ids.length );
30                         break;
31
32                 case RTYPE_TITLE:
33                 case RTYPE_AUTHOR:
34                 case RTYPE_SUBJECT:
35                 case RTYPE_SERIES:
36                 case RTYPE_KEYWORD:
37                         rresultDoRecordSearch();
38                         break;
39
40                 case RTYPE_MULTI:
41                         rresultDoRecordMultiSearch();
42                         break;
43                         
44                 case RTYPE_LIST :
45                         rresultHandleList();
46                         break;
47
48                 case RTYPE_MARC :
49                         rresultCollectMARCIds();
50                         break;
51
52                 case RTYPE_MRID :
53                 case null :
54                 case "" :
55                 defaut:
56                         var form = rresultGetForm();
57                         var args = { format : form, org : getLocation(), depth : rresultGetDepth() };
58                         var req = new Request(FETCH_RIDS, getMrid(), args);
59                         req.callback( rresultHandleRIds );
60                         req.send();
61
62                         if( rresultGetDepth() != findOrgDepth(globalOrgTree) ) {
63                                 unHideMe($('rresult_show_all'));
64                                 var link = $('rresult_show_all_link');
65                                 link.appendChild( text(
66                                         findOrgType(globalOrgTree.ou_type()).opac_label()));
67
68                         } else {
69                                 if( rresultGetDepth() != getDepth() ) { /* inside a limited display */
70                                         var link = $('rresult_show_here_link');
71                                         link.appendChild( text(
72                                                 findOrgType(findOrgUnit(getLocation()).ou_type()).opac_label()));
73                                         unHideMe($('rresult_show_here'));
74                                 }
75                         }
76         }
77 }
78
79 function rresultExpandSearch() {
80         var link = buildOPACLink();
81         link += "&tmpdepth=" + findOrgDepth(globalOrgTree);
82         goTo(link);
83 }
84
85
86 function rresultGetDepth() {
87         var cgi = new CGI();
88         if(cgi.param('tmpdepth'))
89                 return cgi.param('tmpdepth');
90         return getDepth();
91 }
92
93
94 function rresultGetForm() {
95         var form;
96         if(getTform()) 
97                 form = (getTform() == 'all') ? null : getTform();
98         else 
99                 form = (getForm() == 'all') ? null : getForm();
100         return form;
101 }
102
103
104 function rresultCollectMARCIds() {
105
106         var args                        = {};
107         args.searches   = JSON2js(getSearches());
108         args.limit              = 200;
109         args.org_unit   = globalOrgTree.id();
110         args.depth              = 0;
111
112         var req = new Request(FETCH_ADV_MARC_MRIDS, args);
113         req.callback(rresultHandleRIds);
114         req.send();
115 }
116
117 function rresultHandleList() {
118         var ids = new CGI().param(PARAM_RLIST);
119         if(ids) _rresultHandleIds(ids, ids.length);
120 }
121
122 var rresultTries = 0;
123 function rresultHandleRIds(r) {
124         var res = r.getResultObject();
125
126         if( res.count == 0 ) {
127
128                 if( rresultTries == 0 ) {
129                         rresultTries++;
130                         var form = rresultGetForm();
131                         var args = { format : form, org : getLocation(), depth : findOrgDepth(globalOrgTree) };
132                         var req = new Request(FETCH_RIDS, getMrid(), args );
133                         req.callback( rresultHandleRIds );
134                         req.send();
135                         unHideMe($('no_formats'));
136                         hideMe($('rresult_show_all'));
137                 }
138
139         } else {
140
141                 _rresultHandleIds(res.ids, res.count);
142         }
143 }
144
145 function _rresultHandleIds(ids, count) {
146         HITCOUNT = parseInt(count);
147         runEvt('result', 'hitCountReceived');
148         runEvt('result', 'idsReceived', ids);
149 }
150
151 function rresultCollectRecords(ids) {
152         runEvt("result", "preCollectRecords");
153         var x = 0;
154         for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
155                 if(ids[i] == null) break;
156                 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
157                 req.callback(rresultHandleMods);
158                 req.request.userdata = x++;
159                 req.send();
160         }
161 }
162
163 function rresultHandleMods(r) {
164         var rec = r.getResultObject();
165         runEvt('result', 'recordReceived', rec, r.userdata, false);
166         resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
167         if(resultPageIsDone()) {
168                 runEvt('result', 'allRecordsReceived', recordsCache);
169                 unHideMe($('copyright_block')); 
170         }
171 }
172
173
174 function rresultLaunchDrawn(id, node) {
175         runEvt("rresult", "recordDrawn", id, node);
176 }
177
178
179 function rresultDoRecordSearch() { 
180         resultCollectSearchIds(true, SEARCH_RS, rresultFilterSearchResults ); }
181 function rresultDoRecordMultiSearch() { 
182         resultCollectSearchIds(false, SEARCH_RS, rresultFilterSearchResults ); }
183
184 /*
185 function _rresultCollectSearchIds( type ) {
186
187         var sort                = (getSort() == SORT_TYPE_REL) ? null : getSort(); 
188         var sortdir = (sort) ? ((getSortDir()) ? getSortDir() : SORT_DIR_ASC) : null;
189
190         var form = parseForm(getForm());
191         var item_type = form.item_type;
192         var item_form = form.item_form;
193
194         var args = {};
195
196         if( type ) {
197                 args.searches = {};
198                 args.searches[getRtype()] = {};
199                 args.searches[getRtype()].term = getTerm();
200         } else {
201                 args.searches = JSON2js(getAdvTerm());
202         }
203
204         args.org_unit = getLocation();
205         args.depth    = getDepth();
206         args.limit    = rresultLimit;
207         args.offset   = getOffset();
208
209         if(sort) args.sort = sort;
210         if(sortdir) args.sort_dir = sortdir;
211         if(item_type) args.item_type    = item_type;
212         if(item_form) args.item_form    = item_form;
213
214         var req = new Request(SEARCH_RS, args);
215         req.callback(rresultFilterSearchResults);
216         req.send();
217 }
218 */
219
220
221 function rresultFilterSearchResults(r) {
222         var result = r.getResultObject();
223         var ids = [];
224         for( var i = 0; i != result.ids.length; i++ ) 
225                 ids.push(result.ids[i][0]);
226         _rresultHandleIds( ids, result.count );
227 }
228
229