1 dojo.require("openils.User");
2 dojo.require("openils.widget.OrgUnitFilteringSelect");
3 dojo.requireLocalization("openils.booking", "capture");
5 const CAPTURE_FAILURE = 0;
6 const CAPTURE_SUCCESS = 1;
7 const CAPTURE_UNKNOWN = 2;
9 var localeStrings = dojo.i18n.getLocalization("openils.booking", "capture");
11 function CaptureDisplay(element) { this.element = element; }
12 CaptureDisplay.prototype.no_payload = function() {
13 this.element.appendChild(document.createTextNode(localeStrings.NO_PAYLOAD));
15 CaptureDisplay.prototype.dump = function(payload) {
16 var div = document.createElement("div");
17 div.appendChild(document.createTextNode(localeStrings.HERES_WHAT_WE_KNOW));
18 this.element.appendChild(div);
20 var ul = document.createElement("ul");
21 for (var k in payload) {
22 var li = document.createElement("li");
23 li.appendChild(document.createTextNode(k + ": " + payload[k]));
26 this.element.appendChild(ul);
28 CaptureDisplay.prototype.generate_transit_display = function(payload) {
29 var super_div = document.createElement("div");
32 div = document.createElement("div");
33 div.appendChild(document.createTextNode(
34 localeStrings.CAPTURE_CAUSES_TRANSIT
36 div.setAttribute("class", "transit_notice");
37 super_div.appendChild(div);
39 div = document.createElement("div");
40 div.appendChild(document.createTextNode(
41 localeStrings.CAPTURE_TRANSIT_SOURCE + " " +
42 fieldmapper.aou.findOrgUnit(payload.transit.source()).shortname()
44 super_div.appendChild(div);
46 div = document.createElement("div");
47 div.appendChild(document.createTextNode(
48 localeStrings.CAPTURE_TRANSIT_DEST + " " +
49 fieldmapper.aou.findOrgUnit(payload.transit.dest()).shortname()
51 super_div.appendChild(div);
55 CaptureDisplay.prototype.display_with_transit_info = function(payload) {
58 div = document.createElement("div");
59 div.appendChild(document.createTextNode(localeStrings.CAPTURE_INFO));
60 div.setAttribute("class", "capture_info");
61 this.element.appendChild(div);
63 if (payload.catalog_item) {
64 div = document.createElement("div");
65 div.appendChild(document.createTextNode(
66 localeStrings.CAPTURE_BRESV_BRSRC + " " +
67 payload.catalog_item.barcode()
69 this.element.appendChild(div);
72 div = document.createElement("div");
73 div.appendChild(document.createTextNode(
74 localeStrings.CAPTURE_BRESV_DATES + " " +
75 humanize_timestamp_string(payload.reservation.start_time()) + " - " +
76 humanize_timestamp_string(payload.reservation.end_time())
78 this.element.appendChild(div);
80 div = document.createElement("div");
81 div.appendChild(document.createTextNode(
82 localeStrings.CAPTURE_BRESV_PICKUP_LIB + " " +
83 fieldmapper.aou.findOrgUnit(
84 payload.reservation.pickup_lib()
87 this.element.appendChild(div);
89 div = document.createElement("div");
90 div.appendChild(document.createTextNode(
91 localeStrings.CAPTURE_BRESV_PATRON_BARCODE + " " +
92 payload.reservation.usr().card().barcode()
94 this.element.appendChild(div);
96 if (payload.transit) {
97 this.element.appendChild(this.generate_transit_display(payload));
100 CaptureDisplay.prototype.clear = function() { this.element.innerHTML = ""; };
101 CaptureDisplay.prototype.load = function(payload) {
103 this.element.appendChild(document.createElement("hr"));
106 } else if (!payload.fail_cause && payload.captured) {
107 this.display_with_transit_info(payload);
119 function clear_for_next() {
120 if (last_result == CAPTURE_SUCCESS) {
121 last_result = undefined;
122 document.getElementById("result_display").innerHTML = "";
123 document.getElementById("resource_barcode").value = "";
128 var barcode = document.getElementById("resource_barcode").value;
129 var result = fieldmapper.standardRequest(
132 "open-ils.booking.resources.capture_for_reservation"
134 [xulG.auth.session.key, barcode]
137 if (result && result.ilsevent !== undefined) {
138 if (result.payload && result.payload.captured > 0) {
139 capture_display.load(result.payload);
140 return CAPTURE_SUCCESS;
142 capture_display.load(result.payload);
143 alert(my_ils_error(localeStrings.CAPTURED_NOTHING, result));
144 return CAPTURE_FAILURE;
147 return CAPTURE_UNKNOWN;
151 function attempt_capture() {
152 var rd = document.getElementById("result_display");
153 capture_display.clear();
154 switch(last_result = capture()) {
155 case CAPTURE_FAILURE:
156 rd.setAttribute("class", "capture_failure");
157 rd.innerHTML = localeStrings.FAILURE;
159 case CAPTURE_SUCCESS:
160 rd.setAttribute("class", "capture_success");
161 rd.innerHTML = localeStrings.SUCCESS;
164 alert(localeStrings.UNKNOWN_PROBLEM);
170 init_auto_l10n(document.getElementById("auto_l10n_start_here"));
171 capture_display = new CaptureDisplay(
172 document.getElementById("capture_display")