public DonutChartVM(chartData _data, bool _centerLabel) { Data = _data; centerLabel = _centerLabel; Animate = true; }
public async Task <JsonResult> GetTodaysPower(string deviceId) { DateTime start = DateTime.UtcNow.AddHours(-12); int year = start.Year; int month = start.Month; // Average all results over the minute List <DateTime> timeFrame = new List <DateTime>(); var query = (from i in db.DataLogs where i.timeStamp >= start && i.deviceId == deviceId group i by new { i.timeStamp.Day, i.timeStamp.Hour, i.timeStamp.Minute } into grp select new { day = grp.Key.Day, hour = grp.Key.Hour, minute = grp.Key.Minute, compressorCurrent = grp.Average(x => x.compressorCurrent), fanCurrent = grp.Average(x => x.fanCurrent) }).ToListAsync(); for (int i = 1; i <= 720; i++) { timeFrame.Add(start.AddMinutes(i)); } var results = await query; var data = (from t in timeFrame join i in results on new { x = t.Day, y = t.Hour, z = t.Minute } equals new { x = i.day, y = i.hour, z = i.minute } into joined from j in joined.DefaultIfEmpty() select new { timeStamp = new DateTime(year, month, t.Day, t.Hour, t.Minute, 0), compressorCurrent = j == null? 0 : j.compressorCurrent, fanCurrent = j == null? 0 : j.fanCurrent }).ToList(); chartData powerChart = new chartData(); dataset set = new dataset(); powerChart.labels = data.Select(x => x.timeStamp.ToString()).ToList(); set = new dataset() { label = "Compressor Current", data = data.Select(x => x.compressorCurrent).ToList() }; powerChart.datasets.Add(set); set = new dataset() { label = "Fan current", data = data.Select(x => x.fanCurrent).ToList() }; powerChart.datasets.Add(set); return(Json(powerChart)); }
private void getData() { loadPercent = 0; long bytesLoad = 0; long bytesTotal = 0; var sett = new System.Xml.XmlDocument(); sett.Load(AppDomain.CurrentDomain.BaseDirectory + "config.xml"); string path = ""; var s = sett.SelectNodes("settings/server/logs/log"); for (int i = 0; i < s.Count; i++) { if (s[i].Attributes["type"].InnerText == "main") { path = s[i].Attributes["path"].InnerText; } } path = path.Replace("%STARTPATH%", AppDomain.CurrentDomain.BaseDirectory); if (!(new System.IO.FileInfo(path).Exists)) { MessageBox.Show("No logged data."); return; } var file = new System.IO.StreamReader(new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite)); bytesTotal = file.BaseStream.Length; while (!file.EndOfStream) { string line = file.ReadLine(); if (line.StartsWith("GetFile\t")) { string[] par = line.Split('\t'); bytesLoad += line.Length; DateTime d; if (DateTime.TryParse(par[1], out d)) { d = new DateTime(d.Year, d.Month, d.Day, d.Hour, 0, 0); if (data.ContainsKey(d)) { data[d] = new chartData() { numOfRequest = data[d].numOfRequest + 1 }; } else { data.Add(d, new chartData() { numOfRequest = 0 }); } } } loadPercent = (double)bytesLoad / (double)bytesTotal; } if (date1.Ticks == 0) { date1 = data.Keys.Min <DateTime>(); } if (date2.Ticks == 0) { date2 = data.Keys.Max <DateTime>(); } loadPercent = 1; dataIsReady = true; }