moved lineitem table out to generic template for import. this will eventually take...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 17 Mar 2009 03:12:01 +0000 (03:12 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 17 Mar 2009 03:12:01 +0000 (03:12 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@12553 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/js/ui/default/acq/common/li_table.js [new file with mode: 0644]
Open-ILS/web/js/ui/default/acq/picklist/bib_search.js
Open-ILS/web/templates/default/acq/common/li_table.tt2 [new file with mode: 0644]
Open-ILS/web/templates/default/acq/picklist/bib_search.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 (file)
index 0000000..24d1fe1
--- /dev/null
@@ -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]);
+    };
+}
+
+
+
index c547fc4..d25e97e 100644 (file)
@@ -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 (file)
index 0000000..f4e97e5
--- /dev/null
@@ -0,0 +1,38 @@
+<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>
+
index 05ebc3a..f9fedd4 100644 (file)
         </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>