private void InitData()
        {
            bindingConfiguration.Add(_configuration);
            foreach (var kv in _configuration.Calculations)
            {
                var calculation = new CalculationControl(I18N.GetString(kv.Key), kv.Value);
                calculationContainer.Controls.Add(calculation);
            }

            serverSelector.DataSource = _servers;

            _dataTable.Columns.Add("Timestamp", typeof(DateTime));
            _dataTable.Columns.Add("Speed", typeof(int));
            _speedSeries.XValueMember  = "Timestamp";
            _speedSeries.YValueMembers = "Speed";

            // might be empty
            _dataTable.Columns.Add("Package Loss", typeof(int));
            _dataTable.Columns.Add("Ping", typeof(int));
            _packageLossSeries.XValueMember  = "Timestamp";
            _packageLossSeries.YValueMembers = "Package Loss";
            _pingSeries.XValueMember         = "Timestamp";
            _pingSeries.YValueMembers        = "Ping";

            StatisticsChart.DataSource = _dataTable;
            LoadChartData();
            StatisticsChart.DataBind();
        }
Exemplo n.º 2
0
        private void LoadChartData()
        {
            var serverName = _servers[serverSelector.SelectedIndex];

            _dataTable.Rows.Clear();

            //return directly when no data is usable
            if (_controller.availabilityStatistics?.FilteredStatistics == null)
            {
                return;
            }
            List <StatisticsRecord> statistics;

            if (!_controller.availabilityStatistics.FilteredStatistics.TryGetValue(serverName, out statistics))
            {
                return;
            }
            IEnumerable <IGrouping <int, StatisticsRecord> > dataGroups;

            if (allMode.Checked)
            {
                _pingSeries.XValueType        = ChartValueType.DateTime;
                _packageLossSeries.XValueType = ChartValueType.DateTime;
                _speedSeries.XValueType       = ChartValueType.DateTime;
                dataGroups = statistics.GroupBy(data => data.Timestamp.DayOfYear);
                StatisticsChart.ChartAreas["DataArea"].AxisX.LabelStyle.Format  = "g";
                StatisticsChart.ChartAreas["DataArea"].AxisX2.LabelStyle.Format = "g";
            }
            else
            {
                _pingSeries.XValueType        = ChartValueType.Time;
                _packageLossSeries.XValueType = ChartValueType.Time;
                _speedSeries.XValueType       = ChartValueType.Time;
                dataGroups = statistics.GroupBy(data => data.Timestamp.Hour);
                StatisticsChart.ChartAreas["DataArea"].AxisX.LabelStyle.Format  = "HH:00";
                StatisticsChart.ChartAreas["DataArea"].AxisX2.LabelStyle.Format = "HH:00";
            }
            if (dataGroups == null)
            {
                return;
            }
            var finalData = from dataGroup in dataGroups
                            orderby dataGroup.Key
                            select new
            {
                dataGroup.First().Timestamp,
                Speed = dataGroup.Max(data => data.MaxInboundSpeed) ?? 0,
                Ping  = (int)(dataGroup.Average(data => data.AverageResponse) ?? 0),
                PackageLossPercentage = (int)(dataGroup.Average(data => data.PackageLoss) ?? 0) * 100
            };

            foreach (var data in finalData.Where(data => data.Speed != 0 || data.PackageLossPercentage != 0 || data.Ping != 0))
            {
                _dataTable.Rows.Add(data.Timestamp, data.Speed, data.PackageLossPercentage, data.Ping);
            }
            StatisticsChart.DataBind();
        }
Exemplo n.º 3
0
        private void loadChartData()
        {
            string serverName = _servers[serverSelector.SelectedIndex];

            _dataTable.Rows.Clear();

            //return directly when no data is usable
            if (_controller.availabilityStatistics?.FilteredStatistics == null)
            {
                return;
            }
            List <AvailabilityStatistics.RawStatisticsData> statistics;

            if (!_controller.availabilityStatistics.FilteredStatistics.TryGetValue(serverName, out statistics))
            {
                return;
            }
            IEnumerable <IGrouping <int, AvailabilityStatistics.RawStatisticsData> > dataGroups;

            if (allMode.Checked)
            {
                dataGroups = statistics.GroupBy(data => data.Timestamp.DayOfYear);
                StatisticsChart.ChartAreas["DataArea"].AxisX.LabelStyle.Format  = "MM/dd/yyyy";
                StatisticsChart.ChartAreas["DataArea"].AxisX2.LabelStyle.Format = "MM/dd/yyyy";
            }
            else
            {
                dataGroups = statistics.GroupBy(data => data.Timestamp.Hour);
                StatisticsChart.ChartAreas["DataArea"].AxisX.LabelStyle.Format  = "HH:00";
                StatisticsChart.ChartAreas["DataArea"].AxisX2.LabelStyle.Format = "HH:00";
            }
            var finalData = from dataGroup in dataGroups
                            orderby dataGroup.Key
                            select new
            {
                Timestamp   = dataGroup.First().Timestamp,
                Ping        = (int)dataGroup.Average(data => data.RoundtripTime),
                PackageLoss = (int)
                              (dataGroup.Count(data => data.ICMPStatus == IPStatus.TimedOut.ToString())
                               / (float)dataGroup.Count() * 100)
            };

            foreach (var data in finalData)
            {
                _dataTable.Rows.Add(data.Timestamp, data.PackageLoss, data.Ping);
            }
            StatisticsChart.DataBind();
        }
Exemplo n.º 4
0
        private void InitData()
        {
            bindingConfiguration.Add(_configuration);
            foreach (var kv in _configuration.Calculations)
            {
                var calculation = new CalculationControl(kv.Key, kv.Value);
                calculationContainer.Controls.Add(calculation);
            }

            serverSelector.DataSource = _servers;

            _dataTable.Columns.Add("Timestamp", typeof(DateTime));
            _dataTable.Columns.Add("Package Loss", typeof(int));
            _dataTable.Columns.Add("Ping", typeof(int));

            StatisticsChart.Series["Package Loss"].XValueMember  = "Timestamp";
            StatisticsChart.Series["Package Loss"].YValueMembers = "Package Loss";
            StatisticsChart.Series["Ping"].XValueMember          = "Timestamp";
            StatisticsChart.Series["Ping"].YValueMembers         = "Ping";
            StatisticsChart.DataSource = _dataTable;
            loadChartData();
            StatisticsChart.DataBind();
        }