add server scoreboard functionality
This commit is contained in:
30
WebfrontCore/Views/Server/Scoreboard.cshtml
Normal file
30
WebfrontCore/Views/Server/Scoreboard.cshtml
Normal file
@ -0,0 +1,30 @@
|
||||
@model IEnumerable<WebfrontCore.ViewModels.ScoreboardInfo>
|
||||
|
||||
<ul class="nav nav-tabs border-top border-bottom nav-fill row" role="tablist" id="scoreboard_servers">
|
||||
@{ var i = 0; }
|
||||
@foreach (var server in Model)
|
||||
{
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#server_@server.ServerId" role="tab" data-toggle="tab" id="server_@(server.ServerId)_nav" data-serverid="@server.ServerId">
|
||||
<color-code value="@server.ServerName"></color-code>
|
||||
</a>
|
||||
</li>
|
||||
i++;
|
||||
}
|
||||
</ul>
|
||||
<div class="tab-content border-bottom row">
|
||||
@{ i = 0; }
|
||||
@foreach (var server in Model)
|
||||
{
|
||||
<div role="tabpanel" class="scoreboard-container tab-pane striped flex-fill" id="server_@server.ServerId" data-server-id="@server.ServerId">
|
||||
@await Html.PartialAsync("_Scoreboard", server)
|
||||
</div>
|
||||
i++;
|
||||
}
|
||||
</div>
|
||||
|
||||
@section scripts {
|
||||
<environment include="Development">
|
||||
<script type="text/javascript" src="~/js/scoreboard.js" defer="defer"></script>
|
||||
</environment>
|
||||
}
|
@ -21,24 +21,24 @@
|
||||
{
|
||||
<span class="text-light">
|
||||
<span class="oi oi-account-login mr-2 text-success"> </span>
|
||||
<color-code value="@Model.ChatHistory[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.ChatHistory[i].Name"></color-code>
|
||||
</span><br />
|
||||
}
|
||||
if (Model.ChatHistory[i].Message == "DISCONNECTED")
|
||||
{
|
||||
<span class="text-light">
|
||||
<span class="oi oi-account-logout mr-2 text-danger"> </span>
|
||||
<color-code value="@Model.ChatHistory[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.ChatHistory[i].Name"></color-code>
|
||||
</span><br />
|
||||
}
|
||||
if (Model.ChatHistory[i].Message != "CONNECTED" && Model.ChatHistory[i].Message != "DISCONNECTED")
|
||||
{
|
||||
<span class="text-light">
|
||||
<color-code value="@Model.ChatHistory[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.ChatHistory[i].Name"></color-code>
|
||||
</span>
|
||||
<span>
|
||||
—
|
||||
<color-code value="@message.CapClientName(48)" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@message.CapClientName(48)"></color-code>
|
||||
</span><br />
|
||||
}
|
||||
}
|
||||
@ -63,7 +63,7 @@
|
||||
}
|
||||
|
||||
<a asp-controller="Client" asp-action="ProfileAsync" asp-route-id="@Model.Players[i].ClientId" class="@levelColorClass">
|
||||
<color-code value="@Model.Players[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.Players[i].Name"></color-code>
|
||||
</a>
|
||||
|
||||
@if (ViewBag.Authorized)
|
||||
@ -88,7 +88,7 @@
|
||||
|
||||
<div>
|
||||
<a asp-controller="Client" asp-action="ProfileAsync" asp-route-id="@Model.Players[i].ClientId" class="@levelColorClass">
|
||||
<color-code value="@Model.Players[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.Players[i].Name"></color-code>
|
||||
</a>
|
||||
@if (ViewBag.Authorized)
|
||||
{
|
||||
@ -122,26 +122,26 @@
|
||||
{
|
||||
<span class="text-light">
|
||||
<span class="oi oi-account-login mr-2 text-success"> </span>
|
||||
<color-code value="@Model.ChatHistory[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.ChatHistory[i].Name"></color-code>
|
||||
</span><br />
|
||||
}
|
||||
if (Model.ChatHistory[i].Message == "DISCONNECTED")
|
||||
{
|
||||
<span class="text-light">
|
||||
<span class="oi oi-account-logout mr-2 text-danger"> </span>
|
||||
<color-code value="@Model.ChatHistory[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.ChatHistory[i].Name"></color-code>
|
||||
</span><br />
|
||||
}
|
||||
if (Model.ChatHistory[i].Message != "CONNECTED" && Model.ChatHistory[i].Message != "DISCONNECTED")
|
||||
{
|
||||
<span class="text-light">
|
||||
<color-code value="@Model.ChatHistory[i].Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@Model.ChatHistory[i].Name"></color-code>
|
||||
</span>
|
||||
<span>
|
||||
—
|
||||
<color-code value="@message.CapClientName(48)" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<color-code value="@message.CapClientName(48)"></color-code>
|
||||
</span><br />
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
32
WebfrontCore/Views/Server/_Scoreboard.cshtml
Normal file
32
WebfrontCore/Views/Server/_Scoreboard.cshtml
Normal file
@ -0,0 +1,32 @@
|
||||
@model WebfrontCore.ViewModels.ScoreboardInfo
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<table class="table table-striped thead-light bg-dark mb-0 table-responsive-md">
|
||||
<tr class="bg-dark border-bottom">
|
||||
<th>@ViewBag.Localization["WEBFRONT_SCOREBOARD_TABLE_PLAYER"]</th>
|
||||
<th>@ViewBag.Localization["WEBFRONT_ADV_STATS_SCORE"]</th>
|
||||
<th>@ViewBag.Localization["WEBFRONT_ADV_STATS_KILLS"]</th>
|
||||
<th>@ViewBag.Localization["WEBFRONT_SCOREBOARD_TABLE_DEATHS"]</th>
|
||||
<th>@ViewBag.Localization["WEBFRONT_SCOREBOARD_TABLE_RATIO"]</th>
|
||||
<th>@ViewBag.Localization["WEBFRONT_SCOREBOARD_TABLE_SPM"]</th>
|
||||
<th class="text-right">@ViewBag.Localization["WEBFRONT_SCOREBOARD_TABLE_PING"]</th>
|
||||
</tr>
|
||||
@foreach (var client in Model.ClientInfo.OrderByDescending(c => c.Score))
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<a asp-controller="Client" asp-action="ProfileAsync" asp-route-id="@client.ClientId">
|
||||
<color-code value="@client.ClientName"></color-code>
|
||||
</a>
|
||||
</td>
|
||||
<td>@client.Score</td>
|
||||
<td>@(client.Kills ?? 0)</td>
|
||||
<td>@(client.Deaths ?? 0)</td>
|
||||
<td>@Math.Round(client.Kdr ?? 0, 2)</td>
|
||||
<td>@Math.Round(client.ScorePerMinute ?? 0)</td>
|
||||
<td class="text-right">@client.Ping</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
@ -5,15 +5,19 @@
|
||||
|
||||
<div class="row server-header pt-1 pb-1 bg-primary " id="server_header_@Model.ID">
|
||||
<div class="col-md-4 text-center text-md-left d-inline-flex justify-content-center justify-content-md-start">
|
||||
<color-code value="@Model.Name" allow="@ViewBag.EnableColorCodes"></color-code>
|
||||
<a href="@Model.ConnectProtocolUrl" class="ml-2 mr-2 align-self-center d-none d-md-flex server-join-button" title="@SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_HOME_JOIN_DESC"]">
|
||||
<color-code value="@Model.Name"></color-code>
|
||||
<a href="@Model.ConnectProtocolUrl" class="ml-2 mr-2 align-self-center d-none d-md-flex server-join-button" title="@Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_HOME_JOIN_DESC"]">
|
||||
<span class="oi oi-play-circle mr-1 align-self-center"></span>
|
||||
<span class="server-header-ip-address" style="display:none;">@Model.IPAddress</span>
|
||||
</a>
|
||||
@if (ViewBag.Authorized)
|
||||
{
|
||||
<span class="oi oi-chat align-self-center profile-action d-none d-md-flex" data-action="chat" data-action-id="@Model.ID"></span>
|
||||
<span class="oi oi-chat align-self-center profile-action d-none d-md-flex mr-2" data-action="chat" data-action-id="@Model.ID"></span>
|
||||
}
|
||||
<a asp-controller="Server" asp-action="Scoreboard" asp-fragment="server_@Model.ID" title="@ViewBag.Localization["WEBFRONT_TITLE_SCOREBOARD"]"
|
||||
class="align-self-center d-none d-md-flex">
|
||||
<span class="oi oi-spreadsheet ml-1"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="text-center col-md-4 align-self-center">
|
||||
@ -39,10 +43,14 @@
|
||||
|
||||
@if (ViewBag.Authorized)
|
||||
{
|
||||
<div class=" p-1 d-flex d-md-none justify-content-center col-12">
|
||||
<div class="p-1 d-flex d-md-none justify-content-center col-12">
|
||||
<span class="oi oi-chat align-self-center profile-action d-flex d-md-none" data-action="chat" data-action-id="@Model.ID"></span>
|
||||
</div>
|
||||
}
|
||||
<a asp-controller="Server" asp-action="Scoreboard" title="@ViewBag.Localization["WEBFRONT_TITLE_SCOREBOARD"]"
|
||||
class="p-1 d-flex d-md-none justify-content-center col-12">
|
||||
<span class="oi oi-spreadsheet ml-1"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="server_clientactivity_@Model.ID" class="bg-dark row server-activity @(Model.ClientCount > 0 ? "pt-2 pb-2" : "")">
|
||||
|
Reference in New Issue
Block a user