3fdb4f1053
Many additional device properties are available to export. The previous export configuration is remembered.
261 lines
11 KiB
Plaintext
261 lines
11 KiB
Plaintext
@model Disco.Web.Areas.Config.Models.DeviceModel.ShowModel
|
|
@{
|
|
Authorization.Require(Claims.Config.DeviceModel.Show);
|
|
|
|
var canConfig = Authorization.Has(Claims.Config.DeviceModel.Configure);
|
|
|
|
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Device Models", MVC.Config.DeviceModel.Index(null), Model.DeviceModel.ToString());
|
|
}
|
|
<div class="form" style="width: 530px">
|
|
<table>
|
|
<tr>
|
|
<th style="width: 150px">Id:
|
|
</th>
|
|
<td>
|
|
@Html.DisplayFor(model => model.DeviceModel.Id)
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Description:
|
|
</th>
|
|
<td>@if (canConfig)
|
|
{
|
|
@Html.EditorFor(model => model.DeviceModel.Description)
|
|
@AjaxHelpers.AjaxSave()
|
|
@AjaxHelpers.AjaxLoader()
|
|
}
|
|
else
|
|
{
|
|
@Html.DisplayFor(model => model.DeviceModel.Description)
|
|
}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Manufacturer:
|
|
</th>
|
|
<td>
|
|
@Html.DisplayFor(model => model.DeviceModel.Manufacturer)
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Model:
|
|
</th>
|
|
<td>
|
|
@Html.DisplayFor(model => model.DeviceModel.Model)
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Statistics</th>
|
|
<td>
|
|
<div><strong>@Model.DeviceCount.ToString("n0")</strong> @(Model.DeviceCount == 1 ? "devices is" : "devices are") of this model type.</div>
|
|
@if (Model.DeviceDecommissionedCount > 0)
|
|
{
|
|
<div class="smallMessage">@Model.DeviceDecommissionedCount.ToString("n0") @(Model.DeviceDecommissionedCount == 1 ? "device is" : "devices are") decommissioned.</div>
|
|
}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Default Purchase Date:
|
|
</th>
|
|
<td>@if (canConfig)
|
|
{
|
|
@Html.EditorFor(model => model.DeviceModel.DefaultPurchaseDate)
|
|
@AjaxHelpers.AjaxLoader()
|
|
}
|
|
else
|
|
{
|
|
@CommonHelpers.FriendlyDate(Model.DeviceModel.DefaultPurchaseDate, "Unknown")
|
|
}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Default Warranty Provider:
|
|
</th>
|
|
<td>@if (canConfig)
|
|
{
|
|
@Html.DropDownListFor(model => model.DeviceModel.DefaultWarrantyProvider, Model.WarrantyProviders.ToSelectListItems(Model.DeviceModel.DefaultWarrantyProvider, true, "None"))
|
|
@AjaxHelpers.AjaxLoader()
|
|
}
|
|
else
|
|
{
|
|
if (Model.DeviceModel.DefaultWarrantyProvider == null)
|
|
{
|
|
<span class="smallMessage"><None Specified></span>
|
|
}
|
|
else
|
|
{
|
|
var provider = Model.WarrantyProviders.FirstOrDefault(wp => wp.Id == Model.DeviceModel.DefaultWarrantyProvider);
|
|
if (provider == null)
|
|
{
|
|
<span class="smallMessage"><None Specified></span>
|
|
}
|
|
else
|
|
{
|
|
@provider.Name
|
|
}
|
|
}
|
|
}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Type:
|
|
</th>
|
|
<td>
|
|
@Html.DisplayFor(model => model.DeviceModel.ModelType)
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Image:
|
|
</th>
|
|
<td>
|
|
<img alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.DeviceModel.Id, Model.DeviceModel.ImageHash()))" />
|
|
</td>
|
|
</tr>
|
|
@if (canConfig)
|
|
{
|
|
<tr>
|
|
<th>
|
|
<label for="DeviceModel_Image">
|
|
Update Image:
|
|
</label>
|
|
</th>
|
|
<td>
|
|
@using (Html.BeginForm(MVC.API.DeviceModel.Image(Model.DeviceModel.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" }))
|
|
{
|
|
<input type="file" name="Image" id="Image" style="width: 250px;" />
|
|
<input class="button" type="submit" value="Update" />
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
@if (canConfig)
|
|
{
|
|
<script type="text/javascript">
|
|
$(function () {
|
|
var $Description = $('#DeviceModel_Description');
|
|
var $DescriptionAjaxSave = $Description.next('.ajaxSave');
|
|
$Description
|
|
.watermark('Model Description')
|
|
.focus(function () { $Description.select() })
|
|
.keydown(function (e) {
|
|
$DescriptionAjaxSave.show();
|
|
if (e.which == 13) {
|
|
$(this).blur();
|
|
}
|
|
}).blur(function () {
|
|
$DescriptionAjaxSave.hide();
|
|
})
|
|
.change(function () {
|
|
$DescriptionAjaxSave.hide();
|
|
var $ajaxLoading = $DescriptionAjaxSave.next('.ajaxLoading').show();
|
|
var data = { Description: $Description.val() };
|
|
$.ajax({
|
|
url: '@Url.Action(MVC.API.DeviceModel.UpdateDescription(Model.DeviceModel.Id))',
|
|
dataType: 'json',
|
|
data: data,
|
|
success: function (d) {
|
|
if (d == 'OK') {
|
|
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
|
|
} else {
|
|
$ajaxLoading.hide();
|
|
alert('Unable to update description: ' + d);
|
|
}
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
alert('Unable to update description: ' + textStatus);
|
|
$ajaxLoading.hide();
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
<script type="text/javascript">
|
|
$(function () {
|
|
var $dataField = $('#DeviceModel_DefaultPurchaseDate');
|
|
var $ajaxLoading = $dataField.next('.ajaxLoading');
|
|
var dateFieldValue = $dataField.val();
|
|
var dateFieldChangeToken = null;
|
|
$dataField
|
|
.watermark('None')
|
|
.datepicker({
|
|
changeYear: true,
|
|
changeMonth: true,
|
|
dateFormat: 'yy/mm/dd'
|
|
})
|
|
.change(function () {
|
|
var dateText = $dataField.val();
|
|
if (dateFieldValue.toLowerCase() != dateText.toLowerCase()) {
|
|
dateFieldValue = dateText;
|
|
if (dateFieldChangeToken)
|
|
window.clearTimeout(dateFieldChangeToken);
|
|
dateFieldChangeToken = window.setTimeout(function () {
|
|
$ajaxLoading.show();
|
|
var data = {};
|
|
data['DefaultPurchaseDate'] = dateFieldValue;
|
|
$.getJSON('@(Url.Action(MVC.API.DeviceModel.UpdateDefaultPurchaseDate(Model.DeviceModel.Id)))', data, function (response, result) {
|
|
if (result != 'success' || response != 'OK') {
|
|
alert('Unable to change Date:\n' + response);
|
|
$ajaxLoading.hide();
|
|
} else {
|
|
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
|
|
}
|
|
})
|
|
dateFieldChangeToken = null;
|
|
}, 500);
|
|
}
|
|
}).focus(function () {
|
|
$(this).select();
|
|
});
|
|
});
|
|
</script>
|
|
<script type="text/javascript">
|
|
$(function () {
|
|
var $DefaultWarrantyProvider = $('#DeviceModel_DefaultWarrantyProvider');
|
|
var $ajaxLoading = $DefaultWarrantyProvider.next('.ajaxLoading');
|
|
$DefaultWarrantyProvider
|
|
.change(function () {
|
|
$ajaxLoading.show();
|
|
var data = { DefaultWarrantyProvider: $DefaultWarrantyProvider.val() };
|
|
$.ajax({
|
|
url: '@Url.Action(MVC.API.DeviceModel.UpdateDefaultWarrantyProvider(Model.DeviceModel.Id))',
|
|
dataType: 'json',
|
|
data: data,
|
|
success: function (d) {
|
|
if (d == 'OK') {
|
|
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
|
|
} else {
|
|
$ajaxLoading.hide();
|
|
alert('Unable to default warranty provider: ' + d);
|
|
}
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
alert('Unable to default warranty provider: ' + textStatus);
|
|
$ajaxLoading.hide();
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
}
|
|
</div>
|
|
<h2>Components</h2>
|
|
@Html.Partial(MVC.Config.DeviceModel.Views._DeviceComponentsTable, Model.DeviceComponentsModel)
|
|
<div class="actionBar">
|
|
@if (Model.CanDelete)
|
|
{
|
|
@Html.ActionLinkButton("Delete", MVC.API.DeviceModel.Delete(Model.DeviceModel.Id, true), "buttonDelete")
|
|
}
|
|
@if (Model.DeviceCount > 0)
|
|
{
|
|
if (Authorization.Has(Claims.Device.Actions.Export))
|
|
{
|
|
@Html.ActionLinkButton("Export Devices", MVC.Device.Export(null, Disco.Models.Services.Devices.Exporting.DeviceExportTypes.Model, Model.DeviceModel.Id))
|
|
}
|
|
if (Authorization.Has(Claims.Device.Search))
|
|
{
|
|
@Html.ActionLinkButton("View Devices", MVC.Search.Query(Model.DeviceModel.Id.ToString(), "DeviceModel"))
|
|
}
|
|
}
|
|
</div>
|