Acq: When invoice-building with embedded search, allow control of results list
authorLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Fri, 5 Oct 2012 22:42:11 +0000 (18:42 -0400)
committerJason Stephenson <jstephenson@mvlc.org>
Fri, 14 Dec 2012 19:03:59 +0000 (14:03 -0500)
Previously, a results list could accumulate under inconsistent
conditions.  You'd get an accumulating results list if you were pressing
enter after successful searches, but your results lists would clear if
you actually clicked the Search button.  Worse, searches yielding empty
result sets would *appear* to clear your result list, but subsequent
sucessful searches would restore what was there before.

This is the "missing commit" that makes the behavior consistent and
togglable.

Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Open-ILS/src/templates/acq/invoice/view.tt2
Open-ILS/src/templates/acq/search/unified.tt2
Open-ILS/web/js/ui/default/acq/invoice/view.js
Open-ILS/web/js/ui/default/acq/search/unified.js

index a54621a..31f8581 100644 (file)
                                 <option value="or">any</option>
                             </select>
                             <label for="acq-unified-conjunction">
-                                of the following terms:
-                            </label>
+                                of the following terms
+                            </label> (
+                            <input type="checkbox" id="acq-unified-build-progressively" />
+                            <label for="acq-unified-build-progressively">
+                                building the results list progressively
+                            </label> )
+
+
                         </div>
                         <div id="acq-unified-terms">
                             <table id="acq-unified-terms-table">
                         </div>
                         <table width='100%'><tr>
                             <td align='left'>
-                                <button onclick="performSearch(0)">[% l('Search') %]</button>
+                                <button onclick="smartSearchSubmitter()">[% l('Search') %]</button>
                                 <button onclick='addSelectedToInvoice()'>
                                     [% l('Add Selected Items to Invoice') %]
                                 </button>
                                 <span id='acq-inv-search-prev'>
-                                    <a href='javascript:performSearch(-1)'>[% l('Previous') %]</a>
+                                    <a href='javascript:performSearch(-1, true)'>[% l('Previous') %]</a>
                                 </span>
                                 <span>
-                                    <a href='javascript:performSearch(1)'>[% l('Next') %]</a>
+                                    <a href='javascript:performSearch(1, true)'>[% l('Next') %]</a>
                                 </span>
                             </td>
                             <td align='right'>
index 0a7259d..a37fad2 100644 (file)
@@ -83,8 +83,7 @@
             <button onclick="termManager.addRow()">Add Search Term</button>
         </div>
         <div>
-            <button
-                onclick="resultManager.go(termManager.buildSearchObject())">
+            <button onclick="resultManager.submitter();">
                 Search
             </button>
         </div>
index 6c306db..59d73ce 100644 (file)
@@ -250,8 +250,10 @@ function doAttachPo(idx) {
     );
 }
 
-function performSearch(pageDir) {
-    clearSearchResTable(); 
+function performSearch(pageDir, clearFirst) {
+    if (clearFirst)
+        clearSearchResTable(); 
+
     var searchObject = termManager.buildSearchObject();
     dojo.cookie('invs', base64Encode(searchObject));
     dojo.cookie('invc', dojo.byId("acq-unified-conjunction").getValue());
@@ -331,8 +333,12 @@ function renderUnifiedSearch() {
             "no_results": {
                 "revealer": function() { }
             }
+
         };
 
+        resultManager.no_results_popup = true;
+        resultManager.submitter = smartSearchSubmitter;
+
         var searchObject = dojo.cookie('invs');
         console.log('loaded ' + searchObject);
         if (searchObject) {
@@ -1181,6 +1187,10 @@ function createExtraCopies(oncomplete) {
 
 }
 
+function smartSearchSubmitter() {
+    performSearch(0, !dojo.byId('acq-unified-build-progressively').checked);
+}
+
 
 openils.Util.addOnLoad(init);
 
index 0dfac0a..a6be3f0 100644 (file)
@@ -175,7 +175,7 @@ function TermSelectorFactory(terms) {
                 dojo.connect(wStore[widgetKey], 'onkeyup',
                     function(e) {
                         if(e.keyCode == dojo.keys.ENTER) {
-                            resultManager.go(termManager.buildSearchObject());
+                            resultManager.submitter();
                         }
                     }
                 );
@@ -204,7 +204,7 @@ function TermSelectorFactory(terms) {
                         dojo.connect(w.domNode, 'onkeyup',
                             function(e) {
                                 if(e.keyCode == dojo.keys.ENTER) {
-                                    resultManager.go(termManager.buildSearchObject());
+                                    resultManager.submitter();
                                 }
                             }
                         );
@@ -807,8 +807,12 @@ function ResultManager(liPager, poGrid, plGrid, invGrid) {
                 this.liPager.focusLi();
         }
 
-        if (!this.count_results)
-            this.show("no_results");
+        if (!this.count_results) {
+            if (this.no_results_popup)
+                alert(localeStrings.NO_RESULTS);
+            else
+                this.show("no_results");
+        }
         else this.finish(this.result_type);
     };
 
@@ -979,6 +983,10 @@ openils.Util.addOnLoad(
             dijit.byId("acq-unified-inv-grid")
         );
 
+        resultManager.submitter = function() {
+            resultManager.go(termManager.buildSearchObject());
+        };
+
         uriManager = new URIManager();
         if (uriManager.search_object) {
             if (!uriManager.half_search)