2019-11-02 01:40:41 +00:00
|
|
|
@using DiscImageChef.CommonTypes.Metadata
|
|
|
|
|
@{
|
|
|
|
|
// /***************************************************************************
|
|
|
|
|
// The Disc Image Chef
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Filename : Index.cshtml
|
|
|
|
|
// Author(s) : Natalia Portillo <claunia@claunia.com>
|
|
|
|
|
//
|
|
|
|
|
// Component : DiscImageChef Server.
|
|
|
|
|
//
|
|
|
|
|
// --[ Description ] ----------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Renders statistics.
|
|
|
|
|
//
|
|
|
|
|
// --[ License ] --------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// This library is free software; you can redistribute it and/or modify
|
|
|
|
|
// it under the terms of the GNU Lesser General Public License as
|
|
|
|
|
// published by the Free Software Foundation; either version 2.1 of the
|
|
|
|
|
// License, or (at your option) any later version.
|
|
|
|
|
//
|
|
|
|
|
// This library is distributed in the hope that it will be useful, but
|
|
|
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
|
//
|
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
|
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
//
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
// Copyright © 2011-2019 Natalia Portillo
|
|
|
|
|
// ****************************************************************************/
|
|
|
|
|
}
|
|
|
|
|
@{
|
|
|
|
|
ViewBag.Title = "DiscImageChef Statistics";
|
|
|
|
|
Layout = "~/Views/Shared/_Layout.cshtml";
|
|
|
|
|
}
|
|
|
|
|
<header>
|
|
|
|
|
Welcome to
|
|
|
|
|
<i>
|
2019-11-02 23:52:33 +00:00
|
|
|
<a href="http://github.com/claunia/discimagechef" target="_blank">
|
2019-11-02 01:40:41 +00:00
|
|
|
DiscImageChef
|
|
|
|
|
</a>
|
|
|
|
|
</i> Server version @ViewBag.Version
|
|
|
|
|
</header>
|
|
|
|
|
<div class="container-fluid mt-3">
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repOperatingSystems != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container" id="divOperatingSystems">
|
|
|
|
|
<div class="carousel slide" data-ride="carousel" id="carouselOses">
|
2019-11-02 01:40:41 +00:00
|
|
|
<ol class="carousel-indicators">
|
2019-11-02 23:52:33 +00:00
|
|
|
<li class="active" data-slide-to="0" data-target="#carouselOses">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
2019-11-02 23:52:33 +00:00
|
|
|
<li data-slide-to="1" data-target="#carouselOses">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
2019-11-02 23:52:33 +00:00
|
|
|
<li data-slide-to="2" data-target="#carouselOses">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
2019-11-02 23:52:33 +00:00
|
|
|
<li data-slide-to="3" data-target="#carouselOses">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
|
|
|
|
</ol>
|
|
|
|
|
<div class="carousel-inner">
|
2019-11-03 03:20:04 +00:00
|
|
|
<div class="active carousel-item">
|
|
|
|
|
<canvas id="osChart"></canvas>
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-03 03:36:49 +00:00
|
|
|
<div class="carousel-item">
|
|
|
|
|
<canvas id="linuxChart"></canvas>
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="carousel-item" id="macosChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="carousel-item" id="windowsChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<a class="carousel-control-prev" data-slide="prev" href="#carouselOses" role="button">
|
|
|
|
|
<span aria-hidden="true" class="carousel-control-prev-icon">
|
2019-11-02 01:40:41 +00:00
|
|
|
</span>
|
|
|
|
|
<span class="sr-only">Previous</span>
|
|
|
|
|
</a>
|
2019-11-02 23:52:33 +00:00
|
|
|
<a class="carousel-control-next" data-slide="next" href="#carouselOses" role="button">
|
|
|
|
|
<span aria-hidden="true" class="carousel-control-next-icon">
|
2019-11-02 01:40:41 +00:00
|
|
|
</span>
|
|
|
|
|
<span class="sr-only">Next</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="osAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="osHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="osCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#osCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All operating systems DiscImageChef has run on...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="osHeading" class="collapse" data-parent="#osAccordion" id="osCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-dark">
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (NameValueStats os in ViewBag.repOperatingSystems)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
2019-11-02 23:52:33 +00:00
|
|
|
DiscImageChef has run on
|
|
|
|
|
<i class="table-dark-em">@os.name</i> @os.Value times.
|
2019-11-02 01:40:41 +00:00
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<br />
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repVersions != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divVersions">
|
|
|
|
|
<div class="container" id="versionsChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="versionsAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="versionsHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="versionsCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#versionsCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All DiscImageChef versions...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="versionsHeading" class="collapse" data-parent="#versionsAccordion" id="versionsCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-dark">
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (NameValueStats version in ViewBag.repVersions)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
2019-11-02 23:52:33 +00:00
|
|
|
DiscImageChef version
|
|
|
|
|
<i class="table-dark-em">@version.name</i> has been used @version.Value times.
|
2019-11-02 01:40:41 +00:00
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<br />
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repCommands != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divCommands">
|
|
|
|
|
<div class="container" id="commandsChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="commandsAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="commandsHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="commandsCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#commandsCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All DiscImageChef commands...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="commandsHeading" class="collapse" data-parent="#commandsAccordion" id="commandsCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-dark">
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (Command command in ViewBag.repCommands)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
<i class="table-dark-em">@command.Name</i> has been run @command.Count times.
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<br />
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repFilters != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divFilters">
|
|
|
|
|
<div class="container" id="filtersChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="filtersAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="filtersHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="filtersCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#filtersCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All filters found...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="filtersHeading" class="collapse" data-parent="#filtersAccordion" id="filtersCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-bordered table-centered table-dark table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="table-dark-header">Filter</th>
|
|
|
|
|
<th class="table-dark-header">Times</th>
|
|
|
|
|
</tr>
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (Filter filter in ViewBag.repFilters)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-right">
|
|
|
|
|
@filter.Name
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@($"{filter.Count}")
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repMediaImages != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divMediaImages">
|
|
|
|
|
<div class="container" id="formatsChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="formatsAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="formatsHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="formatsCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#formatsCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All media image formats found...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="formatsHeading" class="collapse" data-parent="#formatsAccordion" id="formatsCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-bordered table-centered table-dark table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="table-dark-header">Media image format</th>
|
|
|
|
|
<th class="table-dark-header">Times</th>
|
|
|
|
|
</tr>
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (MediaFormat format in ViewBag.repMediaImages)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@format.Name
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@($"{format.Count}")
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repPartitions != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divPartitions">
|
|
|
|
|
<div class="container" id="partitionsChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="partitionsAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="partitionsHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="partitionsCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#partitionsCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All partitioning schemes found...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="partitionsHeading" class="collapse" data-parent="#partitionsAccordion" id="partitionsCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-bordered table-centered table-dark table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="table-dark-header">Partitioning scheme</th>
|
|
|
|
|
<th class="table-dark-header">Times</th>
|
|
|
|
|
</tr>
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (Partition partition in ViewBag.repPartitions)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@partition.Name
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@($"{partition.Count}")
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repFilesystems != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divFilesystems">
|
|
|
|
|
<div class="container" id="filesystemsChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="filesystemsAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="filesystemsHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="filesystemsCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#filesystemsCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All filesystems found...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="filesystemsHeading" class="collapse" data-parent="#filesystemsAccordion" id="filesystemsCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-bordered table-centered table-dark table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="table-dark-header">Filesystem name</th>
|
|
|
|
|
<th class="table-dark-header">Times</th>
|
|
|
|
|
</tr>
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (Filesystem filesystem in ViewBag.repFilesystems)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@filesystem.Name
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@($"{filesystem.Count}")
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repVirtualMedia != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divVirtualMedia">
|
|
|
|
|
<div class="container" id="virtualMediaChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="virtualMediaAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="virtualMediaHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="virtualMediaCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#virtualMediaCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All media types found in images...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="virtualMediaHeading" class="collapse" data-parent="#virtualMediaAccordion" id="virtualMediaCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-bordered table-centered table-dark table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="table-dark-header">Physical type</th>
|
|
|
|
|
<th class="table-dark-header">Logical type</th>
|
|
|
|
|
<th class="table-dark-header">Times</th>
|
|
|
|
|
</tr>
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (MediaItem media in ViewBag.repVirtualMedia)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@media.Type
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@media.SubType
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@($"{media.Count}")
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repRealMedia != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divRealMedia">
|
|
|
|
|
<div class="container" id="realMediaChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="accordion mt-3" id="realMediaAccordion">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="card-header" id="realMediaHeading">
|
2019-11-02 01:40:41 +00:00
|
|
|
<h2 class="mb-0">
|
2019-11-02 23:52:33 +00:00
|
|
|
<button aria-controls="realMediaCollapse" aria-expanded="true" class="btn btn-link card-button collapsed" data-target="#realMediaCollapse" data-toggle="collapse" type="button">
|
2019-11-02 01:40:41 +00:00
|
|
|
All media types found in devices...
|
|
|
|
|
</button>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div aria-labelledby="realMediaHeading" class="collapse" data-parent="#realMediaAccordion" id="realMediaCollapse">
|
2019-11-02 01:40:41 +00:00
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-bordered table-centered table-dark table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="table-dark-header">Physical type</th>
|
|
|
|
|
<th class="table-dark-header">Logical type</th>
|
|
|
|
|
<th class="table-dark-header">Times</th>
|
|
|
|
|
</tr>
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (MediaItem media in ViewBag.repRealMedia)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@media.Type
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@media.SubType
|
|
|
|
|
</td>
|
|
|
|
|
<td class="text-left">
|
|
|
|
|
@($"{media.Count}")
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (ViewBag.repDevices != null)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="container mt-3" id="divDevices">
|
|
|
|
|
<div class="carousel slide" data-ride="carousel" id="carouselDevices">
|
2019-11-02 01:40:41 +00:00
|
|
|
<ol class="carousel-indicators">
|
2019-11-02 23:52:33 +00:00
|
|
|
<li class="active" data-slide-to="0" data-target="#carouselDevices">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
2019-11-02 23:52:33 +00:00
|
|
|
<li data-slide-to="1" data-target="#carouselDevices">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
2019-11-02 23:52:33 +00:00
|
|
|
<li data-slide-to="2" data-target="#carouselDevices">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
2019-11-02 23:52:33 +00:00
|
|
|
<li data-slide-to="3" data-target="#carouselDevices">
|
2019-11-02 01:40:41 +00:00
|
|
|
</li>
|
|
|
|
|
</ol>
|
|
|
|
|
<div class="carousel-inner">
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="active carousel-item" id="devicesBusChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<div class="carousel-item" id="devicesManufacturerChart">
|
2019-11-02 01:40:41 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2019-11-02 23:52:33 +00:00
|
|
|
<a class="carousel-control-prev" data-slide="prev" href="#carouselDevices" role="button">
|
|
|
|
|
<span aria-hidden="true" class="carousel-control-prev-icon">
|
2019-11-02 01:40:41 +00:00
|
|
|
</span>
|
|
|
|
|
<span class="sr-only">Previous</span>
|
|
|
|
|
</a>
|
2019-11-02 23:52:33 +00:00
|
|
|
<a class="carousel-control-next" data-slide="next" href="#carouselDevices" role="button">
|
|
|
|
|
<span aria-hidden="true" class="carousel-control-next-icon">
|
2019-11-02 01:40:41 +00:00
|
|
|
</span>
|
|
|
|
|
<span class="sr-only">Next</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card mt-3">
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<h2 class="mb-0">
|
|
|
|
|
<h2 class="card-button mb-0">
|
|
|
|
|
All devices found...
|
|
|
|
|
</h2>
|
|
|
|
|
</h2>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-body">
|
|
|
|
|
<table class="table-bordered table-centered table-dark table-striped">
|
|
|
|
|
<tr>
|
|
|
|
|
<th class="table-dark-header">Manufacturer</th>
|
|
|
|
|
<th class="table-dark-header">Model</th>
|
|
|
|
|
<th class="table-dark-header">Revision</th>
|
|
|
|
|
<th class="table-dark-header">Bus</th>
|
|
|
|
|
<th class="table-dark-header">Report</th>
|
|
|
|
|
</tr>
|
2019-11-02 21:37:09 +00:00
|
|
|
@foreach (DeviceItem device in ViewBag.repDevices)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
|
|
|
|
<tr>
|
|
|
|
|
<td>
|
|
|
|
|
@device.Manufacturer
|
|
|
|
|
</td>
|
|
|
|
|
<td>
|
|
|
|
|
@device.Model
|
|
|
|
|
</td>
|
|
|
|
|
<td>
|
|
|
|
|
@device.Revision
|
|
|
|
|
</td>
|
|
|
|
|
<td>
|
|
|
|
|
@device.Bus
|
|
|
|
|
</td>
|
|
|
|
|
<td>
|
2019-11-02 21:37:09 +00:00
|
|
|
@if (device.ReportId != 0)
|
2019-11-02 01:40:41 +00:00
|
|
|
{
|
2019-11-02 23:52:33 +00:00
|
|
|
<text>@Html.ActionLink("Yes", "View", "Report", new
|
|
|
|
|
{
|
|
|
|
|
id = device.ReportId
|
|
|
|
|
}, new
|
|
|
|
|
{
|
|
|
|
|
target = "_blank"
|
|
|
|
|
})</text>
|
2019-11-02 01:40:41 +00:00
|
|
|
}
|
|
|
|
|
else
|
2019-11-02 21:37:09 +00:00
|
|
|
{
|
|
|
|
|
<text>No</text>
|
|
|
|
|
}
|
2019-11-02 01:40:41 +00:00
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
}
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
</div>
|
2019-11-03 03:20:04 +00:00
|
|
|
<script crossorigin="anonymous" integrity="sha256-Uv9BNBucvCPipKQ2NS9wYpJmi8DTOEfTA/nH2aoJALw=" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js"></script>
|
|
|
|
|
<script>
|
|
|
|
|
function DrawPie(elementName, label, dataLabels, data)
|
|
|
|
|
{
|
|
|
|
|
var ctx = document.getElementById(elementName);
|
|
|
|
|
var myChart = new Chart(ctx, {
|
|
|
|
|
type: 'pie',
|
|
|
|
|
data: {
|
|
|
|
|
labels: dataLabels,
|
|
|
|
|
datasets: [{
|
|
|
|
|
label: label,
|
|
|
|
|
data: data,
|
|
|
|
|
backgroundColor: themeColors
|
|
|
|
|
}]
|
|
|
|
|
},
|
|
|
|
|
options: {
|
|
|
|
|
responsive: true,
|
|
|
|
|
title: {
|
|
|
|
|
display: true,
|
|
|
|
|
text: label,
|
|
|
|
|
fontColor: chartTitleColor
|
|
|
|
|
},
|
|
|
|
|
legend: {
|
|
|
|
|
labels: {
|
|
|
|
|
fontColor: chartDataLabelColor
|
|
|
|
|
}
|
|
|
|
|
}}}
|
|
|
|
|
);
|
|
|
|
|
}
|
2019-11-02 01:40:41 +00:00
|
|
|
|
2019-11-03 03:20:04 +00:00
|
|
|
function DrawOsPie(osData)
|
|
|
|
|
{
|
|
|
|
|
DrawPie("osChart", "Operating systems", osData[0], osData[1])
|
|
|
|
|
}
|
2019-11-02 01:40:41 +00:00
|
|
|
|
2019-11-03 03:36:49 +00:00
|
|
|
function DrawLinuxPie(linuxData)
|
|
|
|
|
{
|
|
|
|
|
DrawPie("linuxChart", "Top 10 Linux versions", linuxData[0], linuxData[1])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
window.onload = () =;> {
|
2019-11-03 03:20:04 +00:00
|
|
|
$.ajax({dataType: "json", url: "/Stats/GetOsData", success: DrawOsPie, cache:false});
|
2019-11-03 03:36:49 +00:00
|
|
|
$.ajax({dataType: "json", url: "/Stats/GetLinuxData", success: DrawLinuxPie, cache:false});
|
2019-11-03 03:20:04 +00:00
|
|
|
}
|
2019-11-02 01:40:41 +00:00
|
|
|
|
2019-11-03 03:20:04 +00:00
|
|
|
</script>
|