Update: New Device UI
@@ -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)
|
||||
|
||||
@@ -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")]
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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":"CAAC,QAAS,CAACA,CAAM,CAAEC,CAAQ,CAAEC,CAAnB,CAAsB,CAC5B,IAAIC,EAAa,CAAA,CAAE,CAEnBD,CAAC,CAAC,QAAS,CAAA,CAAG,CAqHVE,SAASA,CAAW,CAAA,CAAG,CACnB,IAAIC,EAAUH,CAAC,CAAC,IAAD,CAAMI,QAAQ,CAAC,qBAAD,CAAuB,CAChDD,CAAOE,OAAQ,CAAE,C,EACjBP,CAAMQ,WAAW,CAAC,QAAS,CAAA,CAAG,CAC1B,IAAIC,EAAUP,CAAC,CAACF,CAAD,EACXU,EAAgBL,CAAOM,OAAO,CAAA,EAC9BC,EAAgBP,CAAOQ,OAAO,CAAA,EAC9BC,EAAkBL,CAAOM,UAAU,CAAA,EACnCC,EAAeP,CAAOE,OAAO,CAAA,EAE7BM,EAAqBH,CAAgB,CAAEF,CAAaM,KAIhDC,CAVe,CAOnBF,CAAmB,CAAE,CAAzB,CACIf,CAAC,CAAC,MAAD,CAAQkB,QAAQ,CAAC,CAAE,SAAS,CAAER,CAAaM,IAA1B,CAAgC,CAAE,GAAnC,CADrB,EAGQC,CAAsB,CAAE,CAAEL,CAAgB,CAAEE,CAAc,EAAGN,CAAc,CAAEE,CAAaM,KAAlE,CAAyE,CAAE,E,CACnGC,CAAsB,CAAE,C,GACpBT,CAAc,CAAEM,CAApB,CACId,CAAC,CAAC,MAAD,CAAQkB,QAAQ,CAAC,CAAE,SAAS,CAAER,CAAaM,IAA1B,CAAgC,CAAE,GAAnC,CADrB,CAGIhB,CAAC,CAAC,MAAD,CAAQkB,QAAQ,CAAC,CAAE,SAAS,CAAEN,CAAgB,CAAEK,CAA/B,CAAsD,CAAE,GAAzD,GAhBH,CAmB7B,CAAE,CAnBc,CAHF,CApHvBjB,CAAC,CAAC,gBAAD,CAAkBmB,KAAK,CAAC,QAAS,CAAA,CAAG,CACjC,IAAIC,EAASpB,CAAC,CAAC,IAAD,EACVqB,EAAa,CAAA,EAEbC,EAA8BF,CAAMG,KAAK,CAAC,IAAD,CAAMlB,OAAQ,CAAE,GACzDmB,EAAmB,CACnB,SAAW,CAAEF,CAA0B,CACvC,eAAiB,CAAE,cAAc,CACjC,aAAe,CAAEA,CAA0B,CAC3C,cAAgB,CAAE,EAAE,CACpB,OAAS,CAAE,CAAA,CAAI,CACf,KAAO,CAAE,CAAA,CAAI,CACb,KAAO,CAAE,CAAA,CAAK,CACd,UAAY,CAAE,CAAA,CAAK,CACnB,YAAc,CAAE,CACZ,CAAE,QAAU,CAAE,CAAC,OAAD,CAAS,CAAE,aAAe,CAAE,gBAAgB,CAAE,KAAO,CAAE,gBAArE,CADY,CAEf,CACD,SAAW,CAAE,CAAA,CAAE,CACf,SAAW,CAAE,CACT,OAAS,CAAE,SADF,CAEZ,CACD,cAAgB,CAAEG,QAAS,CAAA,CAAG,CACtBJ,CAAJ,CACInB,CAAWwB,MAAM,CAACN,CAAD,CADrB,CAGIC,CAAW,CAAE,CAAA,CAJS,CAhBX,EAwBnBM,EAAaP,CAAMQ,UAAU,CAACJ,CAAD,EAMzBK,EACAC,EAGI3B,EACA4B,EAGAC,EAOAC,CAjDQ,CA+BhBb,CAAMc,SAAS,CAAC,kBAAD,C,GAGXL,CAAO,CAAET,CAAMe,SAAS,CAAC,OAAD,C,CACxBL,CAAY,CAAED,CAAMM,SAAS,CAAC,0BAAD,C,CAE7BL,CAAWzB,OAAQ,CAAE,C,GACjBF,CAAQ,CAAEH,CAAC,CAAC,IAAD,CAAMI,QAAQ,CAAC,qBAAD,C,CACzB2B,CAAe,CAAE5B,C,CACjBA,CAAOiC,OAAO,CAAC,WAAD,CAAa/B,OAAQ,CAAE,C,GACrC0B,CAAe,CAAE5B,CAAOiC,OAAO,CAAA,EAAE,CACjCJ,CAAY,CAAED,CAAcM,KAAK,CAAA,C,CACjCL,CAAW3B,OAAQ,CAAE,CAAE,EAAG,CAAC2B,CAAWM,GAAG,CAAC,IAAD,CAAO,EAAGN,CAAWM,GAAG,CAAC,IAAD,CAAO,EAAGN,CAAWM,GAAG,CAAC,IAAD,CAA/D,CAA9B,CACIN,CAAWO,KAAK,CAAC,2BAA2B,CAAEP,CAAWQ,KAAK,CAAA,CAA9C,CAAiDC,KAAK,CAAC,SAAU,CAAET,CAAWS,KAAK,CAAA,CAA7B,CAD1E,CAGIT,CAAY,CAAE,I,CAGdC,CAAiB,CAAEjC,CAAC,CAAC,kDAAD,CAAoDyC,KAAK,CAAC,eAAgB,CAAEX,CAAWzB,OAAQ,CAAE,GAAxC,C,CACjFF,CAAOuC,QAAQ,CAACT,CAAD,CAAkB,CACjCA,CAAgBU,MAAM,CAAC,QAAS,CAAA,CAAG,CAQ/B,OAPAvB,CAAMwB,YAAY,CAAC,kBAAD,CAAoB,CACtCX,CAAgBY,OAAO,CAAA,CAAE,CACrBb,C,EACAA,CAAWQ,KAAK,CAACR,CAAWO,KAAK,CAAC,2BAAD,CAAjB,CAA+C,CAEnErC,CAAWwB,MAAM,CAACN,CAAO,CAAA,CAAA,CAAR,CAAW,CAErB,CAAA,CARwB,CAAb,GASpB,CAMVnB,CAAU6C,KAAK,CAAC,IAAD,CAnEkB,CAAb,CAoEtB,CAEF9C,CAAC,CAAC,mBAAD,CAAqBmB,KAAK,CAAC,QAAS,CAAA,CAAG,CACpC,IAAIC,EAASpB,CAAC,CAAC,IAAD,EAEVsB,EAA8BF,CAAMG,KAAK,CAAC,IAAD,CAAMlB,OAAQ,CAAE,GACzDmB,EAAmB,CACnB,SAAW,CAAEF,CAA0B,CACvC,eAAiB,CAAE,cAAc,CACjC,aAAe,CAAEA,CAA0B,CAC3C,cAAgB,CAAE,EAAE,CACpB,OAAS,CAAE,CAAA,CAAI,CACf,KAAO,CAAE,CAAA,CAAI,CACb,KAAO,CAAE,CAAA,CAAK,CACd,UAAY,CAAE,CAAA,CAAK,CACnB,SAAW,CAAE,CAAA,CAAE,CACf,SAAW,CAAE,CACT,OAAS,CAAE,SADF,CAVM,CAHH,CAkBpBF,CAAMQ,UAAU,CAACJ,CAAD,CAAkB,CAClCvB,CAAU6C,KAAK,CAAC,IAAD,CApBqB,CAAb,CAqBzB,CAEF9C,CAAC,CAAC,iBAAD,CAAmBmB,KAAK,CAAC,QAAS,CAAA,CAAG,CAClC,IAAIC,EAASpB,CAAC,CAAC,IAAD,EAEVsB,EAA8BF,CAAMG,KAAK,CAAC,IAAD,CAAMlB,OAAQ,CAAE,GACzDmB,EAAmB,CACnB,SAAW,CAAEF,CAA0B,CACvC,eAAiB,CAAE,cAAc,CACjC,aAAe,CAAEA,CAA0B,CAC3C,cAAgB,CAAE,EAAE,CACpB,OAAS,CAAE,CAAA,CAAI,CACf,KAAO,CAAE,CAAA,CAAI,CACb,KAAO,CAAE,CAAA,CAAK,CACd,UAAY,CAAE,CAAA,CAAK,CACnB,SAAW,CAAE,CAAA,CAAE,CACf,SAAW,CAAE,CACT,OAAS,CAAE,SADF,CAVM,CAHH,CAkBpBF,CAAMQ,UAAU,CAACJ,CAAD,CAAkB,CAClCvB,CAAU6C,KAAK,CAAC,IAAD,CApBmB,CAAb,CA9Ff,CAAb,CAH2B,EAsJ9B,CAAChD,MAAM,CAAEC,QAAQ,CAAEC,CAAnB,CAAqB",
|
||||
"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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
table.deviceShow td.details > table > tbody > tr > th.name {
|
||||
width: 170px;
|
||||
text-align: right;
|
||||
#Device_Show #Device_Show_Subjects > tbody > tr > td {
|
||||
padding-top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
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_Show_Subjects > tbody > tr > td > div {
|
||||
position: relative;
|
||||
}
|
||||
table.deviceShow td.details > table table.sub > tbody > tr > th {
|
||||
font-weight: normal;
|
||||
text-align: right;
|
||||
#Device_Show #Device_Show_Subjects > tbody > tr > td > div div.status {
|
||||
margin-top: 2px;
|
||||
padding-top: 2px;
|
||||
border-top: 1px dashed #ddd;
|
||||
}
|
||||
table.deviceShow td.details > table table.sub > tbody > tr > th.name {
|
||||
text-align: right;
|
||||
#Device_Show #Device_Show_Subjects > tbody > tr > td > div input.discreet {
|
||||
margin-left: -2px;
|
||||
}
|
||||
table.deviceShow td.model {
|
||||
width: 300px;
|
||||
#Device_Show #Device_Show_Subjects > tbody > tr > td:not(:last-child) {
|
||||
border-right: 1px dashed #aaa;
|
||||
}
|
||||
table.deviceShow td.model table td {
|
||||
text-align: center;
|
||||
}
|
||||
table.deviceShow #deviceBatchSummary {
|
||||
#Device_Show #Device_Show_Subjects .dialog {
|
||||
display: none;
|
||||
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_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;
|
||||
}
|
||||
|
||||
@@ -1,142 +1,430 @@
|
||||
@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;
|
||||
|
||||
td.model {
|
||||
width: 300px;
|
||||
span.icon {
|
||||
margin-right: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
td {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
#deviceBatchSummary {
|
||||
display: none;
|
||||
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_Show_Subjects {
|
||||
table-layout: fixed;
|
||||
|
||||
& > 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
& > 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;
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a.unlocked16 {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
width: 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*/;
|
||||
display: inline-block;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
a.locked16 {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
width: 16px;
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACgklEQVQ4y5XSXUhTYRgH8OkItViSri676CIIupC6kIjIrQTNtLbhMEOLmjGsi1CiJoULZmEpW4l5RDehkR/owJNF+3DLliMd6GDWcrFNyNEceAarZZuc7d8xSNQzgx54Lt6v3/vxvBwAnI3Z0NDAJQiifWJiImgwGOIkScasVuuMWq2u3Dp3LTc15HJ5Zk9PzzhFURh79fpTr7avv4voHns/ORkJh8NQqVTX/wmIxWLZW5sNBNGt3tgvrareYzQavVqt9nt5eXnetkCTosk4OkrGWh485G7dqfXR4yvMlSCVSs9sC3z2frFOTU0vp7ur2TJe4XA4oNFoKrcFZl0us9lsodIBk44PpSaTCXa7vSwtoNPpAsxqOJ1OBAIBOhKJ0PF4nE6lUjQzTq+srKR8Ph/m5uaSS0tLLSygsbFx1ev1IhgMwuPxIBQKIRaLIZlM4m+4XC4olUp0dna+YwEKhSLh9/uxuLgIt9v9B4pGo6Bpeh1YOx1TSuj1+nEWcPfe/cSsy4fgtzB8vgX4F34wADbF/Pw81JoOGEgbG3jeVppY9jVD2XwbN+ol+BURwdBfC1ldPaL+ywi5ZTgvuYibshJQ5nNsQFxWmHCTRzHWvR88XjaeKrmgPnJw8AAPFcKdzANkQCrIQn4+H3fEWWyg4MixuOD4IdDTeWiTZyB3Nw+Wrkx4BjOxj5+LW1XZwDAHJw/vAjdnr5kNFBSsSipr0asqwcKbQlyqLkH91bOgZk6DaKlgfuAFzOpOwN5xCnw+37kOFBcX7ygqKrpWU1P7kylPqrXtGdqf6DAwMIjhkZcYGrHAZLbBYrGhT0/ixdBoSiQSfRUKhRKBQJDDSffr/id/A3fSz48XbZuBAAAAAElFTkSuQmCC) /*Images/Actions/locked.png*/;
|
||||
display: inline-block;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
#deviceShowResources {
|
||||
margin-top: 10px;
|
||||
#Attachments {
|
||||
padding: 0;
|
||||
border: 1px solid @SubtleBorderColour;
|
||||
div.attachmentOutput {
|
||||
height: 115px;
|
||||
overflow: auto;
|
||||
font-size: 0.95em;
|
||||
&>a{
|
||||
display: block;
|
||||
float: left;
|
||||
height: 48px;
|
||||
width: 221px;
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
font-size: 0.9em;
|
||||
border: 1px solid #fff;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
span.comments, span.author, span.timestamp {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 168px;
|
||||
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;
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
border: 1px solid #fff;
|
||||
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,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) /*Images/Actions/photo.png*/;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#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;
|
||||
height: 48px;
|
||||
width: 221px;
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
font-size: 0.9em;
|
||||
border: 1px solid #fff;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
|
||||
span.comments, span.author, span.timestamp {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 168px;
|
||||
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;
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
border: 1px solid #fff;
|
||||
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,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) /*Images/Actions/photo.png*/;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#DeviceDetailTab-Jobs {
|
||||
#DeviceDetailTab-JobsContainer {
|
||||
padding-top: 24px;
|
||||
|
||||
.dataTables_filter {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
div.jobTable {
|
||||
margin: -1px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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*/;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 260 B |
|
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 251 B |
|
Before Width: | Height: | Size: 72 B After Width: | Height: | Size: 178 B |
|
Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 104 B |
|
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 125 B |
|
Before Width: | Height: | Size: 74 B After Width: | Height: | Size: 105 B |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 278 B After Width: | Height: | Size: 90 B |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 129 B |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 4.3 KiB |
@@ -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);
|
||||
|
||||
|
||||
@@ -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}" />
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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")]
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"><Unknown/Not Allocated></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">
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a class="locked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "true", true))" title="Unauthenticated Enrolment is Blocked">
|
||||
</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,78 +2,82 @@
|
||||
@{
|
||||
Html.BundleDeferred("~/Style/Shadowbox");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Shadowbox");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Silverlight");
|
||||
}
|
||||
<table id="deviceShowResources">
|
||||
<tr>
|
||||
<td id="Attachments">
|
||||
<div class="attachmentOutput">
|
||||
@if (Model.Device.DeviceAttachments != null)
|
||||
{
|
||||
foreach (var da in Model.Device.DeviceAttachments)
|
||||
<div id="DeviceDetailTab-Resources" class="DevicePart">
|
||||
<table id="deviceShowResources">
|
||||
<tr>
|
||||
<td id="Attachments">
|
||||
<div class="attachmentOutput">
|
||||
@if (Model.Device.DeviceAttachments != null)
|
||||
{
|
||||
<a href="@Url.Action(MVC.API.Device.AttachmentDownload(da.Id))" data-attachmentid="@da.Id" data-mimetype="@da.MimeType">
|
||||
<span class="icon" title="@da.Filename">
|
||||
<img alt="Attachment Thumbnail" src="@(Url.Action(MVC.API.Device.AttachmentThumbnail(da.Id)))" /></span>
|
||||
<span class="comments" title="@da.Comments">
|
||||
@{if (!string.IsNullOrEmpty(da.DocumentTemplateId))
|
||||
{ @da.DocumentTemplate.Description}
|
||||
else
|
||||
{ @da.Comments }}
|
||||
</span><span class="author">@da.TechUser.ToString()</span><span class="remove"></span><span class="timestamp" title="@da.Timestamp.ToFullDateTime()">@da.Timestamp.ToFuzzy()</span>
|
||||
</a>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
<div class="attachmentInput clearfix">
|
||||
<span class="action upload"></span><span class="action photo"></span>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
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');
|
||||
foreach (var da in Model.Device.DeviceAttachments)
|
||||
{
|
||||
<a href="@Url.Action(MVC.API.Device.AttachmentDownload(da.Id))" data-attachmentid="@da.Id" data-mimetype="@da.MimeType">
|
||||
<span class="icon" title="@da.Filename">
|
||||
<img alt="Attachment Thumbnail" src="@(Url.Action(MVC.API.Device.AttachmentThumbnail(da.Id)))" /></span>
|
||||
<span class="comments" title="@da.Comments">
|
||||
@{if (!string.IsNullOrEmpty(da.DocumentTemplateId))
|
||||
{ @da.DocumentTemplate.Description}
|
||||
else
|
||||
{ @da.Comments }}
|
||||
</span><span class="author">@da.TechUser.ToString()</span><span class="remove"></span><span class="timestamp" title="@da.Timestamp.ToFullDateTime()">@da.Timestamp.ToFuzzy()</span>
|
||||
</a>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
<div class="attachmentInput clearfix">
|
||||
<span class="action upload"></span><span class="action photo"></span>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
Shadowbox.init({
|
||||
skipSetup: true,
|
||||
modal: true
|
||||
});
|
||||
$(function () {
|
||||
if (!document.DiscoFunctions) {
|
||||
document.DiscoFunctions = {};
|
||||
}
|
||||
document.DiscoFunctions.addAttachment = addAttachment;
|
||||
|
||||
$('#dialogRemoveAttachment').dialog({
|
||||
resizable: false,
|
||||
height: 140,
|
||||
modal: true,
|
||||
autoOpen: false
|
||||
});
|
||||
$Attachments = $('#Attachments');
|
||||
$attachmentOutput = $Attachments.find('.attachmentOutput');
|
||||
|
||||
var onLoadNavigation = null;
|
||||
var isLoaded = null;
|
||||
Silverlight.createObject(
|
||||
'@(Links.ClientBin.Disco_Silverlight_AttachmentUpload_xap)',
|
||||
$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(
|
||||
'@(Links.ClientBin.Disco_Silverlight_AttachmentUpload_xap)',
|
||||
$('#silverlightHostUploadAttachment').get(0),
|
||||
'silverlightUploadAttachment',
|
||||
{ width: '840px', height: '500px', background: 'white', version: '4.0.60310.0' },
|
||||
{ onLoad: function () {
|
||||
if (onLoadNavigation) {
|
||||
silverlightUploadAttachment.content.Navigator.Navigate(onLoadNavigation);
|
||||
isLoaded = true;
|
||||
{
|
||||
onLoad: function () {
|
||||
if (onLoadNavigation) {
|
||||
silverlightUploadAttachment.content.Navigator.Navigate(onLoadNavigation);
|
||||
isLoaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'UploadUrl=@(Url.Action(MVC.API.Device.AttachmentUpload(Model.Device.SerialNumber, null)))'
|
||||
);
|
||||
@@ -168,7 +172,7 @@
|
||||
});
|
||||
|
||||
$dialogRemoveAttachment.dialog('open');
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -178,16 +182,21 @@
|
||||
$this.shadowbox({ gallery: 'attachments', player: 'img', title: $this.find('.comments').text() });
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="dialogUpload" title="Upload Attachment">
|
||||
<div id="silverlightHostUploadAttachment">
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="dialogUpload" title="Upload Attachment">
|
||||
<div id="silverlightHostUploadAttachment">
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
</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>
|
||||
<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>
|
||||
</div>
|
||||
@@ -45,57 +45,64 @@ 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\"");
|
||||
|
||||
WriteLiteral(">\r\n <tr>\r\n <td");
|
||||
WriteLiteral(">\r\n <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" id=\"Attachments\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
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"
|
||||
if (Model.Device.DeviceAttachments != null)
|
||||
{
|
||||
foreach (var da in Model.Device.DeviceAttachments)
|
||||
#line 12 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
if (Model.Device.DeviceAttachments != null)
|
||||
{
|
||||
foreach (var da in Model.Device.DeviceAttachments)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <a");
|
||||
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"
|
||||
Write(da.Id);
|
||||
#line 16 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.Id);
|
||||
|
||||
|
||||
#line default
|
||||
@@ -105,108 +112,108 @@ WriteLiteral("\"");
|
||||
WriteLiteral(" data-mimetype=\"");
|
||||
|
||||
|
||||
#line 14 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.MimeType);
|
||||
#line 16 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.MimeType);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\"");
|
||||
|
||||
WriteLiteral(">\r\n <span");
|
||||
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(">\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(" /></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"
|
||||
if (!string.IsNullOrEmpty(da.DocumentTemplateId))
|
||||
{
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 19 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.DocumentTemplate.Description);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 19 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
}
|
||||
else
|
||||
{
|
||||
#line 20 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
if (!string.IsNullOrEmpty(da.DocumentTemplateId))
|
||||
{
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 21 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.Comments);
|
||||
Write(da.DocumentTemplate.Description);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 21 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </span><span");
|
||||
|
||||
#line 23 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.Comments);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 23 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
}
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </span><span");
|
||||
|
||||
WriteLiteral(" class=\"author\"");
|
||||
|
||||
WriteLiteral(">");
|
||||
|
||||
|
||||
#line 22 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.TechUser.ToString());
|
||||
#line 24 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(da.TechUser.ToString());
|
||||
|
||||
|
||||
#line default
|
||||
@@ -219,40 +226,40 @@ 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"
|
||||
Write(da.Timestamp.ToFuzzy());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</span>\r\n </a> \r\n");
|
||||
|
||||
|
||||
#line 24 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
}
|
||||
}
|
||||
Write(da.Timestamp.ToFuzzy());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </div>\r\n <div");
|
||||
WriteLiteral("</span>\r\n </a> \r\n");
|
||||
|
||||
|
||||
#line 26 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </div>\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"attachmentInput clearfix\"");
|
||||
|
||||
WriteLiteral(">\r\n <span");
|
||||
WriteLiteral(">\r\n <span");
|
||||
|
||||
WriteLiteral(" class=\"action upload\"");
|
||||
|
||||
@@ -260,52 +267,35 @@ WriteLiteral("></span><span");
|
||||
|
||||
WriteLiteral(" class=\"action photo\"");
|
||||
|
||||
WriteLiteral("></span>\r\n </div>\r\n <script");
|
||||
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"
|
||||
Write(Links.ClientBin.Disco_Silverlight_AttachmentUpload_xap);
|
||||
#line 70 "..\..\Views\Device\DeviceParts\Resources.cshtml"
|
||||
Write(Links.ClientBin.Disco_Silverlight_AttachmentUpload_xap);
|
||||
|
||||
|
||||
#line default
|
||||
@@ -314,17 +304,18 @@ WriteLiteral(@"',
|
||||
$('#silverlightHostUploadAttachment').get(0),
|
||||
'silverlightUploadAttachment',
|
||||
{ width: '840px', height: '500px', background: 'white', version: '4.0.60310.0' },
|
||||
{ onLoad: function () {
|
||||
if (onLoadNavigation) {
|
||||
silverlightUploadAttachment.content.Navigator.Navigate(onLoadNavigation);
|
||||
isLoaded = true;
|
||||
{
|
||||
onLoad: function () {
|
||||
if (onLoadNavigation) {
|
||||
silverlightUploadAttachment.content.Navigator.Navigate(onLoadNavigation);
|
||||
isLoaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'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,36 +434,47 @@ 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\"");
|
||||
|
||||
WriteLiteral(" title=\"Upload Attachment\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"silverlightHostUploadAttachment\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n</div>\r\n<div");
|
||||
WriteLiteral(">\r\n </div>\r\n </div>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"dialogRemoveAttachment\"");
|
||||
|
||||
WriteLiteral(" title=\"Remove this Attachment?\"");
|
||||
|
||||
WriteLiteral(">\r\n <p>\r\n <span");
|
||||
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>");
|
||||
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"><Unknown/Not Allocated></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>
|
||||
@@ -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"><Unknown/Not Allocated></span>
|
||||
<div id="Device_Show">
|
||||
<div id="Device_Show_Status">
|
||||
<span class="icon DeviceStatus@(deviceStatus.Replace(" ", string.Empty))"></span>@deviceStatus
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$('#Device_Show_Status').appendTo('#layout_PageHeading')
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
@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').animate({ scrollTop: windowScrollTop + tabBottomNotShown }, 125);
|
||||
}
|
||||
}
|
||||
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">
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a class="locked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "true", true))" title="Unauthenticated Enrolment is Blocked">
|
||||
</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>
|
||||
}, 1);
|
||||
}
|
||||
<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)
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<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)
|
||||
@Html.Partial(MVC.Device.Views.DeviceParts.Certificates, Model)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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(">");
|
||||
|
||||