Ejemplo n.º 1
0
        /// <summary>
        /// Load list of miner monitor stats
        /// </summary>
        public void InitMonitorMining24Hour()
        {
            try
            {
                if (Application.Current.Properties["AccountID"] != null && WorkerName != null)
                {
                    // Load list of miner monitor stats
                    MinerMonitorStatsAPI minerMonitorStatsAPI = new MinerMonitorStatsAPI();
                    MinerMonitorStatList24Hour = minerMonitorStatsAPI.GetMinerMonitorStats24Hour();

                    // LineChart data
                    ChartValuesHashRate = new ChartValues <DateTimePoint>();
                    ChartValuesPower    = new ChartValues <DateTimePoint>();

                    // Filter list by worker
                    List <MinerMonitorStat> MinerMonitorStatListFiltered = new List <MinerMonitorStat>();
                    MinerMonitorStatListFiltered = MinerMonitorStatList24Hour.Where(x => x.WorkerName == WorkerName && x.CoinType == CoinType).OrderBy(y => y.Created).ToList();

                    // Calculate average values and display
                    if (MinerMonitorStatListFiltered.Count > 0)
                    {
                        Calculate24HourAverageHashrate(MinerMonitorStatListFiltered);
                        Calculate24HourAveragePower(MinerMonitorStatListFiltered);
                    }
                    else
                    {
                        Hashrate24HourAverage = "0";
                        Power24HourAverage    = "0";
                    }

                    // Populate series to be graphed
                    foreach (MinerMonitorStat minerMonitorStat in MinerMonitorStatListFiltered)
                    {
                        DateTimePoint dateTimePoint = new DateTimePoint();

                        // HashRate
                        dateTimePoint.DateTime = minerMonitorStat.Created.ToLocalTime();
                        dateTimePoint.Value    = HashrateFormatter.FormatNumeric(minerMonitorStat.CoinType, minerMonitorStat.HashRate);
                        ChartValuesHashRate.Add(dateTimePoint);

                        // Power
                        DateTimePoint dateTimePointPower = new DateTimePoint();
                        dateTimePointPower.DateTime = minerMonitorStat.Created.ToLocalTime();
                        dateTimePointPower.Value    = minerMonitorStat.Power;
                        ChartValuesPower.Add(dateTimePointPower);
                    }

                    // Backfill lists as needed
                    WorkerChartDataBackFill chartDataBackFill = new WorkerChartDataBackFill();
                    ChartValuesHashRate = chartDataBackFill.BackFillList(ChartValuesHashRate);
                    ChartValuesPower    = chartDataBackFill.BackFillList(ChartValuesPower);

                    // Axis label formats
                    XFormatter = val => new DateTime((long)val).ToString();
                    YFormatter = val => val.ToString();

                    // Notify UI of change
                    OnPropertyChanged("ChartValuesHashRate");
                    OnPropertyChanged("ChartValuesPower");
                }
            }
            catch (Exception e)
            {
                ShowError(string.Format("Error loading monitor data: {0}", e.Message));
            }
        }