From 953afe24e579d130715075d09317d00e367dbedf Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 17 Mar 2009 03:12:01 +0000 Subject: [PATCH] moved lineitem table out to generic template for import. this will eventually take the place of jubgrid in most cases. still need to plug some final holes for basica functionality git-svn-id: svn://svn.open-ils.org/ILS/trunk@12553 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../web/js/ui/default/acq/common/li_table.js | 71 +++++++++++++++++++ .../js/ui/default/acq/picklist/bib_search.js | 52 +++----------- .../templates/default/acq/common/li_table.tt2 | 38 ++++++++++ .../default/acq/picklist/bib_search.tt2 | 24 +------ 4 files changed, 120 insertions(+), 65 deletions(-) create mode 100644 Open-ILS/web/js/ui/default/acq/common/li_table.js create mode 100644 Open-ILS/web/templates/default/acq/common/li_table.tt2 diff --git a/Open-ILS/web/js/ui/default/acq/common/li_table.js b/Open-ILS/web/js/ui/default/acq/common/li_table.js new file mode 100644 index 0000000000..24d1fe1dce --- /dev/null +++ b/Open-ILS/web/js/ui/default/acq/common/li_table.js @@ -0,0 +1,71 @@ +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]); + }; +} + + + diff --git a/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js b/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js index c547fc4e99..d25e97ee54 100644 --- a/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js +++ b/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js @@ -20,8 +20,10 @@ var sourceCount = 0; // how many sources are we searching 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, @@ -82,11 +84,6 @@ var resultRow; 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 : [], @@ -122,25 +119,6 @@ function doSearch(values) { ); } -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') || ''; @@ -149,32 +127,22 @@ function setRowAttr(td, liWrapper, field) { 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'); } @@ -203,8 +171,8 @@ function saveResults(values) { 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') { diff --git a/Open-ILS/web/templates/default/acq/common/li_table.tt2 b/Open-ILS/web/templates/default/acq/common/li_table.tt2 new file mode 100644 index 0000000000..f4e97e5393 --- /dev/null +++ b/Open-ILS/web/templates/default/acq/common/li_table.tt2 @@ -0,0 +1,38 @@ + +
+ + +
+ diff --git a/Open-ILS/web/templates/default/acq/picklist/bib_search.tt2 b/Open-ILS/web/templates/default/acq/picklist/bib_search.tt2 index 05ebc3a978..f9fedd4322 100644 --- a/Open-ILS/web/templates/default/acq/picklist/bib_search.tt2 +++ b/Open-ILS/web/templates/default/acq/picklist/bib_search.tt2 @@ -93,29 +93,7 @@
- - - - - - - - - - - - - - -
SelectTitleAuthorISBNISSNEditionPubdatePublisherSource
- - - - - - - -
+ [% INCLUDE 'default/acq/common/li_table.tt2' %]
-- 2.43.2