1 dojo.require("dojo.cookie");
2 dojo.require("dojox.xml.parser");
3 dojo.require("openils.BibTemplate");
4 dojo.require("openils.widget.ProgressDialog");
9 function do_pull_list() {
10 progress_dialog.show(true);
14 fieldmapper.standardRequest(
15 ['open-ils.circ','open-ils.circ.hold_pull_list.print.stream'],
19 org_id : cgi.param('o'),
20 limit : cgi.param('limit'),
21 offset : cgi.param('offset'),
22 chunk_size : cgi.param('chunk_size'),
26 onresponse : function (r) {
28 dojo.forEach( openils.Util.readResponse(r), function (hold_fm) {
31 var hold = hold_fm.toHash(true);
32 hold.usr = hold_fm.usr().toHash(true);
33 hold.usr.card = hold_fm.usr().card().toHash(true);
34 hold.current_copy = hold_fm.current_copy().toHash(true);
35 hold.current_copy.location = hold_fm.current_copy().location().toHash(true);
36 hold.current_copy.call_number = hold_fm.current_copy().call_number().toHash(true);
37 hold.current_copy.call_number.record = hold_fm.current_copy().call_number().record().toHash(true);
38 hold.current_copy.call_number.prefix = hold_fm.current_copy().call_number().prefix().toHash(true);
39 hold.current_copy.call_number.suffix = hold_fm.current_copy().call_number().suffix().toHash(true);
40 hold.current_copy.parts_stringified = '';
41 dojo.forEach( hold_fm.current_copy().parts(), function(part) {
42 hold.current_copy.parts_stringified += ' ' + part.label();
46 // clone the template's html
48 dojo.query("tr", dojo.byId('template'))[0]
50 dojo.query("td:not([type])", tr).forEach(
53 dojo.string.substitute(td.innerHTML, hold);
57 new openils.BibTemplate({
59 xml : dojox.xml.parser.parse(hold.current_copy.call_number.record.marc),
63 dojo.place(tr, "target");
66 oncomplete : function () {
67 progress_dialog.hide();
70 if (any) window.print();
71 else alert(dojo.byId("no_results").innerHTML);
72 }, 500 /* give the progress_dialog more time to go away */
79 function place_by_sortkey(node, container) {
80 /*Don't use a forEach() or anything like that here. too slow.*/
81 var sortkey = dojo.attr(node, "sortkey");
82 for (var i = 0; i < container.childNodes.length; i++) {
83 var rover = container.childNodes[i];
84 if (rover.nodeType != 1) continue;
85 if (dojo.attr(rover, "sortkey") > sortkey) {
86 dojo.place(node, rover, "before");
90 dojo.place(node, container, "last");
93 function hashify_fields(fields) {
97 "barcode": fields.barcode,
99 "label": fields.label,
100 "record": {"marc": fields.marc}
102 "location": {"name": fields.name}
107 hold.usr.display_name = fields.alias;
109 hold.usr.display_name = [
110 (fields.family_name ? fields.family_name : ""),
111 (fields.first_given_name ? fields.first_given_name : ""),
112 (fields.second_given_name ? fields.second_given_name : "")
116 ["first_given_name","second_given_name","family_name","alias"].forEach(
117 function(k) { hold.usr[k] = fields[k]; }
123 function do_clear_holds() {
124 progress_dialog.show(true);
127 fieldmapper.standardRequest(
128 ["open-ils.circ", "open-ils.circ.hold.clear_shelf.process"], {
130 "params": [authtoken, cgi.param("o")],
131 "onresponse": function(r) {
132 if (r = openils.Util.readResponse(r)) {
133 if (r.cache_key) { /* complete */
134 launcher = dojo.byId("clear_holds_launcher");
135 launcher.innerHTML = "Re-fetch for Printing"; /* XXX i18n */
137 function() { do_clear_holds_from_cache(r.cache_key); };
138 dojo.byId("clear_holds_set_label").innerHTML = r.cache_key;
139 } else if (r.maximum) {
140 progress_dialog.update(r);
144 "oncomplete": function() {
145 progress_dialog.hide();
146 if (launcher) launcher.onclick();
147 else alert(dojo.byId("no_results").innerHTML);
153 function do_clear_holds_from_cache(cache_key) {
154 progress_dialog.show(true);
157 var target = dojo.byId("target");
159 var template = dojo.query("tr", dojo.byId("template"))[0];
160 fieldmapper.standardRequest(
162 "open-ils.circ.hold.clear_shelf.get_cache"], {
164 "params": [authtoken, cache_key, cgi.param("chunk_size")],
165 "onresponse": function(r) {
167 openils.Util.readResponse(r),
170 progress_dialog.update(resp);
174 var hold = hashify_fields(resp.hold_details);
175 hold.action = resp.action;
177 var tr = dojo.clone(template);
180 dojo.query("td:not([type])", tr).forEach(
183 dojo.string.substitute(td.innerHTML, hold);
187 new openils.BibTemplate({
189 "xml": dojox.xml.parser.parse(
190 hold.current_copy.call_number.record.marc
195 dojo.attr(tr, "sortkey", hold.usr.display_name);
196 place_by_sortkey(tr, target);
199 progress_dialog.update({"progress": any});
201 "oncomplete": function() {
202 progress_dialog.hide();
206 alert(dojo.byId("no_results").innerHTML);