mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
Move virual media chart to ChartJS.
This commit is contained in:
@@ -183,67 +183,12 @@ namespace DiscImageChef.Server.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(realMedia.Count > 0)
|
if(realMedia.Count > 0)
|
||||||
{
|
|
||||||
ViewBag.repRealMedia =
|
ViewBag.repRealMedia =
|
||||||
realMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList();
|
realMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList();
|
||||||
|
|
||||||
List<PieSeriesData> realMediaPieData = new List<PieSeriesData>();
|
|
||||||
|
|
||||||
decimal totalRealMediaCount = realMedia.Sum(o => o.Count);
|
|
||||||
decimal top10RealMediaCount = 0;
|
|
||||||
|
|
||||||
foreach(MediaItem realMediaItem in realMedia.OrderByDescending(o => o.Count).Take(10))
|
|
||||||
{
|
|
||||||
top10RealMediaCount += realMediaItem.Count;
|
|
||||||
|
|
||||||
realMediaPieData.Add(new PieSeriesData
|
|
||||||
{
|
|
||||||
Name = $"{realMediaItem.Type} ({realMediaItem.SubType})",
|
|
||||||
Y = (double?)(realMediaItem.Count / totalRealMediaCount)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
realMediaPieData.Add(new PieSeriesData
|
|
||||||
{
|
|
||||||
Name = "Other",
|
|
||||||
Y = (double?)((totalRealMediaCount - top10RealMediaCount) / totalRealMediaCount),
|
|
||||||
Sliced = true, Selected = true
|
|
||||||
});
|
|
||||||
|
|
||||||
ViewData["realMediaPieData"] = realMediaPieData;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(virtualMedia.Count > 0)
|
if(virtualMedia.Count > 0)
|
||||||
{
|
|
||||||
ViewBag.repVirtualMedia =
|
ViewBag.repVirtualMedia =
|
||||||
virtualMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList();
|
virtualMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList();
|
||||||
|
|
||||||
List<PieSeriesData> virtualMediaPieData = new List<PieSeriesData>();
|
|
||||||
|
|
||||||
decimal totalVirtualMediaCount = virtualMedia.Sum(o => o.Count);
|
|
||||||
decimal top10VirtualMediaCount = 0;
|
|
||||||
|
|
||||||
foreach(MediaItem virtualMediaItem in virtualMedia.OrderByDescending(o => o.Count).Take(10))
|
|
||||||
{
|
|
||||||
top10VirtualMediaCount += virtualMediaItem.Count;
|
|
||||||
|
|
||||||
virtualMediaPieData.Add(new PieSeriesData
|
|
||||||
{
|
|
||||||
Name = $"{virtualMediaItem.Type} ({virtualMediaItem.SubType})",
|
|
||||||
Y = (double?)(virtualMediaItem.Count / totalVirtualMediaCount)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
virtualMediaPieData.Add(new PieSeriesData
|
|
||||||
{
|
|
||||||
Name = "Other",
|
|
||||||
Y = (double?)((totalVirtualMediaCount - top10VirtualMediaCount) /
|
|
||||||
totalVirtualMediaCount),
|
|
||||||
Sliced = true, Selected = true
|
|
||||||
});
|
|
||||||
|
|
||||||
ViewData["virtualMediaPieData"] = virtualMediaPieData;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ctx.DeviceStats.Any())
|
if(ctx.DeviceStats.Any())
|
||||||
@@ -554,5 +499,41 @@ namespace DiscImageChef.Server.Controllers
|
|||||||
|
|
||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IActionResult GetVirtualMediaData()
|
||||||
|
{
|
||||||
|
Media[] virtualMedias = ctx.Medias.Where(o => !o.Real).OrderByDescending(o => o.Count).Take(10).ToArray();
|
||||||
|
|
||||||
|
foreach (Media media in virtualMedias)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
MediaType.
|
||||||
|
MediaTypeToString((CommonTypes.MediaType)Enum.Parse(typeof(CommonTypes.MediaType), media.Type),
|
||||||
|
out string type, out string subtype);
|
||||||
|
|
||||||
|
media.Type = $"{type} ({subtype})";
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Could not get media type/subtype pair from type, so just leave it as is
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string[][] result =
|
||||||
|
{
|
||||||
|
virtualMedias.Select(v => v.Type).ToArray(),
|
||||||
|
virtualMedias.Select(x => x.Count.ToString()).ToArray()
|
||||||
|
};
|
||||||
|
|
||||||
|
if(result[0].Length < 10)
|
||||||
|
return Json(result);
|
||||||
|
|
||||||
|
result[0][9] = "Other";
|
||||||
|
|
||||||
|
result[1][9] = (ctx.Medias.Where(o => !o.Real).Sum(o => o.Count) - result[1].Take(9).Sum(long.Parse)).ToString();
|
||||||
|
|
||||||
|
return Json(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -345,7 +345,8 @@
|
|||||||
@if (ViewBag.repVirtualMedia != null)
|
@if (ViewBag.repVirtualMedia != null)
|
||||||
{
|
{
|
||||||
<div class="container mt-3" id="divVirtualMedia">
|
<div class="container mt-3" id="divVirtualMedia">
|
||||||
<div class="container" id="virtualMediaChart">
|
<div class="container">
|
||||||
|
<canvas id="virtualMediaChart"></canvas>
|
||||||
</div>
|
</div>
|
||||||
<div class="accordion mt-3" id="virtualMediaAccordion">
|
<div class="accordion mt-3" id="virtualMediaAccordion">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
@@ -595,6 +596,11 @@ function DrawFilesystemsPie(filesystemsData)
|
|||||||
DrawPie("filesystemsChart", `Top ${filesystemsData[0].length} filesystems found`, filesystemsData[0], filesystemsData[1])
|
DrawPie("filesystemsChart", `Top ${filesystemsData[0].length} filesystems found`, filesystemsData[0], filesystemsData[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function DrawVirtualMediaPie(virtualMediaData)
|
||||||
|
{
|
||||||
|
DrawPie("virtualMediaChart", `Top ${virtualMediaData[0].length} media types found in images`, virtualMediaData[0], virtualMediaData[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});
|
||||||
@@ -606,6 +612,7 @@ window.onload = () => {
|
|||||||
$.ajax({dataType: "json", url: "/Stats/GetFormatsData", success: DrawFormatsPie, cache:false});
|
$.ajax({dataType: "json", url: "/Stats/GetFormatsData", success: DrawFormatsPie, cache:false});
|
||||||
$.ajax({dataType: "json", url: "/Stats/GetPartitionsData", success: DrawPartitionsPie, cache:false});
|
$.ajax({dataType: "json", url: "/Stats/GetPartitionsData", success: DrawPartitionsPie, cache:false});
|
||||||
$.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});
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
Reference in New Issue
Block a user