Initial dev repository
[kcls-web.git] / js / ui / default / acq / picklist / from_bib.js
diff --git a/js/ui/default/acq/picklist/from_bib.js b/js/ui/default/acq/picklist/from_bib.js
new file mode 100644 (file)
index 0000000..4853d16
--- /dev/null
@@ -0,0 +1,76 @@
+dojo.require("dijit.form.Button");
+dojo.require("openils.widget.XULTermLoader");
+
+var termLoader = null;
+var liTable = null;
+var pager = null;
+var usingPl = null;
+
+function fetchRecords() {
+    var data = openils.Util.uniqueElements(termLoader.attr("value"));
+    var result_count = 0;
+    // Don't show a total for now... This total is the total number of
+    // search terms, but a user would take it to mean the total number of
+    // results, which we don't have a straightfoward way of getting without
+    // doing the search more that once.
+
+    // pager.total = data.length;
+
+    progressDialog.show(true);
+    fieldmapper.standardRequest(
+        ["open-ils.acq", "open-ils.acq.biblio.create_by_id"], {
+            "params": [
+                openils.User.authtoken,
+                data.slice(
+                    pager.displayOffset,
+                    pager.displayOffset + pager.displayLimit
+                ), {
+                    "flesh_attrs": true,
+                    "flesh_cancel_reason": true,
+                    "flesh_notes": true,
+                    "reuse_picklist": usingPl
+                }
+            ],
+            "onresponse": function(r) {
+                if (r = openils.Util.readResponse(r)) {
+                    if (typeof(r) != "object") {
+                        usingPl = r;
+                    } else if (r.classname && r.classname == "jub") {
+                        result_count++;
+                        liTable.addLineitem(r);
+                    }
+                    /* The ML method is buggy and sometimes responds with
+                     * more objects that we don't want, hence the specific
+                     * conditionals above that don't necesarily consume all
+                     * responses. */
+                }
+            }
+        }
+    );
+    pager.batch_length = result_count;
+    progressDialog.hide();
+}
+
+function beginSearch() {
+    var data = termLoader.attr("value");
+    if (!data || !data.length) {
+        alert(localeStrings.LOAD_TERMS_FIRST);
+        return;
+    }
+
+    pager.go(0);
+    openils.Util.hide("acq-frombib-upload-box");
+    openils.Util.show("acq-frombib-reload-box");
+}
+
+function init() {
+    new openils.widget.XULTermLoader(
+        {"parentNode": "acq-frombib-upload", "parseCSV": true}
+    ).build(function(w) { termLoader = w; });
+    liTable = new AcqLiTable();
+    pager = new LiTablePager(fetchRecords, liTable);
+
+    openils.Util.show("acq-frombib-begin-holder");
+}
+
+openils.Util.addOnLoad(init);