/// <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)) }; }