1 dump('entering cat.z3950.js\n');
3 if (typeof cat == 'undefined') cat = {};
4 cat.z3950 = function (params) {
6 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
7 JSAN.use('util.error'); this.error = new util.error();
8 JSAN.use('util.network'); this.network = new util.network();
10 dump('cat.z3950: ' + E + '\n');
14 cat.z3950.prototype = {
16 'init' : function( params ) {
19 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
20 JSAN.use('util.widgets');
24 obj.session = params['session'];
26 JSAN.use('circ.util');
27 var columns = circ.util.columns(
29 'tcn' : { 'hidden' : false },
30 'isbn' : { 'hidden' : false },
31 'title' : { 'hidden' : false, 'flex' : '1' },
32 'author' : { 'hidden' : false },
33 'edition' : { 'hidden' : false },
34 'pubdate' : { 'hidden' : false },
35 'publisher' : { 'hidden' : false },
39 JSAN.use('util.list'); obj.list = new util.list('results');
43 'map_row_to_column' : circ.util.std_map_row_to_column(),
44 'on_select' : function(ev) {
45 JSAN.use('util.functional');
46 var sel = obj.list.retrieve_selection();
47 var list = util.functional.map_list(
49 function(o) { return o.getAttribute('retrieve_id'); }
51 obj.sdump('D_TRACE','cat/z3950: selection list = ' + js2JSON(list) );
57 document.getAnonymousNodes(document.getElementById('c1'))[0].addEventListener(
61 document.getAnonymousNodes(document.getElementById('c2'))[0]
65 document.getAnonymousNodes(document.getElementById('c2'))[0].addEventListener(
69 document.getAnonymousNodes(document.getElementById('c1'))[0]
74 JSAN.use('util.controller'); obj.controller = new util.controller();
80 function() { alert('Not Yet Implemented'); }
82 'result_message' : [['render'],function(e){return function(){};}],
83 'server' : [['render'],function(e){return function(){};}],
84 'database' : [['render'],function(e){return function(){};}],
85 'port' : [['render'],function(e){return function(){};}],
86 'username' : [['render'],function(e){return function(){};}],
87 'password' : [['render'],function(e){return function(){};}],
95 if (ev.keyCode && ev.keyCode == 13) {
96 obj.asc_search_async();
112 obj.asc_search_async();
122 if (ev.keyCode && ev.keyCode == 13) {
123 obj.raw_search_async();
134 obj.raw_search_async();
137 'menu_placeholder' : [
141 util.widgets.remove_children(e);
142 var ml = util.widgets.make_menulist( [
143 [ 'System Defaults', 0 ],
146 ml.setAttribute('flex','1');
148 /* An experiment with virtual events. I could just use a named function
149 instead of defining one inline, and then call that once to set things
150 up, and let the event handler call it the rest of the time. */
152 'set_server_details',
154 /* FIXME - get these values from server */
155 switch(ev.target.value) {
157 obj.controller.view.server.value = 'zcat.oclc.org';
158 obj.controller.view.server.disabled = true;
159 obj.controller.view.database.value = 'OLUCWorldCat';
160 obj.controller.view.database.disabled = true;
161 obj.controller.view.port.value = '210';
162 obj.controller.view.port.disabled = true;
163 obj.controller.view.username.value = '****';
164 obj.controller.view.username.disabled = true;
165 obj.controller.view.password.value = '****';
166 obj.controller.view.password.disabled = true;
167 obj.controller.view.raw_string.value = 'DISABLED';
168 obj.controller.view.raw_string.disabled = true;
169 obj.controller.view.raw_search.disabled = true;
170 obj.controller.view.asc_id.value = '';
171 obj.controller.view.asc_id.disabled = false;
172 obj.controller.view.asc_search.disabled = false;
175 obj.controller.view.server.disabled = false;
176 obj.controller.view.database.disabled = false;
177 obj.controller.view.server.disabled = false;
178 obj.controller.view.port.disabled = false;
179 obj.controller.view.username.value = '';
180 obj.controller.view.username.disabled = false;
181 obj.controller.view.password.value = '';
182 obj.controller.view.password.disabled = false;
183 obj.controller.view.raw_string.value = '';
184 obj.controller.view.raw_string.disabled = false;
185 obj.controller.view.raw_search.disabled = false;
186 obj.controller.view.asc_id.value = 'DISABLED';
187 obj.controller.view.asc_id.disabled = true;
188 obj.controller.view.asc_search.disabled = true;
196 function(ev) { util.widgets.dispatch('set_server_details', ev.target); },
199 setTimeout( function() { util.widgets.dispatch('set_server_details',ml); }, 0 );
207 obj.controller.render();
210 this.error.sdump('D_ERROR','cat.z3950.init: ' + E + '\n');
214 'store_disable_search_buttons' : function() {
216 JSAN.use('util.widgets');
217 util.widgets.store_disable(
218 obj.controller.view.asc_search,
219 obj.controller.view.raw_search
221 util.widgets.disable(
222 obj.controller.view.asc_search,
223 obj.controller.view.raw_search
227 'restore_enable_search_buttons' : function() {
229 JSAN.use('util.widgets');
230 util.widgets.restore_disable(
231 obj.controller.view.asc_search,
232 obj.controller.view.raw_search
236 'asc_search_async' : function() {
239 var search = obj.controller.view.asc_id.value;
240 obj.error.sdump('D_TRACE','search string: ' + search);
241 JSAN.use('util.widgets');
242 util.widgets.remove_children( obj.controller.view.result_message );
243 obj.controller.view.result_message.appendChild(
244 document.createTextNode( 'Searching...' )
246 obj.store_disable_search_buttons();
247 obj.network.simple_request(
248 'FM_BRN_RETRIEVE_VIA_Z3950_TCN',
249 [ obj.session, search ],
251 obj.handle_results(req.getResultObject())
252 obj.restore_enable_search_buttons();
256 this.error.sdump('D_ERROR',E);
262 'raw_search_async' : function() {
265 var search = obj.controller.view.raw_string.value;
266 obj.error.sdump('D_TRACE','search string: ' + search);
267 JSAN.use('util.widgets');
268 util.widgets.remove_children( obj.controller.view.result_message );
269 obj.controller.view.result_message.appendChild(
270 document.createTextNode( 'Searching...' )
272 obj.store_disable_search_buttons();
273 obj.network.simple_request(
274 'FM_BRN_RETRIEVE_VIA_Z3950_RAW',
277 obj.controller.view.server.value,
278 obj.controller.view.port.value,
279 obj.controller.view.database.value,
281 obj.controller.view.username.value,
282 obj.controller.view.password.value
285 obj.handle_results(req.getResultObject())
286 obj.restore_enable_search_buttons();
290 this.error.sdump('D_ERROR',E);
295 'handle_results' : function(results) {
297 JSAN.use('util.widgets');
298 util.widgets.remove_children( obj.controller.view.result_message );
299 if (results == null) {
300 obj.controller.view.result_message.appendChild(
301 document.createTextNode( 'Server Error: ' + api.FM_BRN_RETRIEVE_VIA_Z3950_TCN.method + ' returned null' )
306 obj.controller.view.result_message.appendChild(
307 document.createTextNode( results.count + (results.count == 1 ? ' result ' : ' results ') + 'found. ' )
310 if (results.records) {
311 obj.controller.view.result_message.appendChild(
312 document.createTextNode( results.records.length + (results.records.length == 1 ? ' result' : ' results') + ' retrieved. ')
314 obj.results = results;
316 for (var i = 0; i < obj.results.records.length; i++) {
322 'mvr' : function(a){return a;}(obj.results.records[i].mvr),
329 obj.controller.view.result_message.appendChild(
330 document.createTextNode( 'Too many results to retrieve. ')
337 dump('exiting cat.z3950.js\n');