1 dump('loading bib_brief_overlay.js\n');
3 function bib_brief_overlay(params) {
11 JSAN.use('util.network');
12 net = new util.network();
16 session = params.session;
18 session = ses(); // For some reason, this breaks, starting with an internal instantiation of util.error failing because util.error being an object instead of a constructor
22 // See if we have mvr or mvr.id, and possibly retrieve the mvr ourselves
23 if (params.mvr_id && ! params.mvr) {
24 var robj = net.simple_request('MODS_SLIM_RECORD_RETRIEVE.authoritative',[ params.mvr_id ]);
25 if (typeof robj.ilsevent != 'undefined') throw(robj);
28 if (params.mvr && !params.mvr_id) params.mvr_id = params.mvr.doc_id();
31 if ( (params.bre_id || params.mvr_id) && ! params.bre) {
32 var robj = net.simple_request('FM_BRE_RETRIEVE_VIA_ID.authoritative',[ session, [ (params.bre_id||params.mvr_id) ] ]);
33 if (typeof robj.ilsevent != 'undefined') throw(robj);
37 JSAN.use('util.widgets');
38 function exists(name) {
39 var nodes = document.getElementsByAttribute('name',name);
40 return nodes.length > 0;
42 function set(name,value) {
43 if (params.print_data) {
44 params.print_data[name] = value;
47 var nodes = document.getElementsByAttribute('name',name);
48 for (var i = 0; i < nodes.length; i++) {
49 util.widgets.set_text( nodes[i], value );
53 function set_tooltip(name,value) {
54 if (params.print_data) {
55 params.print_data[name] = value;
58 var nodes = document.getElementsByAttribute('name',name);
59 for (var i = 0; i < nodes.length; i++) {
60 nodes[i].setAttribute('tooltiptext',value);
66 // Use the list column definitions for rendering the mvr against the elements in bib_brief_overlay.xul
67 JSAN.use('circ.util');
68 var columns = circ.util.columns({});
69 for (var i = 0; i < columns.length; i++) {
71 //dump('considering column ' + c.id + '... ');
72 if (c.fm_class == 'mvr' || c.fm_class == 'bre') {
73 //dump('is an mvr or bre... ');
74 if (typeof c.render == 'function') { // Non-function renders are deprecated
75 //dump('render is a function... ');
78 value = c.render( { 'mvr' : params.mvr, 'acp' : params.acp, 'bre' : params.bre } );
81 //dump('Error in bib_brief_overlay(), with render() for c.id = ' + c.id + ' : ' + E + '\n');
83 //dump('value = ' + value + '\n');
84 var n = set(c.id, value ? value : '');
85 if (c.id == 'tcn_source') set_tooltip('tcn',value);
86 if (c.id == 'title') set_tooltip('title',value);
87 if (c.id == 'author') set_tooltip('author',value);
88 //dump('set text on ' + n + ' elements\n');
90 //dump('render is not a function\n');
93 //dump('is not an mvr or bre\n');
97 // Let's fetch a bib call number, if the "bib_call_number" field exists
99 if (exists('bib_call_number')) {
100 JSAN.use('OpenILS.data');
101 var data = new OpenILS.data();
102 var label_class = data.hash.aous[
103 'cat.default_classification_scheme'
109 'BLOB_MARC_CALLNUMBERS_RETRIEVE',
110 [params.mvr_id, label_class],
112 var cn_blob_array = req.getResultObject();
113 if (! cn_blob_array) { cn_blob_array = []; }
114 var tooltip_text = '';
115 for (var i = 0; i < cn_blob_array.length; i++) {
116 var cn_blob_obj = cn_blob_array[i];
117 for (var j in cn_blob_obj) {
118 tooltip_text += j + ' : ' + cn_blob_obj[j] + '\n';
122 var cn_blob_obj = cn_blob_array[0];
123 for (var j in cn_blob_obj) {
124 set('bib_call_number',cn_blob_obj[j]);
126 set_tooltip('bib_call_number',tooltip_text);
132 // Let's fetch the hold count for the bib, if the "holds" field exists
134 if (exists('holds')) {
136 'FM_AHR_COUNT_FOR_BRE',
139 var hold_count = req.getResultObject();
140 set('holds',hold_count);
145 // Let's fetch the item count for the bib, if the "items" field exists
147 if (exists('items')) {
148 JSAN.use('OpenILS.data');
149 var data = new OpenILS.data();
151 'FM_ACP_COUNT.authoritative',
152 [ data.tree.aou.id(), params.mvr_id ],
154 var count_blob = req.getResultObject()[0];
155 set('items',count_blob.count);
159 ? $('catStrings').getFormattedString(
160 'staff.cat.bib_brief.items.available.tooltip',
161 [count_blob.available]
163 : count_blob.available
170 alert(location.href + '\nError in bib_brief_overlay(' + js2JSON(params) + '): ' + E);