public virtual GanttTimelineCellsInfo GetTimelineCellInfoForDayHalfHoursRange(
            GanttViewTimelineDataItem item)
        {
            int num1          = 48;
            int numberOfCells = num1;
            int num2          = item.End.Hour == 0 ? 24 : item.End.Hour;

            if (item.Start <= this.AdjustedTimelineStart)
            {
                if (item.Start.Hour > 0)
                {
                    numberOfCells -= item.Start.Hour * 2;
                }
                if (item.Start.Minute >= 30)
                {
                    --numberOfCells;
                }
            }
            if (item.End >= this.AdjustedTimelineEnd)
            {
                if (num2 * 2 < num1)
                {
                    numberOfCells -= num1 - num2 * 2;
                }
                if (item.End.Minute > 0)
                {
                    ++numberOfCells;
                }
            }
            return(new GanttTimelineCellsInfo(numberOfCells));
        }
        public virtual string GetTimelineTopElementText(GanttViewTimelineDataItem item)
        {
            switch (item.Range)
            {
            case TimeRange.Week:
                string localizedString = LocalizationProvider <GanttViewLocalizationProvider> .CurrentProvider.GetLocalizedString("TimelineWeek");

                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentUICulture, this.TimelineUpperItemFormat ?? "{0}#{1}, {2:yyyy}", (object)localizedString, (object)this.WeekNumber(item.Start), (object)item.Start));

            case TimeRange.Month:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentUICulture, this.TimelineUpperItemFormat ?? "{0:MMMM, yyyy}", (object)item.Start));

            case TimeRange.Year:
            case TimeRange.YearHalves:
            case TimeRange.YearQuarters:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentUICulture, this.TimelineUpperItemFormat ?? "{0:yyyy}", (object)item.Start));

            case TimeRange.Day:
            case TimeRange.DayHalfHours:
            case TimeRange.DayQuarterHours:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentUICulture, this.TimelineUpperItemFormat ?? "{0:dd, MMMM}", (object)item.Start));

            case TimeRange.Hour:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentUICulture, this.TimelineUpperItemFormat ?? "{0:HH:mm}", (object)item.Start));

            default:
                return(string.Empty);
            }
        }
        public virtual string GetTimelineBottomElementText(GanttViewTimelineDataItem item, int index)
        {
            switch (item.Range)
            {
            case TimeRange.Week:
            case TimeRange.Month:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "{0:dd}", (object)item.Start.AddDays((double)index)));

            case TimeRange.Year:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "{0:MMMM}", (object)item.Start.AddMonths(index)));

            case TimeRange.YearHalves:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "H{0}", (object)(index + 1)));

            case TimeRange.YearQuarters:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "Q{0}", (object)(index + 1)));

            case TimeRange.Day:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "{0:HH:mm}", (object)item.Start.AddHours((double)index)));

            case TimeRange.DayHalfHours:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "{0:HH:mm}", (object)item.Start.AddMinutes((double)(30 * index))));

            case TimeRange.DayQuarterHours:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "{0:HH:mm}", (object)item.Start.AddMinutes((double)(15 * index))));

            case TimeRange.Hour:
                return(string.Format((IFormatProvider)Thread.CurrentThread.CurrentCulture, this.TimelineLowerItemFormat ?? "{0:mm}", (object)item.Start.AddMinutes((double)index)));

            default:
                return(string.Empty);
            }
        }
        public virtual IList <GanttViewTimelineDataItem> BuildTimelineDataItemsForYearQuartersRange()
        {
            List <GanttViewTimelineDataItem> timelineDataItemList = new List <GanttViewTimelineDataItem>();
            DateTime adjustedTimelineStart = this.AdjustedTimelineStart;
            DateTime adjustedTimelineEnd   = this.AdjustedTimelineEnd;
            double   num1     = (DateTime.IsLeapYear(adjustedTimelineStart.Year) ? 366.0 : 365.0) / 4.0;
            DateTime dateTime = adjustedTimelineStart.Date;
            int      num2     = adjustedTimelineStart.Year;
            GanttViewTimelineDataItem timelineDataItem = new GanttViewTimelineDataItem(adjustedTimelineStart.Date, adjustedTimelineStart.Date.AddDays((double)(int)num1), this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);

            timelineDataItemList.Add(timelineDataItem);
            while (dateTime < adjustedTimelineEnd)
            {
                timelineDataItem.End = dateTime.AddDays(num1);
                dateTime             = dateTime.AddDays(num1);
                int year = dateTime.Year;
                if (year != num2 && dateTime <= adjustedTimelineEnd)
                {
                    num1             = (DateTime.IsLeapYear(year) ? 366.0 : 365.0) / 4.0;
                    num2             = year;
                    timelineDataItem = new GanttViewTimelineDataItem(dateTime, dateTime, this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);
                    timelineDataItemList.Add(timelineDataItem);
                }
            }
            return((IList <GanttViewTimelineDataItem>)timelineDataItemList);
        }
Example #5
0
 public GanttViewTimelineItemFormattingEventArgs(
     GanttViewTimelineDataItem item,
     GanttViewTimelineItemElement itemElement)
 {
     this.item        = item;
     this.itemElement = itemElement;
 }
        public virtual GanttTimelineCellsInfo GetTimelineCellInfoForHourRange(
            GanttViewTimelineDataItem item)
        {
            int num           = 60;
            int numberOfCells = num;

            if (item.Start <= this.AdjustedTimelineStart && item.Start.Minute > 0)
            {
                numberOfCells -= item.Start.Minute;
            }
            if (item.End >= this.AdjustedTimelineEnd && item.End.Hour < num)
            {
                numberOfCells -= num - item.End.Minute;
            }
            return(new GanttTimelineCellsInfo(numberOfCells));
        }
        public virtual GanttTimelineCellsInfo GetTimelineCellInfoForYearRange(
            GanttViewTimelineDataItem item)
        {
            int num           = 12;
            int numberOfCells = 12;

            if (item.Start == this.AdjustedTimelineStart && item.Start.Month > 1)
            {
                numberOfCells -= item.Start.Month - 1;
            }
            if (item.End == this.AdjustedTimelineEnd && item.End.AddDays(-1.0).Month < num)
            {
                numberOfCells -= num - item.End.AddDays(-1.0).Month;
            }
            return(new GanttTimelineCellsInfo(numberOfCells));
        }
        public virtual GanttTimelineCellsInfo GetTimelineCellInfoForMonthRange(
            GanttViewTimelineDataItem item)
        {
            int num           = DateTime.DaysInMonth(item.Start.Year, item.Start.Month);
            int numberOfCells = num;

            if (item.Start <= this.AdjustedTimelineStart && item.Start.Day > 1)
            {
                numberOfCells -= item.Start.Day - 1;
            }
            if (item.End >= this.AdjustedTimelineEnd && item.End.AddDays(-1.0).Day < num)
            {
                numberOfCells -= num - item.End.AddDays(-1.0).Day;
            }
            return(new GanttTimelineCellsInfo(numberOfCells));
        }
        public virtual GanttTimelineCellsInfo GetTimelineCellInfoForYearHalvesRange(
            GanttViewTimelineDataItem item)
        {
            int    numberOfCells = 2;
            int    startIndex    = 0;
            double num           = (DateTime.IsLeapYear(item.Start.Year) ? 366.0 : 365.0) / 2.0;

            if ((double)item.Start.DayOfYear > num)
            {
                numberOfCells = 1;
                startIndex    = 1;
            }
            if ((double)item.End.AddDays(-1.0).DayOfYear <= num)
            {
                numberOfCells = 1;
            }
            return(new GanttTimelineCellsInfo(numberOfCells, startIndex));
        }
        public virtual GanttTimelineCellsInfo GetTimelineCellInfoForYearQuartersRange(
            GanttViewTimelineDataItem item)
        {
            int   numberOfCells = 4;
            int   startIndex    = 0;
            float num1          = (DateTime.IsLeapYear(item.Start.Year) ? 366f : 365f) / 4f;
            float num2          = num1 * 2f;
            float num3          = num1 + num2;
            float dayOfYear1    = (float)item.Start.DayOfYear;
            float dayOfYear2    = (float)item.End.AddDays(-1.0).DayOfYear;

            if ((double)dayOfYear1 >= (double)num1)
            {
                --numberOfCells;
                ++startIndex;
                if ((double)dayOfYear1 >= (double)num2)
                {
                    --numberOfCells;
                    ++startIndex;
                    if ((double)dayOfYear1 >= (double)num3)
                    {
                        --numberOfCells;
                        ++startIndex;
                    }
                }
            }
            if (numberOfCells > 1 && (double)dayOfYear2 <= (double)num3)
            {
                --numberOfCells;
                if (numberOfCells > 1 && (double)dayOfYear2 <= (double)num2)
                {
                    --numberOfCells;
                    if (numberOfCells > 1 && (double)dayOfYear2 <= (double)num1)
                    {
                        --numberOfCells;
                    }
                }
            }
            return(new GanttTimelineCellsInfo(numberOfCells, startIndex));
        }
        public virtual GanttTimelineCellsInfo GetTimelineCellInfoForItem(
            GanttViewTimelineDataItem item,
            TimeRange timeRange)
        {
            switch (timeRange)
            {
            case TimeRange.Week:
                return(this.GetTimelineCellInfoForWeekRange(item));

            case TimeRange.Month:
                return(this.GetTimelineCellInfoForMonthRange(item));

            case TimeRange.Year:
                return(this.GetTimelineCellInfoForYearRange(item));

            case TimeRange.YearHalves:
                return(this.GetTimelineCellInfoForYearHalvesRange(item));

            case TimeRange.YearQuarters:
                return(this.GetTimelineCellInfoForYearQuartersRange(item));

            case TimeRange.Day:
                return(this.GetTimelineCellInfoForDayRange(item));

            case TimeRange.DayHalfHours:
                return(this.GetTimelineCellInfoForDayHalfHoursRange(item));

            case TimeRange.DayQuarterHours:
                return(this.GetTimelineCellInfoForDayQuarterHoursRange(item));

            case TimeRange.Hour:
                return(this.GetTimelineCellInfoForHourRange(item));

            default:
                return(new GanttTimelineCellsInfo());
            }
        }
        public virtual IList <GanttViewTimelineDataItem> BuildTimelineDataItemsForMonthRange()
        {
            List <GanttViewTimelineDataItem> timelineDataItemList = new List <GanttViewTimelineDataItem>();
            DateTime adjustedTimelineStart = this.AdjustedTimelineStart;
            DateTime adjustedTimelineEnd   = this.AdjustedTimelineEnd;
            DateTime dateTime = adjustedTimelineStart.Date;
            int      num      = adjustedTimelineStart.Month;
            GanttViewTimelineDataItem timelineDataItem = new GanttViewTimelineDataItem(adjustedTimelineStart.Date, adjustedTimelineStart.AddDays(1.0), this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);

            timelineDataItemList.Add(timelineDataItem);
            while (dateTime < adjustedTimelineEnd)
            {
                timelineDataItem.End = dateTime.AddDays(1.0);
                dateTime             = dateTime.AddDays(1.0);
                int month = dateTime.Month;
                if (month != num && dateTime.AddDays(1.0) <= adjustedTimelineEnd)
                {
                    num = month;
                    timelineDataItem = new GanttViewTimelineDataItem(dateTime, dateTime, this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);
                    timelineDataItemList.Add(timelineDataItem);
                }
            }
            return((IList <GanttViewTimelineDataItem>)timelineDataItemList);
        }
        public virtual IList <GanttViewTimelineDataItem> BuildTimelineDataItemsForHourRange()
        {
            List <GanttViewTimelineDataItem> timelineDataItemList = new List <GanttViewTimelineDataItem>();
            DateTime adjustedTimelineStart = this.AdjustedTimelineStart;
            DateTime adjustedTimelineEnd   = this.AdjustedTimelineEnd;
            DateTime dateTime = adjustedTimelineStart;
            int      num      = adjustedTimelineStart.Hour;
            GanttViewTimelineDataItem timelineDataItem = new GanttViewTimelineDataItem(adjustedTimelineStart, adjustedTimelineStart.AddMinutes(1.0), this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);

            timelineDataItemList.Add(timelineDataItem);
            while (dateTime < adjustedTimelineEnd)
            {
                timelineDataItem.End = dateTime.AddMinutes(1.0);
                dateTime             = dateTime.AddMinutes(1.0);
                int hour = dateTime.Hour;
                if (hour != num && dateTime.AddMinutes(1.0) <= adjustedTimelineEnd)
                {
                    num = hour;
                    timelineDataItem = new GanttViewTimelineDataItem(dateTime, dateTime, this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);
                    timelineDataItemList.Add(timelineDataItem);
                }
            }
            return((IList <GanttViewTimelineDataItem>)timelineDataItemList);
        }
        public virtual IList <GanttViewTimelineDataItem> BuildTimelineDataItemsForYearRange()
        {
            List <GanttViewTimelineDataItem> timelineDataItemList = new List <GanttViewTimelineDataItem>();
            DateTime adjustedTimelineStart = this.AdjustedTimelineStart;
            DateTime adjustedTimelineEnd   = this.AdjustedTimelineEnd;
            DateTime dateTime = adjustedTimelineStart.Date;
            int      num      = dateTime.Year;
            GanttViewTimelineDataItem timelineDataItem = new GanttViewTimelineDataItem(dateTime.Date, dateTime.AddMonths(1), this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);

            timelineDataItemList.Add(timelineDataItem);
            while (dateTime < adjustedTimelineEnd)
            {
                timelineDataItem.End = dateTime.AddMonths(1);
                dateTime             = dateTime.AddMonths(1);
                int year = dateTime.Year;
                if (year != num && dateTime <= adjustedTimelineEnd)
                {
                    num = year;
                    timelineDataItem = new GanttViewTimelineDataItem(dateTime, dateTime, this.GraphicalViewElement.TimelineRange, this.GraphicalViewElement.OnePixelTime);
                    timelineDataItemList.Add(timelineDataItem);
                }
            }
            return((IList <GanttViewTimelineDataItem>)timelineDataItemList);
        }
        public virtual void FillRangesMinWidths()
        {
            if (this.GraphicalViewElement.TimelineContainer.Children == null || this.GraphicalViewElement.TimelineContainer.Children.Count == 0)
            {
                return;
            }
            GanttViewTimelineItemElement child = this.GraphicalViewElement.TimelineContainer.Children[0] as GanttViewTimelineItemElement;

            if (child.BottomElement.Children == null || child.BottomElement.Children.Count == 0)
            {
                return;
            }
            Font font = ((VisualElement)child.BottomElement.Children[0]).Font;

            this.RangesMinWidths.Clear();
            Graphics graphics = Graphics.FromHwnd(IntPtr.Zero);
            float    num1     = 0.0f;
            float    num2     = 0.0f;
            GanttViewTimelineDataItem timelineDataItem = new GanttViewTimelineDataItem(DateTime.Now, DateTime.Now, TimeRange.YearHalves, this.GraphicalViewElement.OnePixelTime);

            for (int index = 0; index < 2; ++index)
            {
                timelineDataItem.Start = new DateTime(DateTime.Now.Year, index * 7 + 1, 1);
                timelineDataItem.End   = timelineDataItem.Start.AddDays(1.0);
                float width = graphics.MeasureString(this.GetTimelineBottomElementText(timelineDataItem, index), font).Width;
                if ((double)width > (double)num2)
                {
                    num2 = width + 6f;
                }
            }
            this.RangesMinWidths.Add(TimeRange.YearHalves, (int)((double)num2 * 2.0));
            timelineDataItem.Range = TimeRange.YearQuarters;
            num1 = 0.0f;
            float num3 = 0.0f;

            for (int index = 0; index < 4; ++index)
            {
                timelineDataItem.Start = new DateTime(DateTime.Now.Year, index * 3 + 2, 1);
                timelineDataItem.End   = timelineDataItem.Start.AddDays(1.0);
                float width = graphics.MeasureString(this.GetTimelineBottomElementText(timelineDataItem, index + 1), font).Width;
                if ((double)width > (double)num3)
                {
                    num3 = width + 6f;
                }
            }
            this.RangesMinWidths.Add(TimeRange.YearQuarters, (int)((double)num3 * 4.0));
            timelineDataItem.Range = TimeRange.Year;
            num1 = 0.0f;
            float num4 = 0.0f;

            for (int index = 0; index < 12; ++index)
            {
                timelineDataItem.Start = new DateTime(DateTime.Now.Year, index + 1, 1);
                timelineDataItem.End   = timelineDataItem.Start.AddMonths(1);
                float width = graphics.MeasureString(this.GetTimelineBottomElementText(timelineDataItem, 0), font).Width;
                if ((double)width > (double)num4)
                {
                    num4 = width + 6f;
                }
            }
            this.RangesMinWidths.Add(TimeRange.Year, (int)((double)num4 * 12.0));
            timelineDataItem.Range = TimeRange.Month;
            num1 = 0.0f;
            float num5 = 0.0f;

            for (int index = 0; index < 31; ++index)
            {
                timelineDataItem.Start = new DateTime(DateTime.Now.Year, 1, index + 1);
                timelineDataItem.End   = timelineDataItem.Start.AddDays(1.0);
                float width = graphics.MeasureString(this.GetTimelineBottomElementText(timelineDataItem, 0), font).Width;
                if ((double)width > (double)num5)
                {
                    num5 = width + 6f;
                }
            }
            this.RangesMinWidths.Add(TimeRange.Month, (int)((double)num5 * 31.0));
            timelineDataItem.Range = TimeRange.Day;
            num1 = 0.0f;
            float num6 = 0.0f;

            for (int index = 0; index < 24; ++index)
            {
                timelineDataItem.Start = new DateTime(DateTime.Now.Year, 1, 1).AddHours((double)index);
                timelineDataItem.End   = timelineDataItem.Start.AddHours(1.0);
                float width = graphics.MeasureString(this.GetTimelineBottomElementText(timelineDataItem, 0), font).Width;
                if ((double)width > (double)num6)
                {
                    num6 = width + 6f;
                }
            }
            this.RangesMinWidths.Add(TimeRange.Day, (int)((double)num6 * 24.0));
            timelineDataItem.Range = TimeRange.DayHalfHours;
            num1 = 0.0f;
            float num7 = 0.0f;

            for (int index = 0; index < 48; ++index)
            {
                timelineDataItem.Start = new DateTime(DateTime.Now.Year, 1, 1).AddMinutes((double)(30 * index));
                timelineDataItem.End   = timelineDataItem.Start.AddMinutes(30.0);
                float width = graphics.MeasureString(this.GetTimelineBottomElementText(timelineDataItem, 0), font).Width;
                if ((double)width > (double)num7)
                {
                    num7 = width + 6f;
                }
            }
            this.RangesMinWidths.Add(TimeRange.DayHalfHours, (int)((double)num7 * 48.0));
            timelineDataItem.Range = TimeRange.Hour;
            num1 = 0.0f;
            float num8 = 0.0f;

            for (int index = 0; index < 60; ++index)
            {
                timelineDataItem.Start = new DateTime(DateTime.Now.Year, 1, 1).AddMinutes((double)index);
                timelineDataItem.End   = timelineDataItem.Start.AddMinutes(1.0);
                float width = graphics.MeasureString(this.GetTimelineBottomElementText(timelineDataItem, 0), font).Width;
                if ((double)width > (double)num8)
                {
                    num8 = width + 6f;
                }
            }
            this.RangesMinWidths.Add(TimeRange.Hour, (int)((double)num8 * 60.0));
        }
 public virtual GanttTimelineCellsInfo GetTimelineCellInfoForWeekRange(
     GanttViewTimelineDataItem item)
 {
     return(new GanttTimelineCellsInfo((int)Math.Ceiling((item.End - item.Start).TotalDays)));
 }
 public GanttViewTimelineItemElementCreatingEventArgs(GanttViewTimelineDataItem item)
 {
     this.item = item;
 }