public void TimelineTest_Position(TimelineOrientation orientation, TimelinePosition position, bool rtl, string[] expectedClass) { var comp = Context.RenderComponent <TimelineTest>(p => p.AddCascadingValue(rtl)); //Console.WriteLine(comp.Markup); var timeline = comp.FindComponent <MudTimeline>(); timeline.SetParametersAndRender(p => { p.Add(x => x.TimelineOrientation, orientation); p.Add(x => x.TimelinePosition, position); }); timeline.Nodes.Should().ContainSingle(); timeline.Nodes[0].Should().BeAssignableTo <IHtmlDivElement>(); (timeline.Nodes[0] as IHtmlDivElement).ClassList.Should().Contain(expectedClass); }
//Detect orientation private void CheckOrientation(SKImageInfo info, bool forceSet = false) { TimelineOrientation oldorientation = orientation; orientation = TimelineOrientation.Portrait; if (this.Bounds.Width > this.Bounds.Height) { orientation = TimelineOrientation.Landscape; } if ((oldorientation != orientation) || forceSet) { timelineHeight = info.Height * 0.10f; if (timelineHeight < 100) { timelineHeight = 100; } timelineBottomY = timelineHeight; timelineMiddleY = timelineHeight / 2; unitMarkY1 = timelineBottomY; unitMarkY2 = unitMarkY1 - (timelineHeight * 0.45f); subUnitMarkY1 = timelineBottomY; subUnitMarkY2 = subUnitMarkY1 - (timelineHeight * 0.15f); unitTextY = timelineBottomY - (timelineHeight * 0.5f); subUnitTextY = timelineBottomY - (timelineHeight * 0.2f); halfWidth = info.Width / 2; timelinePaint.Color = this.TimelineColor.ToSKColor(); timelinePaint.StrokeWidth = timelineHeight; unitMarkPaint.Color = this.UnitMarkColor.ToSKColor(); unitMarkPaint.StrokeWidth = 4; unitTextPaint.Color = this.UnitTextColor.ToSKColor(); unitTextPaint.TextSize = unitTextY - 10; subUnitMarkPaint.Color = this.SubUnitMarkColor.ToSKColor(); subUnitMarkPaint.StrokeWidth = 2; subUnitTextPaint.Color = this.SubUnitTextColor.ToSKColor(); subUnitTextPaint.TextSize = unitTextPaint.TextSize - 8; highlightPaint.Color = this.HighlightColor.ToSKColor(); highlightPaint.StrokeWidth = 3; unitXWidth = unitTextPaint.MeasureText("X"); subunitXWidth = subUnitTextPaint.MeasureText("X"); zoomLimitHourToDay = (int)(SEC_PER_HOUR / 100); zoomLimitDayToMonth = (int)(SEC_PER_DAY / 150); zoomLimitMonthToYear = (int)(SEC_PER_MONTH / 200); zoomLimitYearToDecade = (int)(SEC_PER_YEAR / 150); subunitLimitMinute = (int)(SEC_PER_MINUTE / subunitXWidth * 3); subunitLimitHour = (int)(SEC_PER_HOUR / subunitXWidth / 2); subunitLimitDay = (int)(SEC_PER_DAY / subunitXWidth / 2); subunitLimitMonth = (int)(SEC_PER_MONTH / subunitXWidth / 3); subunitLimitYear = (int)(SEC_PER_YEAR / subunitXWidth / 4); eventLanes = 8; eventsTopY = timelineBottomY + 10; eventsHeight = info.Height - eventsTopY; laneHeight = eventsHeight / eventLanes; laneBusy = new bool[eventLanes]; laneBusyUntil = new TimelineDateTime[eventLanes]; initialOrientationCheck = false; } }