Update: Device Battery field, Excel CSV Format

Device Battery import & export; Leading zero workaround for Excel
This commit is contained in:
Gary Sharp
2014-05-27 16:36:42 +10:00
parent 825627e345
commit 4e69253852
16 changed files with 400 additions and 80 deletions
@@ -66,7 +66,7 @@ namespace Disco.BI.Extensions
detail.Value = Value;
}
}
}
}
#endregion
#region LanMacAddress
@@ -84,7 +84,7 @@ namespace Disco.BI.Extensions
public static void LanMacAddress(this IEnumerable<DeviceDetail> details, Device device, string LanMacAddress)
{
device.SetDetail(DeviceDetail.ScopeHardware, DeviceDetail.HardwareKeyLanMacAddress, LanMacAddress);
}
}
#endregion
#region WLanMacAddress
@@ -102,7 +102,7 @@ namespace Disco.BI.Extensions
public static void WLanMacAddress(this IEnumerable<DeviceDetail> details, Device device, string WLanMacAddress)
{
device.SetDetail(DeviceDetail.ScopeHardware, DeviceDetail.HardwareKeyWLanMacAddress, WLanMacAddress);
}
}
#endregion
#region ACAdapter
@@ -123,5 +123,22 @@ namespace Disco.BI.Extensions
}
#endregion
#region Battery
/// <summary>
/// Gets the Battery Device Detail Value
/// </summary>
/// <returns>The Battery or null</returns>
public static string Battery(this IEnumerable<DeviceDetail> details)
{
return details.GetDetail(DeviceDetail.ScopeHardware, DeviceDetail.HardwareKeyBattery);
}
/// <summary>
/// Sets the Battery Device Detail Value
/// </summary>
public static void Battery(this IEnumerable<DeviceDetail> details, Device device, string Battery)
{
device.SetDetail(DeviceDetail.ScopeHardware, DeviceDetail.HardwareKeyBattery, Battery);
}
#endregion
}
}
@@ -14,6 +14,7 @@ namespace Disco.Models.Repository
public const string HardwareKeyLanMacAddress = "LanMacAddress";
public const string HardwareKeyWLanMacAddress = "WLanMacAddress";
public const string HardwareKeyACAdapter = "ACAdapter";
public const string HardwareKeyBattery = "Battery";
[Column(Order = 0), Key]
public string DeviceSerialNumber { get; set; }
@@ -11,6 +11,11 @@ namespace Disco.Models.Services.Devices.Exporting
{
public DeviceExportTypes ExportType { get; set; }
public int? ExportTypeTargetId { get; set; }
/// <summary>
/// Adds '=' to the beginning of the string to stop Excel removing the leading zeros
/// </summary>
public bool ExcelCsvFormat { get; set; }
// Device
[Display(ShortName = "Device", Name = "Serial Number", Description = "The device serial number")]
@@ -41,6 +46,8 @@ namespace Disco.Models.Services.Devices.Exporting
public bool DetailWLanMacAddress { get; set; }
[Display(ShortName = "Details", Name = "AC Adapter", Description = "The AC Adapter associated with the device")]
public bool DetailACAdapter { get; set; }
[Display(ShortName = "Details", Name = "Battery", Description = "The Battery associated with the device")]
public bool DetailBattery { get; set; }
// Model
[Display(ShortName = "Model", Name = "Identifier", Description = "The identifier of the device model associated with the device")]
@@ -124,6 +131,7 @@ namespace Disco.Models.Services.Devices.Exporting
return new DeviceExportOptions()
{
ExportType = DeviceExportTypes.All,
ExcelCsvFormat = true,
DeviceSerialNumber = true,
ModelId = true,
ProfileId = true,
@@ -26,6 +26,8 @@ namespace Disco.Models.Services.Devices.Importing
DetailWLanMacAddress,
[Display(Name = "Device AC Adapter", Description = "The AC Adapter associated with the device")]
DetailACAdapter,
[Display(Name = "Device Battery", Description = "The Battery associated with the device")]
DetailBattery,
[Display(Name = "Model Identifier", Description = "The identifier of the device model associated with the device")]
ModelId,
@@ -39,7 +39,7 @@ namespace Disco.Services.Devices.Exporting
{
UserService.GetUser(userId, Database);
}
catch (Exception) {} // Ignore Errors
catch (Exception) { } // Ignore Errors
});
}
@@ -74,9 +74,19 @@ namespace Disco.Services.Devices.Exporting
foreach (var record in records)
{
writer.WriteLine();
writer.Write(string.Join(",", metadata.Select(m => {
writer.Write(string.Join(",", metadata.Select(m =>
{
var value = m.Item3(record);
return (m.Item4 && value != null) ? string.Concat("\"", value, "\"") : value;
var isString = m.Item4;
if (value == null)
return null;
else if (!isString)
return value;
else if (Options.ExcelCsvFormat)
return string.Concat("=\"", value, "\"");
else
return string.Concat("\"", value, "\"");
})));
}
}
@@ -116,12 +126,17 @@ namespace Disco.Services.Devices.Exporting
private static IEnumerable<DeviceExportRecord> BuildRecords(IQueryable<Device> Devices)
{
var deviceDetailHardwareKeys = new List<string> { DeviceDetail.HardwareKeyLanMacAddress, DeviceDetail.HardwareKeyWLanMacAddress, DeviceDetail.HardwareKeyACAdapter };
var deviceDetailHardwareKeys = new List<string> {
DeviceDetail.HardwareKeyLanMacAddress,
DeviceDetail.HardwareKeyWLanMacAddress,
DeviceDetail.HardwareKeyACAdapter,
DeviceDetail.HardwareKeyBattery
};
return Devices.Select(d => new DeviceExportRecord()
{
Device = d,
DeviceDetails = d.DeviceDetails.Where(dd => dd.Scope == DeviceDetail.ScopeHardware && deviceDetailHardwareKeys.Contains(dd.Key)),
ModelId = d.DeviceModelId,
@@ -165,7 +180,8 @@ namespace Disco.Services.Devices.Exporting
.Where(p => p.PropertyType == typeof(bool))
.Select(p => Tuple.Create(p, (DisplayAttribute)p.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault()))
.Where(p => p.Item2 != null && (bool)p.Item1.GetValue(Options))
.Select(p => {
.Select(p =>
{
var accessor = allAssessors.First(i => i.Item1 == p.Item1.Name);
var columnName = (p.Item2.ShortName == "Device" || p.Item2.ShortName == "Details") ? p.Item2.Name : string.Format("{0} {1}", p.Item2.ShortName, p.Item2.Name);
return Tuple.Create(p.Item1.Name, columnName, accessor.Item2, accessor.Item3);
@@ -188,12 +204,13 @@ namespace Disco.Services.Devices.Exporting
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DeviceFirstEnrolledDate", r => r.Device.EnrolledDate.HasValue ? r.Device.EnrolledDate.Value.ToString(DateTimeFormat) : null, false);
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DeviceLastEnrolledDate", r => r.Device.LastEnrolDate.HasValue ? r.Device.LastEnrolDate.Value.ToString(DateTimeFormat) : null, false);
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DeviceDecommissionedDate", r => r.Device.DecommissionedDate.HasValue ? r.Device.DecommissionedDate.Value.ToString(DateTimeFormat) : null, false);
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DeviceDecommissionedReason", r => r.Device.DecommissionReason.HasValue ? r.Device.DecommissionReason.Value.ToString() : null, true);
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DeviceDecommissionedReason", r => r.Device.DecommissionReason.HasValue ? r.Device.DecommissionReason.Value.ToString() : null, true);
// Details
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DetailLanMacAddress", r => r.DeviceDetails.Where(dd => dd.Key == DeviceDetail.HardwareKeyLanMacAddress).Select(dd => dd.Value).FirstOrDefault(), true);
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DetailWLanMacAddress", r => r.DeviceDetails.Where(dd => dd.Key == DeviceDetail.HardwareKeyWLanMacAddress).Select(dd => dd.Value).FirstOrDefault(), true);
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DetailACAdapter", r => r.DeviceDetails.Where(dd => dd.Key == DeviceDetail.HardwareKeyACAdapter).Select(dd => dd.Value).FirstOrDefault(), true);
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("DetailBattery", r => r.DeviceDetails.Where(dd => dd.Key == DeviceDetail.HardwareKeyBattery).Select(dd => dd.Value).FirstOrDefault(), true);
// Model
yield return new Tuple<string, Func<DeviceExportRecord, string>, bool>("ModelId", r => r.ModelId.HasValue ? r.ModelId.Value.ToString() : null, false);
@@ -30,6 +30,7 @@ namespace Disco.Services.Devices.Importing
{ DeviceImportFieldTypes.DetailLanMacAddress, typeof(DetailLanMacAddressImportField) },
{ DeviceImportFieldTypes.DetailWLanMacAddress, typeof(DetailWLanMacAddressImportField) },
{ DeviceImportFieldTypes.DetailACAdapter, typeof(DetailACAdapterImportField) },
{ DeviceImportFieldTypes.DetailBattery, typeof(DetailBatteryImportField) },
{ DeviceImportFieldTypes.ModelId, typeof(ModelIdImportField) },
@@ -5,7 +5,6 @@ using Disco.Services.Users;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
namespace Disco.Services.Devices.Importing.Fields
@@ -0,0 +1,98 @@
using Disco.Data.Repository;
using Disco.Models.Repository;
using Disco.Models.Services.Devices.Importing;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace Disco.Services.Devices.Importing.Fields
{
internal class DetailBatteryImportField : DeviceImportFieldBase
{
private string parsedValue;
private string previousValue;
public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DetailBattery; } }
public override object RawParsedValue { get { return parsedValue; } }
public override string FriendlyValue { get { return parsedValue; } }
public override string FriendlyPreviousValue { get { return previousValue; } }
public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary<DeviceImportFieldTypes, string> Values, string Value)
{
if (string.IsNullOrWhiteSpace(Value))
parsedValue = null;
else
{
parsedValue = Value.Trim();
}
if (ExistingDevice == null && parsedValue != null)
return Success(EntityState.Added);
else if (ExistingDevice != null)
{
var detail = ExistingDevice.DeviceDetails.FirstOrDefault(dd => dd.Scope == DeviceDetail.ScopeHardware && dd.Key == DeviceDetail.HardwareKeyBattery);
if (detail == null && parsedValue == null)
return Success(EntityState.Unchanged);
else if (detail == null && parsedValue != null)
{
return Success(EntityState.Modified);
}
else if (detail.Value != parsedValue)
{
previousValue = detail.Value;
return Success(EntityState.Modified);
}
else
return Success(EntityState.Unchanged);
}
else
return Success(EntityState.Unchanged);
}
public override bool Apply(DiscoDataContext Database, Device Device)
{
if (this.FieldAction == EntityState.Added ||
this.FieldAction == EntityState.Modified)
{
DeviceDetail detail = Database.DeviceDetails.FirstOrDefault(dd =>
dd.DeviceSerialNumber == Device.SerialNumber &&
dd.Scope == DeviceDetail.ScopeHardware &&
dd.Key == DeviceDetail.HardwareKeyBattery);
if (detail == null)
{
detail = new DeviceDetail()
{
Device = Device,
DeviceSerialNumber = Device.SerialNumber,
Scope = DeviceDetail.ScopeHardware,
Key = DeviceDetail.HardwareKeyBattery
};
Database.DeviceDetails.Add(detail);
}
detail.Value = parsedValue;
return true;
}
else
{
return false;
}
}
public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context)
{
// column name
var possibleColumns = Context.Header
.Select((h, i) => Tuple.Create(h, i))
.Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn &&
h.Item1.Item1.IndexOf("battery", System.StringComparison.OrdinalIgnoreCase) >= 0);
return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault();
}
}
}
@@ -4,9 +4,7 @@ using Disco.Models.Services.Devices.Importing;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Text;
namespace Disco.Services.Devices.Importing.Fields
{
+2 -1
View File
@@ -188,6 +188,7 @@
<Compile Include="Devices\Importing\DeviceImportRecord.cs" />
<Compile Include="Devices\Importing\Fields\BatchIdImportField.cs" />
<Compile Include="Devices\Importing\Fields\AssignedUserIdImportField.cs" />
<Compile Include="Devices\Importing\Fields\DetailBatteryImportField.cs" />
<Compile Include="Devices\Importing\Fields\DeviceDecommissionedReasonImportField.cs" />
<Compile Include="Devices\Importing\Fields\DeviceDecommissionedDateImportField.cs" />
<Compile Include="Devices\Importing\Fields\ProfileIdImportField.cs" />
@@ -326,7 +327,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildAction="Both" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" />
<UserProperties BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_BuildAction="Both" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
</VisualStudio>
</ProjectExtensions>
<PropertyGroup>
@@ -27,6 +27,7 @@ namespace Disco.Web.Areas.API.Controllers
const string pLocation = "location";
const string pAllowUnauthenticatedEnrol = "allowunauthenticatedenrol";
const string pDetailACAdapter = "detailacadapter";
const string pDetailBattery = "detailbattery";
public virtual ActionResult Update(string id, string key, string value = null, bool redirect = false)
{
@@ -71,6 +72,10 @@ namespace Disco.Web.Areas.API.Controllers
Authorization.Require(Claims.Device.Properties.Details);
UpdateDetailACAdapter(device, value);
break;
case pDetailBattery:
Authorization.Require(Claims.Device.Properties.Details);
UpdateDetailBattery(device, value);
break;
default:
throw new Exception("Invalid Update Key");
}
@@ -145,6 +150,12 @@ namespace Disco.Web.Areas.API.Controllers
return Update(id, pDetailACAdapter, DetailACAdapter, redirect);
}
[DiscoAuthorize(Claims.Device.Properties.Details)]
public virtual ActionResult UpdateDetailBattery(string id, string DetailBattery = null, bool redirect = false)
{
return Update(id, pDetailBattery, DetailBattery, redirect);
}
#endregion
#region Update Properties
@@ -258,6 +269,14 @@ namespace Disco.Web.Areas.API.Controllers
device.DeviceDetails.ACAdapter(device, ACAdapter.Trim());
Database.SaveChanges();
}
private void UpdateDetailBattery(Disco.Models.Repository.Device device, string Battery)
{
if (string.IsNullOrWhiteSpace(Battery))
device.DeviceDetails.Battery(device, null);
else
device.DeviceDetails.Battery(device, Battery.Trim());
Database.SaveChanges();
}
#endregion
#region Device Actions
+30
View File
@@ -3543,6 +3543,12 @@ namespace Disco.Web.Areas.API.Controllers
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateDetailBattery()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateDetailBattery);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult Decommission()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Decommission);
@@ -3661,6 +3667,7 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string UpdateAssignedUserId = "UpdateAssignedUserId";
public readonly string UpdateAllowUnauthenticatedEnrol = "UpdateAllowUnauthenticatedEnrol";
public readonly string UpdateDetailACAdapter = "UpdateDetailACAdapter";
public readonly string UpdateDetailBattery = "UpdateDetailBattery";
public readonly string Decommission = "Decommission";
public readonly string Recommission = "Recommission";
public readonly string Delete = "Delete";
@@ -3691,6 +3698,7 @@ namespace Disco.Web.Areas.API.Controllers
public const string UpdateAssignedUserId = "UpdateAssignedUserId";
public const string UpdateAllowUnauthenticatedEnrol = "UpdateAllowUnauthenticatedEnrol";
public const string UpdateDetailACAdapter = "UpdateDetailACAdapter";
public const string UpdateDetailBattery = "UpdateDetailBattery";
public const string Decommission = "Decommission";
public const string Recommission = "Recommission";
public const string Delete = "Delete";
@@ -3793,6 +3801,16 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string DetailACAdapter = "DetailACAdapter";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_UpdateDetailBattery s_params_UpdateDetailBattery = new ActionParamsClass_UpdateDetailBattery();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateDetailBattery UpdateDetailBatteryParams { get { return s_params_UpdateDetailBattery; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateDetailBattery
{
public readonly string id = "id";
public readonly string DetailBattery = "DetailBattery";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_Decommission s_params_Decommission = new ActionParamsClass_Decommission();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_Decommission DecommissionParams { get { return s_params_Decommission; } }
@@ -4046,6 +4064,18 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo;
}
partial void UpdateDetailBatteryOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string DetailBattery, bool redirect);
public override System.Web.Mvc.ActionResult UpdateDetailBattery(string id, string DetailBattery, bool redirect)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateDetailBattery);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "DetailBattery", DetailBattery);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
UpdateDetailBatteryOverride(callInfo, id, DetailBattery, redirect);
return callInfo;
}
partial void DecommissionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, int Reason, bool redirect);
public override System.Web.Mvc.ActionResult Decommission(string id, int Reason, bool redirect)
@@ -38,6 +38,23 @@
}
</td>
</tr>
<tr>
<th>Battery</th>
<td>@if (canConfig)
{
@Html.TextBox("DeviceDetail_Battery", Model.Device.DeviceDetails.Battery()) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader()
<script>
$(function () {
document.DiscoFunctions.PropertyChangeHelper($('#DeviceDetail_Battery'), 'Unknown', '@Url.Action(MVC.API.Device.UpdateDetailBattery(Model.Device.SerialNumber, null))', 'DetailBattery');
});
</script>
}
else
{
@(Model.Device.DeviceDetails.Battery() ?? "Unknown")
}
</td>
</tr>
</tbody>
</table>
</div>
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34011
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -188,6 +188,95 @@ WriteLiteral("\', \'DetailACAdapter\');\r\n });\r\n
}
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n " +
" <th>Battery</th>\r\n <td>");
#line 43 "..\..\Views\Device\DeviceParts\_Details.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 45 "..\..\Views\Device\DeviceParts\_Details.cshtml"
Write(Html.TextBox("DeviceDetail_Battery", Model.Device.DeviceDetails.Battery()));
#line default
#line hidden
#line 45 "..\..\Views\Device\DeviceParts\_Details.cshtml"
#line default
#line hidden
#line 45 "..\..\Views\Device\DeviceParts\_Details.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 45 "..\..\Views\Device\DeviceParts\_Details.cshtml"
#line default
#line hidden
#line 45 "..\..\Views\Device\DeviceParts\_Details.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 45 "..\..\Views\Device\DeviceParts\_Details.cshtml"
#line default
#line hidden
WriteLiteral(" <script>\r\n $(function () {\r\n " +
" document.DiscoFunctions.PropertyChangeHelper($(\'#D" +
"eviceDetail_Battery\'), \'Unknown\', \'");
#line 48 "..\..\Views\Device\DeviceParts\_Details.cshtml"
Write(Url.Action(MVC.API.Device.UpdateDetailBattery(Model.Device.SerialNumber, null)));
#line default
#line hidden
WriteLiteral("\', \'DetailBattery\');\r\n });\r\n </" +
"script>\r\n");
#line 51 "..\..\Views\Device\DeviceParts\_Details.cshtml"
}
else
{
#line default
#line hidden
#line 54 "..\..\Views\Device\DeviceParts\_Details.cshtml"
Write(Model.Device.DeviceDetails.Battery() ?? "Unknown");
#line default
#line hidden
#line 54 "..\..\Views\Device\DeviceParts\_Details.cshtml"
}
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n </tbody>\r\n <" +
+6
View File
@@ -32,6 +32,12 @@
</div>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
@Html.CheckBoxFor(m => m.Options.ExcelCsvFormat) <label for="Options_ExcelCsvFormat">Microsoft Excel CSV Format</label>
</td>
</tr>
</table>
</div>
<div id="Devices_Export_Fields" class="form" style="width: 530px; margin-top: 15px;">
+82 -65
View File
@@ -166,7 +166,24 @@ WriteLiteral(" ");
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n </td>\r\n </tr" +
">\r\n </table>\r\n </div>\r\n");
">\r\n <tr>\r\n <th>&nbsp;</th>\r\n " +
" <td>\r\n");
WriteLiteral(" ");
#line 38 "..\..\Views\Device\Export.cshtml"
Write(Html.CheckBoxFor(m => m.Options.ExcelCsvFormat));
#line default
#line hidden
WriteLiteral(" <label");
WriteLiteral(" for=\"Options_ExcelCsvFormat\"");
WriteLiteral(">Microsoft Excel CSV Format</label>\r\n </td>\r\n <" +
"/tr>\r\n </table>\r\n </div>\r\n");
WriteLiteral(" <div");
@@ -185,13 +202,13 @@ WriteLiteral(" href=\"#\"");
WriteLiteral(">(Defaults)</a></h2>\r\n <table>\r\n");
#line 40 "..\..\Views\Device\Export.cshtml"
#line 46 "..\..\Views\Device\Export.cshtml"
#line default
#line hidden
#line 40 "..\..\Views\Device\Export.cshtml"
#line 46 "..\..\Views\Device\Export.cshtml"
foreach (var optionGroup in optionGroups)
{
var optionFields = optionGroup.ToList();
@@ -209,7 +226,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 46 "..\..\Views\Device\Export.cshtml"
#line 52 "..\..\Views\Device\Export.cshtml"
Write(optionGroup.Key);
@@ -218,13 +235,13 @@ WriteLiteral(" ");
WriteLiteral("\r\n");
#line 47 "..\..\Views\Device\Export.cshtml"
#line 53 "..\..\Views\Device\Export.cshtml"
#line default
#line hidden
#line 47 "..\..\Views\Device\Export.cshtml"
#line 53 "..\..\Views\Device\Export.cshtml"
if (optionFields.Count > 2)
{
@@ -252,7 +269,7 @@ WriteLiteral(" href=\"#\"");
WriteLiteral(">NONE</a></span>\r\n");
#line 50 "..\..\Views\Device\Export.cshtml"
#line 56 "..\..\Views\Device\Export.cshtml"
}
@@ -279,13 +296,13 @@ WriteLiteral(" class=\"none\"");
WriteLiteral(">\r\n");
#line 58 "..\..\Views\Device\Export.cshtml"
#line 64 "..\..\Views\Device\Export.cshtml"
#line default
#line hidden
#line 58 "..\..\Views\Device\Export.cshtml"
#line 64 "..\..\Views\Device\Export.cshtml"
foreach (var optionItem in optionFields.Take(itemsPerColumn))
{
@@ -294,40 +311,40 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <li");
WriteAttribute("title", Tuple.Create(" title=\"", 3553), Tuple.Create("\"", 3584)
WriteAttribute("title", Tuple.Create(" title=\"", 3833), Tuple.Create("\"", 3864)
#line 60 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 3561), Tuple.Create<System.Object, System.Int32>(optionItem.Description
#line 66 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 3841), Tuple.Create<System.Object, System.Int32>(optionItem.Description
#line default
#line hidden
, 3561), false)
, 3841), false)
);
WriteLiteral(">\r\n <input");
WriteLiteral(" type=\"checkbox\"");
WriteAttribute("id", Tuple.Create(" id=\"", 3666), Tuple.Create("\"", 3703)
, Tuple.Create(Tuple.Create("", 3671), Tuple.Create("Options_", 3671), true)
WriteAttribute("id", Tuple.Create(" id=\"", 3946), Tuple.Create("\"", 3983)
, Tuple.Create(Tuple.Create("", 3951), Tuple.Create("Options_", 3951), true)
#line 61 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 3679), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line 67 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 3959), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line default
#line hidden
, 3679), false)
, 3959), false)
);
WriteAttribute("name", Tuple.Create(" name=\"", 3704), Tuple.Create("\"", 3743)
, Tuple.Create(Tuple.Create("", 3711), Tuple.Create("Options.", 3711), true)
WriteAttribute("name", Tuple.Create(" name=\"", 3984), Tuple.Create("\"", 4023)
, Tuple.Create(Tuple.Create("", 3991), Tuple.Create("Options.", 3991), true)
#line 61 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 3719), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line 67 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 3999), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line default
#line hidden
, 3719), false)
, 3999), false)
);
WriteLiteral(" value=\"true\"");
@@ -335,7 +352,7 @@ WriteLiteral(" value=\"true\"");
WriteLiteral(" ");
#line 61 "..\..\Views\Device\Export.cshtml"
#line 67 "..\..\Views\Device\Export.cshtml"
Write(((bool)optionItem.Model) ? "checked " : null);
@@ -343,21 +360,21 @@ WriteLiteral(" ");
#line hidden
WriteLiteral("/><label");
WriteAttribute("for", Tuple.Create(" for=\"", 3813), Tuple.Create("\"", 3851)
, Tuple.Create(Tuple.Create("", 3819), Tuple.Create("Options_", 3819), true)
WriteAttribute("for", Tuple.Create(" for=\"", 4093), Tuple.Create("\"", 4131)
, Tuple.Create(Tuple.Create("", 4099), Tuple.Create("Options_", 4099), true)
#line 61 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 3827), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line 67 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4107), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line default
#line hidden
, 3827), false)
, 4107), false)
);
WriteLiteral(">");
#line 61 "..\..\Views\Device\Export.cshtml"
#line 67 "..\..\Views\Device\Export.cshtml"
Write(optionItem.DisplayName);
@@ -366,7 +383,7 @@ WriteLiteral(">");
WriteLiteral("</label></li>\r\n");
#line 62 "..\..\Views\Device\Export.cshtml"
#line 68 "..\..\Views\Device\Export.cshtml"
}
@@ -384,13 +401,13 @@ WriteLiteral(" class=\"none\"");
WriteLiteral(">\r\n");
#line 67 "..\..\Views\Device\Export.cshtml"
#line 73 "..\..\Views\Device\Export.cshtml"
#line default
#line hidden
#line 67 "..\..\Views\Device\Export.cshtml"
#line 73 "..\..\Views\Device\Export.cshtml"
foreach (var optionItem in optionFields.Skip(itemsPerColumn))
{
@@ -399,40 +416,40 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <li");
WriteAttribute("title", Tuple.Create(" title=\"", 4386), Tuple.Create("\"", 4417)
WriteAttribute("title", Tuple.Create(" title=\"", 4666), Tuple.Create("\"", 4697)
#line 69 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4394), Tuple.Create<System.Object, System.Int32>(optionItem.Description
#line 75 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4674), Tuple.Create<System.Object, System.Int32>(optionItem.Description
#line default
#line hidden
, 4394), false)
, 4674), false)
);
WriteLiteral(">\r\n <input");
WriteLiteral(" type=\"checkbox\"");
WriteAttribute("id", Tuple.Create(" id=\"", 4499), Tuple.Create("\"", 4536)
, Tuple.Create(Tuple.Create("", 4504), Tuple.Create("Options_", 4504), true)
WriteAttribute("id", Tuple.Create(" id=\"", 4779), Tuple.Create("\"", 4816)
, Tuple.Create(Tuple.Create("", 4784), Tuple.Create("Options_", 4784), true)
#line 70 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4512), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line 76 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4792), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line default
#line hidden
, 4512), false)
, 4792), false)
);
WriteAttribute("name", Tuple.Create(" name=\"", 4537), Tuple.Create("\"", 4576)
, Tuple.Create(Tuple.Create("", 4544), Tuple.Create("Options.", 4544), true)
WriteAttribute("name", Tuple.Create(" name=\"", 4817), Tuple.Create("\"", 4856)
, Tuple.Create(Tuple.Create("", 4824), Tuple.Create("Options.", 4824), true)
#line 70 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4552), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line 76 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4832), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line default
#line hidden
, 4552), false)
, 4832), false)
);
WriteLiteral(" value=\"true\"");
@@ -440,7 +457,7 @@ WriteLiteral(" value=\"true\"");
WriteLiteral(" ");
#line 70 "..\..\Views\Device\Export.cshtml"
#line 76 "..\..\Views\Device\Export.cshtml"
Write(((bool)optionItem.Model) ? "checked " : null);
@@ -448,21 +465,21 @@ WriteLiteral(" ");
#line hidden
WriteLiteral("/><label");
WriteAttribute("for", Tuple.Create(" for=\"", 4646), Tuple.Create("\"", 4684)
, Tuple.Create(Tuple.Create("", 4652), Tuple.Create("Options_", 4652), true)
WriteAttribute("for", Tuple.Create(" for=\"", 4926), Tuple.Create("\"", 4964)
, Tuple.Create(Tuple.Create("", 4932), Tuple.Create("Options_", 4932), true)
#line 70 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4660), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line 76 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 4940), Tuple.Create<System.Object, System.Int32>(optionItem.PropertyName
#line default
#line hidden
, 4660), false)
, 4940), false)
);
WriteLiteral(">");
#line 70 "..\..\Views\Device\Export.cshtml"
#line 76 "..\..\Views\Device\Export.cshtml"
Write(optionItem.DisplayName);
@@ -471,7 +488,7 @@ WriteLiteral(">");
WriteLiteral("</label></li>\r\n");
#line 71 "..\..\Views\Device\Export.cshtml"
#line 77 "..\..\Views\Device\Export.cshtml"
}
@@ -487,7 +504,7 @@ WriteLiteral(@" </ul>
");
#line 79 "..\..\Views\Device\Export.cshtml"
#line 85 "..\..\Views\Device\Export.cshtml"
}
@@ -543,7 +560,7 @@ WriteLiteral(" <script>\r\n $(function () {\r\n
"pt>\r\n");
#line 165 "..\..\Views\Device\Export.cshtml"
#line 171 "..\..\Views\Device\Export.cshtml"
}
@@ -552,7 +569,7 @@ WriteLiteral(" <script>\r\n $(function () {\r\n
WriteLiteral("</div>\r\n");
#line 167 "..\..\Views\Device\Export.cshtml"
#line 173 "..\..\Views\Device\Export.cshtml"
if (Model.ExportSessionId != null)
{
@@ -570,7 +587,7 @@ WriteLiteral(" title=\"Export Devices\"");
WriteLiteral(">\r\n <h4>");
#line 170 "..\..\Views\Device\Export.cshtml"
#line 176 "..\..\Views\Device\Export.cshtml"
Write(Model.ExportSessionResult.RecordCount);
@@ -579,7 +596,7 @@ WriteLiteral(">\r\n <h4>");
WriteLiteral(" record");
#line 170 "..\..\Views\Device\Export.cshtml"
#line 176 "..\..\Views\Device\Export.cshtml"
Write(Model.ExportSessionResult.RecordCount != 1 ? "s" : null);
@@ -587,14 +604,14 @@ WriteLiteral(" record");
#line hidden
WriteLiteral(" were successfully exported.</h4>\r\n <a");
WriteAttribute("href", Tuple.Create(" href=\"", 9027), Tuple.Create("\"", 9099)
WriteAttribute("href", Tuple.Create(" href=\"", 9307), Tuple.Create("\"", 9379)
#line 171 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 9034), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Device.ExportRetrieve(Model.ExportSessionId))
#line 177 "..\..\Views\Device\Export.cshtml"
, Tuple.Create(Tuple.Create("", 9314), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Device.ExportRetrieve(Model.ExportSessionId))
#line default
#line hidden
, 9034), false)
, 9314), false)
);
WriteLiteral(" class=\"button\"");
@@ -620,7 +637,7 @@ WriteLiteral(@" <script>
");
#line 185 "..\..\Views\Device\Export.cshtml"
#line 191 "..\..\Views\Device\Export.cshtml"
}