public async Task ReturnsSegmentsJustOnceWhenChangingDateRange() { var segments = new ChartSegment[2] { new ChartSegment("Project 1", "Client 1", 50f, 10, 0, "ff0000"), new ChartSegment("Project 2", "Client 2", 50f, 10, 0, "00ff00") }; var projectsNotSyncedCount = 0; var currentDate = new DateTimeOffset(2018, 5, 23, 0, 0, 0, TimeSpan.Zero); var start = new DateTimeOffset(2018, 5, 1, 0, 0, 0, TimeSpan.Zero); var end = new DateTimeOffset(2018, 5, 7, 0, 0, 0, TimeSpan.Zero); TimeService.CurrentDateTime.Returns(currentDate); var delayed = Observable .Return(new ProjectSummaryReport(segments, projectsNotSyncedCount)) .Delay(TimeSpan.FromMilliseconds(100)); var instant = Observable .Return(new ProjectSummaryReport(segments, projectsNotSyncedCount)); ReportsProvider.GetProjectSummary(Arg.Any <long>(), Arg.Any <DateTimeOffset>(), Arg.Any <DateTimeOffset>()) .Returns(delayed, instant); await Initialize(); ViewModel.ChangeDateRangeCommand.Execute( ReportsDateRangeParameter.WithDates(start, end)); await delayed; ViewModel.Segments.Count.Should().Be(segments.Length); }
public IActionResult AreaZone() { List <ChartSegment> segments = new List <ChartSegment>(); ChartSegment segment1 = new ChartSegment(); segment1.Value = new DateTime(2016, 5, 1); segment1.Color = "url(#winter)"; segments.Add(segment1); ChartSegment segment2 = new ChartSegment(); segment2.Value = new DateTime(2016, 8, 1); segment2.Color = "url(#summer)"; segments.Add(segment2); ChartSegment segment3 = new ChartSegment(); segment3.Color = "url(#spring)"; segments.Add(segment3); ViewBag.segment = segments; return(View()); }
object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { ChartSegment seg = value as ChartSegment; double val = 0; double angle = 0; ChartPieSegment pieseg = seg as ChartPieSegment; // this happens during designer load. if (pieseg == null) { return(0); } angle = pieseg.AngleOfSliceRotation; Point pt = ChartSegment.GetCenterOfViewport((ChartSegment)value); if (mode == 0) { // OffsetX: val = Math.Cos(angle) * 200d; } else { // OffsetY: val = Math.Sin(angle) * 200d; } return(val); }
void ObjSeries_MouseClick(object sender, ChartMouseEventArgs e) { FeatureTrackingManager.Instance.UseFeature(Features.Library_GenericExplorer_ChartItem); ChartSegment chart_segment = e.Segment; IList data_source = (IList)chart_segment.Series.DataSource; ChartItem chart_item = (ChartItem)data_source[chart_segment.CorrespondingPoints[0].Index]; ToggleSelectItem(chart_item.Caption, KeyboardTools.IsCTRLDown() || KeyboardTools.IsShiftDown()); }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) { return(String.Empty); } ChartSegment seg = value as ChartSegment; return(seg.Interior); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (null == value) { return(""); } ChartSegment chart_segment = value as ChartSegment; IList data_source = (IList)chart_segment.Series.DataSource; ChartItem chart_item = (ChartItem)data_source[chart_segment.CorrespondingPoints[0].Index]; return(String.Format("{0} ({1})", chart_item.Caption, chart_item.Count)); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (null == value) { return(""); } ChartSegment chart_segment = value as ChartSegment; IList data_source = (IList)chart_segment.Series.DataSource; ChartItem chart_item = (ChartItem)data_source[chart_segment.CorrespondingPoints[0].Index]; return(String.Format("During the week starting {0} you {1} {2} paper(s)", DateFormatter.asDDMMMYYYY(chart_item.Timestamp), chart_segment.Series.Name.ToLower(), chart_item.Count)); }
public override void SetDeffaults() { songName = "Testing"; chart = new ChartSegment[2]; for (int i = 0; i < chart.Length; i++) { chart[i].notes = new Note[] { new Note(NoteDirection.up, 25, "Sounds/keybladeBlocking"), new Note(NoteDirection.down, 50, "Sounds/keybladeBlocking"), new Note(NoteDirection.down, 100, "Sounds/keybladeBlocking"), new Note(NoteDirection.left, 150, "Sounds/keybladeBlocking"), new Note(NoteDirection.right, 150, "Sounds/keybladeBlocking") }; } }
// GET: AreaZone public ActionResult AreaZone() { ViewBag.Line = new { width = 0.001 }; List <ChartSegment> segments = new List <ChartSegment>(); ChartSegment segment1 = new ChartSegment(); segment1.Value = new DateTime(2016, 5, 1); segment1.Color = "url(#winter)"; segments.Add(segment1); ChartSegment segment2 = new ChartSegment(); segment2.Value = new DateTime(2016, 8, 1); segment2.Color = "url(#summer)"; segments.Add(segment2); ChartSegment segment3 = new ChartSegment(); segment3.Color = "url(#spring)"; segments.Add(segment3); ViewBag.segment = segments; ViewBag.content = "<div style='width:80px; padding: 5px;'> <table style='width: 100%'>" + "<tr><td><div style='width: 10px; height: 10px;background:linear-gradient(#4ca1af, #c4e0e5);border-radius: 15px;'></div>" + "</td><td style='padding-left: 5px;'>Winter</td></tr>" + "<tr><td><div style='width: 10px; height: 10px; background:linear-gradient(#ffa751, #ffe259);border-radius: 15px;'></div>" + "</td><td style='padding-left: 5px;'>Summer</td></tr><tr><td>" + "<div style='width: 10px; height: 10px; background:linear-gradient(#1d976c, #93f9b9);border-radius: 15px;'></div>" + "</td><td style='padding-left: 5px;'>Spring</td></tr></table></div>"; ViewBag.chartBorder = new ChartBorder { Color = "transparent" }; return(View()); }
// GET: LineZone public ActionResult LineZone() { ViewBag.majorGridLines = new { width = 0.00001 }; ViewBag.lineStyle = new { width = 0.00001 }; ViewBag.majorTickLines = new { width = 0.00001 }; ViewBag.majorTickLines = new { width = 0.00001 }; ViewBag.chartBorder = new ChartBorder { Color = "transparent" }; List <ChartSegment> segments = new List <ChartSegment>(); ChartSegment segment1 = new ChartSegment(); segment1.Value = 450; segment1.Color = "red"; segments.Add(segment1); ChartSegment segment2 = new ChartSegment(); segment2.Value = 500; segment2.Color = "green"; segments.Add(segment2); ChartSegment segment3 = new ChartSegment(); segment3.Color = "blue"; segments.Add(segment3); ViewBag.segment = segments; ViewBag.content = "<div style='width:80px; padding: 5px;'><table style='width: 100%'>" + "<tr> <td><div style='width: 10px; height: 10px; background:blue;border-radius: 15px;'></div>" + "</td> <td style='padding-left: 5px;'>High</td></tr><tr><td>" + "<div style='width: 10px; height: 10px; background:green;;border-radius: 15px;'></div>" + "</td><td style='padding-left: 5px;'>Medium </td></tr><tr><td>" + "<div style='width: 10px; height: 10px; background:red;;border-radius: 15px;'></div>" + "</td><td style='padding-left: 5px;'>Low</td></tr></table></div>"; return(View()); }
public IActionResult LineZone() { List <ChartSegment> segments = new List <ChartSegment>(); ChartSegment segment1 = new ChartSegment(); segment1.Value = 450; segment1.Color = "red"; segments.Add(segment1); ChartSegment segment2 = new ChartSegment(); segment2.Value = 500; segment2.Color = "green"; segments.Add(segment2); ChartSegment segment3 = new ChartSegment(); segment3.Color = "blue"; segments.Add(segment3); ViewBag.segment = segments; return(View()); }
private IReadOnlyList <ChartSegment> groupSegments(IReadOnlyList <ChartSegment> segments, DurationFormat durationFormat) { var groupedData = segments.GroupBy(segment => segment.Percentage >= minimumSegmentPercentageToBeOnItsOwn).ToList(); var aboveStandAloneThresholdSegments = groupedData .Where(group => group.Key) .Flatten() .ToList(); var otherProjectsCandidates = groupedData .Where(group => !group.Key) .Flatten() .ToList(); var finalOtherProjects = otherProjectsCandidates .Where(segment => segment.Percentage < maximumSegmentPercentageToEndUpInOther) .ToList(); var remainingOtherProjectCandidates = otherProjectsCandidates .Except(finalOtherProjects) .OrderBy(segment => segment.Percentage) .ToList(); foreach (var segment in remainingOtherProjectCandidates) { finalOtherProjects.Add(segment); if (percentageOf(finalOtherProjects) + segment.Percentage > maximumOtherProjectPercentageWithSegmentsBetweenOneAndFivePercent) { break; } } if (!finalOtherProjects.Any()) { return(segments); } var leftOutOfOther = remainingOtherProjectCandidates.Except(finalOtherProjects).ToList(); aboveStandAloneThresholdSegments.AddRange(leftOutOfOther); var onTheirOwnSegments = aboveStandAloneThresholdSegments.OrderBy(segment => segment.Percentage).ToList(); ChartSegment lastSegment; if (finalOtherProjects.Count == 1) { var singleSmallSegment = finalOtherProjects.First(); lastSegment = new ChartSegment( singleSmallSegment.ProjectName, string.Empty, singleSmallSegment.Percentage >= minimumOtherSegmentDisplayPercentage ? singleSmallSegment.Percentage : minimumOtherSegmentDisplayPercentage, finalOtherProjects.Sum(segment => (float)segment.TrackedTime.TotalSeconds), finalOtherProjects.Sum(segment => segment.BillableSeconds), singleSmallSegment.Color, durationFormat); } else { var otherPercentage = percentageOf(finalOtherProjects); lastSegment = new ChartSegment( Resources.Other, string.Empty, otherPercentage >= minimumOtherSegmentDisplayPercentage ? otherPercentage : minimumOtherSegmentDisplayPercentage, finalOtherProjects.Sum(segment => (float)segment.TrackedTime.TotalSeconds), finalOtherProjects.Sum(segment => segment.BillableSeconds), Colors.Reports.OtherProjectsSegmentBackground.ToHexString(), durationFormat); } return(onTheirOwnSegments .Append(lastSegment) .ToList() .AsReadOnly()); }