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) {
46 JSAN.use('util.functional');
47 var sel = obj.list.retrieve_selection();
48 var list = util.functional.map_list(
50 function(o) { return o.getAttribute('retrieve_id'); }
52 obj.error.sdump('D_TRACE','cat/z3950: selection list = ' + js2JSON(list) );
53 obj.controller.view.marc_import.disabled = false;
54 obj.controller.view.marc_import.setAttribute('retrieve_id',list[0]);
63 document.getAnonymousNodes(document.getElementById('c1'))[0].addEventListener(
67 document.getAnonymousNodes(document.getElementById('c2'))[0]
71 document.getAnonymousNodes(document.getElementById('c2'))[0].addEventListener(
75 document.getAnonymousNodes(document.getElementById('c1'))[0]
80 JSAN.use('util.controller'); obj.controller = new util.controller();
86 function() { alert('Not Yet Implemented'); }
88 'result_message' : [['render'],function(e){return function(){};}],
89 'server' : [['render'],function(e){return function(){};}],
90 'database' : [['render'],function(e){return function(){};}],
91 'port' : [['render'],function(e){return function(){};}],
92 'username' : [['render'],function(e){return function(){};}],
93 'password' : [['render'],function(e){return function(){};}],
101 if (ev.keyCode && ev.keyCode == 13) {
102 obj.asc_search_async();
113 obj.spawn_marc_editor(
114 obj.network.simple_request(
115 'FM_BRN_FROM_MARCXML',
118 obj.controller.view.marc_import.getAttribute('retrieve_id')
128 obj.asc_search_async();
138 if (ev.keyCode && ev.keyCode == 13) {
139 obj.raw_search_async();
150 obj.raw_search_async();
153 'menu_placeholder' : [
157 util.widgets.remove_children(e);
158 var ml = util.widgets.make_menulist( [
162 ml.setAttribute('flex','1');
164 /* An experiment with virtual events. I could just use a named function
165 instead of defining one inline, and then call that once to set things
166 up, and let the event handler call it the rest of the time. */
168 'set_server_details',
170 /* FIXME - get these values from server */
171 switch(ev.target.value) {
173 obj.controller.view.server.value = 'zcat.oclc.org';
174 obj.controller.view.server.disabled = true;
175 obj.controller.view.database.value = 'OLUCWorldCat';
176 obj.controller.view.database.disabled = true;
177 obj.controller.view.port.value = '210';
178 obj.controller.view.port.disabled = true;
179 obj.controller.view.username.value = '****';
180 obj.controller.view.username.disabled = true;
181 obj.controller.view.password.value = '****';
182 obj.controller.view.password.disabled = true;
183 //obj.controller.view.raw_string.value = 'DISABLED';
184 //obj.controller.view.raw_string.disabled = true;
185 //obj.controller.view.raw_search.disabled = true;
186 //obj.controller.view.asc_id.value = '';
187 //obj.controller.view.asc_id.disabled = false;
188 //obj.controller.view.asc_search.disabled = false;
191 obj.controller.view.server.disabled = false;
192 obj.controller.view.database.disabled = false;
193 obj.controller.view.server.disabled = false;
194 obj.controller.view.port.disabled = false;
195 obj.controller.view.username.value = '';
196 obj.controller.view.username.disabled = false;
197 obj.controller.view.password.value = '';
198 obj.controller.view.password.disabled = false;
199 //obj.controller.view.raw_string.value = '';
200 //obj.controller.view.raw_string.disabled = false;
201 //obj.controller.view.raw_search.disabled = false;
202 //obj.controller.view.asc_id.value = 'DISABLED';
203 //obj.controller.view.asc_id.disabled = true;
204 //obj.controller.view.asc_search.disabled = true;
212 function(ev) { util.widgets.dispatch('set_server_details', ev.target); },
215 setTimeout( function() { util.widgets.dispatch('set_server_details',ml); }, 0 );
216 obj.controller.view.server_menu = ml;
224 obj.controller.render();
227 this.error.sdump('D_ERROR','cat.z3950.init: ' + E + '\n');
231 'store_disable_search_buttons' : function() {
233 JSAN.use('util.widgets');
234 util.widgets.store_disable(
235 obj.controller.view.asc_search,
236 obj.controller.view.raw_search
238 util.widgets.disable(
239 obj.controller.view.asc_search,
240 obj.controller.view.raw_search
244 'restore_enable_search_buttons' : function() {
246 JSAN.use('util.widgets');
247 util.widgets.restore_disable(
248 obj.controller.view.asc_search,
249 obj.controller.view.raw_search
253 'asc_search_async' : function() {
256 var search = obj.controller.view.asc_id.value;
257 obj.error.sdump('D_TRACE','search string: ' + search);
258 JSAN.use('util.widgets');
259 util.widgets.remove_children( obj.controller.view.result_message );
260 obj.controller.view.result_message.appendChild(
261 document.createTextNode( 'Searching...' )
263 obj.store_disable_search_buttons();
265 if (!Number(obj.controller.view.server_menu.value)) {
266 params = [ obj.session, search, obj.controller.view.server_menu.value ];
268 params = [ obj.session, search, 'oclc' ];
270 obj.network.simple_request(
271 'FM_BRN_RETRIEVE_VIA_Z3950_TCN',
272 [ obj.session, search, 'oclc' ],
274 obj.handle_results(req.getResultObject())
275 obj.restore_enable_search_buttons();
279 this.error.sdump('D_ERROR',E);
285 'raw_search_async' : function() {
288 var search = obj.controller.view.raw_string.value;
289 obj.error.sdump('D_TRACE','search string: ' + search);
290 JSAN.use('util.widgets');
291 util.widgets.remove_children( obj.controller.view.result_message );
292 obj.controller.view.result_message.appendChild(
293 document.createTextNode( 'Searching...' )
295 obj.store_disable_search_buttons();
296 if (!Number(obj.controller.view.server_menu.value)) {
301 'service':obj.controller.view.server_menu.value,
309 'server':obj.controller.view.server.value,
310 'prt':obj.controller.view.port.value,
311 'db':obj.controller.view.database.value,
312 'username':obj.controller.view.username.value,
313 'password':obj.controller.view.password.value
318 obj.network.simple_request(
319 'FM_BRN_RETRIEVE_VIA_Z3950_RAW',
322 obj.handle_results(req.getResultObject())
323 obj.restore_enable_search_buttons();
327 this.error.sdump('D_ERROR',E);
332 'handle_results' : function(results) {
334 JSAN.use('util.widgets');
335 util.widgets.remove_children( obj.controller.view.result_message );
336 if (results == null) {
337 obj.controller.view.result_message.appendChild(
338 document.createTextNode( 'Server Error: ' + api.FM_BRN_RETRIEVE_VIA_Z3950_TCN.method + ' returned null' )
343 obj.controller.view.result_message.appendChild(
344 document.createTextNode( results.count + (results.count == 1 ? ' result ' : ' results ') + 'found. ' )
347 if (results.records) {
348 obj.controller.view.result_message.appendChild(
349 document.createTextNode( results.records.length + (results.records.length == 1 ? ' result' : ' results') + ' retrieved. ')
351 obj.results = results;
352 obj.list.clear(); obj.controller.view.marc_import.disabled = true;
353 for (var i = 0; i < obj.results.records.length; i++) {
359 'mvr' : function(a){return a;}(obj.results.records[i].mvr),
366 obj.controller.view.result_message.appendChild(
367 document.createTextNode( 'Too many results to retrieve. ')
372 'spawn_marc_editor' : function(my_brn) {
375 xulG.url_prefix(urls.XUL_MARC_EDIT) + '?session=' + window.escape(obj.session),
376 { 'tab_name' : 'MARC Editor' }, { 'import_tree' : my_brn }
382 dump('exiting cat.z3950.js\n');