Beispiel #1
0
        /// <summary>
        /// Porovná dvě instance <see cref="TimeGraphGroup"/> podle <see cref="ITimeGraphItem.Order"/> ASC, <see cref="ITimeGraphItem.Time"/> ASC
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static int CompareOrderTimeAsc(TimeGraphGroup a, TimeGraphGroup b)
        {
            int cmp = a._FirstItem.Order.CompareTo(b._FirstItem.Order);

            if (cmp == 0)
            {
                cmp = TimeRange.CompareByBeginAsc(a.Time, b.Time);
            }
            return(cmp);
        }
Beispiel #2
0
 /// <summary>
 /// Konstruktor s předáním skupiny položek, s výpočtem jejich sumárního časového intervalu a výšky
 /// </summary>
 /// <param name="parent"></param>
 /// <param name="acceptZeroTime">Požadavek true = jako platný prvek lze akceptovat i prvek, jehož čas End == čas Begin; false = čas End musí být větší než Begin.</param>
 /// <param name="items"></param>
 public TimeGraphGroup(TimeGraph parent, bool acceptZeroTime, IEnumerable <ITimeGraphItem> items)
     : this(parent)
 {
     // Vstupní prvky (items) mohou být (ze vstupních dat) nesetříděné podle jejich času,
     //  ale pro korektní fungování grupy musí být prvky v jedné grupě setříděny.
     List <ITimeGraphItem> itemList = items.ToList();
     if (itemList.Count > 1)
     {
         itemList.Sort((a, b) => TimeRange.CompareByBeginAsc(a.Time, b.Time));
     }
     this._Items = itemList.ToArray();
     DateTime?begin     = null;
     DateTime?end       = null;
     float?   height    = null;
     bool     canResize = false;
     foreach (ITimeGraphItem item in this.Items)
     {
         this._PrepareGControlItem(item);                          // Připravím GUI prvek pro jednotlivý prvek grafu za item, jeho parentem bude grafický prvek této grupy (=this.ControlBuffered)
         if (this._FirstItem == null)
         {
             this._FirstItem = item;
         }
         if (item.Height.HasValue && (!height.HasValue || item.Height.Value > height.Value))
         {
             height = item.Height;
         }
         if (item.Time.Begin.HasValue && (!begin.HasValue || item.Time.Begin.Value < begin.Value))
         {
             begin = item.Time.Begin;
         }
         if (item.Time.End.HasValue && (!end.HasValue || item.Time.End.Value > end.Value))
         {
             end = item.Time.End;
         }
         if (!canResize && item.BehaviorMode.HasFlag(GraphItemBehaviorMode.ResizeTime))
         {
             canResize = true;
         }
         if (!acceptZeroTime && (item.ImageBegin != null || item.ImageEnd != null))
         {
             acceptZeroTime = true;
         }
         item.OwnerGraph = parent;
     }
     this._Store(begin, end, acceptZeroTime, height, canResize);
 }