From d6f5dae862d51f2592d2bc7db1ccbc430455969e Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 13 May 2008 14:21:08 +0000 Subject: [PATCH] moved bib search JS to external file git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9576 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../ui_js/oils/default/acq/picklist/bib_search.js | 145 ++++++++++++++++++++ .../oils/default/acq/picklist/bib_search.html | 151 +-------------------- 2 files changed, 147 insertions(+), 149 deletions(-) create mode 100644 Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/bib_search.js diff --git a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/bib_search.js b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/bib_search.js new file mode 100644 index 0000000000..3b4ef40b2c --- /dev/null +++ b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/bib_search.js @@ -0,0 +1,145 @@ +dojo.require('dojox.form.CheckedMultiSelect'); +dojo.require('fieldmapper.Fieldmapper'); +dojo.require('dijit.ProgressBar'); +dojo.require('dijit.form.Form'); +dojo.require('dijit.form.TextBox'); +dojo.require('openils.Event'); + +var searchFields = []; +var resultPicklist; +var recvCount = 0; +var sourceCount = 0; // how many sources are we searching +var user = new openils.User(); + +function drawForm() { + + var sources = fieldmapper.standardRequest( + ['open-ils.search', 'open-ils.search.z3950.retrieve_services'], + [user.authtoken] + ); + + openils.Event.parse_and_raise(sources); + + for(var name in sources) { + source = sources[name]; + bibSourceSelect.addOption(name, name+':'+source.host); + for(var attr in source.attrs) + if(!attr.match(/^#/)) // xml comment nodes + searchFields.push(source.attrs[attr]); + } + + searchFields = searchFields.sort( + function(a,b) { + if(a.label < b.label) + return -1; + if(a.label > b.label) + return 1; + return 0; + } + ); + + //alert(dojo.query('[name=label]', 'oils-acq-search-fields-template')); + var tbody = dojo.byId('oils-acq-search-fields-tbody'); + var tmpl = tbody.removeChild(dojo.byId('oils-acq-search-fields-template')); + + for(var f in searchFields) { + var field = searchFields[f]; + if(dijit.byId('text_input_'+field.name)) continue; + var row = tmpl.cloneNode(true); + tbody.appendChild(row); + var labelCell = dojo.query('[name=label]', row)[0]; + var inputCell = dojo.query('[name=input]', row)[0]; + labelCell.appendChild(document.createTextNode(field.label)); + input = new dijit.form.TextBox({name:field.name, label:field.label, id:'text_input_'+field.name}); + inputCell.appendChild(input.domNode); + } +} + +function doSearch(values) { + dojo.style('searchProgress', 'visibility', 'visible'); + + search = { + service : [], + username : [], + password : [], + search : {}, + limit : searchLimit, + offset : searchOffset + } + + var selected = bibSourceSelect.getValue(); + for(var i = 0; i < selected.length; i++) { + search.service.push(selected[i]); + search.username.push(''); + search.password.push(''); + sourceCount++; + } + + for(var v in values) { + if(values[v]) { + var input = dijit.byId('text_input_'+v); + search.search[v] = values[v]; + } + } + + fieldmapper.standardRequest( + ['open-ils.search', 'open-ils.search.z3950.search_class'], + { async: true, + params: [user.authtoken, search], + onresponse: handleResult, + oncomplete: viewPicklist + } + ); +} + +function handleResult(r) { + var result = r.recv().content(); + if(!resultPicklist) + createResultPicklist(); + + searchProgress.update({maximum: sourceCount*searchLimit+1, progress: ++recvCount}); + + for(var idx in result.records) { + searchProgress.update({progress: ++recvCount}); + var rec = result.records[idx]; + var lineitem = new jub() + + lineitem.picklist(resultPicklist.id()); + lineitem.source_label(result.service) + lineitem.marc(rec.marcxml) + lineitem.eg_bib_id(rec.bibid) + + var id = fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.lineitem.create'], + [user.authtoken, lineitem] + ); + } +} + +function createResultPicklist() { + resultPicklist = new acqpl(); + resultPicklist.name(''); + resultPicklist.owner(user.user.id()); + + /* delete the old picklist with name = '' */ + var pl = fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.picklist.name.retrieve'], + [user.authtoken, ''] + ); + + if(pl) { + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.picklist.delete'], + [user.authtoken, pl.id()] + ); + } + + resultPicklist.id( + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.picklist.create'], + [user.authtoken, resultPicklist] + ) + ); +} + +dojo.addOnLoad(drawForm); diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/bib_search.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/bib_search.html index e27917ccf4..1cf2e0826d 100644 --- a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/bib_search.html +++ b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/bib_search.html @@ -2,166 +2,19 @@ <%inherit file='../base.html'/> <%def name="page_title()">${_('Title Search')} - <%def name="block_content()"> - +
-- 2.11.0