Update: New Device UI

This commit is contained in:
Gary Sharp
2013-06-18 17:18:19 +10:00
parent d6be58b5c7
commit b7dc05dd65
63 changed files with 5068 additions and 2626 deletions
@@ -10,10 +10,38 @@ namespace Disco.BI.Extensions
{
public static class DeviceActionExtensions
{
public static bool IsDecommissioned(this Device d)
{
return d.DecommissionedDate.HasValue;
}
public static bool CanCreateJob(this Device d)
{
return !d.DecommissionedDate.HasValue;
return !d.IsDecommissioned();
}
public static bool CanUpdateAssignment(this Device d)
{
return !d.IsDecommissioned();
}
public static bool CanUpdateDeviceProfile(this Device d)
{
return !d.IsDecommissioned();
}
public static bool CanUpdateDeviceBatch(this Device d)
{
return !d.IsDecommissioned();
}
public static bool CanUpdateTrustEnrol(this Device d)
{
return !d.IsDecommissioned() && !d.AllowUnauthenticatedEnrol;
}
public static bool CanUpdateUntrustEnrol(this Device d)
{
return !d.IsDecommissioned() && d.AllowUnauthenticatedEnrol;
}
#region Decommission
@@ -178,5 +178,15 @@ namespace Disco.BI.Extensions
return null;
}
public static string Status(this Device Device)
{
if (Device.DecommissionedDate.HasValue)
return "Decommissioned";
if (!Device.EnrolledDate.HasValue)
return "Not Enrolled";
return "Active";
}
}
}
@@ -5,6 +5,7 @@ using System.Text;
using Disco.Models.Repository;
using Disco.Data.Repository;
using Disco.Data.Configuration.Modules;
using Disco.Models.BI.Config;
namespace Disco.BI.Extensions
{
@@ -17,6 +18,18 @@ namespace Disco.BI.Extensions
Expressions.ExpressionCache.InvalidateKey(ComputerNameExpressionCacheModule, deviceProfile.Id.ToString());
}
public static OrganisationAddress DefaultOrganisationAddressDetails(this DeviceProfile deviceProfile, DiscoDataContext dbContext)
{
if (deviceProfile.DefaultOrganisationAddress.HasValue)
{
return dbContext.DiscoConfiguration.OrganisationAddresses.GetAddress(deviceProfile.DefaultOrganisationAddress.Value);
}
else
{
return null;
}
}
public static bool CanDelete(this DeviceProfile dp, DiscoDataContext dbContext)
{
// Can't Delete Default Profile (Id: 1)
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0606.1909")]
[assembly: AssemblyFileVersion("1.2.0606.1909")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0606.1909")]
[assembly: AssemblyFileVersion("1.2.0606.1909")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
+7 -1
View File
@@ -18,6 +18,8 @@ namespace Disco.Models.BI.Job
public bool ShowStatus { get; set; }
public bool IsSmallTable { get; set; }
public bool HideClosedJobs { get; set; }
public bool EnablePaging { get; set; }
public bool EnableFilter { get; set; }
public virtual List<JobTableItemModel> Items { get; set; }
public JobTableModel()
@@ -28,6 +30,8 @@ namespace Disco.Models.BI.Job
ShowDevice = true;
ShowUser = true;
ShowTechnician = true;
EnablePaging = true;
EnableFilter = true;
}
private JobTableModel CloneEmptyModel()
@@ -44,7 +48,9 @@ namespace Disco.Models.BI.Job
ShowLocation = this.ShowLocation,
ShowStatus = this.ShowStatus,
IsSmallTable = this.IsSmallTable,
HideClosedJobs = this.HideClosedJobs
HideClosedJobs = this.HideClosedJobs,
EnablePaging = this.EnablePaging,
EnableFilter = this.EnableFilter
};
}
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0606.1909")]
[assembly: AssemblyFileVersion("1.2.0606.1909")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
@@ -11,6 +11,8 @@ namespace Disco.Models.UI.Device
Disco.Models.Repository.Device Device { get; set; }
List<Disco.Models.Repository.DeviceProfile> DeviceProfiles { get; set; }
Disco.Models.BI.Config.OrganisationAddress DeviceProfileDefaultOrganisationAddress { get; set; }
List<Disco.Models.Repository.DeviceBatch> DeviceBatches { get; set; }
Disco.Models.BI.Job.JobTableModel Jobs { get; set; }
+92
View File
@@ -81,10 +81,44 @@ namespace Disco.Services.Plugins
throw new UnknownPluginException(PluginId);
}
}
public static bool TryGetPlugin(string PluginId, Type ContainsCategoryType, out PluginManifest PluginManifest)
{
PluginManifest = null;
if (_PluginManifests == null)
return false;
PluginManifest manifest;
if (_PluginManifests.TryGetValue(PluginId, out manifest))
{
if (ContainsCategoryType == null)
{
PluginManifest = manifest;
return true;
}
else
{
foreach (var featureManifest in manifest.Features)
{
if (ContainsCategoryType.IsAssignableFrom(featureManifest.CategoryType))
{
PluginManifest = manifest;
return true;
}
}
}
}
return false;
}
public static PluginManifest GetPlugin(string PluginId)
{
return GetPlugin(PluginId, null);
}
public static bool TryGetPlugin(string PluginId, out PluginManifest PluginManifest)
{
return TryGetPlugin(PluginId, null, out PluginManifest);
}
public static PluginManifest GetPlugin(Assembly PluginAssembly)
{
if (_PluginAssemblyManifests == null)
@@ -100,6 +134,24 @@ namespace Disco.Services.Plugins
throw new UnknownPluginException(PluginAssembly.FullName);
}
}
public static bool TryGetPlugin(Assembly PluginAssembly, out PluginManifest PluginManifest)
{
PluginManifest = null;
if (_PluginAssemblyManifests == null)
return false;
PluginManifest manifest;
if (_PluginAssemblyManifests.TryGetValue(PluginAssembly, out manifest))
{
PluginManifest = manifest;
return true;
}
else
{
return false;
}
}
public static List<PluginManifest> GetPlugins()
{
if (_PluginManifests == null)
@@ -108,6 +160,14 @@ namespace Disco.Services.Plugins
return _PluginManifests.Values.ToList();
}
public static bool PluginFeatureInstalled(string PluginFeatureId)
{
if (_PluginManifests == null)
throw new InvalidOperationException("Plugins have not been initialized");
return _PluginManifests.Values.SelectMany(pm => pm.Features).Where(fm => fm.Id == PluginFeatureId).Count() > 0;
}
public static PluginFeatureManifest GetPluginFeature(string PluginFeatureId, Type CategoryType)
{
if (_PluginManifests == null)
@@ -126,10 +186,42 @@ namespace Disco.Services.Plugins
else
throw new InvalidFeatureCategoryTypeException(CategoryType, PluginFeatureId);
}
public static bool TryGetPluginFeature(string PluginFeatureId, Type CategoryType, out PluginFeatureManifest PluginFeatureManifest)
{
PluginFeatureManifest = null;
if (_PluginManifests == null)
return false;
var featureManifest = _PluginManifests.Values.SelectMany(pm => pm.Features).Where(fm => fm.Id == PluginFeatureId).FirstOrDefault();
if (featureManifest == null)
return false;
if (CategoryType == null)
{
PluginFeatureManifest = featureManifest;
return true;
}
else
{
if (CategoryType.IsAssignableFrom(featureManifest.CategoryType))
{
PluginFeatureManifest = featureManifest;
return true;
}
else
return false;
}
}
public static PluginFeatureManifest GetPluginFeature(string PluginFeatureId)
{
return GetPluginFeature(PluginFeatureId, null);
}
public static bool TryGetPluginFeature(string PluginFeatureId, out PluginFeatureManifest PluginFeatureManifest)
{
return TryGetPluginFeature(PluginFeatureId, null, out PluginFeatureManifest);
}
public static List<PluginFeatureManifest> GetPluginFeatures(Type FeatureCategoryType)
{
if (_PluginManifests == null)
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0606.1909")]
[assembly: AssemblyFileVersion("1.2.0606.1909")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0606.1909")]
[assembly: AssemblyFileVersion("1.2.0606.1909")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
@@ -7,13 +7,16 @@
var $table = $(this);
var tableDrawn = false;
var enablePaging = $table.hasClass('enablePaging');
var enableFilter = $table.hasClass('enableFilter');
var dataTableOptionsPagination = ($table.find('tr').length > 20);
var dataTableOptions = {
"bPaginate": dataTableOptionsPagination,
"bPaginate": enablePaging,
"sPaginationType": "full_numbers",
"bLengthChange": dataTableOptionsPagination,
"iDisplayLength": 20,
"bFilter": true,
"bFilter": enableFilter,
"bSort": true,
"bInfo": false,
"bAutoWidth": false,
@@ -1,2 +1,2 @@
(function(n,t,i){var r=[];i(function(){function t(){var t=i(this).closest(".dataTables_wrapper");t.length>0&&n.setTimeout(function(){var e=i(n),o=t.height(),r=t.offset(),u=e.scrollTop(),s=e.height(),h=u-r.top,f;h>0?i("html").animate({scrollTop:r.top},125):(f=(u+s-(o+r.top))*-1,f>0&&(o>s?i("html").animate({scrollTop:r.top},125):i("html").animate({scrollTop:u+f},125)))},1)}i("table.jobTable").each(function(){var u=i(this),h=!1,c=u.find("tr").length>20,a={bPaginate:c,sPaginationType:"full_numbers",bLengthChange:c,iDisplayLength:20,bFilter:!0,bSort:!0,bInfo:!1,bAutoWidth:!1,aoColumnDefs:[{aTargets:["dates"],sSortDataType:"disco_datetime",sType:"disco_datetime"}],aaSorting:[],oLanguage:{sSearch:"Filter:"},fnDrawCallback:function(){h?t.apply(u):h=!0}},v=u.dataTable(a),l,o,f,s,n,e;u.hasClass("hideStatusClosed")&&(l=u.children("tbody"),o=l.children('tr[data-status="Closed"]'),o.length>0&&(f=i(this).closest(".dataTables_wrapper"),s=f,f.parent(".jobTable").length>0&&(s=f.parent()),n=s.prev(),n.length>0&&(n.is("h1")||n.is("h2")||n.is("h3"))?n.data("dataTable_originalContent",n.html()).text("Active "+n.text()):n=null,e=i('<a class="dataTables_showStatusClosed" href="#">').text("Show Closed ("+o.length+")"),f.prepend(e),e.click(function(){return u.removeClass("hideStatusClosed"),e.remove(),n&&n.html(n.data("dataTable_originalContent")),t.apply(u[0]),!1}))),r.push(this)}),i("table.deviceTable").each(function(){var n=i(this),t=n.find("tr").length>20,u={bPaginate:t,sPaginationType:"full_numbers",bLengthChange:t,iDisplayLength:20,bFilter:!0,bSort:!0,bInfo:!1,bAutoWidth:!1,aaSorting:[],oLanguage:{sSearch:"Filter:"}};n.dataTable(u),r.push(this)}),i("table.userTable").each(function(){var n=i(this),t=n.find("tr").length>20,u={bPaginate:t,sPaginationType:"full_numbers",bLengthChange:t,iDisplayLength:20,bFilter:!0,bSort:!0,bInfo:!1,bAutoWidth:!1,aaSorting:[],oLanguage:{sSearch:"Filter:"}};n.dataTable(u),r.push(this)})})})(window,document,$);
(function(n,t,i){var r=[];i(function(){function t(){var t=i(this).closest(".dataTables_wrapper");t.length>0&&n.setTimeout(function(){var e=i(n),o=t.height(),r=t.offset(),u=e.scrollTop(),s=e.height(),h=u-r.top,f;h>0?i("html").animate({scrollTop:r.top},125):(f=(u+s-(o+r.top))*-1,f>0&&(o>s?i("html").animate({scrollTop:r.top},125):i("html").animate({scrollTop:u+f},125)))},1)}i("table.jobTable").each(function(){var u=i(this),h=!1,l=u.hasClass("enablePaging"),a=u.hasClass("enableFilter"),v=u.find("tr").length>20,y={bPaginate:l,sPaginationType:"full_numbers",bLengthChange:v,iDisplayLength:20,bFilter:a,bSort:!0,bInfo:!1,bAutoWidth:!1,aoColumnDefs:[{aTargets:["dates"],sSortDataType:"disco_datetime",sType:"disco_datetime"}],aaSorting:[],oLanguage:{sSearch:"Filter:"},fnDrawCallback:function(){h?t.apply(u):h=!0}},p=u.dataTable(y),c,o,f,s,n,e;u.hasClass("hideStatusClosed")&&(c=u.children("tbody"),o=c.children('tr[data-status="Closed"]'),o.length>0&&(f=i(this).closest(".dataTables_wrapper"),s=f,f.parent(".jobTable").length>0&&(s=f.parent()),n=s.prev(),n.length>0&&(n.is("h1")||n.is("h2")||n.is("h3"))?n.data("dataTable_originalContent",n.html()).text("Active "+n.text()):n=null,e=i('<a class="dataTables_showStatusClosed" href="#">').text("Show Closed ("+o.length+")"),f.prepend(e),e.click(function(){return u.removeClass("hideStatusClosed"),e.remove(),n&&n.html(n.data("dataTable_originalContent")),t.apply(u[0]),!1}))),r.push(this)}),i("table.deviceTable").each(function(){var n=i(this),t=n.find("tr").length>20,u={bPaginate:t,sPaginationType:"full_numbers",bLengthChange:t,iDisplayLength:20,bFilter:!0,bSort:!0,bInfo:!1,bAutoWidth:!1,aaSorting:[],oLanguage:{sSearch:"Filter:"}};n.dataTable(u),r.push(this)}),i("table.userTable").each(function(){var n=i(this),t=n.find("tr").length>20,u={bPaginate:t,sPaginationType:"full_numbers",bLengthChange:t,iDisplayLength:20,bFilter:!0,bSort:!0,bInfo:!1,bAutoWidth:!1,aaSorting:[],oLanguage:{sSearch:"Filter:"}};n.dataTable(u),r.push(this)})})})(window,document,$);
//@ sourceMappingURL=Disco-DataTableHelpers.min.js.map
@@ -2,7 +2,7 @@
"version":3,
"file":"Disco-DataTableHelpers.min.js",
"lineCount":1,
"mappings":"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",
"mappings":"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",
"sources":["/ClientSource/Scripts/Modules/Disco-DataTableHelpers/disco.datatablehelpers.js"],
"names":["window","document","$","dataTables","scrollCheck","wrapper","closest","length","setTimeout","$window","wrapperHeight","height","wrapperOffset","offset","windowScrollTop","scrollTop","windowHeight","wrapperTopNotShown","top","wrapperBottomNotShown","animate","each","$table","tableDrawn","dataTableOptionsPagination","find","dataTableOptions","fnDrawCallback","apply","$dataTable","dataTable","$tbody","$closedJobs","wrapperContext","wrapperPrev","showClosedAnchor","hasClass","children","parent","prev","is","data","html","text","prepend","click","removeClass","remove","push"]
"names":["window","document","$","dataTables","scrollCheck","wrapper","closest","length","setTimeout","$window","wrapperHeight","height","wrapperOffset","offset","windowScrollTop","scrollTop","windowHeight","wrapperTopNotShown","top","wrapperBottomNotShown","animate","each","$table","tableDrawn","enablePaging","hasClass","enableFilter","dataTableOptionsPagination","find","dataTableOptions","fnDrawCallback","apply","$dataTable","dataTable","$tbody","$closedJobs","wrapperContext","wrapperPrev","showClosedAnchor","children","parent","prev","is","data","html","text","prepend","click","removeClass","remove","push"]
}
@@ -6,13 +6,16 @@
var $table = $(this);
var tableDrawn = false;
var enablePaging = $table.hasClass('enablePaging');
var enableFilter = $table.hasClass('enableFilter');
var dataTableOptionsPagination = ($table.find('tr').length > 20);
var dataTableOptions = {
"bPaginate": dataTableOptionsPagination,
"bPaginate": enablePaging,
"sPaginationType": "full_numbers",
"bLengthChange": dataTableOptionsPagination,
"iDisplayLength": 20,
"bFilter": true,
"bFilter": enableFilter,
"bSort": true,
"bInfo": false,
"bAutoWidth": false,
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+245 -36
View File
@@ -71,46 +71,247 @@
-moz-opacity: 1;
opacity: 1;
}
table.deviceShow td.details {
padding: 0;
#layout_PageHeading #Device_Show_Status {
/*position: absolute;
right: 20px;
top: 6px;*/
margin-left: 20px;
display: inline-block;
height: 50px;
font-family: "Segoe UI", Arial, Verdana, Tahoma, sans-serif;
font-weight: lighter;
font-stretch: condensed;
font-size: 0.7em;
text-transform: uppercase;
}
table.deviceShow td.details > table {
border: solid 1px #e8eef4;
border-collapse: collapse;
#layout_PageHeading #Device_Show_Status span.icon {
margin-right: 6px;
}
table.deviceShow td.details > table > tbody > tr:nth-child(odd) {
background-color: #e8eef4;
margin: 0;
padding: 0;
#Device_Show #Device_Show_Subjects {
table-layout: fixed;
/*#Device_Show_Job
{
#Device_Show_Device_Type
{
&>table
{
table-layout: fixed;
}
table.deviceShow td.details > table > tbody > tr > th.name {
width: 170px;
text-align: right;
}
table.deviceShow td.details > table table.sub > tbody > tr:not(:first-child) > th,
table.deviceShow td.details > table table.sub > tbody > tr:not(:first-child) > td {
border-top: 1px dashed #aaa;
#Device_Show_Device_SubTypes_1, #Device_Show_Device_SubTypes_2
{
padding-left: 16px;
font-weight: bold;
}
table.deviceShow td.details > table table.sub > tbody > tr > th {
font-weight: normal;
text-align: right;
}
table.deviceShow td.details > table table.sub > tbody > tr > th.name {
text-align: right;
}
table.deviceShow td.model {
width: 300px;
}
table.deviceShow td.model table td {
text-align: center;
}
table.deviceShow #deviceBatchSummary {
display: none;
#Device_Show_Device_SubTypes_Update
{
margin-left: 16px;
font-size: 0.9em;
}
table.deviceShow #deviceBatchDetails,
table.deviceShow #deviceProfileDetails {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACQElEQVQ4EQXBT4uVVRwA4Od3znnn3pkmi4poFQRFNYuMoAyirAnqI7Rr20dxX7iUFkmLaNNCglaRGGRaQUSZCFLUwlD8MzN6733P+fU8cer02TOHh/dfnue+mnvXx9DnYYw0j05QS1GjmLaqxdZkqpWIxUM7yx/bVNvrx/ee37u/Wtn0ofdu3gzzPMyjE7RStFoc2922WExaqaZFc/Xa9dZ6xjMvvfCsu4dHNn2Y+9DnbrMeNqMTTKWordpeTJbLyaJVOztbrlz7+7l272jt8u9/2WxmBAEASEgiJACmWt05XGvbuw/n/jsnLCcEoCNQkIAAQNIH/3x+I9sYaXuLY/MN7qPN7D5Obrh7Dw2BBCRL1ssnQYtIPXHxlLHztfHf09p7X8l5Zfy0Lx6tDACMmYM39P0zQmo50hhoa2XvirzwFDBmlkN58Q9mAHTylxPGIHNotVVTo6+O+P4D+gElKI2D4/qFV4CxZnqEfkQtAqVUrQQxqPufAjBWYmtbff8LAAAAuaa2hTbG0OHyx/rRVR7cUt89Ix/cMS58xM4TAMCYWd/m7c9EDK2WYmp48Kf62mn9u5OMoC1xXX31LDMABnnpQ5JAK0EUcr0xvt0XuUtM5BCxNn54iwTA6MxdFJTQosRyQpz8RF0V2kwtoj4m3jxPVgBAsjVMhVCW7c7tm79+ee783qabQZLZpSCCJEqkJDMjSmQRWjHdvPHvb+3w4O43ly79fKuPXMuUSIxMMkEpNTOHzIwoJVvUjLAs1cX/AdqeHE5xuOGdAAAAAElFTkSuQmCC) /*Images/Actions/editForm.png*/;
#Device_Show_Device_SubTypes_Update_Dialog
{
display: none;
}
#Device_Show_Device_Dates
{
padding-bottom: 6px;
table
{
table-layout: fixed;
&>tbody > tr > td
{
vertical-align: middle;
}
&>tbody > tr > td:first-child
{
font-weight: bold;
width: 60px;
}
}
}
#Device_Show_GenerateDocument_Container
{
padding-top: 4px;
#Device_Show_GenerateDocument
{
padding: 0;
}
}
}
#Device_Show_Device
{
&>div
{
padding-left: 102px;
min-height: 100px;
}
#Device_Show_Device_Model_Image
{
position: absolute;
left: 0;
top: 0;
height: 96px;
width: 96px;
}
#Device_Show_Device_Details
{
float: left;
}
#Device_Show_Device_Details_HWar, #Device_Show_Device_Details_HNWar
{
float: right;
border-left: 1px dashed #ddd;
padding-left: 4px;
margin-right: 2px;
}
#Device_Show_Device_Details_HWar_Details_Button, #Device_Show_Device_Details_HNWar_Details_Button
{
font-size: .9em;
}
#Device_Show_Device_DeviceHeld
{
table
{
table-layout: fixed;
&>tbody > tr > td:first-child
{
width: 62px;
}
}
}
}
#Device_Show_User
{
#Device_Show_User_Type
{
font-style: italic;
}
}*/
}
#Device_Show #Device_Show_Subjects > tbody > tr > td {
padding-top: 0;
height: 100%;
}
#Device_Show #Device_Show_Subjects > tbody > tr > td > div {
position: relative;
}
#Device_Show #Device_Show_Subjects > tbody > tr > td > div div.status {
margin-top: 2px;
padding-top: 2px;
border-top: 1px dashed #ddd;
}
#Device_Show #Device_Show_Subjects > tbody > tr > td > div input.discreet {
margin-left: -2px;
}
#Device_Show #Device_Show_Subjects > tbody > tr > td:not(:last-child) {
border-right: 1px dashed #aaa;
}
#Device_Show #Device_Show_Subjects .dialog {
display: none;
}
#Device_Show #Device_Show_Subjects #Device_Show_Details table.verticalHeadings > tbody > tr > td:first-child {
width: 104px;
font-weight: bold;
}
#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_Details_Asset_Name {
font-weight: bold;
}
#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_Details_Asset_Enrolled_Trusted {
display: inline-block;
height: 16px;
padding-left: 16px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACWUlEQVQ4y6XRXWiSURgHcJsXa4WNNuuyiy6CoAupixERoXXhmljuxaJiFrVA1i72cVFCOSMt8rNt2YfGO5g5Z1NstWW+c4ZBq4QpqMkEbZDSCObAMprjdf90sIjxsgUdODd/zvmd5zwPCwDrf/aGB7q6utgmk8ngdruzVqt10eVyTWu1Wuk/AXK5vMpoNPpjsRgGbU8/9fbdH/J4PAuRSARKpfLKhoBYLG595nTCaDSZVjPp6TPbHQ5H0mAwfBeJRHXrAp0dna9JcqCguX2H/Xd+S625aLFYQBDE8XWBd+8/TI6Njc+vzcfGX4nLX4FOp5OuC0wGAlS53NzaPPAm2Gi32+H3+5tYJEl+pigKoVAIPp+PnpqaosPhMF1uHB2Px2mv14vya6VgMKhhHGN3d/dSMplENptFIpHA3NwcCoUCSqUSKqvScZVKBbPZHGQEFApFMZ1OI5PJIBqNrkD5fB40Ta8AlcrUajVsNpufEbh+42YxHEkh+/UbUqlZpGd/lAH8WTMzMzDd64d7NMAMDOobi/OpHqh6rqK9jcCvBQncQzK0Xm5DPn0BJ4lz6GgVIkedYAaamxqK0dEDePl4FziczehTsZGLs7BnNwdiwRac4lejvp6La83VzABv/8FF/qG9oD/WQS/fhNptHEw8rEJiuAo7ubXACAtH9m0Fu2YHxQzweEuEVIYnaiFmvQ04f1aItksi5KaP4ZFGjDB5GG/7j4LL5YYYgZYW2c/yiJbv6h/A0EvC4RjGiOsFnK4J+KgABmyjsDufL0skki8CgYCoXOLz+TWrwG+kXMkgQ6yv+QAAAABJRU5ErkJggg==) /*Images/Actions/unlocked.png*/;
background-repeat: no-repeat;
}
#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_GenerateDocument_Container {
padding-top: 4px;
}
#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_GenerateDocument_Container #Device_Show_GenerateDocument {
padding: 0;
}
#Device_Show #Device_Show_Subjects #Device_Show_Policies table.verticalHeadings > tbody > tr > td:first-child {
width: 120px;
font-weight: bold;
}
#Device_Show #Device_Show_Subjects #Device_Show_Aspects #Device_Show_Aspects_Model_Image {
display: block;
width: 256px;
height: 256px;
margin: 0 auto;
}
#Device_Show #Device_Show_Subjects #Device_Show_Subjects_Actions > td {
padding-top: 4px;
}
#DeviceDetailTabs {
margin-top: 10px;
/*jQuery Tab Extensions*/
border-radius: 0;
background-image: none;
background-color: #fff;
border: none;
padding: 0;
}
#DeviceDetailTabs #DeviceDetailTabItems {
border-radius: 0;
border-top: 1px solid #ddd;
border-right: 1px solid #ddd;
border-left: 1px solid #ddd;
border-bottom: none;
padding: 2px 0 0 4px;
background-image: none;
background-color: #eee;
display: table;
}
#DeviceDetailTabs #DeviceDetailTabItems > li {
top: 0;
border-radius: 0;
margin: 0 5px 0 0;
padding: 0;
line-height: normal;
margin-right: 4px;
}
#DeviceDetailTabs #DeviceDetailTabItems > li > a {
padding: 5px 8px;
}
#DeviceDetailTabs div.ui-tabs-panel {
border-radius: 0;
padding: 4px;
border-right: 1px solid #ddd;
border-bottom: 1px solid #ddd;
border-left: 1px solid #ddd;
border-top: none;
background-color: #eee;
}
#Device_Show_Policies_Profile_Actions_UpdateDeviceBatch_Dialog ul li {
background-color: #fff;
padding: 2px 0;
}
#Device_Show_Policies_Profile_Actions_UpdateDeviceBatch_Dialog ul li:nth-child(odd) {
background-color: #fcfcfd;
}
#Device_Show_Policies_Profile_Actions_UpdateDeviceBatch_Dialog ul li.selected {
background-color: #8db2d8;
font-weight: bold;
}
a.unlocked16 {
height: 16px;
@@ -126,12 +327,10 @@ a.locked16 {
display: inline-block;
text-decoration: none !important;
}
#deviceShowResources {
margin-top: 10px;
}
#deviceShowResources #Attachments {
padding: 0;
border: 1px solid #cccccc;
background-color: #fff;
}
#deviceShowResources #Attachments div.attachmentOutput {
height: 115px;
@@ -229,3 +428,13 @@ a.locked16 {
#deviceShowResources #Attachments div.attachmentInput span.photo {
background-image: url(data:image/png;base64,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) /*Images/Actions/photo.png*/;
}
#DeviceDetailTab-Jobs #DeviceDetailTab-JobsContainer {
padding-top: 24px;
}
#DeviceDetailTab-Jobs #DeviceDetailTab-JobsContainer .dataTables_filter {
opacity: 1;
}
#DeviceDetailTab-Jobs #DeviceDetailTab-JobsContainer div.jobTable {
margin: -1px;
border: 1px solid #ddd;
}
+304 -16
View File
@@ -1,30 +1,286 @@
@import "Shared";
// Device Show
table.deviceShow
{
td.details{
padding: 0;
&>table {
.tableDataVertical;
#layout_PageHeading {
#Device_Show_Status {
/*position: absolute;
right: 20px;
top: 6px;*/
margin-left: 20px;
display: inline-block;
height: 50px;
font-family: @FontFamilyHeading;
font-weight: @FontWeightHeading;
font-stretch: @FontStretchHeading;
font-size: 0.7em;
text-transform: uppercase;
span.icon {
margin-right: 6px;
}
}
}
td.model {
width: 300px;
#Device_Show {
#Device_Show_Subjects {
table-layout: fixed;
table {
td {
text-align: center;
& > tbody > tr > td {
padding-top: 0;
height: 100%;
& > div /* Extra DIV added for FireFox TD relative position incompatibility */ {
position: relative;
div.status {
margin-top: 2px;
padding-top: 2px;
border-top: 1px dashed #ddd;
}
input.discreet {
margin-left: -2px;
}
}
}
#deviceBatchSummary {
& > tbody > tr > td:not(:last-child) {
border-right: 1px dashed #aaa;
}
.dialog {
display: none;
}
#Device_Show_Details {
table.verticalHeadings {
& > tbody > tr > td:first-child {
width: 104px;
font-weight: bold;
}
}
#Device_Show_Details_Asset_Name {
font-weight: bold;
}
#Device_Show_Details_Asset_Enrolled_Trusted {
display: inline-block;
height: 16px;
padding-left: 16px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACWUlEQVQ4y6XRXWiSURgHcJsXa4WNNuuyiy6CoAupixERoXXhmljuxaJiFrVA1i72cVFCOSMt8rNt2YfGO5g5Z1NstWW+c4ZBq4QpqMkEbZDSCObAMprjdf90sIjxsgUdODd/zvmd5zwPCwDrf/aGB7q6utgmk8ngdruzVqt10eVyTWu1Wuk/AXK5vMpoNPpjsRgGbU8/9fbdH/J4PAuRSARKpfLKhoBYLG595nTCaDSZVjPp6TPbHQ5H0mAwfBeJRHXrAp0dna9JcqCguX2H/Xd+S625aLFYQBDE8XWBd+8/TI6Njc+vzcfGX4nLX4FOp5OuC0wGAlS53NzaPPAm2Gi32+H3+5tYJEl+pigKoVAIPp+PnpqaosPhMF1uHB2Px2mv14vya6VgMKhhHGN3d/dSMplENptFIpHA3NwcCoUCSqUSKqvScZVKBbPZHGQEFApFMZ1OI5PJIBqNrkD5fB40Ta8AlcrUajVsNpufEbh+42YxHEkh+/UbUqlZpGd/lAH8WTMzMzDd64d7NMAMDOobi/OpHqh6rqK9jcCvBQncQzK0Xm5DPn0BJ4lz6GgVIkedYAaamxqK0dEDePl4FziczehTsZGLs7BnNwdiwRac4lejvp6La83VzABv/8FF/qG9oD/WQS/fhNptHEw8rEJiuAo7ubXACAtH9m0Fu2YHxQzweEuEVIYnaiFmvQ04f1aItksi5KaP4ZFGjDB5GG/7j4LL5YYYgZYW2c/yiJbv6h/A0EvC4RjGiOsFnK4J+KgABmyjsDufL0skki8CgYCoXOLz+TWrwG+kXMkgQ6yv+QAAAABJRU5ErkJggg==) /*Images/Actions/unlocked.png*/;
background-repeat: no-repeat;
}
#Device_Show_GenerateDocument_Container {
padding-top: 4px;
#Device_Show_GenerateDocument {
padding: 0;
}
}
}
#Device_Show_Policies {
table.verticalHeadings {
& > tbody > tr > td:first-child {
width: 120px;
font-weight: bold;
}
}
}
#Device_Show_Aspects {
#Device_Show_Aspects_Model_Image {
display: block;
width: 256px;
height: 256px;
margin: 0 auto;
}
}
/*#Device_Show_Job
{
#Device_Show_Device_Type
{
&>table
{
table-layout: fixed;
}
}
#Device_Show_Device_SubTypes_1, #Device_Show_Device_SubTypes_2
{
padding-left: 16px;
font-weight: bold;
}
#Device_Show_Device_SubTypes_Update
{
margin-left: 16px;
font-size: 0.9em;
}
#deviceBatchDetails, #deviceProfileDetails {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACQElEQVQ4EQXBT4uVVRwA4Od3znnn3pkmi4poFQRFNYuMoAyirAnqI7Rr20dxX7iUFkmLaNNCglaRGGRaQUSZCFLUwlD8MzN6733P+fU8cer02TOHh/dfnue+mnvXx9DnYYw0j05QS1GjmLaqxdZkqpWIxUM7yx/bVNvrx/ee37u/Wtn0ofdu3gzzPMyjE7RStFoc2922WExaqaZFc/Xa9dZ6xjMvvfCsu4dHNn2Y+9DnbrMeNqMTTKWordpeTJbLyaJVOztbrlz7+7l272jt8u9/2WxmBAEASEgiJACmWt05XGvbuw/n/jsnLCcEoCNQkIAAQNIH/3x+I9sYaXuLY/MN7qPN7D5Obrh7Dw2BBCRL1ssnQYtIPXHxlLHztfHf09p7X8l5Zfy0Lx6tDACMmYM39P0zQmo50hhoa2XvirzwFDBmlkN58Q9mAHTylxPGIHNotVVTo6+O+P4D+gElKI2D4/qFV4CxZnqEfkQtAqVUrQQxqPufAjBWYmtbff8LAAAAuaa2hTbG0OHyx/rRVR7cUt89Ix/cMS58xM4TAMCYWd/m7c9EDK2WYmp48Kf62mn9u5OMoC1xXX31LDMABnnpQ5JAK0EUcr0xvt0XuUtM5BCxNn54iwTA6MxdFJTQosRyQpz8RF0V2kwtoj4m3jxPVgBAsjVMhVCW7c7tm79+ee783qabQZLZpSCCJEqkJDMjSmQRWjHdvPHvb+3w4O43ly79fKuPXMuUSIxMMkEpNTOHzIwoJVvUjLAs1cX/AdqeHE5xuOGdAAAAAElFTkSuQmCC) /*Images/Actions/editForm.png*/;
#Device_Show_Device_SubTypes_Update_Dialog
{
display: none;
}
#Device_Show_Device_Dates
{
padding-bottom: 6px;
table
{
table-layout: fixed;
&>tbody > tr > td
{
vertical-align: middle;
}
&>tbody > tr > td:first-child
{
font-weight: bold;
width: 60px;
}
}
}
#Device_Show_GenerateDocument_Container
{
padding-top: 4px;
#Device_Show_GenerateDocument
{
padding: 0;
}
}
}
#Device_Show_Device
{
&>div
{
padding-left: 102px;
min-height: 100px;
}
#Device_Show_Device_Model_Image
{
position: absolute;
left: 0;
top: 0;
height: 96px;
width: 96px;
}
#Device_Show_Device_Details
{
float: left;
}
#Device_Show_Device_Details_HWar, #Device_Show_Device_Details_HNWar
{
float: right;
border-left: 1px dashed #ddd;
padding-left: 4px;
margin-right: 2px;
}
#Device_Show_Device_Details_HWar_Details_Button, #Device_Show_Device_Details_HNWar_Details_Button
{
font-size: .9em;
}
#Device_Show_Device_DeviceHeld
{
table
{
table-layout: fixed;
&>tbody > tr > td:first-child
{
width: 62px;
}
}
}
}
#Device_Show_User
{
#Device_Show_User_Type
{
font-style: italic;
}
}*/
#Device_Show_Subjects_Actions {
& > td {
padding-top: 4px;
}
}
}
}
#DeviceDetailTabs {
margin-top: 10px;
/*jQuery Tab Extensions*/
border-radius: 0;
background-image: none;
background-color: #fff;
border: none;
padding: 0;
#DeviceDetailTabItems {
border-radius: 0;
border-top: 1px solid #ddd;
border-right: 1px solid #ddd;
border-left: 1px solid #ddd;
border-bottom: none;
padding: 2px 0 0 4px;
background-image: none;
background-color: #eee;
display: table;
& > li {
top: 0;
border-radius: 0;
margin: 0 5px 0 0;
padding: 0;
line-height: normal;
margin-right: 4px;
& > a {
padding: 5px 8px;
}
}
}
div.ui-tabs-panel {
border-radius: 0;
padding: 4px;
border-right: 1px solid #ddd;
border-bottom: 1px solid #ddd;
border-left: 1px solid #ddd;
border-top: none;
background-color: #eee;
}
}
#Device_Show_Policies_Profile_Actions_UpdateDeviceBatch_Dialog {
ul {
li {
background-color: #fff;
padding: 2px 0;
&:nth-child(odd) {
background-color: @TableDataRowBackgroundColor;
}
&.selected {
background-color: @TableDataDarkBorderColour;
font-weight: bold;
}
}
}
}
@@ -35,6 +291,7 @@ a.unlocked16 {
display: inline-block;
text-decoration: none !important;
}
a.locked16 {
height: 16px;
width: 16px;
@@ -44,14 +301,16 @@ a.locked16 {
}
#deviceShowResources {
margin-top: 10px;
#Attachments {
padding: 0;
border: 1px solid @SubtleBorderColour;
background-color: #fff;
div.attachmentOutput {
height: 115px;
overflow: auto;
font-size: 0.95em;
& > a {
display: block;
float: left;
@@ -63,6 +322,7 @@ a.locked16 {
border: 1px solid #fff;
color: #000;
text-decoration: none;
span.comments, span.author, span.timestamp {
display: block;
float: left;
@@ -70,50 +330,60 @@ a.locked16 {
overflow: hidden;
height: 16px;
}
span.author {
color: #888;
width: 150px;
}
span.timestamp {
color: #888;
font-style: italic;
}
span.icon {
display: block;
float: left;
height: 48px;
width: 48px;
margin-right: 2px;
img {
height: 48px;
width: 48px;
}
}
&:hover {
background-color: @SubtleColour;
border: 1px solid @SubtleBorderColour;
.border-radius(3px);
span.remove {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADHklEQVQ4T22SeUgUcRTHZ/aY2dnZLdfWI4KuP+zQsja7KMraXaMsOrUghe6DMjNXN7LlSyt2EHZAqbgdZFRQ/xR0QGVqZmi6h2mnVHYYBboVbgvS8evtSkHWF74w897nvTfv9xuO+48uRAyMrpqSnNSYssD6wJxqrUxISjonG6P7cv/otNZgfDR/cXrPwcO72dXrYK5TYKXlYMdLEUShw2uZu9wl6KP61oV1NiJmaFfGKhvLtYNtziJvA9u0FWzj1t73bTvAbHZ0LF2R55INw/8qPiboI9/PnpPH5i1C98RpaCP3TJ6On8kpYMlWfJthwSvLfAQnTQebtxBtU2fkH1JqjX8aVA0alvY13oQXsUPgWbkar5o8eEjgZ0MsvpAfWlPRTjFf5hq8jRmMwKhEXIkatCJcfICXjI8NsbsbVRJq4xIQCATAGIP/wwe4x09GU4IJne86wrFAMIgHI8fCp9KgQR/pcPKaaK5YKU24IehwjFPijCCiBXvwk+CQuzreo/Ptu/DzD/ITZxEuiRqcIPayQoMiXpzIOVWSuYSm2zkVijkFXBwHT64N/s4ufO7uDtvv98OXZ0cF5UqJ2UtsGS+gkBetnF0lWQrVEhZzPLZTsoigihHxeNbcjJevX+Nlezuet7bifMI4HKVcEU3fTJyDVyGfF1O4HKXGVCZosY4aZBNQPHoM6quq4aWi1qdPw/a2tKLhbi1KEidgFzFrid2nUCMntMIGTjCe1OgcRyhRNmQ4am7eRmVdHercHrizsuHZkoX7Hg9u1d6Fr9GLK4mTsJ/YEqXo2MgJvX/nLrWUVklrXJB1qN/jRLXbDU92DqoJrCF7qVENNWncfwAX+/XDNZpeoBB7rzGkTE4wuCS9rVkp4o5CgC/ZDB/t2UZ+QW6hT26ZZUYVXV8THWC5WsqnmgF/GoSUwQuDK7T9c98IMjpoalCtBYuMATMORI9Gj48Ua1dKqBBkWyYvDPur+LfSOXUkRN2yexFRBf64eHyflYLvMy34NGosGgwxBU5BTkvvO/l/WkIHu14lm3bqjGa7bDBvUMumpRTry4X0C+L3YvcBfxOhAAAAAElFTkSuQmCC) /*Images/Actions/removeSubtle.png*/;
}
}
span.remove {
display: block;
float: left;
height: 16px;
width: 16px;
margin-left: 2px;
&:hover {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADG0lEQVQ4y3WTCUhUURSG35vlvnnzZsoJQyMo2nTMKdsXEtOcjKxogwhKaDFNysysJooQRzTLbIFScVrIaMEiElqgMjUzsnEWl1apbNG0dCqcJiarv+NEgWEPfnj3nO/+5567cAC4f3XOb5ChfFrkemvMgn0PoufllhkmJZ2R/Mf0xfYanFTr9A/nL77ozT3oxZVrgOUEUFAEHC2AJz3zm8M495KFaUf3aXDaLyCqc+WqdqSZgKRk0iZg/UYgcePv8aYtwFYTWpYu/2CRdMZeBkeYdmTrrDnvEbsIXZNnoInknRqOn5ExQORsdEcY8dI4H54p4UDsQjRNj+g8IFfr/xqUDx5W8iV0Ap4HDoV9xWq8rLWjnsBPukB8JtXPnodmijnj1uBNwBC4Q8JQOnBwqc9gLy/qH+kCvVaFiKogA9xuN3o+V1sbbOOnotYwAR1vW3wxt8eDB/qxcCpUqNEO6DbzKgOXJxcTrjMNjnBynGICGtIz8JPgHnW2tKLjzVvf/w/SY3MWLggqHCP2skyFLF7YwJkV4p58qm7iFMjjZLBQV/a0rXB1dOJTV5dPLpcLzm0mFFOugJhsYgt5hkxeyOVMCjEnUyliMcdjMyWzCCoODsXTujq8ePUKL5qb8ayxEWcN43CYcllUPYm43bwC23lhP5cqV60rZGrEk0EKAXmjx+B+eQUcNKnxyROfHA2NqLlThfywidhJzFpi98iUSO1pIYFj+uMqzbdDlCgcOhyVN26hrLoa1TY7bMkpsG9Ixj27HTer7sBpdaA0bApyiM2XC92JHDP4jnGnUiwpozbOSRrczzCjwmaDPSUVFQRWkhxkVEkm1py9KOnXD1ep+i6ZcPnvPYjj2AiLqG2vkwu4LWNwRkbDSX02kZ6TGmjJDVHRKKfjq6UNLFKKHTQnqNdVXsmz8GJ1/3evmYQWCnuUamBAAOA/CF6VFu0Ua5aLKGZSexzPZvX5mJZxylHpgub8Xb+BX11BofgeFYPvM434GDIWNbqAr2YmlSzjWPB/X+MfLaGNXaeQ4ndo/LNNki47QSnFL+VYSF/sL7crTEWWnWvrAAAAAElFTkSuQmCC) /*Images/Actions/remove.png*/;
}
}
}
}
div.attachmentInput {
border-top: 1px solid @SubtleBorderColour;
height: 40px;
background-color: #fff;
padding: 3px;
span.action {
display: block;
margin: 2px 4px 0 0;
@@ -125,18 +395,36 @@ a.locked16 {
padding: 3px;
background-repeat: no-repeat;
background-position: 2px 3px;
&:hover {
background-color: @SubtleColour;
border: 1px solid @SubtleBorderColour;
.border-radius(3px);
}
}
span.upload {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFPUlEQVRYw7VXayzkVxRfy4yKTj0aj6JWJISuR9EiWj5IFZt4pB+kLYmdbEJEJpp2daeIJkRNMx7xqFcl0iXxaKwVj8ishhG+eARr10wY6hVMx3gM1mNxeo7YRDfzNr3Jyfzn/u/939899/x+59xbAHDLEIbNxNHRMSQ5OTmvuLi4pbS0tDU1NbXA3d09FN8ZqZxniMVZLJZvSUnJ0NHREVA7PDwEhUIBb1pNTU2PtbW1+/8CwMvLiz07O/uKFqqrq9sNDAzstLCw4Jubm/Pd3NyeZGdnb56dncH09LQUQfgaFIC9vX30+vr6uUwmg5CQkD509Rdo75HL0W6jWaJF+/n5CRcXF0EgEEiMjIw+MAgAbM7d3d1/y6QywAU68b+NmrFeYWFhwtPTU8jIyKi/MQDaXU5OjoDcHhsb+4x2fdX/jqqAwxbf0dFxNj4+vofPtjcCgO7+gRbn8/lSS0vLjPT09KrOp09F/f39S9XV1QOhoaFsXITxFoD3cfcv8MgA2RKuNwAzM7MgsVh8MDAwAAkJCRI8230CIxKJYHh4GLa2ti4jv6CggI7F7BoABlJ0cHNzEzA4v9ELADar1tZWkVQqBS6Xe4G/F/Pz8xAdHT2KwZWN7zkODg7NVVVVr87PzyErK6vp2lxTnDO2vLwMOCZeLwBsNvu3K9fDxMQEjI2NgZ2dXSl+3OnaQtZo3Pr6+qNt+TZ4enreu+q/09nZuUdeQrA+OgNwdXX9en9/H5qbm+Hx48dAO/fw8PiddqbEUyyMg66VlRVg379fQ32+vr4Z5Lnc3Nzn/zkabRY3MTHxmJmZ2UExgfz8fKBAiomJ+Usd9fCcc+fm5gDluB3HOSLwtcnJSXB2dv5JJxoS5crLy58dHx9DXl4eLCwsAMquFPs/VjcvPDy8dHV1FeLi4v7E6O+V4e7j4+MHiQ06AYiIiPiRzh2TC/T19YFQKASUWo4G0GZlZWUvpqamyAOLBATnb2N/sE5S7OTk9KVcLn/d09MDlZWVl+fu4+PTSIKjbh7GRuqCZIGSEAwNDV2gPgDmgYc6J6PMzMxW0nDk9MXa2hqkpaW9vB7xyozBYNzt7e3dHRkZuQxYiURCUv2HKtBqzx75yk1MTFwmFzY1Nb1G+sRrcL1RFpcr2NzYgNraWlheWgIOhyOmvKFXPYDtM3S/ggLP1tb2F3WFBZm/v/93BLaxsRFGR0ehoaHhBEF/pXYNdRUOj8cTUgCi0hHlWGqLEgvW5+j2EwrS9vb2SwB29vY/a2SZqhcoJFxaHClH0fuppqjHceO0exKpJXQ96kQ/9r+rFwAmkxmMCeeIdoGUe6gFVX8lnpPrUbCAV8iT4eKfaJVflHUidxtp9ygiAk2Uo927uLhUFBUVnVDkd3V1nZuamj7QOsEpy3iYNJZINq2srBK0zJKeKDT/EGVR8yk/3L4JgLuDg4PHLS0tB/j8oTYfSUpKqtuWyyElJeWltnPUAfDHKD5FEaHgs9T0gYCAAA4lJ6yEdnF8hM7lnRIAd1D5VijfI/eDNVRH/pjfD0jzsS54pFd9qQQAMygoqJ3Eh1dYSKU2U0WKdseiQ0QlVmRkJI0zNwiAKxAxWD5t7ezsAGa1IaTiR9dLK6xyvu3q7pYeHhwAFqQktZ56l/cqAJgaGxt/z+cXHSr2FEA3n8qKihEsRnoxOCUbqPVkmOdXcGzoje6U6vhNRWZUVNTztra2szmxGIhmVAei6u17e3s/wfchN77UarrxknvRHuAFtMjGxqacwWQ8omjXlBsMAuAtMMYEyFDX+Tf2LzGXbu1DZYkMAAAAAElFTkSuQmCC) /*Images/Actions/attach.png*/;
}
span.photo {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALH0lEQVRYw8WXa4xd11XHf2vvfc59zJ33y+PxYzyel2dsx48hdnCaNMFNFUGgkKCoKLxCE1EJKgoBCbW0fACpoihSUVBQUgW1FCRaJURRcF4iL8eJkzbYY0+Sie3YHs/kzvt13/eeffbmwx07IMFnjnTO3ufonL3+67/W2ue/xHvP/+chfX27+J3ffoCRwV307x5ibP8hWluauf22YwwNDjA2tofBgSFuOniYP/rjR8jOXqO7u4utPVvYu3eM4ZFh9u0/THNLKzftHWXfvlFGR4YZ3bOHA4cOc9udd+nmpsb23i1do4PDI7f+60+eebparX6ktQHA/O+4fP30vj4Azjni2BLbCBvVcHGEjy0+jolrFfp39TU1ZBq2490hH9vDcVQZK2ys9p0/826HSbWlK16FTcmApcWl9kQq/fUgCBBRGO/hRhi8wzmHtZYoqhHHFu8sOIuLa7S0tISlQr7TaHWT4Mdxdr+3lYFSYbVn8sMPm7wEYcWJym54Li96XsoWyE6VWVhf4NN1y7d+Yyf7R3cPtbZ3kEyl0VpjnItxLt40FGOjCsPDw23JRLIfH497Zw8R1/bUSvkdj373r1slbE7FXpnFKlxZ9ExlK7z4swJzqwus5S2lmsM7h1YKEyiSRhEYoTVlWM7Dvn37+u657zdvcG2SyeQRG9XudbHd4+Jqf7W41v3+mXMZLyosOpHpZc+lOcsPP8ox+2aR5Y1VCuWYWuxQogi0kAyEQCtSgZBJBCjxiFZoJSjRKOUx1jC/DneP7esCNBADmC/dc/cjf/Wdv73v+XOWdxdLPP1mkfm1LLliRLEa47xDI+hAERoIlaKtMUBrUAhKQIkgIoholN6cK6k/VwpBIVqxVPB0HxpobGrMtBQLhZUwkcCcnzjzdrnq7/vOM9MkxZJJKRJGSCWEhoSpLwTIDUMKJR6tQLzgtUFwiNKIEjSC1/URrRC1+Y0SChWPMsmwo615sLU5sxImkpjL12bf0xL7Pb2NUigWSASCEoUClNQvSkA8eBGUEgRBhLqnWvBiEJE65Urwqs6CUmrzfUVCacqxB6Vlx7atB5U2p4MgxKysrF9wtlbb0Z1JXLxWIxF4tBLwgjJqs0IEUSAIKI9gEPGIZtOwBhFEeYySzXndEa3qcy0aGynKwPDQ4IEwkSJIJDDr6+ura/OfFPt6RhOXsgFBSL3+xaEDjfebxqXuNQqMaLwCBegbLAkaj9KgUIjWmwwotBZAExvFmoOxvXv3tLV3kEynMbFz8fnzk4u7D+9tezVhCBP1eHtfX72eSCBKoUXQOkTCEGVriLcgghKP2qRfXQ+TaLRWiCh0KKTS0BJCycPBQ+PbP3fHXfUyfPzvvsuZsxNXHvjil0fCRIAJPUrxWYzFo8UgClSYAlvCzU6QHhhHfIi3MXIdwH/Lfq0FZYRME+gEzF5Z5+RzP+KN2lW+962vtxljEtbaqnnn9E+pVSvn2zV3N6YSJE1cz3L9Ge2iFNqESACJt39EfvJNXn31MPc88idQEbxjE7TURw3pRggzMHXmAm/+8/eYm3iNteVZerZvJ5X5drqrs6uzWCzOmo+mPsZ7f0bhaG0KIBa0Bu2lnmTXyyijUGdfJly8QFN/P1vfPc3Vc5e49RcHcDVwFrwDrcEkYebyIuf/8Sny504yZgz7bxplobqdy3Oz4L3p7ure7/Gz5sLFT2hsajrr4yjubg31ak4T1pMaLXUAOqlwuXXspVPM5xxDXQ388p0H+P7TT6LNvSx/cpEdg6P07uqjEpWYPfsWc//+E3oyhsMHb2ZhYZG55RVaMhlWK/MsLM+xe2hoPBEGJ8xGvkA1qs1uLM7UtjQPpIplRTqsU+kFRIFJQfWnLxHbKtZrenq7efGt95n/9D1W/uYVJqYu4pXHJDOkUoYH77iVge42yk746Mo0nQ0NSOxYWFvkC7vHafUwsmdkf3NzMya2ltmZ6cKpk2+sbj0+0DtZKqBrVbwWkqlmdGAoTk2RnjlD2BAyVyryzcf+iYnJ89z1uT6KJUGMQaihraXBG05+NMVY1wgd6QZev/oetaLl/i98nl628s7rpzh35jKHDx0a+NUv/Qpmfm6B+cWlp44c+3zXlk7YMbxIXC6ighSJ1hCco5CEcPh+onQHTR98zM4DBzk2fgjjoUKVXKmIjzyGkPWlZZ58+imWN1bI56rcOn4bP/y3E7x2Psfgni7W2gLm3Qzjo8d7AJGrly+rnbt2VYCgLj3qm8D7b59kOvspnVs78Klmpi5+yi+MHyA7c5XHHn+MB379t5hfXeDnjx6je0s3yTBJmA6p1ark8wUKG2s8+vhfkExamtOQnZnFN6+wlM/S2d7Oo9/4uNyzZdtWc25ycteOnTuNKIV1UMitkG5sYq1iKKokPq9JVIuszF9h9lorG6t55pbXCDJp+lt2kCvlKF4tkUw00NXZRjqTpJAvo2iA5qu8eOY/6U8JnSnD4rylsOHJXl4AHyU6O7v6zfMnThw7fvy4pFIpquUy1YrF2Tx33P5ziCjwELuYu24ep1gtASmOf/FOfnb6XWreUKlUWVtfYvqTKxw8dICWjg7KhQKN6XZuG/t9XjnxMBdCz3ImIt1h2NLdTG/PdhKJlBocGLjDXLp4uVqulEmlUhTLJYqVIuJhY22DyFapuhqFYo1qLcKWKpSVxZYKFIolhvqHmF5Y4S//4M+4NHeJIAh48MGv8mv330tHe8D2LSP8+df+lP7Rg/R1DaJMiy2vx+WZ2ez6k0/8IDv18YfnzPLSkirlirS1tkEc46wH8XjxeCXEFY94j3EWZ2JSTjOfy3H77bfR0dZD9toLTM1fpOXHY6x/bZIf/8sPeOirD9O7tR0jjpdebjh54tnnTszOzJyfX8yeW1xcWHr99VcryVSCYrGEKRRLUq5WN0W6oLQC71FaEfkIYwQVORweFwveR5gwIG2SOGcp5PNohPXvT8I2xda5bnL5dYJEPyjhwsUP/hDUhPeOjY0clUqJIDBordBaYSJbpRZFAFhncXG8+TcUrLVUqxFRFOOcx+OJHTQkM0ycPUfL1h4uzkzzjUe+zbsvv4YkNYO/NMbk2XMM7t7NxMQZ29rcvIj3XLkS31DfIvKZKBWluH6fNElIQxiGWGuJ45ggGYKAUnKdJJRJsby8TMXG7O7bRSqT5sixo7z21huUygUyjQ18+MEkL77wwsW5uexcGIQsLS2Sy60CEEUR3nu895hCLn8DjXWWUqlELpcjjmNEhEKuQKVSJrIWFzu8jwFFKt3A2toKx245ShgGvPjKf9Da2sTIyCANqTQfTE7aI0eOfPl3v/J7/7MVE6FQyGOtrQN46KGvJFZX68gaGxspFIo4F2GMwQQB6XSNKLKI1rgophJVcJsfb+vbzrVr0zQ3NjE6MkAutxWjNesb6/HNR49+s1DIT9R3Nm40oNfDcOHCP9QBPfHEE52nTp169ZYjRwfzubxGeVFKS2ytVKpVbGTBQ6lSxsYWnMM5X++g4gjn6osGWhMkEiTCRGVwePDN0bHRv49tnI3j+HIqlVrz1FW1MYYwDGlpaWF8fBzp6uoyDz38cIez8eHTp9/ZeW1mZqCQz2+LarU2B+nYxaEgOo5jtenNZr/ovYh4rXVstLZ4V1UmyLW2tMwEYfhJ9tPsVKlcOq+UWq5UKsX/szvu3bYjfP7557p7e3srb508GU5OTmamp6cbs9lsx/LySls+n2uslCsNNrYJ55xxzmkQH8c2NsZEqWS61NbeWtBWrzvxK80dLRvDQ0OV3f27q88++8zSLUePFvWmxpPPEmFTOyr+C6xPNMD6P8TnAAAAAElFTkSuQmCC) /*Images/Actions/photo.png*/;
}
}
}
}
#DeviceDetailTab-Jobs {
#DeviceDetailTab-JobsContainer {
padding-top: 24px;
.dataTables_filter {
opacity: 1;
}
div.jobTable {
margin: -1px;
border: 1px solid #ddd;
}
}
}
File diff suppressed because one or more lines are too long
+6 -3
View File
@@ -654,10 +654,12 @@ span.icon {
cursor: pointer;
cursor: default;
}
span.icon.JobStatusClosed {
span.icon.JobStatusClosed,
span.icon.DeviceStatusDecommissioned {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACg0lEQVQ4y3VTTWsaURR9M35EDWqMxhBoUIrFD0h+QIuIWLPrrkhWiuAiuHCRIsmuaaEEau0yUFDX/oIuQjZBLBbsQhtSqEiLIFqDiVFj/RjHnvdoili9MMzMnXvPOXPufRyZH3KNRuMwGAyboijy19fX1Xa7/RX5wWwhN/u+tbW1HwwGw06n86Fer2fJZrNJstlsJZVKfSgWi2+REv4DkEgkBjSmo9GoB+zk9vZ2LJfLJRzHkeFwKOp0Oh45Eo/HPyUSieeCINSmAWSBQODjwcHB01arNVpaWpLRRlbw9z6ZTMhgMBAAJI3FYp+TyaQb6d/s6/b29v7x8XG83++PZAhaPN14HzzPk/F4LIBAenh4eFQoFF5xSMojkch3h8NhAgBrvG+eF/QbAAi8qJ+cnDziIMkWDoe/3d3diSDn4QVjWhSYChmNRiI84NPp9GPOYrF43G73GXUappHl5WUilUrnNkM+9YHdaS0ms8vZbDaP1Wo9q9VqRKFQkNXVVQIlcwHATKCUqaC/Uq1Wdzmz2bzp9Xor+Xx+AukcBVikALLvAUS1Ws1XKpUn1AOJ3+/vnJ6eKldWVphBVB71YXoSlBX7QKjRdB+wcL9yuZyFVezs7LxwuVzvMpmMCJm8Uqkk9KJKKAj9Z9rY7XYpkADVUsh/DdKXDGBtbY3b29urgn2jXC6LaOQhkahUKqaEGocFI71ejy0SgPIgc5VKpd6/gZtMJnkoFPppNBo3rq6uCA7SRKvV0j2hkicwmT03Go0v5+fnz7AHtXmHifh8vihMPbLb7SoAsNzNzQ25vLxsg/U9tu/NxcWFsOg0soBBkvX19Qc4jRaw8p1Op1Kv139gUsPZ2j85BjJj8dYkIwAAAABJRU5ErkJggg==) /*Images/Status/jobStatus-Closed.png*/;
}
span.icon.JobStatusOpen {
span.icon.JobStatusOpen,
span.icon.DeviceStatusActive {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACs0lEQVQ4y4WTXUiTURjHJ9Wi6PKc9z3vtnebm9vcNNM0v2fldKI2tS7SyqRMceRXS8qlhjgpUjQ0KlAsow+yboq6iKwb+wCjvOkqLxKVsC686UIL5/bvrMIwZj3w48Dz/5/nOTycR6EIE4QQpWgm8YZM2WXI0BSLFpLEcxsV/wtuirDtiWyqfXLw48BCF+5jEPcwgMvfOuEeLZ2xuSJbuGd9+MuMkLze5Ofn4cElnEM32pb74EM/OtGL9sANXOFZD/L6k18TiUh/d96Q3RX/rBlH4V4sW6pfrkBj4AjqgxWoRTnqcBjHg4dQ832//wyqsLtn2zihZNNKAWuR9mT5fDaKpuxLrtksuGY4/CyczUTBbMYKrk92FE/v9JfNO2Apkdt/XqYiVdpvGqcTJnRIHItC4gsTxxyWpJdm7HhlQeKEESnX9Z+pRLcoVFYxOuWhBuYhFjAMizDcYjDc/gdcNw2zwNZhBk2CmKaI3KV2JF5VQe8VoG6jUF+gUPWsQRfXfRS6Dgprr4jIHFaqMORqHNu9euhKBbByCuYhEJvDwzwUUjWFzDHX8QL5vIAqnckZQ/wF+4SgtJcbqwgEd3hCmnSAQC6jgZgGCXKOmK4g0WSdfUS9yJxcLOPGCgJazanhuH9T8ysX0lTcE/Im+DRfhBQ+xFDE1mmb4kYF6OtpgB3jxjre7TSnlZtbBai8IlijALGSQFNJ/XF9DNG16o4/HymWROQ9ss2ljQkwdgsBmQ9MP8gQdUcDy10dTNe00Pbwqfuo3zggIKlf+5Zm0c2rfiNNoUrnU9ucc0oN+QFB+rg1mP8hFfmTach4ExsURwhMjwlSh7XvWIEgrblQMS2GU65J68IJFOIiGjiNqA+4UPg+9mtMp9xOnGss06rdyKPrpEpRJ3tVDt1ZlivV8oUuocpw3h+OzGWzs/zxOgAAAABJRU5ErkJggg==) /*Images/Status/jobStatus-Open.png*/;
}
span.icon.JobStatusAwaitingWarrantyRepair,
@@ -667,7 +669,8 @@ span.icon.JobStatusAwaitingRepairs {
span.icon.JobStatusAwaitingDeviceReturn,
span.icon.JobStatusAwaitingUserAction,
span.icon.JobStatusAwaitingAccountingPayment,
span.icon.JobStatusAwaitingAccountingCharge {
span.icon.JobStatusAwaitingAccountingCharge,
span.icon.DeviceStatusNotEnrolled {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4y4WTWUhUYRTHRyqj6PH77r2j46hZbgxkEOM+huPW4lqkuUzuVm5M5jg5iqm51RgpWSnagKbZU6HZovWgFSklhEbkg6JS2oNhPTiaOvPv3gKpGOnAj+9wzv+cDw7niEQWjBBi7exEPPy87MJ95ZJIFydygI9tF/3PeJHVUaVjweOu+Mmlz3XASgvwoxnLc5Xovxc7Ex7kWMxrtlos5jhC6nXyZzCqAVQBxpJ1rFcApkpgucwENPHN1Gi4KH8lFhPxvz9vq9N4DGApBca5uNX1ryqYFpNhXlQB3xJ5kng/ASvzJ9awnA69bt8wpWTHRoMIpfTcwlggpkb9V2fHFZgZU0B4Z8f9MDvmu8Gn9/6YfhewtvBBiahgu7JfxSxLrdtrnaZHB+wx2LsHQw/3YqjP2SIveF4+csHocyfcrnGYF4vpLpGbM+v6oEmC1qucyXCdRcctDndaNkfIGxp57RUO+2Wst+igj63yRqkNtHkMSjQUtRUU+hrL1F2iqNBRlBdR1OtYBPlysaLgAIlSm+mA2AgGifEU6lyCovOWUedRZKTwJFHkJLI4FMA38PHi7Fp1NogJY8zR4QTpKQSnMy0j5E4eJ4iLpqa8BDGCFKyPyNWVbOmusjWGBPKJYwSqRIKMNIKsDL4o6zeCL8SEXFwMgaCtyJV88ZTzQxQsRyUt6G9nkJtKTWkqgpyzBJoCAp2W5wIDrYZFfg6D1FMEqQl07Voxh2yVbfnGHshkxKqnyX1usI3B5VLGpOeH1dLIobNVgrsGe7TdlEJfzQkDXGvWM2jQSd8oFHTnX9vo6Umtn7a6z0312OJ+F8HwEzfzx9demBjxxsiAzNzdSdDbQWColr49HMaINz2oYvXuwok+tyVMHQEW8njyYZoMx1iv7HtloV1ZSMgmx/SnhYaSLanJrL220EZZquGCs8+wLpFRxNqS9ifnTKmvqTT0WwAAAABJRU5ErkJggg==) /*Images/Status/jobStatus-User.png*/;
}
span.icon.JobStatusAwaitingInsuranceProcessing {
+3 -3
View File
@@ -716,12 +716,12 @@ span.icon
.icon16;
cursor: default;
&.JobStatusClosed
&.JobStatusClosed, &.DeviceStatusDecommissioned
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACg0lEQVQ4y3VTTWsaURR9M35EDWqMxhBoUIrFD0h+QIuIWLPrrkhWiuAiuHCRIsmuaaEEau0yUFDX/oIuQjZBLBbsQhtSqEiLIFqDiVFj/RjHnvdoili9MMzMnXvPOXPufRyZH3KNRuMwGAyboijy19fX1Xa7/RX5wWwhN/u+tbW1HwwGw06n86Fer2fJZrNJstlsJZVKfSgWi2+REv4DkEgkBjSmo9GoB+zk9vZ2LJfLJRzHkeFwKOp0Oh45Eo/HPyUSieeCINSmAWSBQODjwcHB01arNVpaWpLRRlbw9z6ZTMhgMBAAJI3FYp+TyaQb6d/s6/b29v7x8XG83++PZAhaPN14HzzPk/F4LIBAenh4eFQoFF5xSMojkch3h8NhAgBrvG+eF/QbAAi8qJ+cnDziIMkWDoe/3d3diSDn4QVjWhSYChmNRiI84NPp9GPOYrF43G73GXUappHl5WUilUrnNkM+9YHdaS0ms8vZbDaP1Wo9q9VqRKFQkNXVVQIlcwHATKCUqaC/Uq1Wdzmz2bzp9Xor+Xx+AukcBVikALLvAUS1Ws1XKpUn1AOJ3+/vnJ6eKldWVphBVB71YXoSlBX7QKjRdB+wcL9yuZyFVezs7LxwuVzvMpmMCJm8Uqkk9KJKKAj9Z9rY7XYpkADVUsh/DdKXDGBtbY3b29urgn2jXC6LaOQhkahUKqaEGocFI71ejy0SgPIgc5VKpd6/gZtMJnkoFPppNBo3rq6uCA7SRKvV0j2hkicwmT03Go0v5+fnz7AHtXmHifh8vihMPbLb7SoAsNzNzQ25vLxsg/U9tu/NxcWFsOg0soBBkvX19Qc4jRaw8p1Op1Kv139gUsPZ2j85BjJj8dYkIwAAAABJRU5ErkJggg==) /*Images/Status/jobStatus-Closed.png*/;
}
&.JobStatusOpen
&.JobStatusOpen, &.DeviceStatusActive
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACs0lEQVQ4y4WTXUiTURjHJ9Wi6PKc9z3vtnebm9vcNNM0v2fldKI2tS7SyqRMceRXS8qlhjgpUjQ0KlAsow+yboq6iKwb+wCjvOkqLxKVsC686UIL5/bvrMIwZj3w48Dz/5/nOTycR6EIE4QQpWgm8YZM2WXI0BSLFpLEcxsV/wtuirDtiWyqfXLw48BCF+5jEPcwgMvfOuEeLZ2xuSJbuGd9+MuMkLze5Ofn4cElnEM32pb74EM/OtGL9sANXOFZD/L6k18TiUh/d96Q3RX/rBlH4V4sW6pfrkBj4AjqgxWoRTnqcBjHg4dQ832//wyqsLtn2zihZNNKAWuR9mT5fDaKpuxLrtksuGY4/CyczUTBbMYKrk92FE/v9JfNO2Apkdt/XqYiVdpvGqcTJnRIHItC4gsTxxyWpJdm7HhlQeKEESnX9Z+pRLcoVFYxOuWhBuYhFjAMizDcYjDc/gdcNw2zwNZhBk2CmKaI3KV2JF5VQe8VoG6jUF+gUPWsQRfXfRS6Dgprr4jIHFaqMORqHNu9euhKBbByCuYhEJvDwzwUUjWFzDHX8QL5vIAqnckZQ/wF+4SgtJcbqwgEd3hCmnSAQC6jgZgGCXKOmK4g0WSdfUS9yJxcLOPGCgJazanhuH9T8ysX0lTcE/Im+DRfhBQ+xFDE1mmb4kYF6OtpgB3jxjre7TSnlZtbBai8IlijALGSQFNJ/XF9DNG16o4/HymWROQ9ss2ljQkwdgsBmQ9MP8gQdUcDy10dTNe00Pbwqfuo3zggIKlf+5Zm0c2rfiNNoUrnU9ucc0oN+QFB+rg1mP8hFfmTach4ExsURwhMjwlSh7XvWIEgrblQMS2GU65J68IJFOIiGjiNqA+4UPg+9mtMp9xOnGss06rdyKPrpEpRJ3tVDt1ZlivV8oUuocpw3h+OzGWzs/zxOgAAAABJRU5ErkJggg==) /*Images/Status/jobStatus-Open.png*/;
}
@@ -731,7 +731,7 @@ span.icon
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACwklEQVQ4y4WTX0jTURTHJ5pR+Hjv7/ebzqlZ6kzJhbj8N6dzmqb5J3NWOtJmav7LTBNTbNPAlVY+FGyYk0ryJfr3YJk+WAlGZlQECWkqYT340oMW6vbtmtE/Zh74cC7nfM+53HvPFYkcGCHElXj7hXjKo1Il8sg04uMfymIbResZEzn5qFKqD1r6Jkwv52GZAczTQPPYV2gt/dM+qtR6pnFxXMwJJKy6faDqDXB2HGgYw7LxLStmNL2C7fIHYCUXVtMxTHix+N+dN4RUmh7ljwI5fQuLuoFlHB60QTdoR+4gkMc4NGBH9oNvS/oxYEdl2wihdNOvBtLYvSfi7s4h2jq5qLTOQGmdxoqP6ppB5B9Ed39ETPfUkvrWHDxj05t+FFOOd/VtvDbl1foCWw1D2GZ8DD/DGjQ/gX/LU/gyrXdt1yfKi91EvK8sQGK4A6G408YftTJ/nXHjP7B8idUmHLeCl8nDRR6hKrV71RVwGXWgaQ2gWa2g+9sck2UCzTSytQG8vh2CIl4rkig0am9dHTiVFjQyFySxCiTplENoQhVobCGophB8RhmEiCStSNge4ene0AlOmWknigyQGD2IqtgxK7moA6DKHJs4uwJ8aHyEiEgDnD1aeheIPAEkMoehA1EWMnERo/gnRauxlVwU0zCtRG/8TP0VbqvPuK+smjvTD5pSbiOqIyBxZSC7a0H2nAbH4JPZETWVrEkBaFzBknDsEjzSSw2/B8k7yCnw/L1Z7uIQuLxzNprTBiHfAklJD7xKb0KqvwqBxdgFLnGFZkjLO57TQOXmv6aR+ilcAy88nPXonQQpvQ2ZacS+y/wO4eZxBJme2Ul+L8jJ+5DWWUe5ncniNT/UFm19jaxnfH4PG+uKCaDyPZA6bENQ1+svnrrmJhKc4LL+rwxOdOaVBV7uKXVqIbNRw6tL/Yk83dWR9jsKtpCP82kfBAAAAABJRU5ErkJggg==) /*Images/Status/jobStatus-Repairs.png*/;
}
&.JobStatusAwaitingDeviceReturn, &.JobStatusAwaitingUserAction, &.JobStatusAwaitingAccountingPayment, &.JobStatusAwaitingAccountingCharge
&.JobStatusAwaitingDeviceReturn, &.JobStatusAwaitingUserAction, &.JobStatusAwaitingAccountingPayment, &.JobStatusAwaitingAccountingCharge, &.DeviceStatusNotEnrolled
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4y4WTWUhUYRTHRyqj6PH77r2j46hZbgxkEOM+huPW4lqkuUzuVm5M5jg5iqm51RgpWSnagKbZU6HZovWgFSklhEbkg6JS2oNhPTiaOvPv3gKpGOnAj+9wzv+cDw7niEQWjBBi7exEPPy87MJ95ZJIFydygI9tF/3PeJHVUaVjweOu+Mmlz3XASgvwoxnLc5Xovxc7Ex7kWMxrtlos5jhC6nXyZzCqAVQBxpJ1rFcApkpgucwENPHN1Gi4KH8lFhPxvz9vq9N4DGApBca5uNX1ryqYFpNhXlQB3xJ5kng/ASvzJ9awnA69bt8wpWTHRoMIpfTcwlggpkb9V2fHFZgZU0B4Z8f9MDvmu8Gn9/6YfhewtvBBiahgu7JfxSxLrdtrnaZHB+wx2LsHQw/3YqjP2SIveF4+csHocyfcrnGYF4vpLpGbM+v6oEmC1qucyXCdRcctDndaNkfIGxp57RUO+2Wst+igj63yRqkNtHkMSjQUtRUU+hrL1F2iqNBRlBdR1OtYBPlysaLgAIlSm+mA2AgGifEU6lyCovOWUedRZKTwJFHkJLI4FMA38PHi7Fp1NogJY8zR4QTpKQSnMy0j5E4eJ4iLpqa8BDGCFKyPyNWVbOmusjWGBPKJYwSqRIKMNIKsDL4o6zeCL8SEXFwMgaCtyJV88ZTzQxQsRyUt6G9nkJtKTWkqgpyzBJoCAp2W5wIDrYZFfg6D1FMEqQl07Voxh2yVbfnGHshkxKqnyX1usI3B5VLGpOeH1dLIobNVgrsGe7TdlEJfzQkDXGvWM2jQSd8oFHTnX9vo6Umtn7a6z0312OJ+F8HwEzfzx9demBjxxsiAzNzdSdDbQWColr49HMaINz2oYvXuwok+tyVMHQEW8njyYZoMx1iv7HtloV1ZSMgmx/SnhYaSLanJrL220EZZquGCs8+wLpFRxNqS9ifnTKmvqTT0WwAAAABJRU5ErkJggg==) /*Images/Status/jobStatus-User.png*/;
}
File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 B

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 B

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 4.3 KiB

File diff suppressed because one or more lines are too long
+17 -2
View File
@@ -11,6 +11,7 @@ using System.Data.Objects.SqlClient;
using Disco.Web.Extensions;
using Disco.Services.Plugins.Features.UIExtension;
using Disco.Models.UI.Device;
using Disco.Services.Plugins;
namespace Disco.Web.Controllers
@@ -109,14 +110,28 @@ namespace Disco.Web.Controllers
m.DeviceBatches = dbContext.DeviceBatches.ToList();
m.Jobs = new Disco.Models.BI.Job.JobTableModel() { ShowStatus = true, ShowDevice = false, IsSmallTable = true, HideClosedJobs = true };
m.Jobs.Fill(dbContext, BI.JobBI.Searching.BuildJobTableModel(dbContext).Where(j => j.DeviceSerialNumber == m.Device.SerialNumber));
m.Jobs = new Disco.Models.BI.Job.JobTableModel()
{
ShowStatus = true,
ShowDevice = false,
IsSmallTable = false,
HideClosedJobs = true,
EnablePaging = false
};
m.Jobs.Fill(dbContext, BI.JobBI.Searching.BuildJobTableModel(dbContext).Where(j => j.DeviceSerialNumber == m.Device.SerialNumber).OrderByDescending(j => j.Id));
m.Certificates = dbContext.DeviceCertificates.Where(c => c.DeviceSerialNumber == m.Device.SerialNumber).ToList();
//m.AttachmentTypes = dbContext.AttachmentTypes.Where(at => at.Scope == AttachmentType.AttachmentTypeScopes.Device).ToList();
m.DocumentTemplates = m.Device.AvailableDocumentTemplates(dbContext, DiscoApplication.CurrentUser, DateTime.Now);
m.DeviceProfileDefaultOrganisationAddress = m.Device.DeviceProfile.DefaultOrganisationAddressDetails(dbContext);
PluginFeatureManifest deviceProfileCertificateProvider;
if (Disco.Services.Plugins.Plugins.TryGetPluginFeature(m.Device.DeviceProfile.CertificateProviderId, out deviceProfileCertificateProvider))
m.DeviceProfileCertificateProvider = deviceProfileCertificateProvider;
// UI Extensions
UIExtensions.ExecuteExtensions<DeviceShowModel>(this.ControllerContext, m);
+42 -30
View File
@@ -528,41 +528,46 @@
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\DeviceParts\AssignmentHistory.generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>AssignmentHistory.cshtml</DependentUpon>
</Compile>
<Compile Include="Views\Device\DeviceParts\Certificates.generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Certificates.cshtml</DependentUpon>
</Compile>
<Compile Include="Views\Device\DeviceParts\Jobs.generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Jobs.cshtml</DependentUpon>
</Compile>
<Compile Include="Views\Device\DeviceParts\Resources.generated.cs">
<DependentUpon>Resources.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\DeviceParts\_Subject.generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>_Subject.cshtml</DependentUpon>
</Compile>
<Compile Include="Views\Device\Index.generated.cs">
<DependentUpon>Index.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\Show.generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Show.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\_CertificateTable.generated.cs">
<DependentUpon>_CertificateTable.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\_DeviceActions.generated.cs">
<DependentUpon>_DeviceActions.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\_DeviceTable.generated.cs">
<DependentUpon>_DeviceTable.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\_DeviceUserAssignmentHistoryTable.generated.cs">
<DependentUpon>_DeviceUserAssignmentHistoryTable.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Views\Device\_ViewStart.generated.cs">
<DependentUpon>_ViewStart.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
@@ -1388,34 +1393,42 @@
<Generator>RazorGenerator</Generator>
<LastGenOutput>AddOffline.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\DeviceParts\AssignmentHistory.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>AssignmentHistory.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\DeviceParts\Certificates.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>Certificates.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\DeviceParts\Jobs.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>Jobs.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\DeviceParts\Resources.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>Resources.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\DeviceParts\_Subject.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>_Subject.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\Index.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>Index.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\ARCHIVE_Show.cshtml" />
<None Include="Views\Device\ARCHIVE_CertificateTable.cshtml" />
<None Include="Views\Device\ARCHIVE_DeviceActions.cshtml" />
<None Include="Views\Device\Show.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>Show.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\_CertificateTable.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>_CertificateTable.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\_DeviceActions.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>_DeviceActions.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\_DeviceTable.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>_DeviceTable.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\_DeviceUserAssignmentHistoryTable.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>_DeviceUserAssignmentHistoryTable.generated.cs</LastGenOutput>
</None>
<None Include="Views\Device\ARCHIVE_DeviceUserAssignmentHistoryTable.cshtml" />
<None Include="Views\Device\_ViewStart.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>_ViewStart.generated.cs</LastGenOutput>
@@ -1809,7 +1822,6 @@
<ItemGroup>
<Folder Include="Areas\API\Models\WirelessCertificate\" />
<Folder Include="Areas\Services\Models\" />
<Folder Include="Views\Home\" />
</ItemGroup>
<ItemGroup>
<Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
+5 -1
View File
@@ -7,6 +7,7 @@ using Disco.BI;
using Disco.BI.Extensions;
using Disco.Models.UI.Device;
using Disco.Web.Extensions;
using Disco.Services.Plugins;
namespace Disco.Web.Models.Device
{
@@ -15,6 +16,9 @@ namespace Disco.Web.Models.Device
public Disco.Models.Repository.Device Device { get; set; }
public List<Disco.Models.Repository.DeviceProfile> DeviceProfiles { get; set; }
public Disco.Models.BI.Config.OrganisationAddress DeviceProfileDefaultOrganisationAddress { get; set; }
public PluginFeatureManifest DeviceProfileCertificateProvider { get; set; }
public List<Disco.Models.Repository.DeviceBatch> DeviceBatches { get; set; }
public Disco.Models.BI.Job.JobTableModel Jobs { get; set; }
public List<Disco.Models.Repository.DeviceCertificate> Certificates { get; set; }
@@ -28,7 +32,7 @@ namespace Disco.Web.Models.Device
get
{
var list = new List<SelectListItem>();
list.Add(new SelectListItem() { Selected = true, Value = string.Empty, Text = "Select a Document to Generate" });
list.Add(new SelectListItem() { Selected = true, Value = string.Empty, Text = "Generate Document" });
list.AddRange(this.DocumentTemplates.ToSelectListItems());
return list;
}
+2 -2
View File
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.2.0606.1909")]
[assembly: AssemblyFileVersion("1.2.0606.1909")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
+16 -38
View File
@@ -262,38 +262,6 @@ namespace Links
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
public static readonly string highcharts_src_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/highcharts.src.min.js") ? Url("highcharts.src.min.js") : Url("highcharts.src.js");
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public static class modules {
private const string URLPATH = "~/ClientSource/Scripts/Modules/Highcharts/modules";
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
public static readonly string canvas_tools_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/canvas-tools.min.js") ? Url("canvas-tools.min.js") : Url("canvas-tools.js");
public static readonly string canvas_tools_src_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/canvas-tools.src.min.js") ? Url("canvas-tools.src.min.js") : Url("canvas-tools.src.js");
public static readonly string exporting_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/exporting.min.js") ? Url("exporting.min.js") : Url("exporting.js");
public static readonly string exporting_src_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/exporting.src.min.js") ? Url("exporting.src.min.js") : Url("exporting.src.js");
}
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public static class themes {
private const string URLPATH = "~/ClientSource/Scripts/Modules/Highcharts/themes";
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
public static readonly string dark_blue_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/dark-blue.min.js") ? Url("dark-blue.min.js") : Url("dark-blue.js");
public static readonly string dark_green_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/dark-green.min.js") ? Url("dark-green.min.js") : Url("dark-green.js");
public static readonly string gray_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/gray.min.js") ? Url("gray.min.js") : Url("gray.js");
public static readonly string grid_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/grid.min.js") ? Url("grid.min.js") : Url("grid.js");
public static readonly string skies_js = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/skies.min.js") ? Url("skies.min.js") : Url("skies.js");
}
}
public static readonly string Highcharts_js_bundle = Url("Highcharts.js.bundle");
@@ -1177,21 +1145,23 @@ namespace Disco.Web.Controllers
public _ViewNamesClass ViewNames { get { return s_ViewNames; } }
public class _ViewNamesClass
{
public readonly string _CertificateTable = "_CertificateTable";
public readonly string _DeviceActions = "_DeviceActions";
public readonly string _DeviceTable = "_DeviceTable";
public readonly string _DeviceUserAssignmentHistoryTable = "_DeviceUserAssignmentHistoryTable";
public readonly string _ViewStart = "_ViewStart";
public readonly string AddOffline = "AddOffline";
public readonly string ARCHIVE_CertificateTable = "ARCHIVE_CertificateTable";
public readonly string ARCHIVE_DeviceActions = "ARCHIVE_DeviceActions";
public readonly string ARCHIVE_DeviceUserAssignmentHistoryTable = "ARCHIVE_DeviceUserAssignmentHistoryTable";
public readonly string ARCHIVE_Show = "ARCHIVE_Show";
public readonly string Index = "Index";
public readonly string Show = "Show";
}
public readonly string _CertificateTable = "~/Views/Device/_CertificateTable.cshtml";
public readonly string _DeviceActions = "~/Views/Device/_DeviceActions.cshtml";
public readonly string _DeviceTable = "~/Views/Device/_DeviceTable.cshtml";
public readonly string _DeviceUserAssignmentHistoryTable = "~/Views/Device/_DeviceUserAssignmentHistoryTable.cshtml";
public readonly string _ViewStart = "~/Views/Device/_ViewStart.cshtml";
public readonly string AddOffline = "~/Views/Device/AddOffline.cshtml";
public readonly string ARCHIVE_CertificateTable = "~/Views/Device/ARCHIVE_CertificateTable.cshtml";
public readonly string ARCHIVE_DeviceActions = "~/Views/Device/ARCHIVE_DeviceActions.cshtml";
public readonly string ARCHIVE_DeviceUserAssignmentHistoryTable = "~/Views/Device/ARCHIVE_DeviceUserAssignmentHistoryTable.cshtml";
public readonly string ARCHIVE_Show = "~/Views/Device/ARCHIVE_Show.cshtml";
public readonly string Index = "~/Views/Device/Index.cshtml";
public readonly string Show = "~/Views/Device/Show.cshtml";
static readonly _DevicePartsClass s_DeviceParts = new _DevicePartsClass();
@@ -1203,8 +1173,16 @@ namespace Disco.Web.Controllers
public _ViewNamesClass ViewNames { get { return s_ViewNames; } }
public class _ViewNamesClass
{
public readonly string _Subject = "_Subject";
public readonly string AssignmentHistory = "AssignmentHistory";
public readonly string Certificates = "Certificates";
public readonly string Jobs = "Jobs";
public readonly string Resources = "Resources";
}
public readonly string _Subject = "~/Views/Device/DeviceParts/_Subject.cshtml";
public readonly string AssignmentHistory = "~/Views/Device/DeviceParts/AssignmentHistory.cshtml";
public readonly string Certificates = "~/Views/Device/DeviceParts/Certificates.cshtml";
public readonly string Jobs = "~/Views/Device/DeviceParts/Jobs.cshtml";
public readonly string Resources = "~/Views/Device/DeviceParts/Resources.cshtml";
}
}
+478
View File
@@ -0,0 +1,478 @@
@model Disco.Web.Models.Device.ShowModel
@{
ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), string.Format("{0} ({1})", Model.Device.ComputerName, Model.Device.SerialNumber));
Html.BundleDeferred("~/ClientScripts/Modules/Silverlight");
}
<table class="deviceShow">
<tr>
<td class="details">
<table>
<tr>
<th class="name">
Computer Name:
</th>
<td class="value">
@if (string.IsNullOrWhiteSpace(Model.Device.ComputerName))
{
<span class="smallMessage">&lt;Unknown/Not Allocated&gt;</span>
}
else
{
@Model.Device.ComputerName
}
</td>
</tr>
<tr>
<th class="name">
Asset Number:
</th>
<td class="value">
@Html.TextBoxFor(m => m.Device.AssetNumber)
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var $ajaxSave = $('#Device_AssetNumber').next('.ajaxSave');
$('#Device_AssetNumber').watermark('Asset Number').keydown(function (e) {
$ajaxSave.show();
if (e.which == 13) {
$(this).blur();
}
}).change(function () {
var $this = $(this);
$ajaxSave.hide();
var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show();
var data = { AssetNumber: $this.val() };
$.getJSON('@(Url.Action(@MVC.API.Device.UpdateAssetNumber(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Asset Number:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
}).blur(function () {
$ajaxSave.hide();
}).focus(function () {
$(this).select();
});
});
</script>
</td>
</tr>
<tr>
<th class="name">
Location:
</th>
<td class="value">
@Html.TextBoxFor(m => m.Device.Location)
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var $ajaxSave = $('#Device_Location').next('.ajaxSave');
$('#Device_Location').watermark('Location').keydown(function (e) {
$ajaxSave.show();
if (e.which == 13) {
$(this).blur();
}
}).change(function () {
var $this = $(this);
$ajaxSave.hide();
var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show();
var data = { Location: $this.val() };
$.getJSON('@(Url.Action(@MVC.API.Device.UpdateLocation(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Location:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
}).blur(function () {
$ajaxSave.hide();
}).focus(function () {
$(this).select();
});
});
</script>
</td>
</tr>
<tr>
<th class="name">
Batch:
</th>
<td class="value">
@Html.DropDownListFor(m => m.Device.DeviceBatchId, Model.DeviceBatches.ToSelectListItems(Model.Device.DeviceBatchId))
@AjaxHelpers.AjaxLoader() <span id="deviceBatchDetails" class="icon16" title="Batch Details"></span>
<script type="text/javascript">
$(function () {
var $DeviceBatchId = $('#Device_DeviceBatchId');
var $DeviceBatchDetails = $('#deviceBatchDetails');
var $DeviceBatchSummary = $('#deviceBatchSummary');
var initUpdate = false;
var jsonDate = function (json, unknownValue) {
if (json && json.indexOf('') == 0) {
return $.datepicker.formatDate('yy-mm-dd', new Date(parseInt(json.substr(6, json.length - 8))));
} else
return unknownValue;
}
var updateDetails = function (deviceBatchId) {
$.getJSON('@(Url.Action(MVC.API.DeviceBatch.Index()))/' + deviceBatchId, function (response, result) {
if (result == 'success') {
if (response.Supplier)
$DeviceBatchSummary.find('.supplier').text(response.Supplier);
else
$DeviceBatchSummary.find('.supplier').text('Unknown');
$DeviceBatchSummary.find('.purchaseDate').text(jsonDate(response.PurchaseDate, 'Unknown'));
$DeviceBatchSummary.find('.warrantyValidUntil').text(jsonDate(response.WarrantyValidUntil, 'Unknown'));
if (response.InsuranceSupplier)
$DeviceBatchSummary.find('.insuranceSupplier').text(response.InsuranceSupplier);
else
$DeviceBatchSummary.find('.insuranceSupplier').text('Unknown');
$DeviceBatchSummary.find('.insuredUntil').text(jsonDate(response.InsuredUntil, 'Unknown'));
if (initUpdate){
$DeviceBatchSummary.show();
$DeviceBatchDetails.show();
initUpdate = false;
}else{
$DeviceBatchSummary.slideDown('fast');
$DeviceBatchDetails.fadeIn();
}
} else {
alert('Unable to load Device Batch details:\n' + response);
}
});
};
$DeviceBatchDetails.click(function () {
window.location.href = '@(Url.Action(MVC.Config.DeviceBatch.Index(null)))/' + $DeviceBatchId.val();
});
$DeviceBatchId.change(function () {
var $this = $(this);
var $ajaxLoading = $this.next('.ajaxLoading').show();
$DeviceBatchSummary.hide();
$DeviceBatchDetails.hide();
var data = { DeviceBatchId: $this.val() };
$.getJSON('@(Url.Action(MVC.API.Device.UpdateDeviceBatchId(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Device Batch:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if ($DeviceBatchId.val())
updateDetails($DeviceBatchId.val());
}
});
});
$DeviceBatchSummary.hide();
if ($DeviceBatchId.val()){
initUpdate = true;
updateDetails($DeviceBatchId.val());
}
});
</script>
<div id="deviceBatchSummary">
<table class="sub">
<tr>
<th style="width: 50px">
<strong>Purchased:</strong>
</th>
<td>
Supplier: <span class="supplier"></span>
<br />
On: <span class="purchaseDate"></span>
</td>
<th style="width: 50px">
<strong>Warranty:</strong>
</th>
<td>
Valid Until: <span class="warrantyValidUntil"></span>
</td>
<th style="width: 50px">
<strong>Insurance:</strong>
</th>
<td>
Supplier: <span class="insuranceSupplier"></span>
<br />
Until: <span class="insuredUntil"></span>
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<th class="name">
Profile:
</th>
<td class="value">
@if (Model.Device.DecommissionedDate.HasValue)
{
@Model.Device.DeviceProfile.ToString()
}
else
{
@Html.DropDownListFor(m => m.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.Device.DeviceProfile))
@AjaxHelpers.AjaxLoader()<span id="deviceProfileDetails" class="icon16" title="Profile Details"></span>
<script type="text/javascript">
$(function () {
$('#Device_DeviceProfileId').change(function () {
var $this = $(this);
var $ajaxLoading = $this.next('.ajaxLoading').show();
var data = { DeviceProfileId: $this.val() };
$.getJSON('@(Url.Action(MVC.API.Device.UpdateDeviceProfileId(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Device Profile:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
});
$('#deviceProfileDetails').click(function(){
window.location.href = '@(Url.Action(MVC.Config.DeviceProfile.Index(null)))/' + $('#Device_DeviceProfileId').val();
});
});
</script>
}
</td>
</tr>
<tr>
<th class="name">
Created:
</th>
<td class="value">
@CommonHelpers.FriendlyDate(Model.Device.CreatedDate)
</td>
</tr>
<tr>
<th class="name">
Enrolment:
</th>
<td class="value">
First:
@CommonHelpers.FriendlyDate(Model.Device.EnrolledDate)
@if (Model.Device.AllowUnauthenticatedEnrol)
{
<a class="unlocked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "false", true))" title="Unauthenticated Enrolment is Allowed">
&nbsp;</a>
}
else
{
<a class="locked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "true", true))" title="Unauthenticated Enrolment is Blocked">
&nbsp;</a>
}
<br />
Last:
@CommonHelpers.FriendlyDate(Model.Device.LastEnrolDate)
</td>
</tr>
<tr>
<th class="name">
Decommissioned:
</th>
<td class="value">
@CommonHelpers.FriendlyDate(Model.Device.DecommissionedDate)
</td>
</tr>
<tr>
<th class="name">
Last Network Logon:
</th>
<td class="value">
<span id="lastNetworkLogonDate" class="nowrap">@CommonHelpers.FriendlyDate(Model.Device.LastNetworkLogonDate)</span>
@if (!string.IsNullOrEmpty(Model.Device.ComputerName))
{
<script type="text/javascript">
$(function () {
var span = $('#lastNetworkLogonDate');
$('<span>').addClass('ajaxHelperIcon ajaxLoading ajaxShowInitially').attr('title', 'Loading...').appendTo(span);
$.getJSON('@(Url.Action(MVC.API.Device.LastNetworkLogonDate(Model.Device.SerialNumber)))', function (response, result) {
if (result != 'success') {
alert('Unable to retrieve latest network logon date:\n' + response);
$('<span>').addClass('smallMessage').text('[may not be current]').appendTo(span);
} else {
span.find('.ajaxLoading').hide();
span.attr('title', response.Formatted).text(response.Friendly);
}
});
});
</script>
}
</td>
</tr>
@if (!Model.Device.DecommissionedDate.HasValue)
{
<tr>
<th class="name">
Assigned User:
</th>
<td class="value">
@Html.TextBoxFor(m => m.Device.AssignedUser, new { userId = Model.Device.AssignedUserId })
@AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxLoader()
<br />
<a href="#" id="Device_AssignedUser_History_Trigger" class="smallLink">Show Assignment
History (<span id="Device_AssignedUser_History_RecordCount"></span>)</a> <span id="Device_AssignedUser_History_None"
class="smallMessage" style="display: none">No Assignment History Available</span>
<div id="dialogRemoveAssignedUser" title="Remove this Device Assignment?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure?</p>
</div>
<script type="text/javascript">
$(function () {
// Common Objects
var $assignedUser = $('#Device_AssignedUser');
var $ajaxLoading = $assignedUser.nextAll('.ajaxLoading').first();
var $ajaxRemove = $assignedUser.nextAll('.ajaxRemove').first();
// Assign User
$assignedUser
.watermark('No Assigned User')
.focus(function () { $assignedUser.select() })
.autocomplete({
source: '@(Url.Action(MVC.API.User.UpstreamUsers()))',
minLength: 2,
focus: function (e, ui) {
$assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
return false;
},
select: function (e, ui) {
updateAssignedUser(ui.item.Id);
$assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
return false;
}
})
.data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul);
};
var $dialogRemoveAssignedUser = $('#dialogRemoveAssignedUser');
$dialogRemoveAssignedUser.dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
"Remove": function () {
updateAssignedUser('');
$assignedUser.val('');
$dialogRemoveAssignedUser.dialog("close");
},
"Cancel": function () {
$dialogRemoveAssignedUser.dialog("close");
}
}
});
// Un-Assign User
if ($assignedUser.val() != '')
$ajaxRemove.show();
$ajaxRemove.click(function () {
$dialogRemoveAssignedUser.dialog('open');
return false;
});
// History
var deviceUserAssignmentCount = @(Model.Device.DeviceUserAssignments.Count);
if (deviceUserAssignmentCount > 0) {
$('#Device_AssignedUser_History_Trigger').click(function () {
$(this).hide();
$('#Device_AssignedUser_History_Host').show();
$('#Device_AssignedUser_History').slideDown('slow');
return false;
});
var recordCountText = deviceUserAssignmentCount + ' record';
if (deviceUserAssignmentCount != 1)
recordCountText += 's';
$('#Device_AssignedUser_History_RecordCount').text(recordCountText)
}
else {
$('#Device_AssignedUser_History_Trigger').hide();
$('#Device_AssignedUser_History_None').show();
};
function updateAssignedUser(userId) {
$ajaxLoading.show();
$ajaxRemove.hide();
var data = { AssignedUserId: userId };
$.getJSON('@(Url.Action(MVC.API.Device.UpdateAssignedUserId(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Assigned User:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if (userId != '')
$ajaxRemove.fadeIn('fast');
}
});
}
});
</script>
</td>
</tr>
}
<tr id="Device_AssignedUser_History_Host" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")">
<td colspan="2">
<div id="Device_AssignedUser_History" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")">
<h2>
Assigned User History</h2>
@Html.Partial(MVC.Device.Views._DeviceUserAssignmentHistoryTable, Model.Device)
</div>
</td>
</tr>
<tr>
<th class="name">
Generate Documents:
</th>
<td class="value" colspan="3">
@Html.DropDownList("DocumentTemplates", Model.DocumentTemplatesSelectListItems)
<script type="text/javascript">
$(function () {
var generatePdfUrl = '@Url.Action(MVC.API.Device.GeneratePdf(Model.Device.SerialNumber, null))?DocumentTemplateId=';
var $documentTemplates = $('#DocumentTemplates');
$documentTemplates.change(function () {
var v = $documentTemplates.val();
if (v) {
window.location.href = generatePdfUrl + v;
$documentTemplates.val('');
}
});
});
</script>
</td>
</tr>
</table>
</td>
<td class="model">
<table>
<tr>
<td class="subtleHighlight">
<img alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.Device.DeviceModelId, Model.Device.DeviceModel.ImageHash()))" />
<h2>
<a href="@(Url.Action(MVC.Config.DeviceModel.Index(Model.Device.DeviceModelId)))">@Model.Device.DeviceModel.ToString()</a></h2>
</td>
</tr>
</table>
</td>
</tr>
</table>
<h2>
Certificates</h2>
@Html.Partial(MVC.Device.Views._CertificateTable, Model.Certificates)
<h2>
Attachments</h2>
@Html.Partial(MVC.Device.Views.DeviceParts.Resources, Model)
<h2>
Jobs</h2>
@Html.Partial(MVC.Shared.Views._JobTable, Model.Jobs)
@Html.Partial(MVC.Device.Views._DeviceActions, Model.Device)
@@ -0,0 +1,37 @@
@model Disco.Web.Models.Device.ShowModel
<div id="DeviceDetailTab-AssignmentHistory" class="DevicePart">
@if (Model.Device.DeviceUserAssignments.Count > 0)
{
<table class="genericData">
<tr>
<th>User
</th>
<th>Assigned
</th>
<th>Unassigned
</th>
</tr>
@foreach (var dua in Model.Device.DeviceUserAssignments.OrderByDescending(m => m.AssignedDate))
{
<tr>
<td>
@Html.ActionLink(dua.AssignedUser.ToString(), MVC.User.Show(dua.AssignedUserId))
</td>
<td>
@CommonHelpers.FriendlyDate(dua.AssignedDate)
</td>
<td>
@CommonHelpers.FriendlyDate(dua.UnassignedDate, "Current")
</td>
</tr>
}
</table>
}
else
{
<span class="smallMessage">No Assignment History Available</span>
}
<script>
$('#DeviceDetailTabItems').append('<li><a href="#DeviceDetailTab-AssignmentHistory">Assignment History [@(Model.Device.DeviceUserAssignments.Count)]</a></li>');
</script>
</div>
@@ -9,7 +9,7 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Views.Device
namespace Disco.Web.Views.Device.DeviceParts
{
using System;
using System.Collections.Generic;
@@ -32,29 +32,31 @@ namespace Disco.Web.Views.Device
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/_CertificateTable.cshtml")]
public partial class CertificateTable : System.Web.Mvc.WebViewPage<IEnumerable<Disco.Models.Repository.DeviceCertificate>>
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/DeviceParts/AssignmentHistory.cshtml")]
public partial class AssignmentHistory : System.Web.Mvc.WebViewPage<Disco.Web.Models.Device.ShowModel>
{
public CertificateTable()
public AssignmentHistory()
{
}
public override void Execute()
{
WriteLiteral("<div");
WriteLiteral(" class=\"genericData certificateTable\"");
WriteLiteral(" id=\"DeviceDetailTab-AssignmentHistory\"");
WriteLiteral(" class=\"DevicePart\"");
WriteLiteral(">\r\n");
#line 3 "..\..\Views\Device\_CertificateTable.cshtml"
#line 3 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
#line default
#line hidden
#line 3 "..\..\Views\Device\_CertificateTable.cshtml"
if (Model.Count() > 0)
#line 3 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
if (Model.Device.DeviceUserAssignments.Count > 0)
{
@@ -62,34 +64,21 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <table");
WriteLiteral(" class=\"genericData certificateTable\"");
WriteLiteral(" class=\"genericData\"");
WriteLiteral(@">
<tr>
<th>
Name
</th>
<th>
Enabled
</th>
<th>
Allocated
</th>
<th>
Expires
</th>
</tr>
");
WriteLiteral(">\r\n <tr>\r\n <th>User\r\n </th>\r\n " +
" <th>Assigned\r\n </th>\r\n <th>Unassigned\r\n " +
" </th>\r\n </tr>\r\n");
#line 20 "..\..\Views\Device\_CertificateTable.cshtml"
#line 14 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
#line default
#line hidden
#line 20 "..\..\Views\Device\_CertificateTable.cshtml"
foreach (var item in Model)
#line 14 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
foreach (var dua in Model.Device.DeviceUserAssignments.OrderByDescending(m => m.AssignedDate))
{
@@ -100,8 +89,8 @@ WriteLiteral(" <tr>\r\n <td>\r\n");
WriteLiteral(" ");
#line 24 "..\..\Views\Device\_CertificateTable.cshtml"
Write(Html.ActionLink(item.Name, MVC.API.DeviceCertificate.Download(item.Id)));
#line 18 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
Write(Html.ActionLink(dua.AssignedUser.ToString(), MVC.User.Show(dua.AssignedUserId)));
#line default
@@ -111,8 +100,8 @@ WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 27 "..\..\Views\Device\_CertificateTable.cshtml"
Write(item.Enabled);
#line 21 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
Write(CommonHelpers.FriendlyDate(dua.AssignedDate));
#line default
@@ -122,19 +111,8 @@ WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 30 "..\..\Views\Device\_CertificateTable.cshtml"
Write(CommonHelpers.FriendlyDate(item.AllocatedDate));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 33 "..\..\Views\Device\_CertificateTable.cshtml"
Write(CommonHelpers.FriendlyDate(item.ExpirationDate));
#line 24 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
Write(CommonHelpers.FriendlyDate(dua.UnassignedDate, "Current"));
#line default
@@ -142,7 +120,7 @@ WriteLiteral(" ");
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 36 "..\..\Views\Device\_CertificateTable.cshtml"
#line 27 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
}
@@ -151,7 +129,7 @@ WriteLiteral("\r\n </td>\r\n </tr>\r\n");
WriteLiteral(" </table>\r\n");
#line 38 "..\..\Views\Device\_CertificateTable.cshtml"
#line 29 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
}
else
{
@@ -163,16 +141,26 @@ WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">No Certificates Allocated</span>\r\n");
WriteLiteral(">No Assignment History Available</span>\r\n");
#line 42 "..\..\Views\Device\_CertificateTable.cshtml"
#line 33 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
}
#line default
#line hidden
WriteLiteral("</div>\r\n");
WriteLiteral(" <script>\r\n $(\'#DeviceDetailTabItems\').append(\'<li><a href=\"#DeviceDeta" +
"ilTab-AssignmentHistory\">Assignment History [");
#line 35 "..\..\Views\Device\DeviceParts\AssignmentHistory.cshtml"
Write(Model.Device.DeviceUserAssignments.Count);
#line default
#line hidden
WriteLiteral("]</a></li>\');\r\n </script>\r\n</div>\r\n");
}
}
@@ -0,0 +1,44 @@
@model Disco.Web.Models.Device.ShowModel
<div id="DeviceDetailTab-Certificates" class="DevicePart">
<div class="genericData certificateTable">
@if (Model.Certificates.Count() > 0)
{
<table class="genericData certificateTable">
<tr>
<th>Name
</th>
<th>Enabled
</th>
<th>Allocated
</th>
<th>Expires
</th>
</tr>
@foreach (var item in Model.Certificates)
{
<tr>
<td>
@Html.ActionLink(item.Name, MVC.API.DeviceCertificate.Download(item.Id))
</td>
<td>
@item.Enabled
</td>
<td>
@CommonHelpers.FriendlyDate(item.AllocatedDate)
</td>
<td>
@CommonHelpers.FriendlyDate(item.ExpirationDate)
</td>
</tr>
}
</table>
}
else
{
<span class="smallMessage">No Certificates Allocated</span>
}
</div>
<script>
$('#DeviceDetailTabItems').append('<li><a href="#DeviceDetailTab-Certificates">Certificates [@(Model.Certificates.Count)]</a></li>');
</script>
</div>
@@ -0,0 +1,192 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Views.Device.DeviceParts
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/DeviceParts/Certificates.cshtml")]
public partial class Certificates : System.Web.Mvc.WebViewPage<Disco.Web.Models.Device.ShowModel>
{
public Certificates()
{
}
public override void Execute()
{
WriteLiteral("<div");
WriteLiteral(" id=\"DeviceDetailTab-Certificates\"");
WriteLiteral(" class=\"DevicePart\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"genericData certificateTable\"");
WriteLiteral(">\r\n");
#line 4 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
#line default
#line hidden
#line 4 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
if (Model.Certificates.Count() > 0)
{
#line default
#line hidden
WriteLiteral(" <table");
WriteLiteral(" class=\"genericData certificateTable\"");
WriteLiteral(@">
<tr>
<th>Name
</th>
<th>Enabled
</th>
<th>Allocated
</th>
<th>Expires
</th>
</tr>
");
#line 17 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
#line default
#line hidden
#line 17 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
foreach (var item in Model.Certificates)
{
#line default
#line hidden
WriteLiteral(" <tr>\r\n <td>\r\n");
WriteLiteral(" ");
#line 21 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
Write(Html.ActionLink(item.Name, MVC.API.DeviceCertificate.Download(item.Id)));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 24 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
Write(item.Enabled);
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 27 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
Write(CommonHelpers.FriendlyDate(item.AllocatedDate));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 30 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
Write(CommonHelpers.FriendlyDate(item.ExpirationDate));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 33 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
}
#line default
#line hidden
WriteLiteral(" </table>\r\n");
#line 35 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">No Certificates Allocated</span>\r\n");
#line 39 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
}
#line default
#line hidden
WriteLiteral(" </div>\r\n <script>\r\n $(\'#DeviceDetailTabItems\').append(\'<li><a href=" +
"\"#DeviceDetailTab-Certificates\">Certificates [");
#line 42 "..\..\Views\Device\DeviceParts\Certificates.cshtml"
Write(Model.Certificates.Count);
#line default
#line hidden
WriteLiteral("]</a></li>\');\r\n </script>\r\n</div>");
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,9 @@
@model Disco.Web.Models.Device.ShowModel
<div id="DeviceDetailTab-Jobs" class="DevicePart">
<div id="DeviceDetailTab-JobsContainer">
@Html.Partial(MVC.Shared.Views._JobTable, Model.Jobs)
</div>
<script>
$('#DeviceDetailTabItems').append('<li><a href="#DeviceDetailTab-Jobs">Jobs [@(Model.Device.Jobs == null ? 0 : Model.Device.Jobs.Count)]</a></li>');
</script>
</div>
@@ -0,0 +1,79 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Views.Device.DeviceParts
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/DeviceParts/Jobs.cshtml")]
public partial class Jobs : System.Web.Mvc.WebViewPage<Disco.Web.Models.Device.ShowModel>
{
public Jobs()
{
}
public override void Execute()
{
WriteLiteral("<div");
WriteLiteral(" id=\"DeviceDetailTab-Jobs\"");
WriteLiteral(" class=\"DevicePart\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" id=\"DeviceDetailTab-JobsContainer\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 4 "..\..\Views\Device\DeviceParts\Jobs.cshtml"
Write(Html.Partial(MVC.Shared.Views._JobTable, Model.Jobs));
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n <script>\r\n $(\'#DeviceDetailTabItems\').append(\'<li><a hre" +
"f=\"#DeviceDetailTab-Jobs\">Jobs [");
#line 7 "..\..\Views\Device\DeviceParts\Jobs.cshtml"
Write(Model.Device.Jobs == null ? 0 : Model.Device.Jobs.Count);
#line default
#line hidden
WriteLiteral("]</a></li>\');\r\n </script>\r\n</div>\r\n");
}
}
}
#pragma warning restore 1591
@@ -2,7 +2,9 @@
@{
Html.BundleDeferred("~/Style/Shadowbox");
Html.BundleDeferred("~/ClientScripts/Modules/Shadowbox");
Html.BundleDeferred("~/ClientScripts/Modules/Silverlight");
}
<div id="DeviceDetailTab-Resources" class="DevicePart">
<table id="deviceShowResources">
<tr>
<td id="Attachments">
@@ -43,7 +45,8 @@
$attachmentOutput.find('span.remove').click(removeAttachment);
$('#dialogUpload').dialog({ autoOpen: false,
$('#dialogUpload').dialog({
autoOpen: false,
draggable: false,
modal: true,
resizable: false,
@@ -68,7 +71,8 @@
$('#silverlightHostUploadAttachment').get(0),
'silverlightUploadAttachment',
{ width: '840px', height: '500px', background: 'white', version: '4.0.60310.0' },
{ onLoad: function () {
{
onLoad: function () {
if (onLoadNavigation) {
silverlightUploadAttachment.content.Navigator.Navigate(onLoadNavigation);
isLoaded = true;
@@ -189,5 +193,10 @@
<div id="dialogRemoveAttachment" title="Remove this Attachment?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure?</p>
Are you sure?
</p>
</div>
<script>
$('#DeviceDetailTabItems').append('<li><a href="#DeviceDetailTab-Resources" id="DeviceDetailTab-ResourcesLink">Attachments [@(Model.Device.DeviceAttachments == null ? 0 : Model.Device.DeviceAttachments.Count)]</a></li>');
</script>
</div>
@@ -45,11 +45,18 @@ namespace Disco.Web.Views.Device.DeviceParts
Html.BundleDeferred("~/Style/Shadowbox");
Html.BundleDeferred("~/ClientScripts/Modules/Shadowbox");
Html.BundleDeferred("~/ClientScripts/Modules/Silverlight");
#line default
#line hidden
WriteLiteral("\r\n<table");
WriteLiteral("\r\n<div");
WriteLiteral(" id=\"DeviceDetailTab-Resources\"");
WriteLiteral(" class=\"DevicePart\"");
WriteLiteral(">\r\n <table");
WriteLiteral(" id=\"deviceShowResources\"");
@@ -64,13 +71,13 @@ WriteLiteral(" class=\"attachmentOutput\"");
WriteLiteral(">\r\n");
#line 10 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 12 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line default
#line hidden
#line 10 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 12 "..\..\Views\Device\DeviceParts\Resources.cshtml"
if (Model.Device.DeviceAttachments != null)
{
foreach (var da in Model.Device.DeviceAttachments)
@@ -81,20 +88,20 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <a");
WriteAttribute("href", Tuple.Create(" href=\"", 476), Tuple.Create("\"", 536)
WriteAttribute("href", Tuple.Create(" href=\"", 634), Tuple.Create("\"", 694)
#line 14 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 483), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Device.AttachmentDownload(da.Id))
#line 16 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 641), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Device.AttachmentDownload(da.Id))
#line default
#line hidden
, 483), false)
, 641), false)
);
WriteLiteral(" data-attachmentid=\"");
#line 14 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 16 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(da.Id);
@@ -105,7 +112,7 @@ WriteLiteral("\"");
WriteLiteral(" data-mimetype=\"");
#line 14 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 16 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(da.MimeType);
@@ -117,68 +124,68 @@ WriteLiteral(">\r\n <span");
WriteLiteral(" class=\"icon\"");
WriteAttribute("title", Tuple.Create(" title=\"", 638), Tuple.Create("\"", 658)
WriteAttribute("title", Tuple.Create(" title=\"", 800), Tuple.Create("\"", 820)
#line 15 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 646), Tuple.Create<System.Object, System.Int32>(da.Filename
#line 17 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 808), Tuple.Create<System.Object, System.Int32>(da.Filename
#line default
#line hidden
, 646), false)
, 808), false)
);
WriteLiteral(">\r\n <img");
WriteLiteral(" alt=\"Attachment Thumbnail\"");
WriteAttribute("src", Tuple.Create(" src=\"", 721), Tuple.Create("\"", 783)
WriteAttribute("src", Tuple.Create(" src=\"", 887), Tuple.Create("\"", 949)
#line 16 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 727), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Device.AttachmentThumbnail(da.Id))
#line 18 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 893), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Device.AttachmentThumbnail(da.Id))
#line default
#line hidden
, 727), false)
, 893), false)
);
WriteLiteral(" /></span>\r\n <span");
WriteLiteral(" class=\"comments\"");
WriteAttribute("title", Tuple.Create(" title=\"", 842), Tuple.Create("\"", 862)
WriteAttribute("title", Tuple.Create(" title=\"", 1012), Tuple.Create("\"", 1032)
#line 17 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 850), Tuple.Create<System.Object, System.Int32>(da.Comments
#line 19 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 1020), Tuple.Create<System.Object, System.Int32>(da.Comments
#line default
#line hidden
, 850), false)
, 1020), false)
);
WriteLiteral(">\r\n");
#line 18 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 20 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line default
#line hidden
#line 18 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 20 "..\..\Views\Device\DeviceParts\Resources.cshtml"
if (!string.IsNullOrEmpty(da.DocumentTemplateId))
{
#line default
#line hidden
#line 19 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 21 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(da.DocumentTemplate.Description);
#line default
#line hidden
#line 19 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 21 "..\..\Views\Device\DeviceParts\Resources.cshtml"
}
else
{
@@ -186,14 +193,14 @@ WriteLiteral(">\r\n");
#line default
#line hidden
#line 21 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 23 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(da.Comments);
#line default
#line hidden
#line 21 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 23 "..\..\Views\Device\DeviceParts\Resources.cshtml"
}
#line default
@@ -205,7 +212,7 @@ WriteLiteral(" class=\"author\"");
WriteLiteral(">");
#line 22 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 24 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(da.TechUser.ToString());
@@ -219,20 +226,20 @@ WriteLiteral("></span><span");
WriteLiteral(" class=\"timestamp\"");
WriteAttribute("title", Tuple.Create(" title=\"", 1232), Tuple.Create("\"", 1270)
WriteAttribute("title", Tuple.Create(" title=\"", 1422), Tuple.Create("\"", 1460)
#line 22 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 1240), Tuple.Create<System.Object, System.Int32>(da.Timestamp.ToFullDateTime()
#line 24 "..\..\Views\Device\DeviceParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 1430), Tuple.Create<System.Object, System.Int32>(da.Timestamp.ToFullDateTime()
#line default
#line hidden
, 1240), false)
, 1430), false)
);
WriteLiteral(">");
#line 22 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 24 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(da.Timestamp.ToFuzzy());
@@ -241,7 +248,7 @@ WriteLiteral(">");
WriteLiteral("</span>\r\n </a> \r\n");
#line 24 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 26 "..\..\Views\Device\DeviceParts\Resources.cshtml"
}
}
@@ -264,47 +271,30 @@ WriteLiteral("></span>\r\n </div>\r\n <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
Shadowbox.init({
skipSetup: true,
modal: true
});
$(function () {
if (!document.DiscoFunctions) {
document.DiscoFunctions = {};
}
document.DiscoFunctions.addAttachment = addAttachment;
$Attachments = $('#Attachments');
$attachmentOutput = $Attachments.find('.attachmentOutput');
$attachmentOutput.find('span.remove').click(removeAttachment);
$('#dialogUpload').dialog({ autoOpen: false,
draggable: false,
modal: true,
resizable: false,
width: 860,
height: 550,
close: function () {
silverlightUploadAttachment.content.Navigator.Navigate('/Hidden');
}
});
$('#dialogRemoveAttachment').dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false
});
var onLoadNavigation = null;
var isLoaded = null;
Silverlight.createObject(
'");
WriteLiteral(">\r\n Shadowbox.init({\r\n skipSetup: true," +
"\r\n modal: true\r\n });\r\n " +
" $(function () {\r\n if (!document.DiscoFunctions) {\r\n " +
" document.DiscoFunctions = {};\r\n " +
" }\r\n document.DiscoFunctions.addAttachment = addAttachmen" +
"t;\r\n\r\n $Attachments = $(\'#Attachments\');\r\n " +
" $attachmentOutput = $Attachments.find(\'.attachmentOutput\');\r\n\r\n " +
" $attachmentOutput.find(\'span.remove\').click(removeAttachment);\r\n" +
"\r\n $(\'#dialogUpload\').dialog({\r\n " +
" autoOpen: false,\r\n draggable: false,\r\n " +
" modal: true,\r\n resizable: false,\r\n " +
" width: 860,\r\n height: 550,\r\n" +
" close: function () {\r\n " +
" silverlightUploadAttachment.content.Navigator.Navigate(\'/Hidden\');\r\n " +
" }\r\n });\r\n\r\n $(\'#" +
"dialogRemoveAttachment\').dialog({\r\n resizable: false," +
"\r\n height: 140,\r\n modal: t" +
"rue,\r\n autoOpen: false\r\n });\r\n" +
"\r\n var onLoadNavigation = null;\r\n " +
"var isLoaded = null;\r\n Silverlight.createObject(\r\n " +
" \'");
#line 67 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 70 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(Links.ClientBin.Disco_Silverlight_AttachmentUpload_xap);
@@ -314,7 +304,8 @@ WriteLiteral(@"',
$('#silverlightHostUploadAttachment').get(0),
'silverlightUploadAttachment',
{ width: '840px', height: '500px', background: 'white', version: '4.0.60310.0' },
{ onLoad: function () {
{
onLoad: function () {
if (onLoadNavigation) {
silverlightUploadAttachment.content.Navigator.Navigate(onLoadNavigation);
isLoaded = true;
@@ -324,7 +315,7 @@ WriteLiteral(@"',
'UploadUrl=");
#line 78 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 82 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(Url.Action(MVC.API.Device.AttachmentUpload(Model.Device.SerialNumber, null)));
@@ -356,7 +347,7 @@ WriteLiteral(@"'
url: '");
#line 101 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 105 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(Url.Action(MVC.API.Device.Attachment()));
@@ -374,7 +365,7 @@ WriteLiteral(@"',
e.attr('data-attachmentid', a.Id).attr('data-mimetype', a.MimeType).attr('href', '");
#line 110 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 114 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(Url.Action(MVC.API.Device.AttachmentDownload()));
@@ -384,7 +375,7 @@ WriteLiteral("/\' + a.Id);\r\n e.find(\'.icon
"\'");
#line 111 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 115 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(Url.Action(MVC.API.Device.AttachmentThumbnail()));
@@ -417,7 +408,7 @@ WriteLiteral("/\' + a.Id);\r\n e.find(\'.comm
" $.ajax({\r\n url: \'");
#line 143 "..\..\Views\Device\DeviceParts\Resources.cshtml"
#line 147 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(Url.Action(MVC.API.Device.AttachmentRemove()));
@@ -443,14 +434,14 @@ WriteLiteral("\',\r\n dataType: \'json\',\r\n
" },\r\n \"Cancel\": function () {\r\n " +
" $dialogRemoveAttachment.dialog(\"close\");\r\n " +
" }\r\n });\r\n\r\n $dialogR" +
"emoveAttachment.dialog(\'open\');\r\n \r\n " +
" return false;\r\n }\r\n\r\n $attachmentOutput" +
".children(\'a\').each(function () {\r\n $this = $(this);\r\n " +
" if ($this.attr(\'data-mimetype\').toLowerCase().indexOf(\'imag" +
"e/\') == 0)\r\n $this.shadowbox({ gallery: \'attachments\'" +
", player: \'img\', title: $this.find(\'.comments\').text() });\r\n " +
"});\r\n });\r\n </script>\r\n </td>\r\n </tr>\r\n</tab" +
"le>\r\n<div");
"emoveAttachment.dialog(\'open\');\r\n\r\n return false;\r\n " +
" }\r\n\r\n $attachmentOutput.children(\'a\').each(func" +
"tion () {\r\n $this = $(this);\r\n if " +
"($this.attr(\'data-mimetype\').toLowerCase().indexOf(\'image/\') == 0)\r\n " +
" $this.shadowbox({ gallery: \'attachments\', player: \'img\', title: " +
"$this.find(\'.comments\').text() });\r\n });\r\n });" +
"\r\n </script>\r\n </td>\r\n </tr>\r\n </table>\r\n " +
" <div");
WriteLiteral(" id=\"dialogUpload\"");
@@ -472,7 +463,18 @@ WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\"");
WriteLiteral("></span>\r\n Are you sure?</p>\r\n</div>");
WriteLiteral("></span>\r\n Are you sure?\r\n </p>\r\n </div>\r\n <script>\r\n " +
" $(\'#DeviceDetailTabItems\').append(\'<li><a href=\"#DeviceDetailTab-Resources\" " +
"id=\"DeviceDetailTab-ResourcesLink\">Attachments [");
#line 200 "..\..\Views\Device\DeviceParts\Resources.cshtml"
Write(Model.Device.DeviceAttachments == null ? 0 : Model.Device.DeviceAttachments.Count);
#line default
#line hidden
WriteLiteral("]</a></li>\');\r\n </script>\r\n</div>\r\n");
}
}
@@ -0,0 +1,717 @@
@model Disco.Web.Models.Device.ShowModel
@{
Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers");
}
<table id="Device_Show_Subjects">
<tr>
<td id="Device_Show_Details">
<div>
<div id="Device_Show_Details_Asset">
<table class="none verticalHeadings">
<tr>
<td><span title="Computer Name">Name:</span>
</td>
<td>@if (string.IsNullOrWhiteSpace(Model.Device.ComputerName))
{
<span id="Device_Show_Details_Asset_NameUnknown" title="Computer Name" class="smallMessage">&lt;Unknown/Not Allocated&gt;</span>
}
else
{
<h4 id="Device_Show_Details_Asset_Name" title="Computer Name">@Model.Device.ComputerName</h4>
}
</td>
</tr>
<tr>
<td>Asset:</td>
<td>@Html.TextBoxFor(m => m.Device.AssetNumber, new { @class = "small discreet" }) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader()</td>
</tr>
<tr>
<td>Location:</td>
<td>@Html.TextBoxFor(m => m.Device.Location, new { @class = "small discreet" }) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader()</td>
</tr>
</table>
<script>
$(function () {
document.DiscoFunctions.PropertyChangeHelper($('#Device_AssetNumber'), 'Unknown', '@Url.Action(MVC.API.Device.UpdateAssetNumber(Model.Device.SerialNumber, null))', 'AssetNumber');
document.DiscoFunctions.PropertyChangeHelper($('#Device_Location'), 'Unknown', '@Url.Action(MVC.API.Device.UpdateLocation(Model.Device.SerialNumber, null))', 'Location');
});
</script>
</div>
<div id="Device_Show_Details_Dates" class="status">
<table class="none verticalHeadings">
<tr>
<td>Created:
</td>
<td><span id="Device_Show_Details_Dates_Created">@CommonHelpers.FriendlyDate(Model.Device.CreatedDate)</span></td>
</tr>
@if (Model.Device.DecommissionedDate.HasValue)
{
<tr>
<td>Decommissioned:
</td>
<td><span id="Device_Show_Details_Dates_Decommissioned">@CommonHelpers.FriendlyDate(Model.Device.DecommissionedDate)</span></td>
</tr>
}
<tr>
<td>Enrolled:
</td>
<td>
@if (Model.Device.EnrolledDate.HasValue)
{
<text>First: </text><span id="Device_Show_Details_Asset_Enrolled_First">@CommonHelpers.FriendlyDate(Model.Device.EnrolledDate)</span>
if (Model.Device.LastEnrolDate.HasValue && Model.Device.EnrolledDate.Value != Model.Device.LastEnrolDate.Value)
{
<br /><text>Last: </text><span id="Device_Show_Details_Asset_Enrolled_Last">@CommonHelpers.FriendlyDate(Model.Device.LastEnrolDate)</span>
}
}
else
{
<span id="Device_Show_Details_Asset_Enrolled_Never" class="smallMessage">Never</span>
}
@if (Model.Device.AllowUnauthenticatedEnrol)
{
<span id="Device_Show_Details_Asset_Enrolled_Trusted" title="Trusted Unauthenticated Enrolment is Allowed"></span>
}
</td>
</tr>
</table>
</div>
<div id="Device_Show_Details_Status" class="status">
<table class="none verticalHeadings">
<tr>
<td><span title="Last Network Logon Date">Last Seen:</span>
</td>
<td>@{
string lastSeenClass = null;
if (Model.Device.LastNetworkLogonDate.HasValue)
{
if (Model.Device.LastNetworkLogonDate.Value < DateTime.Now.AddDays(-30))
{
lastSeenClass = "error";
}
else
{
if (Model.Device.LastNetworkLogonDate.Value < DateTime.Now.AddDays(-7))
{
lastSeenClass = "alert";
}
}
}
}
<span id="Device_Show_Details_Status_LastSeen" class="@lastSeenClass">@CommonHelpers.FriendlyDate(Model.Device.LastNetworkLogonDate)</span></td>
@if (!string.IsNullOrEmpty(Model.Device.ComputerName))
{
<script type="text/javascript">
$(function () {
var updated = false;
var span = $('#Device_Show_Details_Status_LastSeen');
var spanProgress = null;
$.getJSON('@(Url.Action(MVC.API.Device.LastNetworkLogonDate(Model.Device.SerialNumber)))', function (response, result) {
updated = true;
if (spanProgress)
spanProgress.hide();
if (result != 'success') {
alert('Unable to retrieve latest network logon date:\n' + response);
$('<span>').addClass('smallMessage').text('[may not be current]').appendTo(span);
} else {
span.attr('title', response.Formatted).text(response.Friendly);
}
});
window.setTimeout(function () {
if (!updated) {
spanProgress = $('<span>').addClass('ajaxHelperIcon ajaxLoading ajaxShowInitially').attr('title', 'Loading...').appendTo(span);
}
}, 250);
});
</script>
}
</tr>
</table>
</div>
<div class="status">
@{
var assignedUser = Model.Device.AssignedUser;
}
<table class="none verticalHeadings">
<tr>
<td>Assignment:
</td>
<td>
@if (assignedUser != null)
{
<div id="Device_Show_User">
<div id="Device_Show_User_DisplayName" title="Display Name">@Html.ActionLink(assignedUser.DisplayName, MVC.User.Show(assignedUser.Id))</div>
<div id="Device_Show_User_Id" title="Id">@assignedUser.Id <span id="Device_Show_User_Type" title="Type">[@(assignedUser.Type)]</span></div>
@if (!string.IsNullOrWhiteSpace(assignedUser.PhoneNumber))
{
<div id="Device_Show_User_PhoneNumber" title="Phone Number">@assignedUser.PhoneNumber</div>
}
@if (!string.IsNullOrWhiteSpace(assignedUser.EmailAddress))
{
<div id="Device_Show_User_EmailAddress" title="Email Address"><a href="mailto:@(Model.Device.AssignedUser.EmailAddress)">@assignedUser.EmailAddress</a></div>
}
</div>
}
else
{
<span class="smallMessage">Not Assigned</span>
}
</td>
</tr>
</table>
</div>
<div id="Device_Show_GenerateDocument_Container" class="status">
@Html.DropDownList("Device_Show_GenerateDocument", Model.DocumentTemplatesSelectListItems)
<script type="text/javascript">
$(function () {
var generatePdfUrl = '@Url.Action(MVC.API.Device.GeneratePdf(Model.Device.SerialNumber.ToString(), null))?DocumentTemplateId=';
var $documentTemplates = $('#Device_Show_GenerateDocument');
$documentTemplates.change(function () {
var v = $documentTemplates.val();
if (v) {
window.location.href = generatePdfUrl + v;
$documentTemplates.val('').blur();
}
});
});
</script>
</div>
</div>
</td>
<td id="Device_Show_Policies" rowspan="2">
<div>
<div id="Device_Show_Policies_Profile">
<h2 title="Device Profile">@Html.ActionLink(Model.Device.DeviceProfile.Name, MVC.Config.DeviceProfile.Index(Model.Device.DeviceProfileId))</h2>
<table class="none verticalHeadings">
<tr>
<td><span title="Distribution Type">Distribution:</span>
</td>
<td>@Model.Device.DeviceProfile.DistributionType.ToString()
</td>
</tr>
<tr>
<td><span title="Address">Address:</span>
</td>
<td>@{
if (Model.DeviceProfileDefaultOrganisationAddress != null)
{
<span id="Device_Show_Policies_Profile_Address">@Model.DeviceProfileDefaultOrganisationAddress.Name</span>
}
else
{
<span id="Device_Show_Policies_Profile_Address_None" class="smallMessage">None</span>
}
}
</td>
</tr>
<tr>
<td><span title="Provision Active Directory Account">Provision Account:</span>
</td>
<td>@(Model.Device.DeviceProfile.ProvisionADAccount ? "Active Directory" : "No")
</td>
</tr>
<tr>
<td><span title="Allocate Certificates">Allocate Certificate:</span>
</td>
<td>@(Model.DeviceProfileCertificateProvider != null ? Model.DeviceProfileCertificateProvider.Name : "No")
</td>
</tr>
</table>
@if (Model.Device.CanUpdateDeviceProfile())
{
@Html.ActionLinkSmallButton("Update Profile", MVC.API.Device.UpdateDeviceProfileId(Model.Device.SerialNumber, null, true), "Device_Show_Policies_Profile_Actions_Update_Button")
<div id="Device_Show_Policies_Profile_Actions_Update_Dialog" class="dialog" title="Assign to Device Profile">
<div>
<ul class="none">
@foreach (var dp in Model.DeviceProfiles.OrderBy(i => i.Name))
{
<li>
<input type="radio" data-deviceprofileid="@dp.Id" name="DeviceProfile" id="DeviceProfile_@(dp.Id)" /><label for="DeviceProfile_@(dp.Id)" title="Distribution: @(dp.DistributionType)">@dp.Name</label></li>
}
</ul>
</div>
</div>
<script>
$(function () {
var currentProfile = '@(Model.Device.DeviceProfileId)';
var button = $('#Device_Show_Policies_Profile_Actions_Update_Button');
var buttonDialog = null;
var dialogInputs = null;
var dialogContainers = null;
button.click(function () {
if (!buttonDialog) {
buttonDialog = $('#Device_Show_Policies_Profile_Actions_Update_Dialog')
.dialog({
resizable: false,
modal: true,
maxHeight: 450,
autoOpen: false,
buttons: {
"Update Profile": function () {
var deviceProfileId = dialogInputs.filter(':checked').attr('data-deviceprofileid');
if (deviceProfileId) {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = button.attr('href') + '&DeviceProfileId=' + deviceProfileId;
} else {
alert('A device profile must be selected');
}
},
Cancel: function () {
$(this).dialog("close");
}
}
});
dialogInputs = buttonDialog.find('input');
dialogContainers = dialogInputs.closest('li');
dialogInputs.change(function () {
dialogContainers.removeClass('selected');
$(this).closest('li').addClass('selected');
});
}
dialogInputs.filter('[data-deviceprofileid=' + currentProfile + ']').prop('checked', true).change();
buttonDialog.dialog('open');
return false;
});
});
</script>
}
</div>
<div id="Device_Show_Policies_Batch" class="status">
@if (Model.Device.DeviceBatchId.HasValue)
{
<h2 title="Device Batch">@Html.ActionLink(Model.Device.DeviceBatch.Name, MVC.Config.DeviceBatch.Index(Model.Device.DeviceBatchId.Value))</h2>
<table class="none verticalHeadings">
<tr>
<td><span title="Purchased Date">Purchased:</span>
</td>
<td>@CommonHelpers.FriendlyDate(Model.Device.DeviceBatch.PurchaseDate)
</td>
</tr>
<tr>
<td><span title="Supplier">Supplier:</span>
</td>
<td>@(Model.Device.DeviceBatch.Supplier ?? "Unknown")
</td>
</tr>
<tr>
<td><span title="Warranty Valid Until">Warranty Until:</span>
</td>
<td class="@(Model.Device.DeviceBatch.WarrantyValidUntil.HasValue && Model.Device.DeviceBatch.WarrantyValidUntil.Value < DateTime.Now ? "alert" : null)">@CommonHelpers.FriendlyDate(Model.Device.DeviceBatch.WarrantyValidUntil, "Unknown", null)
</td>
</tr>
<tr>
<td><span title="Insurance Supplier">Insurance Supplier:</span>
</td>
<td>@(Model.Device.DeviceBatch.InsuranceSupplier ?? "Unknown")
</td>
</tr>
<tr>
<td><span title="Insured Until">Insured Until:</span>
</td>
<td class="@(Model.Device.DeviceBatch.InsuredUntil.HasValue && Model.Device.DeviceBatch.InsuredUntil.Value < DateTime.Now ? "alert" : null)">@CommonHelpers.FriendlyDate(Model.Device.DeviceBatch.InsuredUntil, "Unknown", null)
</td>
</tr>
</table>
}
else
{
<h2>Batch: <em>Not Associated</em></h2>
}
@if (Model.Device.CanUpdateDeviceBatch())
{
@Html.ActionLinkSmallButton("Update Batch", MVC.API.Device.UpdateDeviceBatchId(Model.Device.SerialNumber, null, true), "Device_Show_Policies_Batch_Actions_Update_Button")
<div id="Device_Show_Policies_Batch_Actions_Update_Dialog" class="dialog" title="Assign to Device Batch">
<div>
<ul class="none">
@foreach (var db in Model.DeviceBatches.OrderBy(i => i.Name))
{
<li>
<input type="radio" data-devicebatchid="@db.Id" name="DeviceBatch" id="DeviceBatch_@(db.Id)" /><label for="DeviceBatch_@(db.Id)" title="Purchased: @(db.PurchaseDate.ToFuzzy())">@db.Name</label></li>
}
</ul>
</div>
</div>
<script>
$(function () {
var currentBatch = '@(Model.Device.DeviceBatchId)';
var button = $('#Device_Show_Policies_Batch_Actions_Update_Button');
var buttonDialog = null;
var dialogInputs = null;
var dialogContainers = null;
button.click(function () {
if (!buttonDialog) {
buttonDialog = $('#Device_Show_Policies_Batch_Actions_Update_Dialog')
.dialog({
resizable: false,
modal: true,
maxHeight: 450,
autoOpen: false,
buttons: {
"Update Batch": function () {
var deviceBatchId = dialogInputs.filter(':checked').attr('data-devicebatchid');
if (deviceBatchId) {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = button.attr('href') + '&DeviceBatchId=' + deviceBatchId;
} else {
alert('A device batch must be selected');
}
},
Cancel: function () {
$(this).dialog("close");
}
}
});
dialogInputs = buttonDialog.find('input');
dialogContainers = dialogInputs.closest('li');
dialogInputs.change(function () {
dialogContainers.removeClass('selected');
$(this).closest('li').addClass('selected');
});
}
dialogInputs.filter('[data-devicebatchid=' + currentBatch + ']').prop('checked', true).change();
buttonDialog.dialog('open');
return false;
});
});
</script>
}
</div>
</div>
</td>
<td id="Device_Show_Aspects" rowspan="2">
<div>
<div id="Device_Show_Aspects_Model" class="clearfix">
<h2 id="Device_Show_Aspects_Model_Description" title="Model Description">@Html.ActionLink(Model.Device.DeviceModel.ToString(), MVC.Config.DeviceModel.Index(Model.Device.DeviceModelId))</h2>
<img id="Device_Show_Aspects_Model_Image" alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.Device.DeviceModelId, Model.Device.DeviceModel.ImageHash()))" />
</div>
</div>
</td>
</tr>
<tr id="Device_Show_Subjects_Actions">
<td id="Device_Show_Device_Actions">
@if (Model.Device.CanCreateJob())
{
Html.BundleDeferred("~/ClientScripts/Modules/Disco-CreateJob");
@Html.ActionLinkSmallButton("Create Job", MVC.Job.Create(Model.Device.SerialNumber, Model.Device.AssignedUserId), "buttonCreateJob")
}
@if (Model.Device.CanUpdateAssignment())
{
@Html.ActionLinkSmallButton("Update Assignment", MVC.API.Device.UpdateAssignedUserId(Model.Device.SerialNumber, null, true), "Device_Show_User_Actions_Assign_Button")
<div id="Device_Show_User_Actions_Assign_Dialog" class="dialog" title="Assign this Device?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Assign to User:
<input id="Device_Show_User_Actions_Assign_UserId" type="text" />
</p>
</div>
<script type="text/javascript">
$(function () {
var button = $('#Device_Show_User_Actions_Assign_Button');
var buttonDialog = null;
var inputUserId = null;
var dialogButtons = {
@{
if (assignedUser != null)
{
<text>
"Unassign": function () {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = button.attr('href');
},
</text>
}
}
"Assign": function () {
var $this = $(this);
var userId = inputUserId.val();
if (userId) {
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = button.attr('href') + '&AssignedUserId=' + userId;
} else {
alert('Enter a user to assign this device');
}
},
Cancel: function () {
$(this).dialog("close");
}
}
button.click(function () {
if (!buttonDialog) {
buttonDialog = $('#Device_Show_User_Actions_Assign_Dialog')
.dialog({
resizable: false,
height: 160,
modal: true,
autoOpen: false,
buttons: dialogButtons
});
inputUserId = $('#Device_Show_User_Actions_Assign_UserId');
inputUserId.focus(function () { inputUserId.select() })
.autocomplete({
source: '@(Url.Action(MVC.API.User.UpstreamUsers()))',
minLength: 2,
select: function (e, ui) {
inputUserId.val(ui.item.Id);
return false;
}
});
inputUserId.data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul);
};
}
buttonDialog.dialog('open');
inputUserId.focus();
return false;
});
});
</script>
}
@if (Model.Device.CanUpdateTrustEnrol())
{
@Html.ActionLinkSmallButton("Trust Enrol", MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, true.ToString(), true), "Device_Show_Device_Actions_TrustEnrol_Button")
<div id="Device_Show_Device_Actions_TrustEnrol_Dialog" title="Trust this Device?">
<div class="ui-widget">
<div class="ui-state-highlight ui-corner-all" style="padding: 6px;">
<div style="padding-bottom: 6px;">
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
This action will allow a device <em>claiming</em> to have the Serial Number '@(Model.Device.SerialNumber)' to be enrolled without authentication.
</div>
<strong>Are you sure you want to allow an unauthenticated enrolment?</strong>
</div>
</div>
<div class="smallMessage" style="margin-top: 10px; font-size: 1em;">
Devices flagged as 'trusted' are allowed a single-use device enrolment without providing authentication (for example: Active Directory Computer Account).<br />
Once a devices enrol, their trust setting is reset and additional enrolments need to be authenticated (domain joined) or manually trusted again.
</div>
</div>
<script type="text/javascript">
$(function () {
var button = $('#Device_Show_Device_Actions_TrustEnrol_Button');
var buttonDialog = $('#Device_Show_Device_Actions_TrustEnrol_Dialog');
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
width: 400,
modal: true,
autoOpen: false,
buttons: {
"Trust": function () {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
</script>
}
@if (Model.Device.CanUpdateUntrustEnrol())
{
@Html.ActionLinkSmallButton("Untrust Enrol", MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, false.ToString(), true), "Device_Show_Device_Actions_UntrustEnrol_Button")
<div id="Device_Show_Device_Actions_UntrustEnrol_Dialog" title="Untrust this Device?">
<div style="padding-bottom: 6px;">
<span class="ui-icon ui-icon-info" style="float: left; margin: 0 7px 20px 0;"></span>
This action will require the device to enrol with authentication (for example: domain joined).
</div>
<strong>Are you sure you want to require an authenticated enrolment?</strong>
</div>
<script type="text/javascript">
$(function () {
var button = $('#Device_Show_Device_Actions_UntrustEnrol_Button');
var buttonDialog = $('#Device_Show_Device_Actions_UntrustEnrol_Dialog');
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
width: 400,
modal: true,
autoOpen: false,
buttons: {
"Untrust": function () {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
</script>
}
@if (Model.Device.CanDecommission())
{
@Html.ActionLinkSmallButton("Decommission", MVC.API.Device.Decommission(Model.Device.SerialNumber, true), "Device_Show_Device_Actions_Decommission_Button")
<div id="Device_Show_Device_Actions_Decommission_Dialog" class="dialog" title="Decommission this Device?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure?
</p>
</div>
<script type="text/javascript">
$(function () {
var button = $('#Device_Show_Device_Actions_Decommission_Button');
var buttonDialog = null;
button.click(function () {
if (!buttonDialog) {
buttonDialog = $('#Device_Show_Device_Actions_Decommission_Dialog')
.dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
"Decommission": function () {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = button.attr('href');
},
Cancel: function () {
$(this).dialog("close");
}
}
});
}
buttonDialog.dialog('open');
return false;
});
});
</script>
}
@if (Model.Device.CanRecommission())
{
@Html.ActionLinkSmallButton("Recommission", MVC.API.Device.Recommission(Model.Device.SerialNumber, true), "Device_Show_Device_Actions_Recommission_Button")
<div id="Device_Show_Device_Actions_Recommission_Dialog" title="Recommission this Device?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure?
</p>
</div>
<script type="text/javascript">
$(function () {
var button = $('#Device_Show_Device_Actions_Recommission_Button');
var buttonDialog = $('#Device_Show_Device_Actions_Recommission_Dialog');
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
"Recommission": function () {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
</script>
}
@if (Model.Device.CanDelete())
{
@Html.ActionLinkSmallButton("Delete Device", MVC.API.Device.Delete(Model.Device.SerialNumber, true), "Device_Show_Device_Actions_Delete_Button")
<div id="Device_Show_Device_Actions_Delete_Dialog" title="Delete this Device?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
This item will be permanently deleted and cannot be recovered.<br />
Jobs linked to this Device (but not to a User) will be deleted also.<br />
Are you sure?
</p>
</div>
<script type="text/javascript">
$(function () {
var button = $('#Device_Show_Device_Actions_Delete_Button');
var buttonDialog = $('#Device_Show_Device_Actions_Delete_Dialog');
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
height: 200,
modal: true,
autoOpen: false,
buttons: {
"Delete": function () {
var $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
</script>
}
</td>
</tr>
</table>
File diff suppressed because it is too large Load Diff
+37 -462
View File
@@ -1,478 +1,53 @@
@model Disco.Web.Models.Device.ShowModel
@{
ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), string.Format("{0} ({1})", Model.Device.ComputerName, Model.Device.SerialNumber));
Html.BundleDeferred("~/ClientScripts/Modules/Silverlight");
ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), string.Format("Device: {0}", Model.Device.SerialNumber));
var deviceStatus = Model.Device.Status();
}
<table class="deviceShow">
<tr>
<td class="details">
<table>
<tr>
<th class="name">
Computer Name:
</th>
<td class="value">
@if (string.IsNullOrWhiteSpace(Model.Device.ComputerName))
{
<span class="smallMessage">&lt;Unknown/Not Allocated&gt;</span>
}
else
{
@Model.Device.ComputerName
}
</td>
</tr>
<tr>
<th class="name">
Asset Number:
</th>
<td class="value">
@Html.TextBoxFor(m => m.Device.AssetNumber)
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<div id="Device_Show">
<div id="Device_Show_Status">
<span class="icon DeviceStatus@(deviceStatus.Replace(" ", string.Empty))"></span>@deviceStatus
<script type="text/javascript">
$(function () {
var $ajaxSave = $('#Device_AssetNumber').next('.ajaxSave');
$('#Device_AssetNumber').watermark('Asset Number').keydown(function (e) {
$ajaxSave.show();
if (e.which == 13) {
$(this).blur();
}
}).change(function () {
var $this = $(this);
$ajaxSave.hide();
var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show();
var data = { AssetNumber: $this.val() };
$.getJSON('@(Url.Action(@MVC.API.Device.UpdateAssetNumber(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Asset Number:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
}).blur(function () {
$ajaxSave.hide();
}).focus(function () {
$(this).select();
});
$('#Device_Show_Status').appendTo('#layout_PageHeading')
});
</script>
</td>
</tr>
<tr>
<th class="name">
Location:
</th>
<td class="value">
@Html.TextBoxFor(m => m.Device.Location)
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var $ajaxSave = $('#Device_Location').next('.ajaxSave');
$('#Device_Location').watermark('Location').keydown(function (e) {
$ajaxSave.show();
if (e.which == 13) {
$(this).blur();
}
}).change(function () {
var $this = $(this);
$ajaxSave.hide();
var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show();
var data = { Location: $this.val() };
$.getJSON('@(Url.Action(@MVC.API.Device.UpdateLocation(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Location:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
}
});
}).blur(function () {
$ajaxSave.hide();
}).focus(function () {
$(this).select();
});
});
</script>
</td>
</tr>
<tr>
<th class="name">
Batch:
</th>
<td class="value">
@Html.DropDownListFor(m => m.Device.DeviceBatchId, Model.DeviceBatches.ToSelectListItems(Model.Device.DeviceBatchId))
@AjaxHelpers.AjaxLoader() <span id="deviceBatchDetails" class="icon16" title="Batch Details"></span>
<script type="text/javascript">
$(function () {
var $DeviceBatchId = $('#Device_DeviceBatchId');
var $DeviceBatchDetails = $('#deviceBatchDetails');
var $DeviceBatchSummary = $('#deviceBatchSummary');
var initUpdate = false;
var jsonDate = function (json, unknownValue) {
if (json && json.indexOf('') == 0) {
return $.datepicker.formatDate('yy-mm-dd', new Date(parseInt(json.substr(6, json.length - 8))));
} else
return unknownValue;
}
var updateDetails = function (deviceBatchId) {
$.getJSON('@(Url.Action(MVC.API.DeviceBatch.Index()))/' + deviceBatchId, function (response, result) {
if (result == 'success') {
if (response.Supplier)
$DeviceBatchSummary.find('.supplier').text(response.Supplier);
else
$DeviceBatchSummary.find('.supplier').text('Unknown');
$DeviceBatchSummary.find('.purchaseDate').text(jsonDate(response.PurchaseDate, 'Unknown'));
$DeviceBatchSummary.find('.warrantyValidUntil').text(jsonDate(response.WarrantyValidUntil, 'Unknown'));
if (response.InsuranceSupplier)
$DeviceBatchSummary.find('.insuranceSupplier').text(response.InsuranceSupplier);
else
$DeviceBatchSummary.find('.insuranceSupplier').text('Unknown');
$DeviceBatchSummary.find('.insuredUntil').text(jsonDate(response.InsuredUntil, 'Unknown'));
if (initUpdate){
$DeviceBatchSummary.show();
$DeviceBatchDetails.show();
initUpdate = false;
}else{
$DeviceBatchSummary.slideDown('fast');
$DeviceBatchDetails.fadeIn();
}
} else {
alert('Unable to load Device Batch details:\n' + response);
}
});
};
$DeviceBatchDetails.click(function () {
window.location.href = '@(Url.Action(MVC.Config.DeviceBatch.Index(null)))/' + $DeviceBatchId.val();
});
$DeviceBatchId.change(function () {
var $this = $(this);
var $ajaxLoading = $this.next('.ajaxLoading').show();
$DeviceBatchSummary.hide();
$DeviceBatchDetails.hide();
var data = { DeviceBatchId: $this.val() };
$.getJSON('@(Url.Action(MVC.API.Device.UpdateDeviceBatchId(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Device Batch:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if ($DeviceBatchId.val())
updateDetails($DeviceBatchId.val());
}
});
});
$DeviceBatchSummary.hide();
if ($DeviceBatchId.val()){
initUpdate = true;
updateDetails($DeviceBatchId.val());
}
});
</script>
<div id="deviceBatchSummary">
<table class="sub">
<tr>
<th style="width: 50px">
<strong>Purchased:</strong>
</th>
<td>
Supplier: <span class="supplier"></span>
<br />
On: <span class="purchaseDate"></span>
</td>
<th style="width: 50px">
<strong>Warranty:</strong>
</th>
<td>
Valid Until: <span class="warrantyValidUntil"></span>
</td>
<th style="width: 50px">
<strong>Insurance:</strong>
</th>
<td>
Supplier: <span class="insuranceSupplier"></span>
<br />
Until: <span class="insuredUntil"></span>
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<th class="name">
Profile:
</th>
<td class="value">
@if (Model.Device.DecommissionedDate.HasValue)
{
@Model.Device.DeviceProfile.ToString()
}
@Html.Partial(MVC.Device.Views.DeviceParts._Subject, Model)
<script type="text/javascript">
$(function () {
var $tabs = $('#DeviceDetailTabs');
$tabs.tabs({
activate: function (event, ui) {
window.setTimeout(function () {
var $window = $(window);
var tabHeight = $tabs.height();
var tabOffset = $tabs.offset();
var windowScrollTop = $window.scrollTop();
var windowHeight = $window.height();
var tabTopNotShown = windowScrollTop - tabOffset.top;
if (tabTopNotShown > 0) {
$('html').animate({ scrollTop: tabOffset.top }, 125);
} else {
var tabBottomNotShown = ((windowScrollTop + windowHeight) - (tabHeight + tabOffset.top)) * -1;
if (tabBottomNotShown > 0) {
if (tabHeight > windowHeight)
$('html').animate({ scrollTop: tabOffset.top }, 125);
else
{
@Html.DropDownListFor(m => m.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.Device.DeviceProfile))
@AjaxHelpers.AjaxLoader()<span id="deviceProfileDetails" class="icon16" title="Profile Details"></span>
<script type="text/javascript">
$(function () {
$('#Device_DeviceProfileId').change(function () {
var $this = $(this);
var $ajaxLoading = $this.next('.ajaxLoading').show();
var data = { DeviceProfileId: $this.val() };
$.getJSON('@(Url.Action(MVC.API.Device.UpdateDeviceProfileId(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Device Profile:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
$('html').animate({ scrollTop: windowScrollTop + tabBottomNotShown }, 125);
}
});
});
$('#deviceProfileDetails').click(function(){
window.location.href = '@(Url.Action(MVC.Config.DeviceProfile.Index(null)))/' + $('#Device_DeviceProfileId').val();
});
});
</script>
}
</td>
</tr>
<tr>
<th class="name">
Created:
</th>
<td class="value">
@CommonHelpers.FriendlyDate(Model.Device.CreatedDate)
</td>
</tr>
<tr>
<th class="name">
Enrolment:
</th>
<td class="value">
First:
@CommonHelpers.FriendlyDate(Model.Device.EnrolledDate)
@if (Model.Device.AllowUnauthenticatedEnrol)
{
<a class="unlocked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "false", true))" title="Unauthenticated Enrolment is Allowed">
&nbsp;</a>
}
else
{
<a class="locked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "true", true))" title="Unauthenticated Enrolment is Blocked">
&nbsp;</a>
}
<br />
Last:
@CommonHelpers.FriendlyDate(Model.Device.LastEnrolDate)
</td>
</tr>
<tr>
<th class="name">
Decommissioned:
</th>
<td class="value">
@CommonHelpers.FriendlyDate(Model.Device.DecommissionedDate)
</td>
</tr>
<tr>
<th class="name">
Last Network Logon:
</th>
<td class="value">
<span id="lastNetworkLogonDate" class="nowrap">@CommonHelpers.FriendlyDate(Model.Device.LastNetworkLogonDate)</span>
@if (!string.IsNullOrEmpty(Model.Device.ComputerName))
{
<script type="text/javascript">
$(function () {
var span = $('#lastNetworkLogonDate');
$('<span>').addClass('ajaxHelperIcon ajaxLoading ajaxShowInitially').attr('title', 'Loading...').appendTo(span);
$.getJSON('@(Url.Action(MVC.API.Device.LastNetworkLogonDate(Model.Device.SerialNumber)))', function (response, result) {
if (result != 'success') {
alert('Unable to retrieve latest network logon date:\n' + response);
$('<span>').addClass('smallMessage').text('[may not be current]').appendTo(span);
} else {
span.find('.ajaxLoading').hide();
span.attr('title', response.Formatted).text(response.Friendly);
}, 1);
}
});
});
</script>
}
</td>
</tr>
@if (!Model.Device.DecommissionedDate.HasValue)
{
<tr>
<th class="name">
Assigned User:
</th>
<td class="value">
@Html.TextBoxFor(m => m.Device.AssignedUser, new { userId = Model.Device.AssignedUserId })
@AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxLoader()
<br />
<a href="#" id="Device_AssignedUser_History_Trigger" class="smallLink">Show Assignment
History (<span id="Device_AssignedUser_History_RecordCount"></span>)</a> <span id="Device_AssignedUser_History_None"
class="smallMessage" style="display: none">No Assignment History Available</span>
<div id="dialogRemoveAssignedUser" title="Remove this Device Assignment?">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure?</p>
</div>
<script type="text/javascript">
$(function () {
// Common Objects
var $assignedUser = $('#Device_AssignedUser');
var $ajaxLoading = $assignedUser.nextAll('.ajaxLoading').first();
var $ajaxRemove = $assignedUser.nextAll('.ajaxRemove').first();
// Assign User
$assignedUser
.watermark('No Assigned User')
.focus(function () { $assignedUser.select() })
.autocomplete({
source: '@(Url.Action(MVC.API.User.UpstreamUsers()))',
minLength: 2,
focus: function (e, ui) {
$assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
return false;
},
select: function (e, ui) {
updateAssignedUser(ui.item.Id);
$assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
return false;
}
})
.data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul);
};
var $dialogRemoveAssignedUser = $('#dialogRemoveAssignedUser');
$dialogRemoveAssignedUser.dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
"Remove": function () {
updateAssignedUser('');
$assignedUser.val('');
$dialogRemoveAssignedUser.dialog("close");
},
"Cancel": function () {
$dialogRemoveAssignedUser.dialog("close");
}
}
});
// Un-Assign User
if ($assignedUser.val() != '')
$ajaxRemove.show();
$ajaxRemove.click(function () {
$dialogRemoveAssignedUser.dialog('open');
return false;
});
// History
var deviceUserAssignmentCount = @(Model.Device.DeviceUserAssignments.Count);
if (deviceUserAssignmentCount > 0) {
$('#Device_AssignedUser_History_Trigger').click(function () {
$(this).hide();
$('#Device_AssignedUser_History_Host').show();
$('#Device_AssignedUser_History').slideDown('slow');
return false;
});
var recordCountText = deviceUserAssignmentCount + ' record';
if (deviceUserAssignmentCount != 1)
recordCountText += 's';
$('#Device_AssignedUser_History_RecordCount').text(recordCountText)
}
else {
$('#Device_AssignedUser_History_Trigger').hide();
$('#Device_AssignedUser_History_None').show();
};
function updateAssignedUser(userId) {
$ajaxLoading.show();
$ajaxRemove.hide();
var data = { AssignedUserId: userId };
$.getJSON('@(Url.Action(MVC.API.Device.UpdateAssignedUserId(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') {
alert('Unable to change Assigned User:\n' + response);
$ajaxLoading.hide();
} else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if (userId != '')
$ajaxRemove.fadeIn('fast');
}
});
}
});
</script>
</td>
</tr>
}
<tr id="Device_AssignedUser_History_Host" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")">
<td colspan="2">
<div id="Device_AssignedUser_History" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")">
<h2>
Assigned User History</h2>
@Html.Partial(MVC.Device.Views._DeviceUserAssignmentHistoryTable, Model.Device)
</div>
</td>
</tr>
<tr>
<th class="name">
Generate Documents:
</th>
<td class="value" colspan="3">
@Html.DropDownList("DocumentTemplates", Model.DocumentTemplatesSelectListItems)
<script type="text/javascript">
$(function () {
var generatePdfUrl = '@Url.Action(MVC.API.Device.GeneratePdf(Model.Device.SerialNumber, null))?DocumentTemplateId=';
var $documentTemplates = $('#DocumentTemplates');
$documentTemplates.change(function () {
var v = $documentTemplates.val();
if (v) {
window.location.href = generatePdfUrl + v;
$documentTemplates.val('');
}
});
});
</script>
</td>
</tr>
</table>
</td>
<td class="model">
<table>
<tr>
<td class="subtleHighlight">
<img alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.Device.DeviceModelId, Model.Device.DeviceModel.ImageHash()))" />
<h2>
<a href="@(Url.Action(MVC.Config.DeviceModel.Index(Model.Device.DeviceModelId)))">@Model.Device.DeviceModel.ToString()</a></h2>
</td>
</tr>
</table>
</td>
</tr>
</table>
<h2>
Certificates</h2>
@Html.Partial(MVC.Device.Views._CertificateTable, Model.Certificates)
<h2>
Attachments</h2>
<div id="DeviceDetailTabs">
<ul id="DeviceDetailTabItems"></ul>
@Html.Partial(MVC.Device.Views.DeviceParts.Jobs, Model)
@Html.Partial(MVC.Device.Views.DeviceParts.AssignmentHistory, Model)
@Html.Partial(MVC.Device.Views.DeviceParts.Resources, Model)
<h2>
Jobs</h2>
@Html.Partial(MVC.Shared.Views._JobTable, Model.Jobs)
@Html.Partial(MVC.Device.Views._DeviceActions, Model.Device)
@Html.Partial(MVC.Device.Views.DeviceParts.Certificates, Model)
</div>
</div>
File diff suppressed because it is too large Load Diff
@@ -1,326 +0,0 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Views.Device
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/_DeviceActions.cshtml")]
public partial class DeviceActions : System.Web.Mvc.WebViewPage<Disco.Models.Repository.Device>
{
public DeviceActions()
{
}
public override void Execute()
{
WriteLiteral("<div");
WriteLiteral(" class=\"actionBar\"");
WriteLiteral(">\r\n");
#line 3 "..\..\Views\Device\_DeviceActions.cshtml"
#line default
#line hidden
#line 3 "..\..\Views\Device\_DeviceActions.cshtml"
if (Model.CanDecommission())
{
#line default
#line hidden
#line 5 "..\..\Views\Device\_DeviceActions.cshtml"
Write(Html.ActionLinkButton("Decommission", MVC.API.Device.Decommission(Model.SerialNumber, true), "buttonDeviceDecommission"));
#line default
#line hidden
#line 5 "..\..\Views\Device\_DeviceActions.cshtml"
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"dialogConfirmDecommission\"");
WriteLiteral(" title=\"Decommission this Device?\"");
WriteLiteral(">\r\n <p>\r\n <span");
WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\"");
WriteLiteral("></span>\r\n Are you sure?</p>\r\n </div>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var button = $('#buttonDeviceDecommission');
var buttonDialog = $('#dialogConfirmDecommission');
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
""Decommission"": function () {
var $this = $(this);
$this.dialog(""disable"");
$this.dialog(""option"", ""buttons"", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog(""close"");
}
}
});
});
</script>
");
#line 40 "..\..\Views\Device\_DeviceActions.cshtml"
}
#line default
#line hidden
WriteLiteral(" ");
#line 41 "..\..\Views\Device\_DeviceActions.cshtml"
if (Model.CanRecommission())
{
#line default
#line hidden
#line 43 "..\..\Views\Device\_DeviceActions.cshtml"
Write(Html.ActionLinkButton("Recommission", MVC.API.Device.Recommission(Model.SerialNumber, true), "buttonDeviceRecommission"));
#line default
#line hidden
#line 43 "..\..\Views\Device\_DeviceActions.cshtml"
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"dialogConfirmRecommission\"");
WriteLiteral(" title=\"Recommission this Device?\"");
WriteLiteral(">\r\n <p>\r\n <span");
WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\"");
WriteLiteral("></span>\r\n Are you sure?</p>\r\n </div>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var button = $('#buttonDeviceRecommission');
var buttonDialog = $('#dialogConfirmRecommission');
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
""Recommission"": function () {
var $this = $(this);
$this.dialog(""disable"");
$this.dialog(""option"", ""buttons"", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog(""close"");
}
}
});
});
</script>
");
#line 78 "..\..\Views\Device\_DeviceActions.cshtml"
}
#line default
#line hidden
WriteLiteral(" ");
#line 79 "..\..\Views\Device\_DeviceActions.cshtml"
if (Model.CanDelete())
{
#line default
#line hidden
#line 81 "..\..\Views\Device\_DeviceActions.cshtml"
Write(Html.ActionLinkButton("Delete Device", MVC.API.Device.Delete(Model.SerialNumber, true), "buttonDeviceDelete"));
#line default
#line hidden
#line 81 "..\..\Views\Device\_DeviceActions.cshtml"
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"dialogConfirmDelete\"");
WriteLiteral(" title=\"Delete this Device?\"");
WriteLiteral(">\r\n <p>\r\n <span");
WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\"");
WriteLiteral("></span>\r\n This item will be permanently deleted and cannot be rec" +
"overed.<br />\r\n Jobs linked to this Device (but not to a User) wi" +
"ll be deleted also.<br />\r\n Are you sure?</p>\r\n </div>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var button = $('#buttonDeviceDelete');
var buttonDialog = $('#dialogConfirmDelete');
var buttonLink = button.attr('href');
button.attr('href', '#');
button.click(function () {
buttonDialog.dialog('open');
return false;
});
buttonDialog.dialog({
resizable: false,
height: 200,
modal: true,
autoOpen: false,
buttons: {
""Delete"": function () {
var $this = $(this);
$this.dialog(""disable"");
$this.dialog(""option"", ""buttons"", null);
window.location.href = buttonLink;
},
Cancel: function () {
$(this).dialog(""close"");
}
}
});
});
</script>
");
#line 118 "..\..\Views\Device\_DeviceActions.cshtml"
}
#line default
#line hidden
WriteLiteral(" ");
#line 119 "..\..\Views\Device\_DeviceActions.cshtml"
if (Model.CanCreateJob())
{
Html.BundleDeferred("~/ClientScripts/Modules/Disco-CreateJob");
#line default
#line hidden
#line 122 "..\..\Views\Device\_DeviceActions.cshtml"
Write(Html.ActionLinkButton("Create Job", MVC.Job.Create(Model.SerialNumber, Model.AssignedUserId), "buttonCreateJob"));
#line default
#line hidden
#line 122 "..\..\Views\Device\_DeviceActions.cshtml"
}
#line default
#line hidden
WriteLiteral("</div>");
}
}
}
#pragma warning restore 1591
@@ -1,142 +0,0 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Views.Device
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/_DeviceUserAssignmentHistoryTable.cshtml")]
public partial class DeviceUserAssignmentHistoryTable : System.Web.Mvc.WebViewPage<Disco.Models.Repository.Device>
{
public DeviceUserAssignmentHistoryTable()
{
}
public override void Execute()
{
#line 2 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
if (Model.DeviceUserAssignments.Count > 0)
{
#line default
#line hidden
WriteLiteral(" <table");
WriteLiteral(" class=\"genericData smallTable\"");
WriteLiteral(">\r\n <tr>\r\n <th>\r\n User\r\n </th>\r\n " +
" <th>\r\n Assigned\r\n </th>\r\n <th>\r\n " +
" Unassigned\r\n </th>\r\n </tr>\r\n");
#line 16 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
#line default
#line hidden
#line 16 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
foreach (var dua in Model.DeviceUserAssignments.OrderByDescending(m => m.AssignedDate))
{
#line default
#line hidden
WriteLiteral(" <tr>\r\n <td>\r\n");
WriteLiteral(" ");
#line 20 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
Write(Html.ActionLink(dua.AssignedUser.ToString(), MVC.User.Show(dua.AssignedUserId)));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 23 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
Write(CommonHelpers.FriendlyDate(dua.AssignedDate));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n <td>\r\n");
WriteLiteral(" ");
#line 26 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
Write(CommonHelpers.FriendlyDate(dua.UnassignedDate, "Current"));
#line default
#line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
#line 29 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
}
#line default
#line hidden
WriteLiteral(" </table>\r\n");
#line 31 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">No Assignment History Available</span>\r\n");
#line 35 "..\..\Views\Device\_DeviceUserAssignmentHistoryTable.cshtml"
}
#line default
#line hidden
}
}
}
#pragma warning restore 1591
@@ -5,7 +5,7 @@
<div class="jobTable">
@if (Model != null && Model.Items.Count() > 0)
{
<table class="jobTable@(Model.IsSmallTable ? " smallTable" : string.Empty)@(Model.HideClosedJobs ? " hideStatusClosed" : string.Empty)">
<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)
@@ -70,7 +70,7 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <table");
WriteAttribute("class", Tuple.Create(" class=\"", 223), Tuple.Create("\"", 351)
WriteAttribute("class", Tuple.Create(" class=\"", 223), Tuple.Create("\"", 459)
, Tuple.Create(Tuple.Create("", 231), Tuple.Create("jobTable", 231), true)
#line 8 "..\..\Views\Shared\_JobTableRender.cshtml"
@@ -86,6 +86,20 @@ WriteAttribute("class", Tuple.Create(" class=\"", 223), Tuple.Create("\"", 351)
#line default
#line hidden
, 291), false)
#line 8 "..\..\Views\Shared\_JobTableRender.cshtml"
, Tuple.Create(Tuple.Create("", 351), Tuple.Create<System.Object, System.Int32>(Model.EnablePaging ? " enablePaging" : string.Empty
#line default
#line hidden
, 351), false)
#line 8 "..\..\Views\Shared\_JobTableRender.cshtml"
, Tuple.Create(Tuple.Create("", 405), Tuple.Create<System.Object, System.Int32>(Model.EnableFilter ? " enableFilter" : string.Empty
#line default
#line hidden
, 405), false)
);
WriteLiteral(">\r\n <thead>\r\n <tr>\r\n");
@@ -364,16 +378,16 @@ WriteLiteral(" class=\"status\"");
WriteLiteral(">\r\n <span");
WriteAttribute("class", Tuple.Create(" class=\"", 2151), Tuple.Create("\"", 2189)
, Tuple.Create(Tuple.Create("", 2159), Tuple.Create("icon", 2159), true)
, Tuple.Create(Tuple.Create(" ", 2163), Tuple.Create("JobStatus", 2164), true)
WriteAttribute("class", Tuple.Create(" class=\"", 2259), Tuple.Create("\"", 2297)
, Tuple.Create(Tuple.Create("", 2267), Tuple.Create("icon", 2267), true)
, Tuple.Create(Tuple.Create(" ", 2271), Tuple.Create("JobStatus", 2272), true)
#line 55 "..\..\Views\Shared\_JobTableRender.cshtml"
, Tuple.Create(Tuple.Create("", 2173), Tuple.Create<System.Object, System.Int32>(item.StatusId
, Tuple.Create(Tuple.Create("", 2281), Tuple.Create<System.Object, System.Int32>(item.StatusId
#line default
#line hidden
, 2173), false)
, 2281), false)
);
WriteLiteral("></span>\r\n");
@@ -453,14 +467,14 @@ WriteLiteral(" class=\"type\"");
WriteLiteral(">\r\n <span");
WriteAttribute("title", Tuple.Create(" title=\"", 2685), Tuple.Create("\"", 2714)
WriteAttribute("title", Tuple.Create(" title=\"", 2793), Tuple.Create("\"", 2822)
#line 65 "..\..\Views\Shared\_JobTableRender.cshtml"
, Tuple.Create(Tuple.Create("", 2693), Tuple.Create<System.Object, System.Int32>(item.TypeDescription
, Tuple.Create(Tuple.Create("", 2801), Tuple.Create<System.Object, System.Int32>(item.TypeDescription
#line default
#line hidden
, 2693), false)
, 2801), false)
);
WriteLiteral(">");
@@ -632,14 +646,14 @@ WriteLiteral(" class=\"technician\"");
WriteLiteral(">\r\n <span");
WriteAttribute("title", Tuple.Create(" title=\"", 4040), Tuple.Create("\"", 4079)
WriteAttribute("title", Tuple.Create(" title=\"", 4148), Tuple.Create("\"", 4187)
#line 91 "..\..\Views\Shared\_JobTableRender.cshtml"
, Tuple.Create(Tuple.Create("", 4048), Tuple.Create<System.Object, System.Int32>(item.OpenedTechUserDisplayName
, Tuple.Create(Tuple.Create("", 4156), Tuple.Create<System.Object, System.Int32>(item.OpenedTechUserDisplayName
#line default
#line hidden
, 4048), false)
, 4156), false)
);
WriteLiteral(">");