Author: husted Date: Wed Jun 22 04:48:10 2005 New Revision: 191810 URL: http://svn.apache.org/viewcvs?rev=191810&view=rev Log: OVR-5 * Enable filtering of the directory through the drop down lists.
Modified: struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseFilterList.cs struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseList.cs struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppBase.xml struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppConfig.xml struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/Catalog.xml struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Query/default.xml struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Web.config struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppBase.xml struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppConfig.xml struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/Catalog.xml struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/SelectAll.xml struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/default.xml Modified: struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseFilterList.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseFilterList.cs?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseFilterList.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseFilterList.cs Wed Jun 22 04:48:10 2005 @@ -20,7 +20,8 @@ { /// <summary> /// Execute database statement for QueryID - /// and pass through list in context under ID. + /// and wrap result in KeyValue objects + /// so that lists can be displayed by standard methods. /// </summary> /// public class BaseFilterList : AppCommand Modified: struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseList.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseList.cs?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseList.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Core/Commands/BaseList.cs Wed Jun 22 04:48:10 2005 @@ -28,7 +28,7 @@ { public override bool RequestExecute (IRequestContext context) { - IList rows = Mapper ().QueryForList (QueryID, null); + IList rows = Mapper ().QueryForList (QueryID, context); AppContextList list = new AppContextList (rows); context [ID] = list; return CONTINUE; Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Commands/SelectAllTest.cs Wed Jun 22 04:48:10 2005 @@ -68,5 +68,21 @@ IRequestContext context = catalog.ExecuteRequest (App.SELECT_ALL); SelectAll_Result (context); } + + [Test] + public void SelectAll_Format() + { + IRequestContext context = catalog.ExecuteRequest (App.SELECT_ALL); + IList list = context.Outcome as IList; + AppContext row = list [0] as AppContext; + Assert.IsNotNull (row,"Expected rows to be AppContexts"); + + string hired = row.hired; + Assert.IsTrue (hired.Length<"##/##/#### ".Length,hired + ": Expected short date format."); + + string extension = row.extension; + Assert.IsTrue (extension.Length>"1234567890".Length, extension + ": Expected formatted extension."); + + } } } Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppBase.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppBase.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppBase.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppBase.xml Wed Jun 22 04:48:10 2005 @@ -7,4 +7,10 @@ <object id="BaseFilterList" type="PhoneBook.Core.Commands.BaseFilterList, PhoneBook.Core"/> + <object id="BaseHelper" type="PhoneBook.Web.AppHelper, PhoneBook.Web"> + <property name="Catalog"> + <ref object="Catalog" /> + </property> + </object> + </objects> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppConfig.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppConfig.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppConfig.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/AppConfig.xml Wed Jun 22 04:48:10 2005 @@ -11,8 +11,21 @@ <!-- FieldTable --> <object id="FieldTable" type="Nexus.Core.Tables.FieldTable"> + <property name="AddFields"> + <list> + <ref object="hired"/> + </list> + </property> </object> + <!-- "d" is .NET for "short date" --> + <object id="hired" type="Nexus.Core.Tables.FieldContext"> + <property name="ID"><value>hired</value></property> + <property name="Alert"><value>{0} must be a valid date</value></property> + <property name="DataFormat"><value>d</value></property> + <property name="DataTypeName"><value>System.DateTime</value></property> + </object> + <!-- Validators --> <object id="convert_input" type="Nexus.Core.Validators.ConvertInput"> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/Catalog.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/Catalog.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/Catalog.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Command/Catalog.xml Wed Jun 22 04:48:10 2005 @@ -3,6 +3,8 @@ "http://www.springframework.net/dtd/spring-objects.dtd"> <objects> + <!-- basic commands --> + <object id="select_all" type="PhoneBook.Core.Commands.BaseList, PhoneBook.Core"> <property name="ID"><value>select_all</value></property> </object> @@ -30,6 +32,9 @@ <object id="hours_list" parent="BaseFilterList"> <property name="ID"><value>hours_list</value></property> </object> + + + <!-- chains --> <object id="directory_view" parent="BaseChain"> <property name="ID"> @@ -56,13 +61,19 @@ </list> </property> </object> + + + <!-- helpers --> - <object id="directory_view_helper" type="PhoneBook.Web.AppHelper, PhoneBook.Web"> - <property name="Catalog"> - <ref object="Catalog" /> - </property> + <object id="directory_view_helper" parent="BaseHelper"> <property name="Command"> <ref object="directory_view" /> + </property> + </object> + + <object id="list_all_helper" parent="BaseHelper"> + <property name="Command"> + <ref object="select_all" /> </property> </object> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Query/default.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Query/default.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Query/default.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Test/Resources/Query/default.xml Wed Jun 22 04:48:10 2005 @@ -7,7 +7,7 @@ <!-- <alias> - <typeAlias alias="KeyValue" type="Agility.Extras.KeyValue,Agility.Extras" /> + <typeAlias alias="KeyValue" type="Nexus.Core.KeyValue, Nexus.Core" /> </alias> --> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx Wed Jun 22 04:48:10 2005 @@ -25,7 +25,7 @@ <!-- FIND --> <asp:Panel ID="pnlFind" Runat="server"> <table><tr> - <td colspan="7" > + <td colspan="6" > <asp:Button ID="cmdListAll" Runat="server"></asp:Button> <asp:Button ID="cmdPrint" Runat="server"></asp:Button> </td> @@ -36,7 +36,6 @@ <td>User</td> <td>Hire Date</td> <td>Hours</td> - <td>Editor</td> </tr><tr> <td><asp:DropDownList ID="last_name_list" Runat=server></asp:DropDownList></td> <td><asp:DropDownList ID="first_name_list" Runat=server></asp:DropDownList></td> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Directory.aspx.cs Wed Jun 22 04:48:10 2005 @@ -2,10 +2,7 @@ using System.Collections; using System.Web.UI; using System.Web.UI.WebControls; -using Nexus.Core; using Nexus.Core.Helpers; -using PhoneBook.Core; -using PhoneBook.Core.Commands; namespace PhoneBook.Web.Forms { @@ -40,12 +37,11 @@ } } - /// <summary> - /// Field for ViewHelper. - /// </summary> - /// - private IViewHelper _ViewHelper; + #endregion + #region Helpers + + private IViewHelper _ViewHelper; /// <summary> /// Obtain dynamic data for the default view. /// </summary> @@ -56,18 +52,15 @@ set { _ViewHelper = value; } } - #endregion - - public IList GetDataSource () + private IViewHelper _FindHelper; + public virtual IViewHelper FindHelper { - BaseList command = new BaseList (); - command.ID = App.SELECT_ALL; - IRequestContext context = command.NewContext (); - command.Execute (context); - IList result = context.Outcome as IList; - return result; + get { return _FindHelper; } + set { _FindHelper = value; } } + #endregion + #region Find protected Panel pnlFind; @@ -83,7 +76,7 @@ // pageload events - These methods populate controls to display - private DropDownList[] GetLists () + private DropDownList[] FilterList () { DropDownList[] lists = {last_name_list, first_name_list, extension_list, user_name_list, hired_list, hours_list}; return lists; @@ -92,12 +85,38 @@ private void Find_Init () { cmdListAll.Text = msg_LIST_ALL_CMD; + cmdListAll.Click += new EventHandler(ListAll_Click); + cmdPrint.Text = msg_PRINT_CMD; + cmdPrint.Click +=new EventHandler(Print_Click); - foreach (DropDownList filter in GetLists ()) + foreach (DropDownList filter in FilterList ()) { filter.AutoPostBack = true; + filter.SelectedIndexChanged += new EventHandler(Filter_Changed); + } + } + + private void Filter_Reset(DropDownList except) + { + int exceptIndex = 0; + if (except!= null ) exceptIndex = except.SelectedIndex; + foreach (DropDownList filter in FilterList ()) + { + filter.SelectedIndex = 0; } + if (except!=null) except.SelectedIndex = exceptIndex; + } + + private void Filter_Changed (object sender, EventArgs e) + { + DropDownList list = sender as DropDownList; + string id = list.ID; + int v = id.LastIndexOf (FindHelper.ListSuffix); + string key = id.Substring (0, v); + FindHelper.Context[key] = list.SelectedValue; + Filter_Reset(list); + List_Load(FindHelper); } private void Find_Load () @@ -105,18 +124,24 @@ IViewHelper h = ViewHelper; h.ExecuteBind (pnlFind.Controls); bool ok = (h.IsNominal); - if (!ok) + if (!ok) Page_Error = h; } // postback events - These events respond to user input (to controls displayed by pageload methods) - protected void Find_Filter (object sender, EventArgs e) + private void ListAll_Click (object sender, EventArgs e) + { + Filter_Reset(null); + List_Load(FindHelper); + } + + private void Print_Click (object sender, EventArgs e) { - // TODO: See if filter changed. - List_Load (); + throw new NotImplementedException (); } + #endregion #region List @@ -133,10 +158,17 @@ this.cmdAdd.Visible = false; // TODO: True if user is editor } - private void List_Load () + private void List_Load (IViewHelper helper) { - repList.DataSource = GetDataSource (); - repList.DataBind (); + helper.Execute(); + bool ok = helper.IsNominal; + if (!ok) Page_Error = helper; + else + { + IList result = helper.Outcome; + repList.DataSource = result; + repList.DataBind (); + } } // postback events @@ -158,13 +190,14 @@ protected void List_PageIndexChanged (object sender, DataGridPageChangedEventArgs e) { - Find_Filter (null, null); repList.CurrentPageIndex = e.NewPageIndex; repList.DataBind (); } #endregion + #region Page + protected void Page_Init () { pnlError.Visible = false; @@ -174,14 +207,14 @@ protected void Page_Load (object sender, EventArgs e) { - if (IsPostBack) - Find_Filter (sender, e); - else + if (!IsPostBack) { Find_Load (); - List_Load (); + List_Load (FindHelper); } } + + #endregion } } Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Web.config URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Web.config?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Web.config (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Forms/Web.config Wed Jun 22 04:48:10 2005 @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> @@ -17,6 +17,7 @@ <object id="Directory" type="Directory.aspx"> <property name="ViewHelper"><ref object="directory_view_helper"/></property> + <property name="FindHelper"><ref object="directory_find_helper"/></property> </object> </objects> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppBase.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppBase.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppBase.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppBase.xml Wed Jun 22 04:48:10 2005 @@ -3,6 +3,15 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd"> - <object id="BaseChain" type="Nexus.Core.RequestChain, Nexus.Core"></object> + <object id="BaseChain" type="Nexus.Core.RequestChain, Nexus.Core"/> + + <object id="BaseFilterList" type="PhoneBook.Core.Commands.BaseFilterList, PhoneBook.Core"/> + + <!-- All child helpers must also specify singleton=false; otherwise, Context is shared. --> + <object id="BaseHelper" type="PhoneBook.Web.AppHelper, PhoneBook.Web" singleton="false"> + <property name="Catalog"> + <ref object="Catalog" /> + </property> + </object> </objects> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppConfig.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppConfig.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppConfig.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/AppConfig.xml Wed Jun 22 04:48:10 2005 @@ -11,8 +11,21 @@ <!-- FieldTable --> <object id="FieldTable" type="Nexus.Core.Tables.FieldTable"> + <property name="AddFields"> + <list> + <ref object="hired"/> + </list> + </property> </object> + <!-- "d" is .NET for "short date" --> + <object id="hired" type="Nexus.Core.Tables.FieldContext"> + <property name="ID"><value>hired</value></property> + <property name="Alert"><value>{0} must be a valid date</value></property> + <property name="DataFormat"><value>d</value></property> + <property name="DataTypeName"><value>System.DateTime</value></property> + </object> + <!-- Validators --> <object id="convert_input" type="Nexus.Core.Validators.ConvertInput"> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/Catalog.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/Catalog.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/Catalog.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Command/Catalog.xml Wed Jun 22 04:48:10 2005 @@ -3,14 +3,41 @@ "http://www.springframework.net/dtd/spring-objects.dtd"> <objects> - <object id="select_all" type="PhoneBook.Core.Commands.BaseList, PhoneBook.Core"> - <property name="ID"><value>select_all</value></property> - </object> + <!-- filter command --> - <object id="last_name_list" type="PhoneBook.Core.Commands.BaseFilterList, PhoneBook.Core"> + <object id="filter" type="PhoneBook.Core.Commands.BaseList, PhoneBook.Core"> + <property name="ID"><value>filter</value></property> + </object> + + <!-- filter list commands --> + + <object id="last_name_list" parent="BaseFilterList"> <property name="ID"><value>last_name_list</value></property> </object> + + <object id="first_name_list" parent="BaseFilterList"> + <property name="ID"><value>first_name_list</value></property> + </object> + <object id="extension_list" parent="BaseFilterList"> + <property name="ID"><value>extension_list</value></property> + </object> + + <object id="user_name_list" parent="BaseFilterList"> + <property name="ID"><value>user_name_list</value></property> + </object> + + <object id="hired_list" parent="BaseFilterList"> + <property name="ID"><value>hired_list</value></property> + </object> + + <object id="hours_list" parent="BaseFilterList"> + <property name="ID"><value>hours_list</value></property> + </object> + + + <!-- chains --> + <object id="directory_view" parent="BaseChain"> <property name="ID"> <value>directory_view</value> @@ -18,21 +45,37 @@ <property name="RelatedIDs"> <list> <value>last_name_list</value> + <value>first_name_list</value> + <value>extension_list</value> + <value>user_name_list</value> + <value>hired_list</value> + <value>hours_list</value> </list> </property> <property name="AddCommands"> <list> <ref object="last_name_list" /> + <ref object="first_name_list" /> + <ref object="extension_list" /> + <ref object="user_name_list" /> + <ref object="hired_list" /> + <ref object="hours_list" /> </list> </property> </object> + + + <!-- helpers --> - <object id="directory_view_helper" type="PhoneBook.Web.AppHelper, PhoneBook.Web"> - <property name="Catalog"> - <ref object="Catalog" /> - </property> + <object id="directory_view_helper" parent="BaseHelper" singleton="false"> <property name="Command"> <ref object="directory_view" /> + </property> + </object> + + <object id="directory_find_helper" parent="BaseHelper" singleton="false"> + <property name="Command"> + <ref object="filter" /> </property> </object> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/SelectAll.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/SelectAll.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/SelectAll.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/SelectAll.xml Wed Jun 22 04:48:10 2005 @@ -6,18 +6,40 @@ xsi:noNamespaceSchemaLocation="SqlMap.xsd" > <statements> - <select id="select_all" resultClass="Hashtable"> + <select id="filter" paramClass="Hashtable" resultClass="Hashtable"> SELECT pk_entry, last_name, first_name, extension, user_name, - editor, hired, - hours + hours, + editor FROM entry + <dynamic prepend="WHERE"> + <isNotNull property="last_name" prepend="AND"> + last_name=#last_name# + </isNotNull> + <isNotNull property="first_name" prepend="AND"> + first_name=#first_name# + </isNotNull> + <isNotNull property="extension" prepend="AND"> + extension=#extension# + </isNotNull> + <isNotNull property="user_name" prepend="AND"> + user_name=#user_name# + </isNotNull> + <isNotNull property="hired" prepend="AND"> + hired=#hired# + </isNotNull> + <isNotNull property="hours" prepend="AND"> + hours=#hours# + </isNotNull> + </dynamic> </select> + </statements> + </sqlMap> Modified: struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/default.xml URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/default.xml?rev=191810&r1=191809&r2=191810&view=diff ============================================================================== --- struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/default.xml (original) +++ struts/sandbox/trunk/overdrive/PhoneBook/Web/Resources/Query/default.xml Wed Jun 22 04:48:10 2005 @@ -7,7 +7,7 @@ <!-- <alias> - <typeAlias alias="KeyValue" type="Agility.Extras.KeyValue,Agility.Extras" /> + <typeAlias alias="KeyValue" type="Nexus.Core.KeyValue, Nexus.Core" /> </alias> --> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]