private void GenerateEmployeeData() { m_EmployeeCategoryAxis.Labels.Clear(); m_EmployeeChartModel.Series.Clear(); var employees = FilteredPositions.Where(p => p.ResponsibleSubject != null) .Select(p => p.ResponsibleSubject.Name) .Distinct() .ToList(); var allTags = FilteredPositions.Select(cfp => cfp.Tag) .Distinct(); foreach (var tag in allTags) { var columnSeries = new ColumnSeries { StrokeThickness = 0, Title = tag, IsStacked = true, FillColor = m_TagColorProvider.GetColorForTag(tag) .OxyColor }; m_EmployeeChartModel.Series.Add(columnSeries); } foreach (var employee in employees) { m_EmployeeCategoryAxis.Labels.Add(employee); var positionsPerEmployee = m_Positions.Where(cfp => cfp.ResponsibleSubject != null && cfp.ResponsibleSubject.Name == employee); foreach (var positionPerEmployee in positionsPerEmployee) { var columnSeries = (ColumnSeries)m_EmployeeChartModel.Series.Single(s => s.Title == positionPerEmployee.Tag); columnSeries.Items.Add(new ColumnItem(positionPerEmployee.CalculatedValue / 1000, employees.IndexOf(employee))); } } m_EmployeeChartModel.ResetAllAxes(); }
private void GenerateChartData() { m_ChartModel.Series.Clear(); m_CategoryAxis.Labels.Clear(); var selectedCarbonFootprints = Items.Where(cfvm => cfvm.IsSelected) .Select(cfvm => cfvm.Model) .ToArray(); var allTags = selectedCarbonFootprints.SelectMany(cf => cf.Positions) .Select(cfp => cfp.Tag) .Distinct(); foreach (var columnSeries in allTags.Select(tag => new ColumnSeries { StrokeThickness = 0, Title = tag, IsStacked = false, FillColor = m_TagProvider.GetColorForTag(tag) .OxyColor })) { m_ChartModel.Series.Add(columnSeries); } for (var i = 0; i < selectedCarbonFootprints.Length; i++) { var carbonFootprint = selectedCarbonFootprints[i]; m_CategoryAxis.Labels.Add(carbonFootprint.Name); var sumByTag = from cfp in carbonFootprint.Positions group cfp by cfp.Tag into tagged select new { ColumnSeries = (ColumnSeries)m_ChartModel.Series.Single(s => s.Title == tagged.Key), CulumnItem = new ColumnItem(tagged.Sum(t => t.Calculation) / 1000, i) }; foreach (var sum in sumByTag) { sum.ColumnSeries.Items.Add(sum.CulumnItem); } } m_ChartModel.InvalidatePlot(true); }