Example #1
0
        /// <summary>
        /// Вставляет изменяемую со временем величину в последовательность, выполняя необходимые преобразования. !!! не вызывает ExecuteDynamicInsert
        /// </summary>
        /// <param name="Inserted">Вставляемая запись</param>
        /// <param name="History">Последовательность изменений данного параметра</param>
        private void InsertContinuousIntoSequence(IContinuous Inserted, IQueryable<IContinuous> History)
        {
            if (Inserted.EndDate != null && History.Any(p => p.StartDate > Inserted.StartDate && p.EndDate < Inserted.EndDate))
                throw new Exception("Добавляемой значение перекрывает уже имеющееся в базе, что нарушает логику построения базы и, скорее всего, свидетельствует об ошибке.");

            var Previus = History
                .Where(p => p.StartDate < Inserted.StartDate)
                .OrderByDescending(p => p.StartDate)
                .FirstOrDefault();

            var Next = History
                .Where(p => p.StartDate > (Inserted.EndDate ?? Inserted.StartDate))
                .OrderBy(p => p.StartDate)
                .FirstOrDefault();

            if (Next != null)
            {
                if (Inserted.EndDate == null) Inserted.EndDate = Next.StartDate;
                else throw new NotImplementedException(String.Format("Указана конечная дата действия свойства, и существует свойство, с датой начала, позже даты конца действия этого свойства. Такой функционал не реализован."));
            }
            if (Previus != null && (Previus.EndDate == null || Previus.EndDate > Inserted.StartDate))
            {
                Previus.EndDate = Inserted.StartDate;
                ExecuteDynamicUpdate(Previus);
            }
        }
 public override RibbonSlice GetSlice(IContinuous item)
 {
     var prop = (LocoSql.IPropertyValue)item;
     return new RibbonSlice()
     {
         Item = item,
         Background = SliceBrushes[r.Next(SliceBrushes.Count)],
         Text = prop.PropertyValue,
         Foreground = new SolidColorBrush(Color.FromArgb(0xa0, 0xff, 0xff, 0xff))
     };
 }
 public override RibbonSlice GetSlice(IContinuous item)
 {
     var prop = (LocoSql.IPropertyValue)item;
     float ratio = (float)Math.Min(1, Math.Max(0, Double.Parse(prop.PropertyValue) / 80));
     Color c = Color.Add(Color.Multiply(c1, 1-ratio), Color.Multiply(c2, ratio));
     return new RibbonSlice()
     {
         Item = item,
         Background = new SolidColorBrush(c),
         Text = prop.PropertyValue,
         Foreground = new SolidColorBrush(Color.FromArgb(0x90, 0xff, 0xff, 0xff))
     };
 }