void buildUserStoryCharts(int weeks) { ChartDatum[] opened = new ChartDatum[weeks]; ChartDatum[] started = new ChartDatum[weeks]; ChartDatum[] closed = new ChartDatum[weeks]; for (int i = 0; i < weeks; ++i) { DateTime ws = start.AddDays(7 * i); DateTime we = ws.AddDays(6); string st = string.Format("Week of {0:MMM d} - {1:MMM d}", ws, we); string color = "Primary"; SolidColorBrush fill = App.Current.Resources[string.Format("Theme{0}ColorBrush", color)] as SolidColorBrush; SolidColorBrush stroke1 = App.Current.Resources[string.Format("Theme{0}LighterColorBrush", color)] as SolidColorBrush; ChartDatum d = new ChartDatum(); d.title = "Opened"; d.subtitle = st; d.week = i; d.fill = fill; d.stroke = stroke1; d.strokeWidth = 1; opened[i] = d; color = "Secondary"; fill = App.Current.Resources[string.Format("Theme{0}ColorBrush", color)] as SolidColorBrush; stroke1 = App.Current.Resources[string.Format("Theme{0}LighterColorBrush", color)] as SolidColorBrush; d = new ChartDatum(); d.title = "In Progress"; d.subtitle = st; d.week = i; d.fill = fill; d.stroke = stroke1; d.strokeWidth = 1; started[i] = d; color = "Tertiary"; fill = App.Current.Resources[string.Format("Theme{0}ColorBrush", color)] as SolidColorBrush; stroke1 = App.Current.Resources[string.Format("Theme{0}LighterColorBrush", color)] as SolidColorBrush; d = new ChartDatum(); d.title = "Closed"; d.subtitle = st; d.week = i; d.fill = fill; d.stroke = stroke1; d.strokeWidth = 1; closed[i] = d; } foreach (UserStory u in userStories) { ChartDatum d = opened[u.opened]; string color = "Primary"; SolidColorBrush stroke2 = App.Current.Resources[string.Format("Theme{0}DarkestColorBrush", color)] as SolidColorBrush; d.stroke = stroke2; d.strokeWidth = 2; d.count = d.count + 1; if (!string.IsNullOrWhiteSpace(d.details)) { d.details = d.details + "\r\n" + u.title; } else { d.details = u.title; } if (u.started >= u.opened) { d = started[u.started]; color = "Secondary"; stroke2 = App.Current.Resources[string.Format("Theme{0}DarkestColorBrush", color)] as SolidColorBrush; d.stroke = stroke2; d.strokeWidth = 2; d.count = d.count + 1; if (!string.IsNullOrWhiteSpace(d.details)) { d.details = d.details + "\r\n" + u.title; } else { d.details = u.title; } if (u.closed >= u.started) { d = closed[u.closed]; color = "Tertiary"; stroke2 = App.Current.Resources[string.Format("Theme{0}DarkestColorBrush", color)] as SolidColorBrush; d.stroke = stroke2; d.strokeWidth = 2; d.count = d.count + 1; if (!string.IsNullOrWhiteSpace(d.details)) { d.details = d.details + "\r\n" + u.title; } else { d.details = u.title; } } } } for (int i = 0; i < weeks; ++i) { ChartDatum d = opened[i]; if (string.IsNullOrWhiteSpace(d.details)) { d.details = "No change this week"; } d = started[i]; if (string.IsNullOrWhiteSpace(d.details)) { d.details = "No change this week"; } d = closed[i]; if (string.IsNullOrWhiteSpace(d.details)) { d.details = "No change this week"; } } for (int i = 1; i < weeks; ++i) { ChartDatum d = opened[i]; ChartDatum c = opened[i - 1]; ChartDatum b = started[i]; d.count = d.count + c.count - b.count; } for (int i = 1; i < weeks; ++i) { ChartDatum d = started[i]; ChartDatum c = started[i - 1]; ChartDatum b = closed[i]; d.count = d.count + c.count - b.count; } for (int i = 1; i < weeks; ++i) { ChartDatum d = closed[i]; ChartDatum c = closed[i - 1]; d.count = d.count + c.count; } LineSeries s = getLineSeries(formatLegend("Opened", opened[weeks - 1].count, opened[weeks - 2].count), App.Current.Resources[string.Format("Theme{0}ColorBrush", "Primary")] as SolidColorBrush); s.ItemsSource = opened; pipelineChart.Series.Add(s); s = getLineSeries(formatLegend("In Progress", started[weeks - 1].count, started[weeks - 2].count), App.Current.Resources[string.Format("Theme{0}ColorBrush", "Secondary")] as SolidColorBrush); s.ItemsSource = started; pipelineChart.Series.Add(s); s = getLineSeries(formatLegend("Closed", closed[weeks - 1].count, closed[weeks - 2].count), App.Current.Resources[string.Format("Theme{0}ColorBrush", "Tertiary")] as SolidColorBrush); s.ItemsSource = closed; pipelineChart.Series.Add(s); }
public void summarize(DateTime start, int weeks, SolidColorBrush fill, SolidColorBrush stroke1, SolidColorBrush stroke2) { networkdata = new ChartDatum[weeks]; idfdata = new ChartDatum[weeks]; for (int i = 0; i < weeks; ++i) { DateTime ws = start.AddDays(7 * i); DateTime we = ws.AddDays(6); string st = string.Format("Week of {0:MMM d} - {1:MMM d}", ws, we); ChartDatum d = new ChartDatum(); d.title = name; d.subtitle = st; d.week = i; d.fill = fill; d.stroke = stroke1; d.strokeWidth = 1; networkdata[i] = d; d = new ChartDatum(); d.title = name; d.subtitle = st; d.week = i; d.fill = fill; d.stroke = stroke1; d.strokeWidth = 1; idfdata[i] = d; } foreach (Task t in networks) { ChartDatum d = networkdata[t.week]; d.count = d.count + 1; if (!string.IsNullOrWhiteSpace(d.details)) { d.details = d.details + "\r\n" + t.name; } else { d.details = t.name; } d.stroke = stroke2; d.strokeWidth = 2; } foreach (Task t in idfs) { ChartDatum d = idfdata[t.week]; d.count = d.count + 1; if (!string.IsNullOrWhiteSpace(d.details)) { d.details = d.details + "\r\n" + t.name; } else { d.details = t.name; } d.stroke = stroke2; d.strokeWidth = 2; } for (int i = 0; i < weeks; ++i) { ChartDatum d = networkdata[i]; if (string.IsNullOrWhiteSpace(d.details)) { d.details = "No change this week"; } d = idfdata[i]; if (string.IsNullOrWhiteSpace(d.details)) { d.details = "No change this week"; } } for (int i = 1; i < weeks; ++i) { ChartDatum d = networkdata[i]; ChartDatum c = networkdata[i - 1]; d.count = d.count + c.count; d = idfdata[i]; c = idfdata[i - 1]; d.count = d.count + c.count; } }