Esempio n. 1
0
        /// <summary>
        /// Unit2durations the specified unit.
        /// </summary>
        /// <param name="unit">The unit.</param>
        /// <returns></returns>
        private static long Unit2duration(TimePhasedDataType.TimePhaseUnit unit)
        {
            long retVal = 0;

            switch (unit)
            {
            case TimePhasedDataType.TimePhaseUnit.Hours:
                retVal = CalendarHelper.MilisPerHour();
                break;

            case TimePhasedDataType.TimePhaseUnit.Minute:
                retVal = CalendarHelper.MilisPerMinute();
                break;

            case TimePhasedDataType.TimePhaseUnit.Day:
                retVal = CalendarHelper.MilisPerDay();
                break;

            case TimePhasedDataType.TimePhaseUnit.Week:
                retVal = CalendarHelper.MilisPerWeek();
                break;
            }

            return(retVal);
        }
Esempio n. 2
0
        /// <summary>
        /// Incrementals the group.
        /// </summary>
        /// <param name="phase">The phase.</param>
        /// <param name="groupUnit">The group unit.</param>
        /// <returns></returns>
        private TimePhasedDataType[] IncrementalGroup(TimePhasedDataType phase, TimePhasedDataType.TimePhaseUnit groupUnit)
        {
            List <TimePhasedDataType> retVal = new List <TimePhasedDataType>();

            long intervalDuration = phase.Finish - phase.Start;
            long wholePartCount   = intervalDuration / Unit2duration(groupUnit);
            long partialPart      = intervalDuration - wholePartCount * Unit2duration(groupUnit);

            if (wholePartCount > 0)
            {
                for (int i = 0; i < wholePartCount; i++)
                {
                    TimePhasedDataType newPhase = new TimePhasedDataType();
                    long start = phase.Start + i * Unit2duration(groupUnit);
                    newPhase.Start  = start;
                    newPhase.Finish = start + Unit2duration(groupUnit);
                    newPhase.Unit   = groupUnit;
                    newPhase.Value  = (long)((double)Unit2duration(groupUnit) / intervalDuration * phase.Value);
                    retVal.Add(newPhase);
                }
            }

            if (partialPart != 0 && groupUnit != _minGroupUnit)
            {
                TimePhasedDataType newPhase = new TimePhasedDataType();
                newPhase.Start  = phase.Finish - partialPart;
                newPhase.Finish = phase.Finish;
                newPhase.Value  = (long)((double)partialPart / intervalDuration * phase.Value);
                retVal.AddRange(IncrementalGroup(newPhase, DecrementUnit(groupUnit)));
            }

            return(retVal.ToArray());
        }
Esempio n. 3
0
        /// <summary>
        /// Duration2s the unit.
        /// </summary>
        /// <param name="duration">The duration.</param>
        /// <returns></returns>
        private static TimePhasedDataType.TimePhaseUnit Duration2Unit(long duration)
        {
            TimePhasedDataType.TimePhaseUnit retVal = TimePhasedDataType.TimePhaseUnit.Minute;

            if (duration / CalendarHelper.MilisPerYear() > 0)
            {
                retVal = TimePhasedDataType.TimePhaseUnit.Year;
            }
            else if (duration / CalendarHelper.MilisPerMonth() > 0)
            {
                retVal = TimePhasedDataType.TimePhaseUnit.Year;
            }
            else if (duration / CalendarHelper.MilisPerWeek() > 0)
            {
                retVal = TimePhasedDataType.TimePhaseUnit.Mounth;
            }
            else if (duration / CalendarHelper.MilisPerDay() > 0)
            {
                retVal = TimePhasedDataType.TimePhaseUnit.Week;
            }
            else if (duration / CalendarHelper.MilisPerHour() > 0)
            {
                retVal = TimePhasedDataType.TimePhaseUnit.Day;
            }
            else if (duration / CalendarHelper.MilisPerMinute() > 0)
            {
                retVal = TimePhasedDataType.TimePhaseUnit.Hours;
            }

            return(retVal);
        }
Esempio n. 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TimePhaseDataGetter"/> class.
 /// </summary>
 public TimePhaseDataGetter(TimePhasedDataType.TimePhaseType type, TimePhasedDataType.TimePhaseUnit maxGroupUnit,
                            TimePhasedDataType.TimePhaseUnit minGroupUnit, AssignmentBaseFunctor <double> functor)
 {
     _type         = type;
     _functor      = functor;
     _minGroupUnit = minGroupUnit;
     _maxGroupUnit = maxGroupUnit;
     _value        = new List <TimePhasedDataType>();
 }
Esempio n. 5
0
 /// <summary>
 /// Increments the unit.
 /// </summary>
 /// <param name="unit">The unit.</param>
 /// <returns></returns>
 private static TimePhasedDataType.TimePhaseUnit IncrementUnit(TimePhasedDataType.TimePhaseUnit unit)
 {
     return((TimePhasedDataType.TimePhaseUnit)((int)unit + 1));
 }