IEnumerable <long> GetMeasurements() { List <long> measurements = new List <long>(); NetworkModel nm = PubSub.Model; foreach (long terminalGID in io.Terminals) { Terminal terminal = (Terminal)nm.Get(terminalGID); if (terminal == null) { continue; } foreach (long measGID in terminal.Measurements) { measurements.Add(measGID); } } return(measurements); }
public override void Update() { Grid measGrid = (Grid)((Border)((StackPanel)panel.Children[1]).Children[0]).Child; if (measGrid.Children.Count > 5) { measGrid.Children.RemoveRange(5, measGrid.Children.Count - 5); } if (measGrid.RowDefinitions.Count > 1) { measGrid.RowDefinitions.RemoveRange(1, measGrid.RowDefinitions.Count - 1); } int row = 0; NetworkModel nm = pubSub.Model; IEnumerable <long> measGIDs = measurementsGetter(); if (measGIDs == null) { measGIDs = new long[0]; } foreach (long measGID in measurementsGetter()) { ++row; Measurement meas = (Measurement)nm.Get(measGID); if (meas == null) { continue; } measGrid.RowDefinitions.Add(new RowDefinition()); TextBlock mridTextBlock = CreateHyperlink(meas.MRID, () => new ElementWindow(measGID, pubSub) { Owner = Application.Current.MainWindow }.Show()); AddToGrid(measGrid, mridTextBlock, row, 0); AddToGrid(measGrid, new TextBlock() { Text = meas.MeasurementType.ToString() }, row, 2); string valueText; bool isNormal; if (ModelCodeHelper.GetTypeFromGID(measGID) == DMSType.Analog) { float value; bool available = pubSub.Measurements.GetAnalogInput(measGID, out value); Analog a = (Analog)meas; isNormal = !available || (value <= a.MaxValue && value >= a.MinValue); valueText = available ? value.ToString() : "N/A"; } else { int value; bool available = pubSub.Measurements.GetDiscreteInput(measGID, out value); Discrete d = (Discrete)meas; isNormal = !available || (value <= d.MaxValue && value >= d.MinValue); valueText = available ? value.ToString() : "N/A"; } AddToGrid(measGrid, new TextBlock() { Text = valueText, Foreground = isNormal ? Brushes.Black : Brushes.White, Background = isNormal ? Brushes.White : Brushes.Red, FontWeight = isNormal ? FontWeights.Regular : FontWeights.Bold, TextAlignment = TextAlignment.Right }, row, 4); } int splitterRowSpan = int.MaxValue; if (row == 0) { measGrid.RowDefinitions.Add(new RowDefinition()); Grid.SetColumnSpan(AddToGrid(measGrid, new TextBlock() { Text = "No measurements.", HorizontalAlignment = HorizontalAlignment.Center }, 1, 0), 5); splitterRowSpan = 1; } Grid.SetRowSpan(measGrid.Children[3], splitterRowSpan); Grid.SetRowSpan(measGrid.Children[4], splitterRowSpan); measGrid.RowDefinitions.Last().Height = new GridLength(1, GridUnitType.Star); initialized = true; }