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);
39 // clone the template's html
41 dojo.query("tr", dojo.byId('template'))[0]
43 dojo.query("td:not([type])", tr).forEach(
46 dojo.string.substitute(td.innerHTML, hold);
50 new openils.BibTemplate({
52 xml : dojox.xml.parser.parse(hold.current_copy.call_number.record.marc),
56 dojo.place(tr, "target");
59 oncomplete : function () {
60 progress_dialog.hide();
64 alert(dojo.byId("no_results").innerHTML);
70 function place_by_sortkey(node, container) {
71 /*Don't use a forEach() or anything like that here. too slow.*/
72 var sortkey = dojo.attr(node, "sortkey");
73 for (var i = 0; i < container.childNodes.length; i++) {
74 var rover = container.childNodes[i];
75 if (rover.nodeType != 1) continue;
76 if (dojo.attr(rover, "sortkey") > sortkey) {
77 dojo.place(node, rover, "before");
81 dojo.place(node, container, "last");
84 function hashify_fields(fields) {
88 "barcode": fields.barcode,
90 "label": fields.label,
91 "record": {"marc": fields.marc}
93 "location": {"name": fields.name}
98 hold.usr.display_name = fields.alias;
100 hold.usr.display_name = [
101 (fields.family_name ? fields.family_name : ""),
102 (fields.first_given_name ? fields.first_given_name : ""),
103 (fields.second_given_name ? fields.second_given_name : "")
107 ["first_given_name","second_given_name","family_name","alias"].forEach(
108 function(k) { hold.usr[k] = fields[k]; }
114 function do_clear_holds() {
115 progress_dialog.show(true);
118 fieldmapper.standardRequest(
119 ["open-ils.circ", "open-ils.circ.hold.clear_shelf.process"], {
121 "params": [authtoken, cgi.param("o")],
122 "onresponse": function(r) {
123 if (r = openils.Util.readResponse(r)) {
124 if (r.cache_key) { /* complete */
125 launcher = dojo.byId("clear_holds_launcher");
126 launcher.innerHTML = "Re-fetch for Printing"; /* XXX i18n */
128 function() { do_clear_holds_from_cache(r.cache_key); };
129 dojo.byId("clear_holds_set_label").innerHTML = r.cache_key;
130 } else if (r.maximum) {
131 progress_dialog.update(r);
135 "oncomplete": function() {
136 progress_dialog.hide();
137 if (launcher) launcher.onclick();
138 else alert(dojo.byId("no_results").innerHTML);
144 function do_clear_holds_from_cache(cache_key) {
145 progress_dialog.show(true);
148 var target = dojo.byId("target");
150 var template = dojo.query("tr", dojo.byId("template"))[0];
151 fieldmapper.standardRequest(
153 "open-ils.circ.hold.clear_shelf.get_cache"], {
155 "params": [authtoken, cache_key, cgi.param("chunk_size")],
156 "onresponse": function(r) {
158 openils.Util.readResponse(r),
161 progress_dialog.update(resp);
165 var hold = hashify_fields(resp.hold_details);
166 hold.action = resp.action;
168 var tr = dojo.clone(template);
171 dojo.query("td:not([type])", tr).forEach(
174 dojo.string.substitute(td.innerHTML, hold);
178 new openils.BibTemplate({
180 "xml": dojox.xml.parser.parse(
181 hold.current_copy.call_number.record.marc
186 dojo.attr(tr, "sortkey", hold.usr.display_name);
187 place_by_sortkey(tr, target);
190 progress_dialog.update({"progress": any});
192 "oncomplete": function() {
193 progress_dialog.hide();
197 alert(dojo.byId("no_results").innerHTML);