diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml index b976775f3..e7b2dbb80 100644 --- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml +++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml @@ -1821,9 +1821,6 @@ - - - diff --git a/DiscImageChef.Server/Statistics.aspx b/DiscImageChef.Server/Statistics.aspx index c8862600f..3f5a827dc 100644 --- a/DiscImageChef.Server/Statistics.aspx +++ b/DiscImageChef.Server/Statistics.aspx @@ -197,11 +197,11 @@ + Text='<%# Eval("Name") %>' /> + Text='<%# string.Format("{0}", Eval("Count")) %>' /> @@ -223,11 +223,11 @@ + Text='<%# Eval("Name") %>' /> + Text='<%# string.Format("{0}", Eval("Count")) %>' /> @@ -249,11 +249,11 @@ + Text='<%# Eval("Name") %>' /> + Text='<%# string.Format("{0}", Eval("Count")) %>' /> @@ -275,11 +275,11 @@ + Text='<%# Eval("Name") %>' /> + Text='<%# string.Format("{0}", Eval("Count")) %>' /> diff --git a/DiscImageChef.Server/Statistics.aspx.cs b/DiscImageChef.Server/Statistics.aspx.cs index 831561890..610ccf37e 100644 --- a/DiscImageChef.Server/Statistics.aspx.cs +++ b/DiscImageChef.Server/Statistics.aspx.cs @@ -39,10 +39,12 @@ using System.Threading; using System.Web; using System.Web.Hosting; using System.Web.UI; -using System.Xml.Serialization; using DiscImageChef.CommonTypes.Interop; using DiscImageChef.CommonTypes.Metadata; +using DiscImageChef.Server.Models; +using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; using PlatformID = DiscImageChef.CommonTypes.Interop.PlatformID; +using Version = DiscImageChef.Server.Models.Version; namespace DiscImageChef.Server { @@ -51,11 +53,12 @@ namespace DiscImageChef.Server /// public partial class Statistics : Page { + DicServerContext ctx = new DicServerContext(); List devices; List operatingSystems; List realMedia; - Stats statistics; + //Stats statistics; List versions; List virtualMedia; @@ -65,6 +68,7 @@ namespace DiscImageChef.Server try { + /* if(!File.Exists(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml"))) { @@ -84,17 +88,17 @@ namespace DiscImageChef.Server WaitForFile(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml"), FileMode.Open, FileAccess.Read, FileShare.Read); statistics = (Stats)xs.Deserialize(fs); - fs.Close(); + fs.Close();*/ - if(statistics.OperatingSystems != null) + if(ctx.OperatingSystems.Any()) { operatingSystems = new List(); - foreach(OsStats nvs in statistics.OperatingSystems) + foreach(OperatingSystem nvs in ctx.OperatingSystems) operatingSystems.Add(new NameValueStats { name = - $"{DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), nvs.name), nvs.version)}{(string.IsNullOrEmpty(nvs.version) ? "" : " ")}{nvs.version}", - Value = nvs.Value + $"{DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), nvs.Name), nvs.Version)}{(string.IsNullOrEmpty(nvs.Version) ? "" : " ")}{nvs.Version}", + Value = nvs.Count }); repOperatingSystems.DataSource = operatingSystems.OrderBy(os => os.name).ToList(); @@ -102,86 +106,108 @@ namespace DiscImageChef.Server } else divOperatingSystems.Visible = false; - if(statistics.Versions != null) + if(ctx.Versions.Any()) { versions = new List(); - foreach(NameValueStats nvs in statistics.Versions) - versions.Add(nvs.name == "previous" - ? new NameValueStats {name = "Previous than 3.4.99.0", Value = nvs.Value} - : nvs); + foreach(Version nvs in ctx.Versions) + versions.Add(new NameValueStats + { + name = nvs.Value == "previous" ? "Previous than 3.4.99.0" : nvs.Value, + Value = nvs.Count + }); repVersions.DataSource = versions.OrderBy(ver => ver.name).ToList(); repVersions.DataBind(); } else divVersions.Visible = false; - if(statistics.Commands != null) + if(ctx.Commands.Any()) { - lblAnalyze.Text = statistics.Commands.Analyze.ToString(); - lblCompare.Text = statistics.Commands.Compare.ToString(); - lblChecksum.Text = statistics.Commands.Checksum.ToString(); - lblEntropy.Text = statistics.Commands.Entropy.ToString(); - lblVerify.Text = statistics.Commands.Verify.ToString(); - lblPrintHex.Text = statistics.Commands.PrintHex.ToString(); - lblDecode.Text = statistics.Commands.Decode.ToString(); - lblDeviceInfo.Text = statistics.Commands.DeviceInfo.ToString(); - lblMediaInfo.Text = statistics.Commands.MediaInfo.ToString(); - lblMediaScan.Text = statistics.Commands.MediaScan.ToString(); - lblFormats.Text = statistics.Commands.Formats.ToString(); - lblBenchmark.Text = statistics.Commands.Benchmark.ToString(); - lblCreateSidecar.Text = statistics.Commands.CreateSidecar.ToString(); - lblDumpMedia.Text = statistics.Commands.DumpMedia.ToString(); - lblDeviceReport.Text = statistics.Commands.DeviceReport.ToString(); - lblLs.Text = statistics.Commands.Ls.ToString(); - lblExtractFiles.Text = statistics.Commands.ExtractFiles.ToString(); - lblListDevices.Text = statistics.Commands.ListDevices.ToString(); - lblListEncodings.Text = statistics.Commands.ListEncodings.ToString(); - lblConvertImage.Text = statistics.Commands.ConvertImage.ToString(); - lblImageInfo.Text = statistics.Commands.ImageInfo.ToString(); + lblAnalyze.Text = ctx.Commands.FirstOrDefault(c => c.Name == "analyze")?.Count.ToString() ?? "0"; + lblCompare.Text = ctx.Commands.FirstOrDefault(c => c.Name == "compare")?.Count.ToString() ?? "0"; + lblChecksum.Text = ctx.Commands.FirstOrDefault(c => c.Name == "checksum")?.Count.ToString() ?? "0"; + lblEntropy.Text = ctx.Commands.FirstOrDefault(c => c.Name == "entropy")?.Count.ToString() ?? "0"; + lblVerify.Text = ctx.Commands.FirstOrDefault(c => c.Name == "verify")?.Count.ToString() ?? "0"; + lblPrintHex.Text = ctx.Commands.FirstOrDefault(c => c.Name == "printhex")?.Count.ToString() ?? "0"; + lblDecode.Text = ctx.Commands.FirstOrDefault(c => c.Name == "decode")?.Count.ToString() ?? "0"; + lblDeviceInfo.Text = ctx.Commands.FirstOrDefault(c => c.Name == "device-info")?.Count.ToString() ?? + "0"; + lblMediaInfo.Text = ctx.Commands.FirstOrDefault(c => c.Name == "media-info")?.Count.ToString() ?? + "0"; + lblMediaScan.Text = ctx.Commands.FirstOrDefault(c => c.Name == "media-scan")?.Count.ToString() ?? + "0"; + lblFormats.Text = ctx.Commands.FirstOrDefault(c => c.Name == "formats")?.Count.ToString() ?? "0"; + lblBenchmark.Text = + ctx.Commands.FirstOrDefault(c => c.Name == "benchmark")?.Count.ToString() ?? "0"; + lblCreateSidecar.Text = + ctx.Commands.FirstOrDefault(c => c.Name == "create-sidecar")?.Count.ToString() ?? "0"; + lblDumpMedia.Text = ctx.Commands.FirstOrDefault(c => c.Name == "dump-media")?.Count.ToString() ?? + "0"; + lblDeviceReport.Text = + ctx.Commands.FirstOrDefault(c => c.Name == "device-report")?.Count.ToString() ?? "0"; + lblLs.Text = ctx.Commands.FirstOrDefault(c => c.Name == "ls")?.Count.ToString() ?? "0"; + lblExtractFiles.Text = + ctx.Commands.FirstOrDefault(c => c.Name == "extract-files")?.Count.ToString() ?? "0"; + lblListDevices.Text = + ctx.Commands.FirstOrDefault(c => c.Name == "list-devices")?.Count.ToString() ?? "0"; + lblListEncodings.Text = + ctx.Commands.FirstOrDefault(c => c.Name == "list-encodings")?.Count.ToString() ?? "0"; + lblConvertImage.Text = + ctx.Commands.FirstOrDefault(c => c.Name == "convert-image")?.Count.ToString() ?? "0"; + lblImageInfo.Text = ctx.Commands.FirstOrDefault(c => c.Name == "image-info")?.Count.ToString() ?? + "0"; } else divCommands.Visible = false; - if(statistics.Filters != null) + if(ctx.Filters.Any()) { - repFilters.DataSource = statistics.Filters.OrderBy(filter => filter.name).ToList(); + repFilters.DataSource = ctx.Filters.OrderBy(filter => filter.Name).ToList(); repFilters.DataBind(); } else divFilters.Visible = false; - if(statistics.MediaImages != null) + if(ctx.MediaFormats.Any()) { - repMediaImages.DataSource = statistics.MediaImages.OrderBy(filter => filter.name).ToList(); + repMediaImages.DataSource = ctx.MediaFormats.OrderBy(filter => filter.Name).ToList(); repMediaImages.DataBind(); } else divMediaImages.Visible = false; - if(statistics.Partitions != null) + if(ctx.Partitions.Any()) { - repPartitions.DataSource = statistics.Partitions.OrderBy(filter => filter.name).ToList(); + repPartitions.DataSource = ctx.Partitions.OrderBy(filter => filter.Name).ToList(); repPartitions.DataBind(); } else divPartitions.Visible = false; - if(statistics.Filesystems != null) + if(ctx.Filesystems.Any()) { - repFilesystems.DataSource = statistics.Filesystems.OrderBy(filter => filter.name).ToList(); + repFilesystems.DataSource = ctx.Filesystems.OrderBy(filter => filter.Name).ToList(); repFilesystems.DataBind(); } else divFilesystems.Visible = false; - if(statistics.Medias != null) + if(ctx.Medias.Any()) { realMedia = new List(); virtualMedia = new List(); - foreach(MediaStats nvs in statistics.Medias) - { - MediaType - .MediaTypeToString((CommonTypes.MediaType)Enum.Parse(typeof(CommonTypes.MediaType), nvs.type), - out string type, out string subtype); + foreach(Media nvs in ctx.Medias) + try + { + MediaType + .MediaTypeToString((CommonTypes.MediaType)Enum.Parse(typeof(CommonTypes.MediaType), nvs.Type), + out string type, out string subtype); - if(nvs.real) realMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Value}); - else virtualMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Value}); - } + if(nvs.Real) + realMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Count}); + else virtualMedia.Add(new MediaItem {Type = type, SubType = subtype, Count = nvs.Count}); + } + catch + { + if(nvs.Real) + realMedia.Add(new MediaItem {Type = nvs.Type, SubType = null, Count = nvs.Count}); + else virtualMedia.Add(new MediaItem {Type = nvs.Type, SubType = null, Count = nvs.Count}); + } if(realMedia.Count > 0) { @@ -205,10 +231,10 @@ namespace DiscImageChef.Server divVirtualMedia.Visible = false; } - if(statistics.Devices != null) + if(ctx.DeviceStats != null) { devices = new List(); - foreach(DeviceStats device in statistics.Devices) + foreach(DeviceStat device in ctx.DeviceStats) { string url; string xmlFile; @@ -249,7 +275,8 @@ namespace DiscImageChef.Server Model = device.Model, Revision = device.Revision, Bus = device.Bus, - ReportLink = url == null ? "No" : $"Yes" + ReportLink = + url == null ? "No" : $"Yes" }); }