Skip to content

Commit

Permalink
UI: add upstream snr values to graph
Browse files Browse the repository at this point in the history
  • Loading branch information
Rans4ckeR committed Jun 28, 2024
1 parent 558dc73 commit 26c1805
Showing 1 changed file with 12 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ internal sealed class WanDslInterfaceConfigDslInfoViewModel : ObservableObject
{
private readonly Brush maxBrush = Brushes.LightGreen;
private readonly Brush minBrush = Brushes.Orange;
private readonly Brush lineBrush = Brushes.Green;
private readonly Brush downstreamLineBrush = Brushes.Green;
private readonly Brush upstreamLineBrush = Brushes.Yellow;
private readonly ScaleTransform scaleYTransform = new() { ScaleY = -1d };

private KeyValuePair<WanDslInterfaceConfigGetDslInfoResponse?, UPnPFault?>? wanDslInterfaceConfigGetDslInfoResponse;
Expand All @@ -23,7 +24,8 @@ public WanDslInterfaceConfigDslInfoViewModel()

maxBrush.Freeze();
minBrush.Freeze();
lineBrush.Freeze();
downstreamLineBrush.Freeze();
upstreamLineBrush.Freeze();
scaleYTransform.Freeze();
}

Expand All @@ -33,7 +35,7 @@ public WanDslInterfaceConfigDslInfoViewModel()
set
{
if (SetProperty(ref wanDslInterfaceConfigGetDslInfoResponse, value))
UpdateDownstreamSnrElements();
UpdateSnrElements();
}
}

Expand Down Expand Up @@ -62,21 +64,24 @@ private static void CreateUiElements(double yScale, double xScale, uint min, uin
}
}

private void UpdateDownstreamSnrElements()
private void UpdateSnrElements()
{
const double yScale = 200d;
const double xScale = 2d;
var downstreamSnrValues = WanDslInterfaceConfigGetDslInfoResponse!.Value.Key!.Value.SnrPsDs.Split(',').Select(q => uint.Parse(q, CultureInfo.InvariantCulture)).ToList();
uint min = downstreamSnrValues.Min();
uint max = downstreamSnrValues.Max();
var upstreamSnrValues = WanDslInterfaceConfigGetDslInfoResponse!.Value.Key!.Value.SnrPsUs.Split(',').Select(q => uint.Parse(q, CultureInfo.InvariantCulture)).ToList();
var snrValues = downstreamSnrValues.Concat(upstreamSnrValues).ToList();
uint min = snrValues.Min();
uint max = snrValues.Max();
uint range = max - min;

if (range is 0)
range = 1;

var uiElements = new List<UIElement>();

CreateUiElements(yScale, xScale, min, range, uiElements, downstreamSnrValues, lineBrush);
CreateUiElements(yScale, xScale, min, range, uiElements, downstreamSnrValues, downstreamLineBrush);
CreateUiElements(yScale, xScale, min, range, uiElements, upstreamSnrValues, upstreamLineBrush);

var labelMax = new Label { Content = max, Foreground = maxBrush, LayoutTransform = scaleYTransform };
var labelMin = new Label { Content = min, Foreground = minBrush, LayoutTransform = scaleYTransform };
Expand Down

0 comments on commit 26c1805

Please sign in to comment.