Move partitioning schemes chart to ChartJS.

This commit is contained in:
2019-11-03 04:33:33 +00:00
parent 2b175e4cf2
commit 9c8f351ec2
2 changed files with 28 additions and 54 deletions

View File

@@ -137,62 +137,11 @@ namespace DiscImageChef.Server.Controllers
ViewBag.repFilters = ctx.Filters.OrderBy(filter => filter.Name).ToList();
if(ctx.MediaFormats.Any())
{
ViewBag.repMediaImages = ctx.MediaFormats.OrderBy(filter => filter.Name).ToList();
List<PieSeriesData> formatsPieData = new List<PieSeriesData>();
decimal totalFormatsCount = ctx.MediaFormats.Sum(o => o.Count);
decimal top10FormatCount = 0;
foreach(MediaFormat format in ctx.MediaFormats.OrderByDescending(o => o.Count).Take(10))
{
top10FormatCount += format.Count;
formatsPieData.Add(new PieSeriesData
{
Name = format.Name, Y = (double?)(format.Count / totalFormatsCount)
});
}
formatsPieData.Add(new PieSeriesData
{
Name = "Other", Y = (double?)((totalFormatsCount - top10FormatCount) / totalFormatsCount),
Sliced = true, Selected = true
});
ViewData["formatsPieData"] = formatsPieData;
}
if(ctx.Partitions.Any())
{
ViewBag.repPartitions = ctx.Partitions.OrderBy(filter => filter.Name).ToList();
List<PieSeriesData> partitionsPieData = new List<PieSeriesData>();
decimal totalPartitionsCount = ctx.Partitions.Sum(o => o.Count);
decimal top10PartitionCount = 0;
foreach(Partition partition in ctx.Partitions.OrderByDescending(o => o.Count).Take(10))
{
top10PartitionCount += partition.Count;
partitionsPieData.Add(new PieSeriesData
{
Name = partition.Name, Y = (double?)(partition.Count / totalPartitionsCount)
});
}
partitionsPieData.Add(new PieSeriesData
{
Name = "Other",
Y = (double?)((totalPartitionsCount - top10PartitionCount) / totalPartitionsCount),
Sliced = true, Selected = true
});
ViewData["partitionsPieData"] = partitionsPieData;
}
if(ctx.Filesystems.Any())
{
ViewBag.repFilesystems = ctx.Filesystems.OrderBy(filter => filter.Name).ToList();
@@ -595,5 +544,23 @@ namespace DiscImageChef.Server.Controllers
return Json(result);
}
public IActionResult GetPartitionsData()
{
string[][] result =
{
ctx.Partitions.OrderByDescending(o => o.Count).Take(10).Select(v => v.Name).ToArray(),
ctx.Partitions.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] = (ctx.Partitions.Sum(o => o.Count) - result[1].Take(9).Sum(long.Parse)).ToString();
return Json(result);
}
}
}

View File

@@ -265,7 +265,8 @@
@if (ViewBag.repPartitions != null)
{
<div class="container mt-3" id="divPartitions">
<div class="container" id="partitionsChart">
<div class="container">
<canvas id="partitionsChart"></canvas>
</div>
<div class="accordion mt-3" id="partitionsAccordion">
<div class="card">
@@ -578,9 +579,14 @@ function DrawFiltersPie(filtersData)
DrawPie("filtersChart", `Top ${filtersData[0].length} filters found`, filtersData[0], filtersData[1])
}
function DrawFormatsPie(formats)
function DrawFormatsPie(formatsData)
{
DrawPie("formatsChart", `Top ${formats[0].length} media image formats found`, formats[0], formats[1])
DrawPie("formatsChart", `Top ${formatsData[0].length} media image formats found`, formatsData[0], formatsData[1])
}
function DrawPartitionsPie(partitionsData)
{
DrawPie("partitionsChart", `Top ${partitionsData[0].length} partitioning schemes found`, partitionsData[0], partitionsData[1])
}
window.onload = () => {
@@ -592,6 +598,7 @@ window.onload = () => {
$.ajax({dataType: "json", url: "/Stats/GetCommandsData", success: DrawCommandsPie, cache:false});
$.ajax({dataType: "json", url: "/Stats/GetFiltersData", success: DrawFiltersPie, cache:false});
$.ajax({dataType: "json", url: "/Stats/GetFormatsData", success: DrawFormatsPie, cache:false});
$.ajax({dataType: "json", url: "/Stats/GetPartitionsData", success: DrawPartitionsPie, cache:false});
}
</script>