Move devices by bus chart to ChartJS.

This commit is contained in:
2019-11-03 04:57:44 +00:00
parent 74f5c85de8
commit 9746b4d9a6
2 changed files with 37 additions and 8 deletions

View File

@@ -249,13 +249,6 @@ namespace DiscImageChef.Server.Controllers
ThenBy(device => device.Revision).ThenBy(device => device.Bus). ThenBy(device => device.Revision).ThenBy(device => device.Bus).
ToList(); 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"] = ViewData["devicesManufacturerPieData"] =
(from manufacturer in devices.Where(d => d.Manufacturer != null). (from manufacturer in devices.Where(d => d.Manufacturer != null).
Select(d => d.Manufacturer.ToLowerInvariant()).Distinct() Select(d => d.Manufacturer.ToLowerInvariant()).Distinct()
@@ -571,5 +564,34 @@ namespace DiscImageChef.Server.Controllers
return Json(result); 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);
}
} }
} }

View File

@@ -445,7 +445,8 @@
</li> </li>
</ol> </ol>
<div class="carousel-inner"> <div class="carousel-inner">
<div class="active carousel-item" id="devicesBusChart"> <div class="active carousel-item">
<canvas id="devicesBusChart"></canvas>
</div> </div>
<div class="carousel-item" id="devicesManufacturerChart"> <div class="carousel-item" id="devicesManufacturerChart">
</div> </div>
@@ -607,6 +608,11 @@ function DrawRealMediaPie(realMediaData)
DrawPie("realMediaChart", `Top ${realMediaData[0].length} media types found in devices`, realMediaData[0], realMediaData[1]) DrawPie("realMediaChart", `Top ${realMediaData[0].length} media types found in devices`, realMediaData[0], realMediaData[1])
} }
function DrawDevicesBusPie(devicesBusData)
{
DrawPie("devicesBusChart", `Top ${devicesBusData[0].length} devices by bus`, devicesBusData[0], devicesBusData[1])
}
window.onload = () => { window.onload = () => {
$.ajax({dataType: "json", url: "/Stats/GetOsData", success: DrawOsPie, cache:false}); $.ajax({dataType: "json", url: "/Stats/GetOsData", success: DrawOsPie, cache:false});
$.ajax({dataType: "json", url: "/Stats/GetLinuxData", success: DrawLinuxPie, cache:false}); $.ajax({dataType: "json", url: "/Stats/GetLinuxData", success: DrawLinuxPie, cache:false});
@@ -620,6 +626,7 @@ window.onload = () => {
$.ajax({dataType: "json", url: "/Stats/GetFilesystemsData", success: DrawFilesystemsPie, cache:false}); $.ajax({dataType: "json", url: "/Stats/GetFilesystemsData", success: DrawFilesystemsPie, cache:false});
$.ajax({dataType: "json", url: "/Stats/GetVirtualMediaData", success: DrawVirtualMediaPie, cache:false}); $.ajax({dataType: "json", url: "/Stats/GetVirtualMediaData", success: DrawVirtualMediaPie, cache:false});
$.ajax({dataType: "json", url: "/Stats/GetRealMediaData", success: DrawRealMediaPie, cache:false}); $.ajax({dataType: "json", url: "/Stats/GetRealMediaData", success: DrawRealMediaPie, cache:false});
$.ajax({dataType: "json", url: "/Stats/GetDevicesBusData", success: DrawDevicesBusPie, cache:false});
} }
</script> </script>