var dialog;
function Bucketz39Dialog() {
- dump('here....');
- // number of data sets to fetch on page load
- this.loadCount = 3;
+ this._build_options_grid = function(list, key, id_attr, label_attr) {
- this.item_loaded = function() {
- if (--this.loadCount > 0) return;
- // anything to do?
+ // determine the number of columns per row dynamically
+ var grid = dojo.byId(key).parentNode;
+ var colcount = grid.getElementsByTagName('column').length;
+
+ var row;
+ dojo.forEach(list, function(obj, idx) {
+
+ if (idx % colcount == 0) {
+ row = dojo.create('row');
+ dojo.byId(key).appendChild(row);
+ }
+
+ var attrs = {
+ value : obj[id_attr](),
+ label : obj[label_attr]()
+ };
+ attrs[key] = 1;
+
+ row.appendChild(dojo.create('checkbox', attrs));
+ });
}
- this.load = function() {
+ this.init = function() {
var self = this;
var pcrud = new OpenSRF.ClientSession('open-ils.pcrud');
if (resp = r.recv()) {
var qlist = resp.content();
dojo.forEach(qlist, function(q) {
- var attrs = {value : q.id(), label : q.name()};
+ var attrs = {label : q.name()};
var item = dojo.create('menuitem', attrs);
dojo.byId('queue_selector').appendChild(item);
});
- self.item_loaded();
}
}
}).send();
- // z39 index maps
+ // z39 index field maps
pcrud.request({
method : 'open-ils.pcrud.search.czifm.atomic',
params : [
{order_by : {czifm : 'label'}}
],
oncomplete : function(r) {
- if (resp = r.recv()) {
- var maps = resp.content();
- dojo.forEach(maps, function(map) {
- var attrs = {
- value : map.id(),
- label : map.label(),
- index_selector : '1',
- };
- var cbox = dojo.create('checkbox', attrs);
- dojo.byId('index_selector').appendChild(cbox);
- });
- self.item_loaded();
- }
+ self._build_options_grid(
+ r.recv().content(),
+ 'index_selector', 'id', 'label');
}
}).send();
{order_by : {czs : 'name'}}
],
oncomplete : function(r) {
- if (resp = r.recv()) {
- var sources = resp.content();
- dojo.forEach(sources, function(src) {
- var attrs = {
- value : src.name(),
- label : src.label(),
- source_selector : '1',
- };
- var item = dojo.create('checkbox', attrs);
- dojo.byId('source_selector').appendChild(item);
- });
- self.item_loaded();
- }
+ self._build_options_grid(
+ r.recv().content(),
+ 'source_selector', 'name', 'label');
}
}).send();
}
+
+ this.submit = function() {
+
+ var params = [this.authtoken, this.user_id];
+
+ // Z39 sources
+ params.push(dojo.query('[source_selector]').filter(
+ function(cbox) { return cbox.checked }).map(
+ function(cbox) { return cbox.getAttribute('value') }));
+
+ // indexes
+ params.push(dojo.query('[index_selector]').filter(
+ function(cbox) { return cbox.checked }).map(
+ function(cbox) { return cbox.getAttribute('value') }));
+
+ params.push({queue_name : dojo.byId('queue_selector').parentNode.value});
+
+ dump('submitting z39 search with: ' + js2JSON(params) + '\n');
+
+ /*
+ open-ils.search
+ open-ils.search.z3950.bucket_search_queue
+ "fcb49802e337036baf7225c7044f04e4", 1, ["biblios", "loc"], [3], {"queue_name":"zq1"}
+ */
+ }
}
function my_init() {
dialog.user_id = window.arguments[0];
dialog.authtoken = window.arguments[1];
dialog.bucket_id = window.arguments[2];
- dialog.load();
+ dialog.init();
}
<grid>
<columns><column /><column /></columns>
<rows>
- <row>
- <label value="Search These Z39.50 Servers:"/>
- <vbox id='source_selector'>
- </vbox>
+ <row style='border-bottom:1px solid black; padding:5px;'>
+ <label class='header' value="Search These Z39.50 Servers:"/>
+ <grid>
+ <columns>
+ <!-- display 2 Z-sources per row -->
+ <column />
+ <column />
+ </columns>
+ <rows id='source_selector'>
+ </rows>
+ </grid>
</row>
- <row id='index_selector_row'>
- <label value="Use These Match Points:"/>
- <vbox id='index_selector'>
- </vbox>
+ <row style='border-bottom:1px solid black; padding:5px;'>
+ <label class='header' value="Use These Z39.50 Search Indexes:"/>
+ <grid>
+ <columns>
+ <!-- display 3 Z-index options per row -->
+ <column />
+ <column />
+ <column />
+ </columns>
+ <rows id='index_selector'>
+ </rows>
+ </grid>
</row>
- <row>
- <label value="Add Results to Queue:"/>
+ <row style='border-bottom:1px solid black; padding:5px;'>
+ <label class='header' value="Add Results to Queue:"/>
<menulist editable='true'>
<menupopup id='queue_selector'>
- <menuitem value='' label="-- Select Queue -->"/>
</menupopup>
</menulist>
</row>
+ <row style='padding:5px;'>
+ <button oncommand="window.close();"
+ icon="remove" accesskey="C" label="Cancel" />
+ <button oncommand="dialog.submit();"
+ icon="accept" accesskey="P" label="Perform Search" />
+ </row>
</rows>
</grid>
- <hbox pack='center'>
- <button oncommand="window.close();"
- icon="remove" accesskey="C" label="Cancel" />
- <button oncommand="dialog.submit();"
- icon="accept" accesskey="P" label="Perform Search" />
- </hbox>
</vbox>
</box>
</overlay>