Ejemplo n.º 1
0
        private void QueryItems(string teamProject, string query, List <int> workItemIds,
                                HighlightFilter highlightings)
        {
            if (UIContext.Instance.GetMainTabPage() != FormMain.TABIDX_WORKITEMS)
            {
                UIContext.Instance.SetMainTabPage(FormMain.TABIDX_WORKITEMS);
            }

            query = query.Replace("@PROJECT", "@project");

            var context = new Hashtable();

            context.Add("project", teamProject);
            WorkItemCollection items = null;

            try
            {
                items = Context.ItemStore.Query(query, context);
            }
            catch (Exception e)
            {
                MessageBox.Show("Validating query failed, reason: \n\r" + e.Message, "Validating query",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (items != null)
            {
                displayFields        = items.DisplayFields;
                sqlEditor.Text       = query;
                lastQueryText        = query;
                lastQueryTeamProject = teamProject;

                this.cachedWorkItems = new List <WorkItem>();
                this.lvWI.Groups.Clear();
                var teamProjects = new List <string>();
                foreach (WorkItem workItem in items)
                {
                    this.cachedWorkItems.Add(workItem);

                    teamProject = (string)workItem.Fields[CoreField.TeamProject].Value;
                    if (!teamProjects.Contains(teamProject))
                    {
                        teamProjects.Add(teamProject);
                    }
                }

                teamProjects.Sort((x, y) =>
                {
                    return(string.Compare(x, y));
                });
                teamProjects.ForEach(project => this.lvWI.Groups.Add(project, project));

                PopulateWI(true, highlightings);
                SelectWorkItems(workItemIds);
            }
        }
Ejemplo n.º 2
0
        private void LocateWorkItemsForUser(string teamProject, string fieldName)
        {
            ListViewItem focusedItem = this.lvUsers.FocusedItem;

            if (focusedItem == null)
            {
                return;
            }

            string userDisplayName = focusedItem.SubItems[1].Text;

            StringBuilder fieldWhere       = new StringBuilder();
            StringBuilder fieldColumns     = new StringBuilder();
            string        teamProjectWhere = string.Empty;

            HighlightFilter hightligths = new HighlightFilter();

            if (fieldName == "@")
            {
                foreach (var workItemFieldName in this.workItemFields.Values)
                {
                    fieldWhere.AppendFormat("{0} = '{1}' OR ", workItemFieldName, userDisplayName);
                    fieldColumns.AppendFormat("{0} ,", workItemFieldName);

                    hightligths.Add(workItemFieldName.Replace("[", "").Replace("]", ""),
                                    new HighlightCondition(userDisplayName, Color.Green));
                }
                fieldWhere   = fieldWhere.Remove(fieldWhere.Length - 3, 3);
                fieldColumns = fieldColumns.Remove(fieldColumns.Length - 1, 1);
            }
            else
            {
                fieldColumns.Append(fieldName);
                fieldWhere.AppendFormat("{0} = '{1}'", fieldName, userDisplayName);
                hightligths.Add(fieldName.Replace("[", "").Replace("]", ""),
                                new HighlightCondition(userDisplayName, Color.Green));
            }

            if (teamProject != "@")
            {
                teamProjectWhere = string.Format("AND [System.TeamProject] = '{0}'", teamProject);
                hightligths.Add("System.TeamProject", new HighlightCondition(teamProject, Color.Green));
            }

            string query = string.Format(
                @"SELECT [System.Id], [System.Title], [System.TeamProject], {0} FROM WorkItems 
WHERE {1} {2}
ORDER BY [System.TeamProject] ASC, [System.Id] DESC",
                fieldColumns, fieldWhere, teamProjectWhere);

            UIContext.Instance.ControlWorkItems.FindRelatedWorkItems(teamProject, query, hightligths);
            //this.mainForm.controlWorkItems.FindRelatedWorkItems(teamProject, query, hightligths);
        }
Ejemplo n.º 3
0
        private void FindRelatedWorkItems(string teamProject, string query, List <int> focusByWI_IDs,
                                          HighlightFilter highlightings)
        {
            QueryItems(teamProject, query, focusByWI_IDs, highlightings);

            blockSelectedChange = true;
            try
            {
                this.cmbTeamProjects.Text = teamProject;
                PopulateQueries();
            }
            finally
            {
                blockSelectedChange = false;
            }
            SynchroTeamProjectText(null, EventArgs.Empty);
        }
Ejemplo n.º 4
0
 public void FindRelatedWorkItems(string teamProject, string query, HighlightFilter highlightings)
 {
     FindRelatedWorkItems(teamProject, query, new List <int>(), highlightings);
 }
Ejemplo n.º 5
0
        internal void PopulateWI(bool resort, HighlightFilter highlightings)
        {
            this.lvWI.BeginUpdate();
            try
            {
                BackupSelectedItems();

                if (resort)
                {
                    SortListData();
                }

                this.lvWI.Items.Clear();
                List <ColumnHeader> columnsToRemove = new List <ColumnHeader>();
                foreach (ColumnHeader column in lvWI.Columns)
                {
                    //string tag = column.Tag as string;
                    //bool canRemove = tag != "0";
                    bool canRemove = (column.Name == field_BuildIn || column.Name == field_IntegrationBuild);
                    if (canRemove)
                    {
                        columnsToRemove.Add(column);
                    }
                }
                columnsToRemove.ForEach(columnHeader => lvWI.Columns.Remove(columnHeader));

                COLUMN_FOUNDIN          = -1;
                COLUMN_INTEGRATIONBUILD = -1;

                if (this.cachedWorkItems != null)
                {
                    foreach (FieldDefinition fieldDef in displayFields)
                    {
                        if (defaultFields.Contains(fieldDef.ReferenceName))
                        {
                            continue;
                        }

                        ColumnHeader columnHeader = this.lvWI.Columns.Add(fieldDef.Name);
                        columnHeader.Tag  = "0";//fieldDef.ReferenceName;
                        columnHeader.Name = fieldDef.ReferenceName;

                        if (fieldDef.ReferenceName == field_BuildIn)
                        {
                            COLUMN_FOUNDIN = lvWI.Columns.Count - 1;
                        }
                        else if (fieldDef.ReferenceName == field_IntegrationBuild)
                        {
                            COLUMN_INTEGRATIONBUILD = lvWI.Columns.Count - 1;
                        }
                    }

                    string[] columnsTemp = new string[this.lvWI.Columns.Count];
                    int      idx         = 0;
                    foreach (ColumnHeader column in this.lvWI.Columns)
                    {
                        columnsTemp[idx++] = column.Text;
                    }

                    foreach (WorkItem workItem in this.cachedWorkItems)
                    {
                        ListViewItem viewItem = this.lvWI.Items.Add(workItem.Id.ToString());
                        viewItem.UseItemStyleForSubItems = false;
                        viewItem.Tag = workItem;
                        viewItem.SubItems.Add(workItem.Type.Name);
                        viewItem.SubItems.Add(workItem.Title);
                        viewItem.SubItems.Add(workItem.ChangedDate.ToString());
                        bool alreadyhightlighted = false;

                        foreach (FieldDefinition fieldDef in displayFields)
                        {
                            string workItemFieldContent = null;
                            if (defaultFields.Contains(fieldDef.ReferenceName) ||
                                !workItem.Fields.Contains(fieldDef.ReferenceName))
                            {
                                if (fieldDef.ReferenceName == field_BuildIn ||
                                    fieldDef.ReferenceName == field_IntegrationBuild)
                                {
                                    workItemFieldContent = string.Empty;
                                }
                                else
                                {
                                    continue;
                                }
                            }

                            if (workItemFieldContent == null)
                            {
                                workItemFieldContent = workItem[fieldDef.ReferenceName].ToString();
                            }

                            ListViewItem.ListViewSubItem subItem = viewItem.SubItems.Add(workItemFieldContent);

                            if (highlightings != null && highlightings.ContainsKey(fieldDef.ReferenceName))
                            {
                                HighlightCondition condition = highlightings[fieldDef.ReferenceName];
                                if (Util.StrEqual(subItem.Text, condition.Value, true))
                                {
                                    subItem.ForeColor = condition.ForeColor;

                                    if (!alreadyhightlighted)
                                    {
                                        subItem.BackColor   = condition.BackColor;
                                        alreadyhightlighted = true;
                                    }
                                }
                            }
                        }

                        var teamProject = (string)workItem.Fields[CoreField.TeamProject].Value;
                        viewItem.Group = this.lvWI.Groups[teamProject];
                    }
                }
            }
            finally
            {
                this.lvWI.EndUpdate();
                RestoreSelectedItems();
            }
        }