From 9746b4d9a6dfec3fba8d56f567135cd6705e8a0b Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 3 Nov 2019 04:57:44 +0000 Subject: [PATCH] Move devices by bus chart to ChartJS. --- .../Controllers/StatsController.cs | 36 +++++++++++++++---- DiscImageChef.Server/Views/Stats/Index.cshtml | 9 ++++- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/DiscImageChef.Server/Controllers/StatsController.cs b/DiscImageChef.Server/Controllers/StatsController.cs index cc914745..b3fbd4ee 100644 --- a/DiscImageChef.Server/Controllers/StatsController.cs +++ b/DiscImageChef.Server/Controllers/StatsController.cs @@ -249,13 +249,6 @@ namespace DiscImageChef.Server.Controllers ThenBy(device => device.Revision).ThenBy(device => device.Bus). ToList(); - ViewData["devicesBusPieData"] = (from deviceBus in devices.Select(d => d.Bus).Distinct() - let deviceBusCount = devices.Count(d => d.Bus == deviceBus) - select new PieSeriesData - { - Name = deviceBus, Y = deviceBusCount / (double)devices.Count - }).ToList(); - ViewData["devicesManufacturerPieData"] = (from manufacturer in devices.Where(d => d.Manufacturer != null). Select(d => d.Manufacturer.ToLowerInvariant()).Distinct() @@ -571,5 +564,34 @@ namespace DiscImageChef.Server.Controllers return Json(result); } + + public IActionResult GetDevicesBusData() + { + var data = ctx.DeviceStats.Select(d => d.Bus). + Distinct(). + Select(deviceBus => new + { + deviceBus, deviceBusCount = ctx.DeviceStats.Count(d => d.Bus == deviceBus) + }). + Select(t => new + { + Name = t.deviceBus, Count = t.deviceBusCount + }).ToList(); + + string[][] result = + { + data.OrderByDescending(o => o.Count).Take(10).Select(v => v.Name).ToArray(), + data.OrderByDescending(o => o.Count).Take(10).Select(x => x.Count.ToString()).ToArray() + }; + + if(result[0].Length < 10) + return Json(result); + + result[0][9] = "Other"; + + result[1][9] = (data.Sum(o => o.Count) - result[1].Take(9).Sum(long.Parse)).ToString(); + + return Json(result); + } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Stats/Index.cshtml b/DiscImageChef.Server/Views/Stats/Index.cshtml index 19ed69f4..ad4c50ac 100644 --- a/DiscImageChef.Server/Views/Stats/Index.cshtml +++ b/DiscImageChef.Server/Views/Stats/Index.cshtml @@ -445,7 +445,8 @@