--- /dev/null
+dojo.require('openils.acq.Lineitem');
+
+function AcqLiTable() {
+
+ var self = this;
+ this.liCache = {};
+ this.toggleState = false;
+ this.tbody = dojo.byId('acq-lit-tbody');
+ this.selectors = [];
+ this.rowTemplate = this.tbody.removeChild(dojo.byId('acq-lit-row'));
+ dojo.byId('acq-lit-select-toggle').onclick = function(){self.toggleSelect()};
+
+ this.reset = function() {
+ while(self.tbody.childNodes[0])
+ self.tbody.removeChild(self.tbody.childNodes[0]);
+ self.selectors = [];
+ };
+
+ this.showTable = function() {
+ dojo.style(dojo.byId('acq-lit-table-div'), 'display', 'block');
+ dojo.style(dojo.byId('acq-lit-info-div'), 'display', 'none');
+ };
+
+ this.hideTable = function() {
+ dojo.style(dojo.byId('acq-lit-table-div'), 'display', 'none');
+ };
+
+ this.showInfo = function() {
+ self.hideTable();
+ dojo.style(dojo.byId('acq-lit-info-div'), 'display', 'block');
+ };
+
+ this.toggleSelect = function() {
+ if(self.toggleState)
+ dojo.forEach(self.selectors, function(i){i.checked = false});
+ else
+ dojo.forEach(self.selectors, function(i){i.checked = true});
+ self.toggleState = !self.toggleState;
+ };
+
+ this.getSelected = function() {
+ var selected = [];
+ dojo.forEach(self.selectors,
+ function(i) {
+ if(!i.checked) return;
+ selected.push(self.liCache[i.parentNode.parentNode.getAttribute('li')]);
+ }
+ );
+ return selected;
+ };
+
+ this.setRowAttr = function(td, liWrapper, field) {
+ var val = liWrapper.findAttr(field, 'lineitem_marc_attr_definition') || '';
+ td.appendChild(document.createTextNode(val));
+ };
+
+ this.addLineitem = function(li) {
+ this.liCache[li.id()] = li;
+ var liWrapper = new openils.acq.Lineitem({lineitem:li});
+ var row = self.rowTemplate.cloneNode(true);
+ row.setAttribute('li', li.id());
+ var tds = dojo.query('[attr]', row);
+ dojo.forEach(tds, function(td) {self.setRowAttr(td, liWrapper, td.getAttribute('attr'));});
+ dojo.query('[name=source_label]', row)[0].appendChild(document.createTextNode(li.source_label()));
+ self.tbody.appendChild(row);
+ self.selectors.push(dojo.query('[name=selectbox]', row)[0]);
+ };
+}
+
+
+
var user = new openils.User();
var searchLimit = 10;
var liCache = {};
+var liTable;
function drawForm() {
+ liTable = new AcqLiTable();
fieldmapper.standardRequest(
['open-ils.search', 'open-ils.search.z3950.retrieve_services'],
{ async: true,
function doSearch(values) {
showDiv('oils-acq-pl-loading');
- var tbody = dojo.byId('plist-tbody');
- if(!resultRow)
- resultRow = tbody.removeChild(dojo.byId('plist-row'));
- while(tbody.childNodes[0]) tbody.removeChild(tbody.childNodes[0]);
-
search = {
service : [],
username : [],
);
}
-var selectState = false;
-function toggleSelect() {
- var inputs = dojo.query('[name=selectbox]', dojo.byId('plist-tbody'));
- if(selectState)
- dojo.forEach(inputs, function(i){i.checked = false});
- else
- dojo.forEach(inputs, function(i){i.checked = true});
- selectState = !selectState;
-}
-
-function getSelected() {
- var inputs = dojo.query('[name=selectbox]', dojo.byId('plist-tbody'));
- var selected = [];
- dojo.forEach(inputs, function(i) {
- if(i.checked)
- selected.push(liCache[i.parentNode.parentNode.getAttribute('li')]);
- });
- return selected;
-}
function setRowAttr(td, liWrapper, field) {
var val = liWrapper.findAttr(field, 'lineitem_marc_attr_definition') || '';
function handleResult(r) {
var result = openils.Util.readResponse(r);
- dojo.style('oils-acq-pl-search-results', 'display', 'block');
+ liTable.showTable();
+ dojo.style(dojo.byId('oils-acq-pl-search-results'), 'display', 'block');
var tbody = dojo.byId('plist-tbody');
-
- if(result.lineitem) {
- var li = result.lineitem;
- liCache[li.id()] = li;
- var liWrapper = new openils.acq.Lineitem({lineitem:li});
- var row = resultRow.cloneNode(true);
- row.setAttribute('li', li.id());
- var tds = dojo.query('[attr]', row);
- dojo.forEach(tds, function(td) {setRowAttr(td, liWrapper, td.getAttribute('attr'));});
- dojo.query('[name=source_label]', row)[0].appendChild(document.createTextNode(li.source_label()));
- tbody.appendChild(row);
- }
-
+ if(result.lineitem)
+ liTable.addLineitem(result.lineitem);
if(result.complete) // hide the loading image
- showDiv('oils-acq-pl-search-results');
+ dojo.style('oils-acq-pl-loading','display', 'none');
}
function showDiv(div) {
var divs = [
- 'oils-acq-pl-search-results',
'oils-acq-search-block',
'oils-acq-pl-loading' ];
dojo.forEach(divs, function(d) {dojo.style(d,'display', 'none')});
+ liTable.hideTable();
dojo.style(div, 'display', 'block');
}
selectedLIs = resultLIs;
if(values.which == 'selected')
- selectedLIs = getSelected();
-
+ selectedLIs = liTable.getSelected();
+
if(values.new_name && values.new_name != '') {
// save selected lineitems to a new picklist
if(values.which = 'selected') {
--- /dev/null
+<script src='[% ctx.media_prefix %]/js/ui/default/acq/common/li_table.js'> </script>
+<div id='acq-lit-table-container'>
+ <div id='acq-lit-table-div' class='hidden'>
+ <table id='acq-lit-table'>
+ <thead>
+ <tr>
+ <th colspan='0'><a id='acq-lit-select-toggle' href='javascript:void(0);'>Select</a></th>
+ </tr>
+ </thead>
+ <tbody id='acq-lit-tbody'>
+ <tr id='acq-lit-row' class='acq-lit-row'>
+ <td name='selector'><input type='checkbox' name='selectbox'/></td>
+ <td>
+ <table>
+ <tr><td attr='title' colspan='0'/></tr>
+ <tr class='acq-lit-alt-row'>
+ <td/>
+ <td attr='author'/>
+ <td attr='isbn'/>
+ <td attr='issn'/>
+ <td attr='edition'/>
+ <td attr='pubdate'/>
+ <td attr='publisher'/>
+ </tr>
+ <tr class='acq-lit-alt-row'>
+ <td/>
+ <td name='source_label' colspan='0'/>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id='acq-lit-info-div' class='hidden'>
+ </div>
+</div>
+
</div>
</div>
<div dojoType='dijit.layout.ContentPane' layoutAlign='client'>
- <table id='oila-acq-picklist-result-table'>
- <thead>
- <tr>
- <th><a href='javascript:toggleSelect();'>Select</a></th>
- <th>Title</th><th>Author</th><th>ISBN</th>
- <th>ISSN</th><th>Edition</th><th>Pubdate</th>
- <th>Publisher</th><th>Source</th>
- </tr>
- </thead>
- <tbody id='plist-tbody'>
- <tr id='plist-row'>
- <td name='selector'><input type='checkbox' name='selectbox'/></td>
- <td attr='title'/>
- <td attr='author'/>
- <td attr='isbn'/>
- <td attr='issn'/>
- <td attr='edition'/>
- <td attr='pubdate'/>
- <td attr='publisher'/>
- <td name='source_label'/>
- </tr>
- </tbody>
- </table>
+ [% INCLUDE 'default/acq/common/li_table.tt2' %]
</div>
</div>