put vandelay queue actions into dropdown to clean up. queue filters auto-refresh...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 29 Oct 2008 17:12:53 +0000 (17:12 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 29 Oct 2008 17:12:53 +0000 (17:12 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_4@10975 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/js/dojo/openils/Util.js
Open-ILS/web/opac/locale/en-US/vandelay.dtd
Open-ILS/web/vandelay/inc/queue.xml
Open-ILS/web/vandelay/vandelay.js
Open-ILS/web/vandelay/vandelay.xml

index 4ce9cff..904caa5 100644 (file)
@@ -54,6 +54,45 @@ if(!dojo._hasResource["openils.Util"]) {
     };
 
     /**
+     * Given a HTML select object, returns the currently selected value
+     */
+    openils.Util.selectorValue = function(sel) {
+        if(!sel) return null;
+        var idx = sel.selectedIndex;
+        if(idx < 0) return null;
+        var o = sel.options[idx];
+        var v = o.value; 
+        if(v == null) v = o.innerHTML;
+        return v;
+    }
+
+    /**
+     * Returns the character code of the provided (or current window) event
+     */
+    openils.Util.getCharCode = function(evt) {
+        evt = (evt) ? evt : ((window.event) ? event : null); 
+        if(evt) {
+            return (evt.charCode ? evt.charCode : 
+                ((evt.which) ? evt.which : evt.keyCode ));
+        } else { return -1; }
+    }
+
+
+    /**
+     * Registers a handler for when the Enter key is pressed while 
+     * the provided DOM node has focus.
+     */
+    openils.Util.registerEnterHandler = function(domNode, func) {
+           if(!(domNode && func)) return;
+           domNode.onkeydown = function(evt) {
+            var code = openils.Util.getCharCode(evt);
+            if(code == 13 || code == 3) 
+                func();
+        }
+       }
+
+
+    /**
      * Parses opensrf response objects to see if they contain 
      * data and/or an ILS event.  This only calls request.recv()
      * once, so in a streaming context, it's necessary to loop on
index fd26641..8429fde 100644 (file)
 <!ENTITY vandelay.export.retrieve "Retrieve Records">
 <!ENTITY vandelay.export.field_no_hint "(starting from 0)">
 <!ENTITY vandelay.export.bucket "Record Bucket ID">
+<!ENTITY vandelay.select_actions "-- Actions --">
index 00e5722..6894774 100644 (file)
         <table width='100%' style='margin-bottom:0px;'>
             <tr>
                 <td align='left' valign='bottom'>
-                    <button dojoType='dijit.form.Button' onclick='vlImportSelectedRecords();'>&vandelay.import.selected;</button>
-                    <button dojoType='dijit.form.Button' onclick='vlImportAllRecords();'>&vandelay.import.all;</button>
-                    <button dojoType='dijit.form.Button' onclick="
-                        if(confirm('&vandelay.sure.to.delete.queue;')) {
-                            vlDeleteQueue(currentType, currentQueueId, 
-                                function() { displayGlobalDiv('vl-marc-upload-div'); });
-                        }">&vandelay.delete.queue;</button>
+                    <select id='vl-queue-actions-selector'>
+                        <option selected='selected' disabled='disabled' value='select-actions'>&vandelay.select_actions;</option>
+                        <option value='import'>&vandelay.import.selected;</option>
+                        <option value='import_all'>&vandelay.import.all;</option>
+                        <option value='delete_queue'>&vandelay.delete.queue;</option>
+                    </select>
+                    <script>
+                        var sel = dojo.byId('vl-queue-actions-selector');
+                        sel.onchange = function(evt) {
+                            switch(openils.Util.selectorValue(evt.target)) {
+                                case 'import': vlImportSelectedRecords(); break;;
+                                case 'import_all': vlImportAllRecords(); break;;
+                                case 'delete_queue': 
+                                    if(confirm('&vandelay.sure.to.delete.queue;')) {
+                                        vlDeleteQueue(currentType, currentQueueId, 
+                                            function() { displayGlobalDiv('vl-marc-upload-div'); });
+                                    }
+                            }
+                            evt.target.selectedIndex = 0;
+                        }
+                    </script>
                 </td>
                 <td align='middle' valign='bottom'>
-                    <style>.filter_td { padding-right: 5px; border-right: 2px solid #e8e1cf; } </style>
+                    <style>.filter_span { padding-right: 5px; border-right: 2px solid #e8e1cf; } </style>
                     <table><tr>
-                        <td class='filter_td'>
-                            <table class='small_form_table'><tr>
-                                    <td>&vandelay.limit.to.collision.matches;</td>
-                                    <td><input dojoType='dijit.form.CheckBox' jsId='vlQueueGridShowMatches'/></td>
-                                </tr><tr>
-                                    <td>&vandelay.limit.to.non.imported;</td>
-                                    <td><input dojoType='dijit.form.CheckBox' jsId='vlQueueGridShowNonImport' checked='checked'/></td>
-                            </tr></table>
-                        </td>
-                        <td class='filter_td' style='padding-left:5px;'>
-                            <div class='nav_row_div'>&vandelay.results.per.page;</div>
-                            <div class='nav_row_div'>
-                                <select style='width:68px;' jsId='vlQueueDisplayLimit' dojoType='dijit.form.FilteringSelect' value='10'>
+                        <td>
+                            <span>&vandelay.limit.to.collision.matches;</span>
+                            <span class='filter_span'>
+                                <input dojoType='dijit.form.CheckBox' jsId='vlQueueGridShowMatches' onchange='retrieveQueuedRecords();'/>
+                            </span>
+
+                            <span>&vandelay.limit.to.non.imported;</span>
+                            <span class='filter_span'>
+                                <input dojoType='dijit.form.CheckBox' jsId='vlQueueGridShowNonImport' checked='checked' onchange='retrieveQueuedRecords();'/>
+                            </span>
+
+                            <span>&vandelay.results.per.page;</span>
+                            <span class='filter_span'>
+                                <select jsId='vlQueueDisplayLimit' id='vl-queue-display-limit-selector'
+                                    value='10' onchange='retrieveQueuedRecords();'>
                                     <option value='10'>10</option>
                                     <option value='20'>20</option>
                                     <option value='50'>50</option>
                                     <option value='100'>100</option>
                                 </select>
-                            </div>
-                        </td>
-                        <td class='filter_td' style='padding-left:5px;'>
-                            <div class='nav_row_div'>&vandelay.page;</div>
-                            <div class='nav_row_div'>
-                                <input style='width:36px;' dojoType='dijit.form.TextBox' jsId='vlQueueDisplayPage' value='1'/>
-                            </div>
-                        </td>
-                        <td style='padding-left:5px;'>
-                            <button dojoType='dijit.form.Button' 
-                                onclick='retrieveQueuedRecords(currentType, currentQueueId, handleRetrieveRecords)'>&vandelay.refresh;</button>
+                            </span>
+
+                            <span style='padding-left:5px;'>&vandelay.page;</span>
+                            <input style='width:36px;' dojoType='dijit.form.TextBox' jsId='vlQueueDisplayPage' value='1'/>
                         </td>
                     </tr></table>
                 </td>
index b7a32f7..14b0636 100644 (file)
@@ -35,6 +35,7 @@ dojo.require("fieldmapper.dojoData");
 dojo.require('openils.CGI');
 dojo.require('openils.User');
 dojo.require('openils.Event');
+dojo.require('openils.Util');
 dojo.require('openils.MarcXPathParser');
 dojo.require('openils.GridColumnPicker');
 
@@ -84,6 +85,9 @@ function vlInit() {
     var initNeeded = 4; // how many async responses do we need before we're init'd 
     var initCount = 0; // how many async reponses we've received
 
+    openils.Util.registerEnterHandler(
+        vlQueueDisplayPage.domNode, function(){retrieveQueuedRecords();});
+
     function checkInitDone() {
         initCount++;
         if(initCount == initNeeded)
@@ -282,11 +286,17 @@ function retrieveQueuedRecords(type, queueId, onload) {
     selectableGridRecords = {};
     resetVlQueueGridLayout();
 
+    if(!type) type = currentType;
+    if(!queueId) queueId = currentQueueId;
+    if(!onload) onload = handleRetrieveRecords;
+
     var method = 'open-ils.vandelay.'+type+'_queue.records.retrieve.atomic';
     if(vlQueueGridShowMatches.checked)
         method = method.replace('records', 'records.matches');
 
-    var limit = parseInt(vlQueueDisplayLimit.getValue());
+    //var limit = parseInt(vlQueueDisplayLimit.getValue());
+    var sel = dojo.byId('vl-queue-display-limit-selector');
+    var limit = parseInt(sel.options[sel.selectedIndex].value);
     var offset = limit * parseInt(vlQueueDisplayPage.getValue()-1);
 
     var params =  [authtoken, queueId, {clear_marc: 1, offset: offset, limit: limit}];
index dbbfa63..7de894d 100644 (file)
@@ -22,7 +22,7 @@
     <head>
         <title>&vandelay.vandelay;</title>
         <link type='text/css' rel='stylesheet' href="/vandelay/vandelay.css"/>
-        <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:true" src="/js/dojo/dojo/dojo.js"></script>
+        <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/dojo.js"></script>
         <script type="text/javascript" src='/js/dojo/openils/MarcXPathParser.js'></script>
         <script type="text/javascript" src='/vandelay/vandelay.js'></script>
     </head>