Acq: When invoice-building with embedded search, allow control of results list collab/senator/acq-inv-progressive-search-results
authorLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Fri, 5 Oct 2012 22:42:11 +0000 (18:42 -0400)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Fri, 5 Oct 2012 22:42:11 +0000 (18:42 -0400)
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>
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 27f2916..71708ef 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 41b3a60..2e3edf7 100644 (file)
@@ -82,8 +82,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 2036f6f..1add689 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) {
@@ -1053,6 +1059,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)