implemented time display when hovering over data

master
Jonas Arnold 3 years ago
parent ba857805a7
commit 33a3acd90b
  1. 8
      MultiTerm.Core/ViewModel/ByteDataViewModel.cs
  2. 2
      MultiTerm.Core/ViewModel/IDataViewModel.cs
  3. 10
      MultiTerm.Core/ViewModel/MultiFormatDataViewModel.cs
  4. 4
      MultiTerm.Wpf.CustomControl/MultiFormatDataView/MultiFormatDataView.xaml

@ -16,7 +16,7 @@ public partial class ByteDataViewModel : ObservableObject, IDataViewModel, IComp
private int lineIdentifier;
[ObservableProperty]
private TimeOnly time;
private string timeAsString = String.Empty;
[ObservableProperty]
private string displayStringChar = String.Empty;
@ -42,7 +42,7 @@ public partial class ByteDataViewModel : ObservableObject, IDataViewModel, IComp
this.DisplayStringChar = extendedByte.ToCharacterString();
this.DisplayStringHex = extendedByte.ToHexString();
this.DisplayStringBin = extendedByte.ToBinaryString();
this.Time = extendedByte.Time;
this.TimeAsString = extendedByte.Time.ToString("HH:mm:ss.ffff");
}
#region IComparable Implementation
@ -56,9 +56,9 @@ public partial class ByteDataViewModel : ObservableObject, IDataViewModel, IComp
if(other == null)
return 1;
if (other.Time.Ticks > this.Time.Ticks)
if (other.Data.Time.Ticks > this.Data.Time.Ticks)
return -1;
else if(this.Time.Ticks > other.Time.Ticks)
else if(this.Data.Time.Ticks > other.Data.Time.Ticks)
return 1;
else // equal
return 0;

@ -11,7 +11,7 @@ public interface IDataViewModel
/// <summary>
/// Time when this data was produced.
/// </summary>
TimeOnly Time { get; }
string TimeAsString { get; }
/// <summary>
/// Hosts a displayable string of the character (.NET: UTF-16 encoded).

@ -120,17 +120,17 @@ public partial class MultiFormatDataViewModel : ObservableObject
if (this.Selected.Count == 1)
{
this.SelectedDataFirstAbsoluteTime = $"Time: {this.Selected.First().Time:HH:mm:ss.ff}";
this.SelectedDataFirstAbsoluteTime = $"Time: {this.Selected.First().Data.Time:HH:mm:ss.ffff}";
this.SelectedDataTimediff = string.Empty;
}
if (this.Selected.Count > 1)
{
TimeSpan timediff;
TimeOnly lastSelected = this.Selected.Last().Time, firstSelected = this.Selected.First().Time;
TimeOnly lastSelected = this.Selected.Last().Data.Time, firstSelected = this.Selected.First().Data.Time;
Debug.WriteLine($"First time selected: {firstSelected:HH.mm:ss.ff} Ticks: {firstSelected.Ticks}");
Debug.WriteLine($"Last time selected: {lastSelected:HH.mm:ss.ff} Ticks: {lastSelected.Ticks}");
Debug.WriteLine($"First time selected: {firstSelected:HH.mm:ss.ffff} Ticks: {firstSelected.Ticks}");
Debug.WriteLine($"Last time selected: {lastSelected:HH.mm:ss.ffff} Ticks: {lastSelected.Ticks}");
// calculate timedifference according to selection direction
// (preventive. selection should arrive sorted correctly)
@ -145,7 +145,7 @@ public partial class MultiFormatDataViewModel : ObservableObject
Debug.WriteLine($"Calculated timediff Ticks: {timediff.Ticks}");
this.SelectedDataFirstAbsoluteTime = $"Time (first selected): {firstSelected:HH:mm:ss.ff}";
this.SelectedDataFirstAbsoluteTime = $"Time (first selected): {firstSelected:HH:mm:ss.ffff}";
this.SelectedDataTimediff = $"Difference (first to last): {timediff.TotalMilliseconds:n} ms";
}
}

@ -31,7 +31,9 @@
<!-- Data Template for Data Container -->
<DataTemplate x:Key="dataContainerTemplate" DataType="vm:IDataViewModel">
<StackPanel Orientation="Vertical" Margin="0" x:Name="ItemStackPanel">
<StackPanel Orientation="Vertical" Margin="0" x:Name="ItemStackPanel"
ToolTip="{Binding TimeAsString}"
ToolTipService.InitialShowDelay="500">
<StackPanel.Triggers>
<EventTrigger SourceName="ItemStackPanel" RoutedEvent="Loaded">
<BeginStoryboard>

Loading…
Cancel
Save