8 if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
9 JSAN.errorLevel = "die"; // none, warn, or die
10 JSAN.addRepository('/xul/server/');
11 JSAN.use('util.error'); error = new util.error();
12 error.sdump('D_TRACE','my_init() for bibs_abreast.xul');
13 JSAN.use('util.functional');
14 JSAN.use('util.widgets');
16 JSAN.use('util.network');
18 network = new util.network();
20 record_ids = xul_param('record_ids') || [];
21 record_ids = util.functional.unique_list_values( record_ids );
24 if (xul_param('merge')) {
25 var x = document.getElementById('merge_bar');
27 var y = document.getElementById('merge_button');
28 y.addEventListener('command', merge_records, false);
29 var z = document.getElementById('cancel_button');
30 z.addEventListener('command', function() {
33 var merge_bars = util.widgets.find_descendants_by_name(document,'merge_bar');
34 for (var i = 0; i < merge_bars.length; i++) { merge_bars[i].hidden = true; }
38 // Display the records
39 for (var i = 0; i < record_ids.length; i++) {
40 render_bib(record_ids[i]);
43 /*if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
44 try { window.xulG.set_tab_name('Test'); } catch(E) { alert(E); }
48 try { error.standard_unexpected_error_alert('main/test.xul',E); } catch(F) { alert(E); }
52 function render_bib(record_id) {
53 var main = document.getElementById('main');
54 var template = main.firstChild;
55 var new_node = template.cloneNode(true);
56 main.appendChild(new_node);
57 new_node.hidden = false;
59 var splitter_template = template.nextSibling;
60 var splitter = splitter_template.cloneNode(true);
61 main.appendChild(splitter);
62 splitter.hidden = false;
64 render_bib_brief(new_node,record_id);
66 var xul_deck = util.widgets.find_descendants_by_name(new_node,'bib_deck')[0];
67 var deck = new util.deck(xul_deck);
70 if (xul_param('merge')) {
71 var merge_bar = util.widgets.find_descendants_by_name(new_node,'merge_bar')[0];
72 merge_bar.hidden = false;
73 var lead_button = util.widgets.find_descendants_by_name(new_node,'lead_button')[0];
74 lead_button.addEventListener('click', function() {
75 lead_record = record_id;
76 dump('record_id = ' + record_id + '\n');
77 document.getElementById('merge_button').disabled = false;
82 var remove_me = util.widgets.find_descendants_by_name(new_node,'remove_me')[0];
83 remove_me.addEventListener('command', function() {
84 if (lead_record == record_id) {
85 lead_record = undefined;
86 document.getElementById('merge_button').disabled = true;
88 record_ids = util.functional.filter_list( record_ids, function(o) { return o != record_id; } );
89 main.removeChild(new_node);
90 main.removeChild(splitter);
91 if (main.childNodes.length == 4) {
92 document.getElementById('merge_bar').hidden = true;
93 document.getElementById('merge_button').disabled = true;
94 var merge_bars = util.widgets.find_descendants_by_name(document,'merge_bar');
95 for (var i = 0; i < merge_bars.length; i++) { merge_bars[i].hidden = true; }
97 if (main.childNodes.length == 2) { xulG.close_tab(); }
101 var view_bib = util.widgets.find_descendants_by_name(new_node,'view_bib')[0];
102 var edit_bib = util.widgets.find_descendants_by_name(new_node,'edit_bib')[0];
103 var holdings = util.widgets.find_descendants_by_name(new_node,'holdings')[0];
105 view_bib.addEventListener('command', function() {
106 set_view_pane(deck,record_id);
109 edit_bib.addEventListener('command', function() {
110 set_edit_pane(deck,record_id);
113 holdings.addEventListener('command', function() {
114 set_item_pane(deck,record_id);
117 set_view_pane(deck,record_id);
121 function render_bib_brief(new_node,record_id) {
123 var bib_brief = util.widgets.find_descendants_by_name(new_node,'bib_brief')[0];
124 bib_brief.setAttribute('src', urls.XUL_BIB_BRIEF_VERTICAL);
125 get_contentWindow(bib_brief).xulG = { 'docid' : record_id };
128 function set_view_pane(deck,record_id) {
129 deck.set_iframe( urls.XUL_MARC_VIEW, {}, { 'docid' : record_id } );
132 function set_item_pane(deck,record_id) {
133 var my_xulG = { 'docid' : record_id }; for (var i in xulG) { my_xulG[i] = xulG[i]; }
134 deck.set_iframe( urls.XUL_COPY_VOLUME_BROWSE, {}, my_xulG );
137 function set_edit_pane(deck,record_id) {
139 'record' : { 'url' : '/opac/extras/supercat/retrieve/marcxml/record/' + record_id, "id": record_id, "rtype": "bre" },
140 'fast_add_item' : function(doc_id,cn_label,cp_barcode) {
142 return cat.util.fast_item_add(doc_id,cn_label,cp_barcode);
144 alert('Error in bibs_abreast.js, set_edit_pane, fast_item_add: ' + E);
148 'label' : document.getElementById('offlineStrings').getString('cat.save_record'),
149 'func' : function (new_marcxml) {
151 var r = network.simple_request('MARC_XML_RECORD_UPDATE', [ ses(), record_id, new_marcxml ]);
152 if (typeof r.ilsevent != 'undefined') {
157 'oncomplete' : function() {}
161 alert('Error in bibs_abreast.js, set_edit_pane, save: ' + E);
165 'lock_tab' : xulG.lock_tab(),
166 'unlock_tab' : xulG.unlock_tab()
168 for (var i in xulG) { my_xulG[i] = xulG[i]; }
169 deck.set_iframe( urls.XUL_MARC_EDIT, {}, my_xulG );
172 function merge_records() {
174 var robj = network.simple_request('MERGE_RECORDS',
178 util.functional.filter_list( record_ids,
180 return o != lead_record;
185 if (typeof robj.ilsevent != 'undefined') {
186 switch(Number(robj.ilsevent)) {
187 case 5000 /* PERM_FAILURE */: break;
188 default: throw(robj);
191 if (typeof xulG.on_merge == 'function') {
194 var opac_url = xulG.url_prefix('opac_rdetail') + lead_record;
195 var content_params = {
197 'authtime' : ses('authtime'),
198 'opac_url' : opac_url,
201 xulG.url_prefix('XUL_OPAC_WRAPPER'),
202 {'tab_name':'Retrieving title...'},
206 alert('Error in bibs_abreast.js, merge_records(): ' + E);