private bool UseSummary(MeetingTimeSummary summary, ChartMeetingType mtgType) { if (mtgType == ChartMeetingType.Both || (mtgType == ChartMeetingType.Weekend && (summary.MeetingDate.DayOfWeek == DayOfWeek.Saturday || summary.MeetingDate.DayOfWeek == DayOfWeek.Sunday)) || (mtgType == ChartMeetingType.Midweek && summary.MeetingDate.DayOfWeek != DayOfWeek.Saturday && summary.MeetingDate.DayOfWeek != DayOfWeek.Sunday)) { return(Math.Abs(summary.Overtime.TotalMinutes) < 30); } return(false); }
private bool UseSummary(MeetingTimeSummary summary, ChartMeetingType mtgType) { var isWeekend = _queryWeekendService.IsWeekend( summary.MeetingDate, _weekendIncludesFriday); if (mtgType == ChartMeetingType.Both || (mtgType == ChartMeetingType.Weekend && isWeekend) || (mtgType == ChartMeetingType.Midweek && !isWeekend)) { return(Math.Abs(summary.Overtime.TotalMinutes) < 30); } return(false); }
private int UsableSummaryCount(ChartMeetingType mtgType) { int count = 0; foreach (var s in _historicalASummary.Summaries) { if (UseSummary(s, mtgType)) { ++count; } } return(count); }
private void DrawChart(XGraphics g, PdfPage page, ChartMeetingType mtgType) { if (UsableSummaryCount(mtgType) > MinChartSeries) { if (_itemFont == null) { throw new InvalidOperationException(nameof(_itemFont)); } var c = new Chart(ChartType.Column2D); c.Font.Name = "Verdana"; var xSeries = c.XValues.AddXSeries(); var ySeries = c.SeriesCollection.AddSeries(); c.YAxis.MaximumScale = LargestDeviationMins; c.YAxis.MinimumScale = -LargestDeviationMins; c.YAxis.LineFormat.Visible = true; c.PlotArea.LineFormat.Visible = true; c.YAxis.MajorTick = 5; c.YAxis.Title.Caption = Resources.OVERTIME_MINS; c.YAxis.Title.Orientation = 90; c.YAxis.Title.VerticalAlignment = PdfSharpCore.Charting.VerticalAlignment.Center; c.YAxis.HasMajorGridlines = true; c.YAxis.MajorGridlines.LineFormat.Color = XColor.FromGrayScale(50); c.YAxis.MajorTickMark = TickMarkType.Outside; c.XAxis.MajorTickMark = TickMarkType.None; switch (mtgType) { case ChartMeetingType.Midweek: c.XAxis.Title.Caption = Resources.MIDWEEK_MTGS; break; case ChartMeetingType.Weekend: c.XAxis.Title.Caption = Resources.WEEKEND_MTGS; break; case ChartMeetingType.Both: c.XAxis.Title.Caption = Resources.MIDWEEK_AND_WEEKEND_MTGS; break; default: throw new NotSupportedException(); } var currentMonth = default(DateTime); if (_historicalASummary != null) { foreach (var summary in _historicalASummary.Summaries) { if (UseSummary(summary, mtgType)) { if (summary.MeetingDate.Year != currentMonth.Year || summary.MeetingDate.Month != currentMonth.Month) { var monthName = summary.MeetingDate.ToString("MMM", CultureInfo.CurrentUICulture); xSeries.Add(monthName); currentMonth = summary.MeetingDate; } else { xSeries.AddBlank(); } var p = ySeries.Add(LimitOvertime(summary.Overtime.TotalMinutes)); p.FillFormat.Color = XColor.FromKnownColor(p.Value > 0 ? XKnownColor.Red : XKnownColor.Green); } } } var frame = new ChartFrame(); var chartHeight = _itemFont.Height * 15; frame.Size = new XSize(page.Width - (_leftMargin * 2), chartHeight); frame.Location = new XPoint(_leftMargin, _currentY); frame.Add(c); frame.DrawChart(g); _currentY += chartHeight + (_itemFont.Height * 2); } }