Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        private int UsableSummaryCount(ChartMeetingType mtgType)
        {
            int count = 0;

            foreach (var s in _historicalASummary.Summaries)
            {
                if (UseSummary(s, mtgType))
                {
                    ++count;
                }
            }

            return(count);
        }
Beispiel #4
0
        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);
            }
        }