From: <ro...@us...> - 2006-08-04 16:12:21
|
Revision: 266 Author: rouquin Date: 2006-08-04 09:12:13 -0700 (Fri, 04 Aug 2006) ViewCVS: http://svn.sourceforge.net/tcdb/?rev=266&view=rev Log Message: ----------- Fixed a few bugs on the assignments tree. Modified Paths: -------------- Website/App_Code/Assignments.cs Website/App_Code/Common.cs Website/App_Code/Users.cs Website/Includes/Assignments.ascx.cs Website/Includes/AssignmentsTree.ascx.cs Modified: Website/App_Code/Assignments.cs =================================================================== --- Website/App_Code/Assignments.cs 2006-08-02 21:42:32 UTC (rev 265) +++ Website/App_Code/Assignments.cs 2006-08-04 16:12:13 UTC (rev 266) @@ -19,62 +19,65 @@ { private static ILog m_logg = LogManager.GetLogger("TCDB.Assignments.AssignmentDB"); - public static List<Assignment> GetAssignmentList(string aType, int finished, int assignedID, string highPriority) + public static List<Assignment> GetAssignmentList(string aType, int finished, int assignedID, string highPriority, Nullable<int> creatorID) { - tcdbDataSet ds = new tcdbDataSet(); tcdbDataSetTableAdapters.db_assignmentsTableAdapter ta = new tcdbDataSetTableAdapters.db_assignmentsTableAdapter(); - // TODO: figure out the high priority stuff! + tcdbDataSet.db_assignmentsDataTable aTable; + if (finished == Constants.ASSIGNMENT_FINISHEDANDUNFINISHED) - { - ta.GetData(aType, null, assignedID, null, true); - ta.Fill(ds.db_assignments, aType, null, assignedID, null, true); - } + aTable = ta.GetData(aType, null, assignedID, null, true); else - { - ta.GetData(aType, finished, assignedID, null, true); - ta.Fill(ds.db_assignments, aType, finished, assignedID, null, true); - } + aTable = ta.GetData(aType, finished, assignedID, null, true); List<Assignment> assignmentList = new List<Assignment>(); - DataTableReader dr = ds.db_assignments.CreateDataReader(); - if (dr.HasRows) + foreach (tcdbDataSet.db_assignmentsRow row in aTable) { - while (dr.Read()) + Assignment assignment = new Assignment(); + assignment.NAME = row.aName; + assignment.DATEASSIGNED = row.dateAssigned; + try { - Assignment assignment = new Assignment(); + assignment.DATEDUE = row.dateDue; + } + catch { } + assignment.HIGHPRIORITY = row.highPriority; + assignment.STATUSNAME = row.statusName; + try + { + assignment.DATEFINISHED = row.dateFinished; + } + catch {} - string type = Help.DB_StringParse(dr["aType"]); - if (type == Constants.CODE_AI) - { - assignment.ACTIONITEM = ActionItemDB.GetActionItem(Help.DB_IntParse(dr["childID"])); - assignment.WOTOTALTEST = 0; - assignment.WOPASSRATE = 0; - assignment.WOPASS = 0; - assignment.WOFAIL = 0; - assignment.WOERROR = 0; - } - else if (type == Constants.CODE_WO) - { - assignment.WORKORDER = WorkOrderDB.TCDB_GetWorkOrder(Help.DB_IntParse(dr["childID"])); - assignment.WOTOTALTEST = Help.DB_IntParse(dr["WOTotalTest"], 0); - assignment.WOPASSRATE = Help.DB_IntParse(dr["WOPassRate"], 0); - assignment.WOPASS = Help.DB_IntParse(dr["WOPass"], 0); - assignment.WOFAIL = Help.DB_IntParse(dr["WOFail"], 0); - assignment.WOERROR = Help.DB_IntParse(dr["WOError"], 0); - } - assignment.NAME = Help.DB_StringParse(dr["aName"], ""); - assignment.NAME = Help.DB_StringParse(dr["aName"], ""); - assignment.CREATOR = Help.DB_StringParse(dr["creator"], ""); - assignment.ASSIGNED = Help.DB_StringParse(dr["assigned"], ""); - assignment.DATEASSIGNED = Help.DB_DateTimeParse(dr["dateAssigned"]); - assignment.DATEDUE = Help.DB_DateTimeParse(dr["dateDue"]); - assignment.DATEFINISHED = Help.DB_DateTimeParse(dr["dateFinished"]); - assignment.HIGHPRIORITY = Help.DB_BoolParse(dr["highPriority"]); - assignment.STATUSNAME = Help.DB_StringParse(dr["statusName"], ""); + string type = row.aType; + if (type == Constants.CODE_AI) + { + assignment.ACTIONITEM = ActionItemDB.GetActionItem(row.childID); + assignment.WOTOTALTEST = 0; + assignment.WOPASSRATE = 0; + assignment.WOPASS = 0; + assignment.WOFAIL = 0; + assignment.WOERROR = 0; - assignmentList.Add(assignment); + assignment.ASSIGNED = assignment.ACTIONITEM.ASSIGNED; + assignment.CREATOR = assignment.ACTIONITEM.CREATOR; } + else if (type == Constants.CODE_WO) + { + assignment.WORKORDER = WorkOrderDB.TCDB_GetWorkOrder(row.childID); + assignment.WOTOTALTEST = row.WOTotalTest; + assignment.WOPASSRATE = Convert.ToInt32(row.WOPassRate); + assignment.WOPASS = row.WOPass; + assignment.WOFAIL = row.WOFail; + assignment.WOERROR = row.WOError; + + assignment.ASSIGNED = assignment.WORKORDER.ASSIGNED; + assignment.CREATOR = assignment.WORKORDER.CREATOR; + } + if (creatorID != null && assignment.CREATOR.ID != creatorID) + continue; + + assignmentList.Add(assignment); } return assignmentList; @@ -291,8 +294,8 @@ private int p_id; private string p_name; - private string p_creator; - private string p_assigned; + private User p_creator; + private User p_assigned; private DateTime p_dateAssigned; private DateTime p_dateFinished; private DateTime p_dateDue; @@ -310,8 +313,8 @@ { p_id = 0; p_name = ""; - p_creator = ""; - p_assigned = ""; + p_creator = new User(); + p_assigned = new User(); p_dateAssigned = new DateTime(1, 1, 1); p_dateFinished = new DateTime(1, 1, 1); p_dateDue = new DateTime(1, 1, 1); @@ -338,13 +341,13 @@ set { p_name = value; } } - public string CREATOR + public User CREATOR { get { return p_creator; } set { p_creator = value; } } - public string ASSIGNED + public User ASSIGNED { get { return p_assigned; } set { p_assigned = value; } Modified: Website/App_Code/Common.cs =================================================================== --- Website/App_Code/Common.cs 2006-08-02 21:42:32 UTC (rev 265) +++ Website/App_Code/Common.cs 2006-08-04 16:12:13 UTC (rev 266) @@ -1247,6 +1247,8 @@ public static int ANONYMOUSUSERID = 1; public static int PRODUCT_SITEID = 1; public static int PRODUCT_ANYID = -1; + public static int PRODUCT_MINE = -2; + public static int PRODUCT_CREATED = -3; public static string CODE_USER = "u"; Modified: Website/App_Code/Users.cs =================================================================== --- Website/App_Code/Users.cs 2006-08-02 21:42:32 UTC (rev 265) +++ Website/App_Code/Users.cs 2006-08-04 16:12:13 UTC (rev 266) @@ -516,7 +516,7 @@ // TODO: This list needs to be able to reflect filters! if (p_assignments == null || reload) { - p_assignments = AssignmentDB.GetAssignmentList(null, statusFilter, ID, null); + p_assignments = AssignmentDB.GetAssignmentList(null, statusFilter, ID, null, null); } return p_assignments; Modified: Website/Includes/Assignments.ascx.cs =================================================================== --- Website/Includes/Assignments.ascx.cs 2006-08-02 21:42:32 UTC (rev 265) +++ Website/Includes/Assignments.ascx.cs 2006-08-04 16:12:13 UTC (rev 266) @@ -23,6 +23,7 @@ { private static ILog m_logg = LogManager.GetLogger("Page:Assignments"); private String uid = HttpContext.Current.Request.QueryString[Constants.CODE_USER]; + private String mode = HttpContext.Current.Request.QueryString["mode"]; private int productID = Convert.ToInt32(HttpContext.Current.Request.QueryString[Constants.CODE_PRODUCT]); private const int MAX_NAME_LENGTH = 30; @@ -133,6 +134,9 @@ !(ai.ASSIGNED.ID != m_user.ID && ai.ASSIGNED.HasRights(productID) && ai.CREATOR.ID == m_user.ID && m_user.HasRight("view_created_ai",productID)) ) return false; + + if (mode == "created" && ai.CREATOR.ID != m_user.ID) + return false; if (!cboShowActionItems.Checked) return false; @@ -155,6 +159,9 @@ ) return false; + if (mode == "created" && wo.CREATOR.ID != m_user.ID) + return false; + if (!cboShowWorkOrders.Checked) return false; } @@ -162,7 +169,7 @@ { m_logg.Debug("Couldn't determine what type [" + type + "] is"); } - + if (cboPriorityFilter.Checked) { switch (priority) Modified: Website/Includes/AssignmentsTree.ascx.cs =================================================================== --- Website/Includes/AssignmentsTree.ascx.cs 2006-08-02 21:42:32 UTC (rev 265) +++ Website/Includes/AssignmentsTree.ascx.cs 2006-08-04 16:12:13 UTC (rev 266) @@ -139,7 +139,12 @@ BuildProductList(e.Node); break; case 1: - BuildUserList(e.Node); + if (e.Node.NavigateUrl.Contains("mode=created")) + BuildCreatedUserList(e.Node); + else if (e.Node.NavigateUrl.Contains("mode=mine")) + BuildMyUserList(e.Node); + else + BuildUserList(e.Node); break; case 2: BuildAssignmentList(e.Node); @@ -170,44 +175,101 @@ else AssignmentTree_TreeNodePopulate(AssignmentTree, new TreeNodeEventArgs(child)); } + /* TODO: Do we really want to hide the tree? // If there are no children if (parent.ChildNodes.Count == 0) AssignmentTree.Visible = false; else { + */ + // *************************** // My assignments node + // *************************** TreeNode mine = new TreeNode(); mine.Text = "My Assignments"; - mine.Value = "0"; + mine.Value = Constants.PRODUCT_MINE.ToString(); mine.SelectAction = TreeNodeSelectAction.Select; - mine.NavigateUrl = "~/Assignments.aspx?" + Constants.CODE_USER + "=" + m_user.ID; + mine.PopulateOnDemand = true; + mine.NavigateUrl = "~/Assignments.aspx?mode=mine&" + Constants.CODE_USER + "=" + m_user.ID; + parent.ChildNodes.Add(mine); + if (nodes.Contains(mine.ValuePath)) + mine.Expand(); + + + // *************************** + // My Created assignments node + // *************************** + TreeNode created = new TreeNode(); + created.Text = "My Created Assignments"; + created.Value = Constants.PRODUCT_CREATED.ToString(); + created.SelectAction = TreeNodeSelectAction.Select; + created.PopulateOnDemand = true; + created.NavigateUrl = "~/Assignments.aspx?mode=created"; + + parent.ChildNodes.Add(created); + if (nodes.Contains(created.ValuePath)) + created.Expand(); + + /* TODO: Do we really want to remove the root node? + } + + // if there's only one + if (parent.ChildNodes.Count == 1) + { + TreeNode root = parent.ChildNodes[0]; + + root.NavigateUrl = "~/Assignments.aspx?" + Constants.CODE_PRODUCT + "=" + root.Value; + AssignmentTree.Nodes[0].Text = ""; + AssignmentTree.ShowExpandCollapse = false; + root.Expand(); + } + */ + } + private void BuildMyUserList(TreeNode parent) + { + m_logg.Debug("Building my user list"); + ArrayList nodes = (ArrayList)Session["AssignmentNodes"]; + + // User name + TreeNode user = new TreeNode(); + user.Text = m_user.FULLNAME; + user.Value = m_user.ID.ToString(); + user.PopulateOnDemand = true; + user.SelectAction = TreeNodeSelectAction.Select; + user.NavigateUrl = "~/Assignments.aspx?" + Constants.CODE_USER + "=" + m_user.ID; + parent.ChildNodes.Add(user); + if (nodes.Contains(user.ValuePath)) + user.Expand(); + } + private void BuildCreatedUserList(TreeNode parent) + { + m_logg.Debug("Building my user list"); + ArrayList nodes = (ArrayList)Session["AssignmentNodes"]; + tcdbDataSetTableAdapters.db_usersTableAdapter uAdapter = new tcdbDataSetTableAdapters.db_usersTableAdapter(); + tcdbDataSet.db_usersDataTable uTable = uAdapter.GetData(null,null); + + // Assignment status + int status = Constants.ASSIGNMENT_UNFINISHED; + if (statusComplete.Checked) + status = Constants.ASSIGNMENT_FINISHEDANDUNFINISHED; + + foreach (tcdbDataSet.db_usersRow row in uTable) + { + if (AssignmentDB.GetAssignmentList(null, status, row.userID, null, m_user.ID).Count == 0) + continue; + // User name TreeNode user = new TreeNode(); - user.Text = m_user.FULLNAME; - user.Value = m_user.ID.ToString(); + user.Text = row.fullName; + user.Value = row.userID.ToString(); user.PopulateOnDemand = true; user.SelectAction = TreeNodeSelectAction.Select; - user.NavigateUrl = "~/Assignments.aspx?" + Constants.CODE_USER + "=" + m_user.ID; - mine.ChildNodes.Add(user); - - parent.ChildNodes.Add(mine); - if (nodes.Contains(mine.ValuePath)) - mine.Expand(); + user.NavigateUrl = "~/Assignments.aspx?mode=created&" + Constants.CODE_USER + "=" + user.Value; + parent.ChildNodes.Add(user); if (nodes.Contains(user.ValuePath)) user.Expand(); } - - // if there's only one - if (parent.ChildNodes.Count == 1) - { - TreeNode root = parent.ChildNodes[0]; - - root.NavigateUrl = "~/Assignments.aspx?" + Constants.CODE_PRODUCT + "=" + root.Value; - AssignmentTree.Nodes[0].Text = ""; - AssignmentTree.ShowExpandCollapse = false; - root.Expand(); - } } private void BuildUserList(TreeNode parent) { @@ -225,19 +287,18 @@ int lastID = -1; foreach (tcdbDataSet.db_roleProductUserRow row in rpuTable) { + // duplicate check if (row.userID == lastID) continue; else lastID = row.userID; - User u = UserDB.GetUserInfo(row.userID); - if (u.GetAssignments(true, status).Count == 0) - continue; + if (AssignmentDB.GetAssignmentList(null, status, row.userID, null, null).Count == 0) + continue; // Create the new child node. TreeNode child = new TreeNode(); - child.Text = u.FULLNAME; - child.Value = u.ID.ToString(); - child.ImageUrl = "~/App_Themes/Images/user_add_48.png"; + child.Text = row.fullName; + child.Value = row.userID.ToString(); child.PopulateOnDemand = true; child.SelectAction = TreeNodeSelectAction.Select; parent.ChildNodes.Add(child); @@ -253,7 +314,7 @@ } private void BuildAssignmentList(TreeNode parent) { - m_logg.Debug("Building assignment list"); + m_logg.Debug("Building created assignment list"); // Populate the second-level nodes with assignments int status = Constants.ASSIGNMENT_UNFINISHED; int productID = Convert.ToInt32(parent.Parent.Value); @@ -261,24 +322,29 @@ if (statusComplete.Checked) status = Constants.ASSIGNMENT_FINISHEDANDUNFINISHED; - List<Assignment> assignmentList = UserDB.GetUserInfo(Convert.ToInt32(parent.Value)).GetAssignments(false,status); + List<Assignment> assignmentList = UserDB.GetUserInfo(Convert.ToInt32(parent.Value)).GetAssignments(false, status); m_logg.Debug("There are currently [" + assignmentList.Count.ToString() + "] assignments"); if (assignmentList.Count > 0) { foreach (Assignment a in assignmentList) { + // created list + if (parent.NavigateUrl.Contains("mode=created") && a.CREATOR.ID != m_user.ID) + continue; + // Create the new child node. TreeNode child = new TreeNode(); child.ToolTip = a.NAME; if (a.NAME.Length > MAX_NAME_LENGTH) { child.Text = a.NAME.Substring(0, MAX_NAME_LENGTH) + "..."; - } else + } + else child.Text = a.NAME; if (a.ISACTIONITEM) { - if ((m_user.HasRight("view_other_ai",productID)) || + if ((m_user.HasRight("view_other_ai", productID)) || ((userID == m_user.ID) && m_user.HasRight("view_my_ai", productID)) || ((a.ACTIONITEM.CREATOR.ID == m_user.ID) && m_user.HasRight("view_created_ai", productID))) { @@ -294,7 +360,7 @@ ((a.WORKORDER.CREATOR.ID == m_user.ID) && m_user.HasRight("view_created_ai", productID))) { child.Value = a.WORKORDER.ID.ToString(); - child.NavigateUrl = "~/WorkOrder.aspx?"+Constants.CODE_PRODUCT+"="+productID+"&" + Constants.CODE_WO + "=" + child.Value; + child.NavigateUrl = "~/WorkOrder.aspx?" + Constants.CODE_PRODUCT + "=" + productID + "&" + Constants.CODE_WO + "=" + child.Value; } else continue; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |