+++ /dev/null
-dojo.require("openils.User");
-dojo.require("openils.widget.OrgUnitFilteringSelect");
-dojo.requireLocalization("openils.booking", "capture");
-
-const CAPTURE_FAILURE = 0;
-const CAPTURE_SUCCESS = 1;
-const CAPTURE_UNKNOWN = 2;
-
-var localeStrings = dojo.i18n.getLocalization("openils.booking", "capture");
-
-function CaptureDisplay(control_holder, data_holder) {
- this.control_holder = control_holder;
- this.data_holder = data_holder;
-}
-CaptureDisplay.prototype.no_payload = function() {
- this.data_holder.appendChild(
- document.createTextNode(localeStrings.NO_PAYLOAD)
- );
-};
-CaptureDisplay.prototype.dump = function(payload) {
- var div = document.createElement("div");
- div.appendChild(document.createTextNode(localeStrings.HERES_WHAT_WE_KNOW));
- this.data_holder.appendChild(div);
-
- var ul = document.createElement("ul");
- for (var k in payload) {
- var li = document.createElement("li");
- li.appendChild(document.createTextNode(k + ": " + payload[k]));
- ul.appendChild(li);
- }
- this.data_holder.appendChild(ul);
-};
-CaptureDisplay.prototype._generate_barcode_line = function(payload) {
- var div = document.createElement("div");
- div.appendChild(document.createTextNode(
- localeStrings.BARCODE + ": " + payload.resource.barcode()
- ));
- return div;
-};
-CaptureDisplay.prototype._generate_title_line = function(payload) {
- var div = document.createElement("div");
- div.appendChild(document.createTextNode(
- localeStrings.TITLE + ": " +
- (payload.mvr ? payload.mvr.title() : payload.type.name())
- ));
- return div;
-};
-CaptureDisplay.prototype._generate_author_line = function(payload) {
- var div = document.createElement("div");
- if (payload.mvr) {
- div.appendChild(document.createTextNode(
- localeStrings.AUTHOR + ": " + payload.mvr.author()
- ));
- }
- return div;
-};
-CaptureDisplay.prototype._generate_transit_notice = function(payload) {
- var div = document.createElement("div");
- if (payload.transit) {
- div.setAttribute("class", "transit_notice");
- div.appendChild(document.createTextNode(localeStrings.TRANSIT));
- }
- return div;
-};
-CaptureDisplay.prototype._generate_route_line = function(payload) {
- var div = document.createElement("div");
- var strong = document.createElement("strong");
- strong.appendChild(document.createTextNode(
- (payload.transit ?
- fieldmapper.aou.findOrgUnit(payload.transit.dest()).shortname() :
- localeStrings.RESERVATION_SHELF) + ":"
- ));
- div.appendChild(document.createTextNode(
- localeStrings.NEEDS_ROUTED_TO + " "
- ));
- div.appendChild(strong);
- return div;
-};
-CaptureDisplay.prototype._generate_patron_info = function(payload) {
- var p = document.createElement("p");
- p.innerHTML = "<strong>" + localeStrings.RESERVED + "</strong> " +
- formal_name(payload.reservation.usr()) + "<br />" +
- localeStrings.BARCODE + ": " +
- payload.reservation.usr().card().barcode();
- return p;
-};
-CaptureDisplay.prototype._generate_resv_info = function(payload) {
- var p = document.createElement("p");
- p.innerHTML = localeStrings.REQUEST + ": " +
- humanize_timestamp_string(payload.reservation.request_time()) +
- "<br />" +
- localeStrings.DURATION + ": " +
- humanize_timestamp_string(payload.reservation.start_time()) +
- " - " +
- humanize_timestamp_string(payload.reservation.end_time());
- return p;
-};
-CaptureDisplay.prototype._generate_meta_info = function(result) {
- var p = document.createElement("p");
- p.innerHTML = localeStrings.SLIP_DATE + ": " + result.servertime +
- "<br />" + localeStrings.PRINTED_BY + " " +
- formal_name(openils.User.user) + " " + localeStrings.AT + " " +
- fieldmapper.aou.findOrgUnit(openils.User.user.ws_ou()).shortname()
- return p;
-};
-CaptureDisplay.prototype.display_with_transit_info = function(result) {
- var div = document.createElement("div");
- var span = document.createElement("span");
- span.appendChild(document.createTextNode(localeStrings.CAPTURE_INFO));
- span.setAttribute("class", "capture_info");
- this.control_holder.appendChild(span);
-
- var button = document.createElement("button");
- button.setAttribute("class", "print_slip");
- button.setAttribute("type", "button");
- button.setAttribute("accesskey", localeStrings.PRINT_ACCESSKEY);
- button.innerHTML = localeStrings.PRINT;
- button.onclick = function() {
- try { dojo.byId("printing_iframe").contentWindow.print(); }
- catch (E) { alert(E); } /* XXX */
- return false;
- };
- this.control_holder.appendChild(button);
-
- div.appendChild(this._generate_transit_notice(result.payload));
-
- var p = document.createElement("p");
- p.appendChild(this._generate_route_line(result.payload));
- p.appendChild(this._generate_barcode_line(result.payload));
- p.appendChild(this._generate_title_line(result.payload));
- p.appendChild(this._generate_author_line(result.payload));
- div.appendChild(p);
-
- div.appendChild(this._generate_patron_info(result.payload));
- div.appendChild(this._generate_resv_info(result.payload));
- div.appendChild(this._generate_meta_info(result));
-
- this._create_iframe(div);
-};
-CaptureDisplay.prototype._create_iframe = function(contents) {
- var iframe = document.createElement("iframe");
- iframe.setAttribute("name", "printing_iframe");
- iframe.setAttribute("id", "printing_iframe");
- iframe.setAttribute("src", "");
- iframe.setAttribute("width", "100%");
- iframe.setAttribute("height", "400"); /* hardcode 400px? really? */
-
- this.data_holder.appendChild(iframe);
-
- var w = dojo.byId("printing_iframe").contentWindow;
- w.document.open();
- w.document.write(
- "<html><head><link rel='stylesheet' type='text/css' href='" +
- dojo.byId("booking_stylesheet_link").href +
- "' /><body></body></html>"
- );
- w.document.close();
- w.document.body.appendChild(contents);
- /* FIXME if (determine_autoprint_setting_somehow()) w.print(); */
-};
-CaptureDisplay.prototype.clear = function() {
- this.control_holder.innerHTML = "";
- this.data_holder.innerHTML = "";
-};
-CaptureDisplay.prototype.load = function(result) {
- try {
- this.control_holder.appendChild(document.createElement("hr"));
- if (!result.payload) {
- this.no_payload();
- } else if (!result.payload.fail_cause && result.payload.captured) {
- this.display_with_transit_info(result);
- } else {
- this.dump(result.payload);
- }
- } catch (E) {
- alert(E); /* XXX */
- }
-};
-
-var capture_display;
-var last_result;
-
-function clear_for_next() {
- if (last_result == CAPTURE_SUCCESS) {
- last_result = undefined;
- document.getElementById("result_display").innerHTML = "";
- document.getElementById("resource_barcode").value = "";
- }
-}
-
-function capture() {
- var barcode = document.getElementById("resource_barcode").value;
- var result = fieldmapper.standardRequest(
- [
- "open-ils.booking",
- "open-ils.booking.resources.capture_for_reservation"
- ],
- [xulG.auth.session.key, barcode]
- );
-
- if (result && result.ilsevent !== undefined) {
- if (result.payload && result.payload.captured > 0) {
- capture_display.load(result);
- return CAPTURE_SUCCESS;
- } else {
- capture_display.load(result);
- alert(my_ils_error(localeStrings.CAPTURED_NOTHING, result));
- return CAPTURE_FAILURE;
- }
- } else {
- return CAPTURE_UNKNOWN;
- }
-}
-
-function attempt_capture() {
- var rd = document.getElementById("result_display");
- capture_display.clear();
- switch(last_result = capture()) {
- case CAPTURE_FAILURE:
- rd.setAttribute("class", "capture_failure");
- rd.innerHTML = localeStrings.FAILURE;
- break;
- case CAPTURE_SUCCESS:
- rd.setAttribute("class", "capture_success");
- rd.innerHTML = localeStrings.SUCCESS;
- break;
- default:
- alert(localeStrings.UNKNOWN_PROBLEM);
- break;
- }
-}
-
-function my_init() {
- init_auto_l10n(dojo.byId("auto_l10n_start_here"));
- capture_display = new CaptureDisplay(
- dojo.byId("capture_info_top"),
- dojo.byId("capture_info_bottom")
- );
-}