]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/rresult.js
supporting code for the newer advanced search interface
[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 = (getForm() == "all") ? null : getForm();
57                         var req = new Request(FETCH_RIDS, getMrid(), form );
58                         req.callback( rresultHandleRIds );
59                         req.send();
60         }
61 }
62
63
64 function rresultCollectMARCIds() {
65
66         var args                        = {};
67         args.searches   = JSON2js(getSearches());
68         args.limit              = 200;
69         args.org_unit   = globalOrgTree.id();
70         args.depth              = 0;
71
72         var req = new Request(FETCH_ADV_MARC_MRIDS, args);
73         req.callback(rresultHandleRIds);
74         req.send();
75 }
76
77 function rresultHandleList() {
78         var ids = new CGI().param(PARAM_RLIST);
79         if(ids) _rresultHandleIds(ids, ids.length);
80 }
81
82 function rresultHandleRIds(r) {
83         var res = r.getResultObject();
84         _rresultHandleIds(res.ids, res.count);
85 }
86
87 function _rresultHandleIds(ids, count) {
88         HITCOUNT = parseInt(count);
89         runEvt('result', 'hitCountReceived');
90         runEvt('result', 'idsReceived', ids);
91 }
92
93 function rresultCollectRecords(ids) {
94         runEvt("result", "preCollectRecords");
95         var x = 0;
96         for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
97                 if(ids[i] == null) break;
98                 var req = new Request(FETCH_RMODS, parseInt(ids[i]));
99                 req.callback(rresultHandleMods);
100                 req.request.userdata = x++;
101                 req.send();
102         }
103 }
104
105 function rresultHandleMods(r) {
106         var rec = r.getResultObject();
107         runEvt('result', 'recordReceived', rec, r.userdata, false);
108         resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
109         if(resultPageIsDone()) {
110                 runEvt('result', 'allRecordsReceived', recordsCache);
111                 unHideMe($('copyright_block')); 
112         }
113 }
114
115
116 function rresultLaunchDrawn(id, node) {
117         runEvt("rresult", "recordDrawn", id, node);
118 }
119
120
121 function rresultDoRecordSearch() { 
122         resultCollectSearchIds(true, SEARCH_RS, rresultFilterSearchResults ); }
123 function rresultDoRecordMultiSearch() { 
124         resultCollectSearchIds(false, SEARCH_RS, rresultFilterSearchResults ); }
125
126 /*
127 function _rresultCollectSearchIds( type ) {
128
129         var sort                = (getSort() == SORT_TYPE_REL) ? null : getSort(); 
130         var sortdir = (sort) ? ((getSortDir()) ? getSortDir() : SORT_DIR_ASC) : null;
131
132         var form = parseForm(getForm());
133         var item_type = form.item_type;
134         var item_form = form.item_form;
135
136         var args = {};
137
138         if( type ) {
139                 args.searches = {};
140                 args.searches[getRtype()] = {};
141                 args.searches[getRtype()].term = getTerm();
142         } else {
143                 args.searches = JSON2js(getAdvTerm());
144         }
145
146         args.org_unit = getLocation();
147         args.depth    = getDepth();
148         args.limit    = rresultLimit;
149         args.offset   = getOffset();
150
151         if(sort) args.sort = sort;
152         if(sortdir) args.sort_dir = sortdir;
153         if(item_type) args.item_type    = item_type;
154         if(item_form) args.item_form    = item_form;
155
156         var req = new Request(SEARCH_RS, args);
157         req.callback(rresultFilterSearchResults);
158         req.send();
159 }
160 */
161
162
163 function rresultFilterSearchResults(r) {
164         var result = r.getResultObject();
165         var ids = [];
166         for( var i = 0; i != result.ids.length; i++ ) 
167                 ids.push(result.ids[i][0]);
168         _rresultHandleIds( ids, result.count );
169 }
170
171