1 var globalRecordResultPage = null; /* our global object */
3 RecordResultPage.prototype = new AbstractRecordResultPage();
4 RecordResultPage.prototype.constructor = RecordResultPage;
5 RecordResultPage.baseClass = AbstractRecordResultPage.constructor;
7 /* constructor for our singleton object */
8 function RecordResultPage() {
9 if( globalRecordResultPage != null )
10 return globalRecordResultPage;
12 this.searchBarForm = new SearchBarFormChunk();
14 globalRecordResultPage = this;
18 /* returns the global instance. builds the instance if necessary. All client
19 * code should use this method */
20 RecordResultPage.instance = function() {
21 if( globalRecordResultPage != null ) {
22 return globalRecordResultPage;
24 return new RecordResultPage();
29 RecordResultPage.prototype.mkLink = function(id, type, value) {
36 href = document.createElement("a");
37 add_css_class(href,"record_result_title_link");
38 href.setAttribute("href","?target=record_result&mrid=" + id );
39 href.appendChild(document.createTextNode(value));
43 href = document.createElement("a");
44 add_css_class(href,"record_result_author_link");
45 href.setAttribute("href","?target=mr_result&mr_search_type=author&mr_search_query=" +
46 encodeURIComponent(value));
47 href.appendChild(document.createTextNode(value));
51 throw new EXArg("Unknown link type: " + type );
54 debug("Returning HREF for link: " + href );
62 /* performs a new search */
63 RecordResultPage.prototype.doSearch = function() {
65 debug( "Key Value Array \n" + js2JSON( paramObj ) );
69 if( paramObj.mrid != null ) {
70 this.mrSearch(paramObj.mrid);
74 if( paramObj.search == "global" ) {
76 if( paramObj.tcn != null ) {
77 this.globalSearch("tcn", paramObj.tcn);
81 if( paramObj.isbn != null ) {
82 this.globalSearch("isbn", paramObj.isbn);
90 /* these are the simple global searches */
91 RecordResultPage.prototype.globalSearch = function(type, term) {
93 if( !term || term.length < 2 )
94 throw new EXArg( "globalSearch needs valid term: " + term );
96 debug("Performing Global search for term: " + term );
101 method = "open-ils.search.biblio.tcn";
105 method = "open-ils.search.biblio.isbn";
109 var request = new RemoteRequest( "open-ils.search", method, term );
112 request.setCompleteCallback(
115 var result = req.getResultObject();
116 debug( "Global Search returned: " + js2JSON(result) );
117 obj.gatherIDs(result)
118 obj.collectRecords();
119 } catch(E) { throw ("Search Error " + E ); }
126 RecordResultPage.prototype.mrSearch = function(mrid) {
128 var request = new RemoteRequest("open-ils.search",
129 "open-ils.search.biblio.metarecord_to_records", mrid );
130 debug("Gathering doc ids for metarecord " + mrid );
133 request.setCompleteCallback(
136 obj.gatherIDs(req.getResultObject());
137 obj.collectRecords();
138 } catch(E) { throw ("Search Error " + E ); }
144 RecordResultPage.prototype.collectRecords = function() {
146 var i = this.searchOffset;
148 while( i < (this.searchOffset + this.hitsPerPage) ) {
149 var id = this.recordIDs[i];
151 if(id==null){ i++; continue; }
153 var request = new RemoteRequest( "open-ils.search",
154 "open-ils.search.biblio.record.mods_slim.retrieve", id );
155 this.requestBatch.push(request);
157 request.name = "record_request_" + i;
158 request.search_id = i;
159 request.page_id = parseInt(i) - parseInt(this.searchOffset);
161 var hit_box = document.getElementById("hit_count_count_box");
162 //hit_box.innerHTML = this.hitCount;
164 document.createTextNode(this.hitCount));
166 /* define the callback for when we receive the record */
168 request.setCompleteCallback(
171 var record = req.getResultObject();
172 obj.displayRecord( record, req.search_id, req.page_id );
173 obj.doCopyCount( record, req.search_id, req.page_id );
175 //alert("Doc Retrieval Error:\n" + E);
176 // debug(" !!! Doc Retrieval Error:\n" + E);
186 RecordResultPage.prototype.doCopyCount = function( record, search_id, page_id ) {
188 var copy_box = document.getElementById("record_result_copy_count_box_" + page_id );
190 /* kick off the copy count search */
191 var copy_request = new RemoteRequest( "open-ils.search",
192 "open-ils.search.biblio.record.copy_count", 1, record.doc_id );
193 this.requestBatch.push(copy_request);
195 copy_request.search_id = search_id;
196 copy_request.name = "copy_request_" + (search_id+this.searchOffset);
198 debug("Sending copy request " + search_id + ":" + record.doc_id );
201 copy_request.setCompleteCallback(
204 //copy_box.innerHTML = req.getResultObject();
205 copy_box.appendChild(
206 document.createTextNode(req.getResultObject()));
208 alert("Copy Count Retrieval Error:\n" + E );