4cd57f4a90
Migrate all SignalR 1.x Persistent Connections to SignalR 2.x Hubs. Abstracts ScheduledTaskStatus with core interface and adds a Mock for optional status reporting. Noticeboards rewritten (with new theme) to be more resilient and accurate.
72 lines
2.8 KiB
Plaintext
72 lines
2.8 KiB
Plaintext
@model IEnumerable<Disco.Models.Services.Jobs.Noticeboards.IHeldDeviceItem>
|
|
@{
|
|
ViewBag.Title = Html.ToBreadcrumb("Public Reports", MVC.Public.Public.Index(), "Held Devices for Users", null);
|
|
Html.BundleDeferred("~/Style/Public/HeldDevices");
|
|
}
|
|
<div class="clearfix page">
|
|
<div class="column1">
|
|
@{
|
|
var DevicesInProcess = Model.Where(i => !i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
|
}
|
|
<h2>In Process (@DevicesInProcess.Length)</h2>
|
|
<table class="dataTable">
|
|
@foreach (var item in DevicesInProcess.OrderBy(i => i.UserIdFriendly))
|
|
{
|
|
<tr>
|
|
<td class="id">
|
|
@item.UserIdFriendly
|
|
</td>
|
|
<td class="description">
|
|
@item.UserDisplayName
|
|
@if (item.EstimatedReturnTime.HasValue)
|
|
{
|
|
<span class="smallMessage">(Expected: @CommonHelpers.FriendlyDate(item.EstimatedReturnTime))</span>
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
</div>
|
|
<div class="column2">
|
|
@{
|
|
var WaitingForUserActionJobs = Model.Where(i => i.WaitingForUserAction).ToArray();
|
|
}
|
|
<h2>Waiting for User Action (@WaitingForUserActionJobs.Length)</h2>
|
|
<table class="dataTable">
|
|
@foreach (var item in WaitingForUserActionJobs.OrderBy(i => i.UserIdFriendly))
|
|
{
|
|
<tr>
|
|
<td class="id">
|
|
@item.UserIdFriendly
|
|
</td>
|
|
<td class="description">
|
|
@item.UserDisplayName
|
|
</td>
|
|
<td class="timestamp@(item.IsAlert ? " Alert" : string.Empty)">Since @CommonHelpers.FriendlyDate(item.WaitingForUserActionSince)
|
|
</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
<hr />
|
|
@{
|
|
var DevicesReadyForReturn = Model.Where(i => i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
|
}
|
|
<h2>Ready for Return (@DevicesReadyForReturn.Length)</h2>
|
|
<table class="dataTable">
|
|
@foreach (var item in DevicesReadyForReturn.OrderBy(i => i.UserIdFriendly))
|
|
{
|
|
<tr>
|
|
<td class="id">
|
|
@item.UserIdFriendly
|
|
</td>
|
|
<td class="description">
|
|
@item.UserDisplayName
|
|
</td>
|
|
<td class="timestamp@(item.IsAlert ? " Alert" : string.Empty)">Ready @CommonHelpers.FriendlyDate(item.ReadyForReturnSince)
|
|
</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
</div>
|
|
</div>
|