Author: husted
Date: Fri Jan  5 10:05:38 2007
New Revision: 493110

URL: http://svn.apache.org/viewvc?view=rev&rev=493110
Log:
PhoneBook2 - Add input form, refine workflow. 




Modified:
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx
    struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx?view=diff&rev=493110&r1=493109&r2=493110
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx 
(original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.ashx Fri 
Jan  5 10:05:38 2007
@@ -55,6 +55,29 @@
             // if helper.IsNominal ... 
             AppEntryList list = helper.Outcome as AppEntryList;
             return list.ToAppEntryArray();
-        }        
+        }
+
+        [JsonRpcMethod(App.ENTRY, Idempotent = true)]
+        [JsonRpcHelp("Returns an entry by key.")]
+        public AppEntry entry(string key)
+        {
+            IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY);
+            helper.Criteria[App.ENTRY_KEY] = key;
+            helper.Execute();
+            // if helper.IsNominal ... 
+            return helper.Outcome[0] as AppEntry;
+        }
+
+        [JsonRpcMethod(App.ENTRY_SAVE, Idempotent = true)]
+        [JsonRpcHelp("Saves the entry, insert or updating as appropriate.")]
+        public IDictionary entry_save(IDictionary input)
+        {
+            IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY_SAVE);
+            helper.Read(input,true);
+            helper.Execute();
+            // if helper.IsNominal ... 
+            return helper.Outcome[0] as IDictionary;
+        }
+            
     }
 }

Modified: struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html?view=diff&rev=493110&r1=493109&r2=493110
==============================================================================
--- struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html 
(original)
+++ struts/sandbox/trunk/overdrive/PhoneBook2/projects/Web/PhoneBook.html Fri 
Jan  5 10:05:38 2007
@@ -14,12 +14,14 @@
                     dojo.require("dojo.json");
                        dojo.require("dojo.widget.FilteringTable");
                        dojo.hostenv.writeIncludes();
-
-                    function dojoChannel(call)
+                       
+                       /* call server */
+                       
+                    function server(call)
                     {
                         var bindArgs = {
                             url: call.url+'?rpc',
-                            error: function(type, data, evt){alert("error");},
+                            error: function(type, data, evt){alert("Error 
Communicating with Server: " + data);},
                             method: "POST",
                             mimetype: "text/json",
                             handle: call.callback,
@@ -30,64 +32,68 @@
                         return req;
                     }
 
-                    function last_name_list_element(type, data, evt)
-                    {
-                        var arr = data.result;
-                        var last_name_list = dojo.byId('last_name_list');
-                        var select = document.createElement('select');
-                        for(var i=0; i < arr.length; i++)
-                        {
-                            select.options[i] = new Option(arr[i], arr[i]);
-                        }
-                        var label = document.createElement('label');
-                        label.value = "Last Name: ";
-                        last_name_list.appendChild(label);
-                        last_name_list.appendChild(select);
-                    }
-
-                    function last_name_list()
-                    {                    
-                        
PhoneBook.rpc.last_name_list(last_name_list_element).call(dojoChannel);
-                    }
-
-                    dojo.event.connect(window, "onload", last_name_list);      
                  
-
-                    function entry_list_element(type, data, evt)
+                    /* lister */
+                    
+                    function entry_list_result(type, data, evt)
                     {
                        var w = dojo.widget.byId("entry_list");
                         w.store.setData(data.result);
-                    }
-                    
+                    }                    
                     function entry_list()
                     {                    
-                        
PhoneBook.rpc.entry_list(entry_list_element).call(dojoChannel);
+                        
PhoneBook.rpc.entry_list(entry_list_result).call(server);
                     }
-
-                    dojo.event.connect(window, "onload", entry_list);
-
-                           function showSelected() {
-                                   var w=dojo.widget.byId("entry_list");
-                                   if (w) {
-                                       var s=w.getValue();
-                                           if (s.length>0) alert(s);
-                                           else alert("No rows are selected.");
-                                   }
-                           }
-
-                       function dateFilter(dt) {
-                                   return (dt == '5/29/1987' || dt == 
'11/18/1984');
+                    dojo.addOnLoad(entry_list);
+                    
+                    function entry_list_select_result(evt) {                   
+                        var table = dojo.widget.byId("entry_list");
+                        var row = table.getSelectedData();
+                        var user_name = row.user_name; 
+                        var entry_key = row.entry_key;
+                        alert(user_name + " (" + entry_key + ") is selected.");
+                    }                   
+                    function entry_list_select() {
+                        dojo.event.connect(dojo.byId("entry_list"), 
"onSelect",        entry_list_select_result);
+                    }
+                    dojo.addOnLoad(entry_list_select);
+                    
+                    /* lister filters */
+                    
+                       function dateFilter(hired) {
+                                   return (hired == '5/29/1987' || hired == 
'11/18/1984');
                            }
-                           function applyDate(key){
-                                   dojo.widget.byId(key).setFilter("hired", 
dateFilter);
+                           function applyDate(id){
+                                   dojo.widget.byId(id).setFilter("hired", 
dateFilter);
                            }
                                
-                           function nameFilter(name){
-                                   return (name.charAt(0) >= 'M' && 
name.charAt(0) <= 'Z');
+                           function nameFilter(last_name){
+                                   return (last_name.charAt(0) >= 'M' && 
last_name.charAt(0) <= 'Z');
                            }
-                           function applyName(key){
-                                   
dojo.widget.byId(key).setFilter("last_name", nameFilter);
+                           function applyName(id){
+                                   dojo.widget.byId(id).setFilter("last_name", 
nameFilter);
                        }
                
+                           function clearFilters(id){
+                                   dojo.widget.byId(id).clearFilters();
+                           }                       
+                           function reloadData(id){
+                                   dojo.widget.byId(id).store.clearData();
+                                   entry_list();
+                               }
+                                                               
+                    /* editor */
+                    
+                    function entry_save_result(type, data, evt)
+                    {
+                       alert ( "Added: " + data.result.user_name + " (" + 
data.result.entry_key + ")" );
+                    }    
+                    function entry_save()
+                    {                    
+                       var w = dojo.widget.byId("entry_form");         
+                       var values = w.getValues();             
+                        
PhoneBook.rpc.entry_save(values,entry_save_result).call(server);
+                    }
+
                 </script>
                 
                    <style type="text/css">
@@ -151,13 +157,36 @@
                        }
        </style>                            
     </head>
-    <body>
-    
-        <div id="last_name_list"></div>
+    <body>   
+        
+        <div id="editor">
+        <form id="entry_form" dojoType="Form">
+            <table><tr>
+                    <td>First Name</td><td><input name="first_name" /></td>
+                </tr><tr>
+                    <td>Last Name</td><td><input name="last_name" /></td>
+                </tr><tr>
+                    <td>Extension</td><td><input name="extension" /></td>
+                </tr><tr>
+                    <td>User Name</td><td><input name="user_name" /></td>
+                </tr><tr>
+                    <td>Hired</td><td><input type="text" name="hired" 
dojoType="dropdowndatepicker" displayFormat="dd/MM/yyyy" /></td>
+                </tr><tr>
+                    <td>Hours</td><td><input name="hours" /></td>
+                </tr><tr>
+                    <td rowspan="2"><input type="button" 
onClick="entry_save();" value="SAVE" />
+                    <input type="hidden" name="editor" value="1" />
+                    <input type="hidden" name="entry_key" />
+                </td>
+            </tr></table>
+        </form>
+        </div>
         
+        <div id="lister">
            <table id="entry_list" 
                    cellpadding="0" cellspacing="0" border="0" 
style="margin-bottom:24px;"
-                   dojoType="filteringTable" alternateRows="true" 
valueField="user_name" >
+                dojoType="filteringTable" alternateRows="true" 
valueField="user_name" 
+                >
                <thead>
                    <tr>
                            <th field="last_name" sort="asc">Last Name</th>
@@ -170,9 +199,13 @@
                </thead>
            </table>
            <p>
-               <input type="button" onclick="showSelected();" value="Show the 
selected object" />
                <input type="button" onclick="applyDate('entry_list');" 
value="Show only hires between 1/1/1984 and 1/1/1987" /> 
                <input type="button" onclick="applyName('entry_list');" 
value="Show only names between M and Z" /> 
+               <input type="button" value="Show All Entries" 
onclick="clearFilters('entry_list');" />
+               <input type="button" value="Reload Data" 
onclick="reloadData('entry_list');" />
+               <input type="button" value="Select Row" 
onclick="entry_list_select_result('entry_list');" />
                </p>
+               </div> 
+               
     </body>
 </html> 


Reply via email to