Files
Disco/Disco.Web/Views/Shared/_JobTableRender.cshtml
T
Gary Sharp 9ea0273936 Update: Minor styling for Job Lists
Especially for 'No Jobs' or 'All Jobs Closed' situations.
2014-02-06 12:22:15 +11:00

126 lines
6.6 KiB
Plaintext

@model Disco.Models.Services.Jobs.JobLists.JobTableModel
@using Disco.Models.Services.Jobs.JobLists;
@{
Html.BundleDeferred("~/ClientScripts/Modules/Disco-DataTableHelpers");
}
<div class="jobTable">
@if (Model != null && Model.Items.Count() > 0)
{
<table class="jobTable@(Model.IsSmallTable ? " smallTable" : string.Empty)@(Model.HideClosedJobs ? " hideStatusClosed" : string.Empty)@(Model.EnablePaging ? " enablePaging" : string.Empty)@(Model.EnableFilter ? " enableFilter" : string.Empty)">
<thead>
<tr>
@if (Model.ShowId)
{ <th class="id">Ref
</th> }
@if (Model.ShowStatus)
{ <th class="status">Status
</th> }
@if (Model.ShowDates)
{ <th class="dates">When
</th> }
@if (Model.ShowType)
{ <th class="type">Type
</th> }
@if (Model.ShowDevice)
{<th class="device">Device
</th> }
@if (Model.ShowUser)
{ <th class="user">User
</th> }
@if (Model.ShowTechnician)
{ <th class="technician">Technician
</th> }
@if (Model.ShowLocation)
{ <th class="location">Location
</th> }
</tr>
</thead>
<tbody>
@foreach (var item in Model.Items)
{
string statusSlaClass = null;
if (Model.ShowStatus)
{
var statusItem = (JobTableStatusItemModel)item;
if (statusItem.ActiveJobQueues != null)
{
var slaRemaining = statusItem.ActiveJobQueues.UsersQueueItems(Authorization).SlaPrecentageRemaining();
if (slaRemaining.HasValue && (slaRemaining <= 0))
{
statusSlaClass = "statusSlaExpired";
}
else if (slaRemaining.HasValue && (slaRemaining < .3))
{
statusSlaClass = "statusSlaWarning";
}
}
}
<tr data-id="@(item.Id)" data-status="@(Model.ShowStatus ? item.StatusId : null)" class="@(statusSlaClass)">
@if (Model.ShowId)
{<td class="id">
@if (Authorization.Has(Claims.Job.Show))
{@Html.ActionLink(item.Id.ToString(), MVC.Job.Show(item.Id))}
else
{@item.Id.ToString()}</td>}
@if (Model.ShowStatus)
{
var statusItem = (JobTableStatusItemModel)item;
<td class="status"><i class="fa fa-square jobStatus @(item.StatusId)"></i>&nbsp;@item.StatusDescription
@if (statusItem.ActiveJobQueues != null)
{<div class="queues">
@foreach (var jqToken in ((JobTableStatusItemModel)item).ActiveJobQueues.Select(jqj => new Tuple<JobTableStatusQueueItemModel, Disco.Services.Jobs.JobQueues.JobQueueToken>(jqj, Disco.Services.Jobs.JobQueues.JobQueueService.GetQueue(jqj.QueueId))))
{
<i class="fa fa-@(jqToken.Item2.JobQueue.Icon) fa-fw d-@(jqToken.Item2.JobQueue.IconColour)" title="@(jqToken.Item2.JobQueue.Name) [@(jqToken.Item1.Priority)]"></i>
}
</div>}
</td>}
@if (Model.ShowDates)
{<td class="dates">@if (item.ClosedDate.HasValue)
{@CommonHelpers.FriendlyDate(item.ClosedDate.Value)}
else
{@CommonHelpers.FriendlyDate(item.OpenedDate)}</td>}
@if (Model.ShowType)
{<td class="type"><span title="@item.JobTypeDescription">@item.JobTypeId</span></td>}
@if (Model.ShowDevice)
{<td class="device">
@if (item.DeviceSerialNumber != null)
{
if (Authorization.Has(Claims.Device.Show))
{@Html.ActionLink(item.DeviceSerialNumber, MVC.Device.Show(item.DeviceSerialNumber), new { Title = item.DeviceModelDescription })}
else
{<span title="@item.DeviceModelDescription">@item.DeviceSerialNumber</span>}
}
else
{<span class="smallMessage">N/A</span>}</td>}
@if (Model.ShowUser)
{<td class="user">
@if (item.UserId != null)
{
if (Authorization.Has(Claims.User.Show))
{@Html.ActionLink(string.Format("{0} ({1})", item.UserDisplayName, item.UserId), MVC.User.Show(item.UserId))}
else
{@(string.Format("{0} ({1})", item.UserDisplayName, item.UserId))}
}
else
{<span class="smallMessage">N/A</span>}</td>}
@if (Model.ShowTechnician)
{<td class="technician"><span title="@item.OpenedTechUserDisplayName">@item.OpenedTechUserId</span></td>}
@if (Model.ShowLocation)
{<td class="technician"><span>@(item.DeviceHeldLocation ?? "Unknown")</span></td>}
</tr>}
</tbody>
</table>
if (Model.HideClosedJobs && Model.Items.All(j => j.ClosedDate.HasValue))
{
<div class="allClosed_container">
<h3>No open jobs</h3>
<a href="#" class="dataTables_showStatusClosed button small">Show Closed Jobs (@(Model.Items.Count()))</a>
</div>
}
}
else
{
<h3>No jobs to display</h3>
}
</div>