Fix: Javascript Bugs

jQuery v1.9 migrations; Isotope Update
This commit is contained in:
Gary Sharp committed 2013-02-19 19:17:06 +11:00
1 parent a76cd8c829
commit 20a12c1c99
60 files changed
+15323 -15642

No files matched your search

+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0219.1605")] [assembly: AssemblyVersion("1.2.0219.1854")]
[assembly: AssemblyFileVersion("1.2.0219.1605")] [assembly: AssemblyFileVersion("1.2.0219.1854")]
Binary file not shown.
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0219.1551")] [assembly: AssemblyVersion("1.2.0219.1813")]
[assembly: AssemblyFileVersion("1.2.0219.1551")] [assembly: AssemblyFileVersion("1.2.0219.1813")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0219.1551")] [assembly: AssemblyVersion("1.2.0219.1813")]
[assembly: AssemblyFileVersion("1.2.0219.1551")] [assembly: AssemblyFileVersion("1.2.0219.1813")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0219.1605")] [assembly: AssemblyVersion("1.2.0219.1854")]
[assembly: AssemblyFileVersion("1.2.0219.1605")] [assembly: AssemblyFileVersion("1.2.0219.1854")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0219.1605")] [assembly: AssemblyVersion("1.2.0219.1854")]
[assembly: AssemblyFileVersion("1.2.0219.1605")] [assembly: AssemblyFileVersion("1.2.0219.1854")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0219.1605")] [assembly: AssemblyVersion("1.2.0219.1854")]
[assembly: AssemblyFileVersion("1.2.0219.1605")] [assembly: AssemblyFileVersion("1.2.0219.1854")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0219.1605")] [assembly: AssemblyVersion("1.2.0219.1854")]
[assembly: AssemblyFileVersion("1.2.0219.1605")] [assembly: AssemblyFileVersion("1.2.0219.1854")]
@@ -1,270 +1,271 @@
@model Disco.Web.Areas.Config.Models.DeviceModel.DeviceComponentsModel @model Disco.Web.Areas.Config.Models.DeviceModel.DeviceComponentsModel
@{ @{
Html.BundleDeferred("~/ClientScripts/Modules/Disco-jQueryExtensions"); Html.BundleDeferred("~/ClientScripts/Modules/Disco-jQueryExtensions");
} }
<table id="deviceComponents" data-devicemodelid="@(Model.DeviceModelId.HasValue ? Model.DeviceModelId.Value.ToString() : string.Empty)"> <table id="deviceComponents" data-devicemodelid="@(Model.DeviceModelId.HasValue ? Model.DeviceModelId.Value.ToString() : string.Empty)">
<tr> <tr>
<th> <th>
Description Description
</th> </th>
<th> <th>
Cost Cost
</th> </th>
<th> <th>
Job Types Job Types
</th> </th>
<th class="actions"> <th class="actions">
&nbsp; &nbsp;
</th> </th>
</tr> </tr>
@foreach (var item in Model.DeviceComponents) @foreach (var item in Model.DeviceComponents)
{ {
<tr data-devicecomponentid="@item.Id"> <tr data-devicecomponentid="@item.Id">
<td> <td>
<input type="text" class="description" value="@item.Description" /> <input type="text" class="description" value="@item.Description" />
</td> </td>
<td> <td>
<input type="text" class="cost" value="@item.Cost.ToString("C")" /> <input type="text" class="cost" value="@item.Cost.ToString("C")" />
</td> </td>
<td> <td>
<span class="edit@(item.JobSubTypes.Count > 0 ? " editAlert" : string.Empty)"></span> <span class="edit@(item.JobSubTypes.Count > 0 ? " editAlert" : string.Empty)"></span>
</td> </td>
<td> <td>
<span class="remove"></span> <span class="remove"></span>
</td> </td>
</tr> </tr>
} }
<tr> <tr>
<td colspan="4"> <td colspan="4">
<a href="#" id="addDeviceComponent">Add Component</a> <a href="#" id="addDeviceComponent">Add Component</a>
</td> </td>
</tr> </tr>
</table> </table>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $deviceComponents = $('#deviceComponents'); var $deviceComponents = $('#deviceComponents');
$('#addDeviceComponent').click(function () { $('#addDeviceComponent').click(function () {
var dc = $('<tr><td><input type="text" class="description" /></td><td><input type="text" class="cost" /></td><td><span class="edit"></span></td><td><span class="remove"></span></td></tr>'); var dc = $('<tr><td><input type="text" class="description" /></td><td><input type="text" class="cost" /></td><td><span class="edit"></span></td><td><span class="remove"></span></td></tr>');
dc.find('input').focus(function () { $(this).select() }) dc.find('input').focus(function () { $(this).select() })
dc.insertBefore($deviceComponents.find('tr').last()); dc.insertBefore($deviceComponents.find('tr').last());
dc.find('input.description').focus(); dc.find('input.description').focus();
return false; return false;
}); });
var removeComponentConfirmed = function (id, row) { var removeComponentConfirmed = function (id, row) {
var data = { id: id }; var data = { id: id };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DeviceModel.ComponentRemove())', url: '@Url.Action(MVC.API.DeviceModel.ComponentRemove())',
dataType: 'json', dataType: 'json',
data: data, data: data,
success: function (d) { success: function (d) {
if (d == 'OK') { if (d == 'OK') {
row.remove(); row.remove();
} else { } else {
alert('Unable to remove component: ' + d); alert('Unable to remove component: ' + d);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to remove component: ' + textStatus); alert('Unable to remove component: ' + textStatus);
} }
}); });
} }
var removeComponent = function () { var removeComponent = function () {
var componentRow = $(this).closest('tr'); var componentRow = $(this).closest('tr');
var id = componentRow.attr('data-devicecomponentid'); var id = componentRow.attr('data-devicecomponentid');
if (id) { if (id) {
var dialog = $("#dialogConfirmRemove"); var dialog = $("#dialogConfirmRemove");
var buttons = dialog.dialog("option", "buttons"); var buttons = dialog.dialog("option", "buttons");
buttons['Remove'] = function () { removeComponentConfirmed(id, componentRow); $(this).dialog("close"); }; buttons['Remove'] = function () { removeComponentConfirmed(id, componentRow); $(this).dialog("close"); };
var buttons = dialog.dialog("option", "buttons", buttons); var buttons = dialog.dialog("option", "buttons", buttons);
dialog.dialog('open'); dialog.dialog('open');
} else { } else {
// New - Remove // New - Remove
componentRow.remove(); componentRow.remove();
} }
} }
var updateComponent = function () { var updateComponent = function () {
var componentRow = $(this).closest('tr'); var componentRow = $(this).closest('tr');
componentRow.find('input').attr('disabled', true).addClass('updating'); componentRow.find('input').attr('disabled', true).addClass('updating');
var id = componentRow.attr('data-devicecomponentid'); var id = componentRow.attr('data-devicecomponentid');
if (id) { if (id) {
// Update // Update
var data = { var data = {
id: id, id: id,
Description: componentRow.find('input.description').val(), Description: componentRow.find('input.description').val(),
Cost: componentRow.find('input.cost').val() Cost: componentRow.find('input.cost').val()
}; };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DeviceModel.ComponentUpdate())', url: '@Url.Action(MVC.API.DeviceModel.ComponentUpdate())',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
data: data, data: data,
success: function (d) { success: function (d) {
componentRow.find('input').attr('disabled', false).removeClass('updating'); componentRow.find('input').attr('disabled', false).removeClass('updating');
if (d.Result == 'OK') { if (d.Result == 'OK') {
componentRow.find('input.description').val(d.Component.Description); componentRow.find('input.description').val(d.Component.Description);
componentRow.find('input.cost').val(d.Component.Cost); componentRow.find('input.cost').val(d.Component.Cost);
} else { } else {
alert('Unable to update component: ' + d.Result); alert('Unable to update component: ' + d.Result);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update component: ' + textStatus); alert('Unable to update component: ' + textStatus);
} }
}); });
} else { } else {
// Add // Add
id = componentRow.closest('table').attr('data-devicemodelid'); id = componentRow.closest('table').attr('data-devicemodelid');
var data = { var data = {
id: id, id: id,
Description: componentRow.find('input.description').val(), Description: componentRow.find('input.description').val(),
Cost: componentRow.find('input.cost').val() Cost: componentRow.find('input.cost').val()
}; };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DeviceModel.ComponentAdd(null, null, null))', url: '@Url.Action(MVC.API.DeviceModel.ComponentAdd(null, null, null))',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
data: data, data: data,
success: function (d) { success: function (d) {
componentRow.find('input').attr('disabled', false).removeClass('updating'); componentRow.find('input').attr('disabled', false).removeClass('updating');
if (d.Result == 'OK') { if (d.Result == 'OK') {
componentRow.attr('data-devicecomponentid', d.Component.Id); componentRow.attr('data-devicecomponentid', d.Component.Id);
componentRow.find('input.description').val(d.Component.Description); componentRow.find('input.description').val(d.Component.Description);
componentRow.find('input.cost').val(d.Component.Cost); componentRow.find('input.cost').val(d.Component.Cost);
} else { } else {
alert('Unable to add component: ' + d.Result); alert('Unable to add component: ' + d.Result);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to add component: ' + textStatus); alert('Unable to add component: ' + textStatus);
} }
}); });
} }
} }
var editComponentJobTypes = function () { var editComponentJobTypes = function () {
var edit$this = $(this); var edit$this = $(this);
var componentRow = edit$this.closest('tr'); var componentRow = edit$this.closest('tr');
var id = componentRow.attr('data-devicecomponentid'); var id = componentRow.attr('data-devicecomponentid');
if (id) { if (id) {
var data = { var data = {
id: id id: id
}; };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DeviceModel.Component())', url: '@Url.Action(MVC.API.DeviceModel.Component())',
dataType: 'json', dataType: 'json',
data: data, data: data,
success: function (d) { success: function (d) {
componentRow.find('input').attr('disabled', false).removeClass('updating'); componentRow.find('input').attr('disabled', false).removeClass('updating');
if (d.Result == 'OK') { if (d.Result == 'OK') {
$dialogUpdateJobTypes = $('#dialogUpdateJobTypes'); $dialogUpdateJobTypes = $('#dialogUpdateJobTypes');
$dialogUpdateJobTypes.find('input:checked').each(function () { $(this).attr('checked', false) }); $dialogUpdateJobTypes.find('input:checked').each(function () { $(this).prop('checked', false) });
for (var i = 0; i < d.Component.JobSubTypes.length; i++) { for (var i = 0; i < d.Component.JobSubTypes.length; i++) {
var sjt = d.Component.JobSubTypes[i]; var sjt = d.Component.JobSubTypes[i];
$dialogUpdateJobTypes.find('#SubTypes_' + sjt).attr('checked', true); $dialogUpdateJobTypes.find('#SubTypes_' + sjt).prop('checked', true);
} }
$('#CheckboxBulkSelect_dialogUpdateJobTypes').checkboxBulkSelect('update'); $('#CheckboxBulkSelect_dialogUpdateJobTypes').checkboxBulkSelect('update');
var buttons = $dialogUpdateJobTypes.dialog("option", "buttons"); var buttons = $dialogUpdateJobTypes.dialog("option", "buttons");
buttons['Save'] = function () { buttons['Save'] = function () {
$dialogUpdateJobTypes.dialog("disable"); $dialogUpdateJobTypes.dialog("disable");
var selectedSJTs = []; var selectedSJTs = [];
$dialogUpdateJobTypes.find('input:checked').each(function () { selectedSJTs.push($(this).val()) }); $dialogUpdateJobTypes.find('input:checked').each(function () { selectedSJTs.push($(this).val()) });
var data = { var data = {
id: id, id: id,
JobSubTypes: selectedSJTs JobSubTypes: selectedSJTs
}; };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DeviceModel.ComponentUpdateJobSubTypes())', url: '@Url.Action(MVC.API.DeviceModel.ComponentUpdateJobSubTypes())',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
traditional: true, traditional: true,
data: data, data: data,
success: function (d) { success: function (d) {
if (d.Result == 'OK') { if (d.Result == 'OK') {
if (d.Component.JobSubTypes.length > 0) { if (d.Component.JobSubTypes.length > 0) {
edit$this.addClass('editAlert'); edit$this.addClass('editAlert');
} else { } else {
edit$this.removeClass('editAlert'); edit$this.removeClass('editAlert');
} }
$dialogUpdateJobTypes.dialog("enable"); $dialogUpdateJobTypes.dialog("enable");
$dialogUpdateJobTypes.dialog("close"); $dialogUpdateJobTypes.dialog("close");
} else { } else {
alert('Unable to update component sub types: ' + d.Result); alert('Unable to update component sub types: ' + d.Result);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update component sub types: ' + textStatus); alert('Unable to update component sub types: ' + textStatus);
} }
}); });
}; };
var buttons = $dialogUpdateJobTypes.dialog("option", "buttons", buttons); var buttons = $dialogUpdateJobTypes.dialog("option", "buttons", buttons);
$dialogUpdateJobTypes.dialog('open'); $dialogUpdateJobTypes.dialog('open');
} else { } else {
alert('Unable to load component: ' + d.Result); alert('Unable to load component: ' + d.Result);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to load component: ' + textStatus); alert('Unable to load component: ' + textStatus);
} }
}); });
} }
} }
$("#dialogConfirmRemove").dialog({ $("#dialogConfirmRemove").dialog({
resizable: false, resizable: false,
height: 140, height: 140,
modal: true, modal: true,
autoOpen: false, autoOpen: false,
buttons: { buttons: {
"Remove": function () { "Remove": function () {
$(this).dialog("close"); $(this).dialog("close");
}, },
Cancel: function () { Cancel: function () {
$(this).dialog("close"); $(this).dialog("close");
} }
} }
}); });
$('#dialogUpdateJobTypes').dialog({ $('#dialogUpdateJobTypes').dialog({
resizable: false, resizable: false,
modal: true, modal: true,
autoOpen: false, autoOpen: false,
width: 550, width: 550,
buttons: { buttons: {
"Save": function () { "Save": function () {
$(this).dialog("close"); $(this).dialog("close");
}, },
Cancel: function () { Cancel: function () {
$(this).dialog("close"); $(this).dialog("close");
} }
} }
}); });
$('#CheckboxBulkSelect_dialogUpdateJobTypes').checkboxBulkSelect({ parentSelector: 'div' }); $('#CheckboxBulkSelect_dialogUpdateJobTypes').checkboxBulkSelect({ parentSelector: 'div' });
$deviceComponents.find('input').live('change', updateComponent).focus(function () { $(this).select() }); $deviceComponents.on('change', 'input', updateComponent);
$deviceComponents.find('span.remove').live('click', removeComponent); $deviceComponents.on('focus', 'input', function () { $(this).select(); });
$deviceComponents.find('span.edit').live('click', editComponentJobTypes);
$deviceComponents.on('click', 'span.remove', removeComponent);
}); $deviceComponents.on('click', 'span.edit', editComponentJobTypes);
</script> });
<div id="dialogUpdateJobTypes" title="Update Job Types"> </script>
<div> <div id="dialogUpdateJobTypes" title="Update Job Types">
<h2> <div>
Hardware Non-Warranty Job Types</h2> <h2>
@CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.ToSelectListItems(), 2) Hardware Non-Warranty Job Types</h2>
<br /> @CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.ToSelectListItems(), 2)
<span id="CheckboxBulkSelect_dialogUpdateJobTypes" class="checkboxBulkSelectContainer"> <br />
</span> <span id="CheckboxBulkSelect_dialogUpdateJobTypes" class="checkboxBulkSelectContainer">
</div> </span>
</div> </div>
<div id="dialogConfirmRemove" title="Delete this Component?"> </div>
<p> <div id="dialogConfirmRemove" title="Delete this Component?">
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span> <p>
This item will be permanently deleted and cannot be recovered. Are you sure?</p> <span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
</div> This item will be permanently deleted and cannot be recovered. Are you sure?</p>
</div>
@@ -1,412 +1,412 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.17929
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Disco.Web.Areas.Config.Views.DeviceModel namespace Disco.Web.Areas.Config.Views.DeviceModel
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web; using System.Web;
using System.Web.Helpers; using System.Web.Helpers;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using System.Web.Security; using System.Web.Security;
using System.Web.UI; using System.Web.UI;
using System.Web.WebPages; using System.Web.WebPages;
using Disco.BI.Extensions; using Disco.BI.Extensions;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Web; using Disco.Web;
using Disco.Web.Extensions; using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DeviceModel/_DeviceComponentsTable.cshtml")] [System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DeviceModel/_DeviceComponentsTable.cshtml")]
public class DeviceComponentsTable : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.DeviceModel.DeviceComponentsModel> public class DeviceComponentsTable : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.DeviceModel.DeviceComponentsModel>
{ {
public DeviceComponentsTable() public DeviceComponentsTable()
{ {
} }
public override void Execute() public override void Execute()
{ {
#line 2 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 2 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Html.BundleDeferred("~/ClientScripts/Modules/Disco-jQueryExtensions"); Html.BundleDeferred("~/ClientScripts/Modules/Disco-jQueryExtensions");
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n<table"); WriteLiteral("\r\n<table");
WriteLiteral(" id=\"deviceComponents\""); WriteLiteral(" id=\"deviceComponents\"");
WriteLiteral(" data-devicemodelid=\""); WriteLiteral(" data-devicemodelid=\"");
#line 5 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 5 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(Model.DeviceModelId.HasValue ? Model.DeviceModelId.Value.ToString() : string.Empty); Write(Model.DeviceModelId.HasValue ? Model.DeviceModelId.Value.ToString() : string.Empty);
#line default #line default
#line hidden #line hidden
WriteLiteral("\""); WriteLiteral("\"");
WriteLiteral(">\r\n <tr>\r\n <th>\r\n Description\r\n </th>\r\n <th>\r\n" + WriteLiteral(">\r\n <tr>\r\n <th>\r\n Description\r\n </th>\r\n <th>\r\n" +
" Cost\r\n </th>\r\n <th>\r\n Job Types\r\n </" + " Cost\r\n </th>\r\n <th>\r\n Job Types\r\n </" +
"th>\r\n <th"); "th>\r\n <th");
WriteLiteral(" class=\"actions\""); WriteLiteral(" class=\"actions\"");
WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n </tr>\r\n"); WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n </tr>\r\n");
#line 20 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 20 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
#line default #line default
#line hidden #line hidden
#line 20 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 20 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
foreach (var item in Model.DeviceComponents) foreach (var item in Model.DeviceComponents)
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <tr"); WriteLiteral(" <tr");
WriteLiteral(" data-devicecomponentid=\""); WriteLiteral(" data-devicecomponentid=\"");
#line 22 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 22 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(item.Id); Write(item.Id);
#line default #line default
#line hidden #line hidden
WriteLiteral("\""); WriteLiteral("\"");
WriteLiteral(">\r\n <td>\r\n <input"); WriteLiteral(">\r\n <td>\r\n <input");
WriteLiteral(" type=\"text\""); WriteLiteral(" type=\"text\"");
WriteLiteral(" class=\"description\""); WriteLiteral(" class=\"description\"");
WriteAttribute("value", Tuple.Create(" value=\"", 710), Tuple.Create("\"", 735) WriteAttribute("value", Tuple.Create(" value=\"", 710), Tuple.Create("\"", 735)
#line 24 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 24 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
, Tuple.Create(Tuple.Create("", 718), Tuple.Create<System.Object, System.Int32>(item.Description , Tuple.Create(Tuple.Create("", 718), Tuple.Create<System.Object, System.Int32>(item.Description
#line default #line default
#line hidden #line hidden
, 718), false) , 718), false)
); );
WriteLiteral(" />\r\n </td>\r\n <td>\r\n <input"); WriteLiteral(" />\r\n </td>\r\n <td>\r\n <input");
WriteLiteral(" type=\"text\""); WriteLiteral(" type=\"text\"");
WriteLiteral(" class=\"cost\""); WriteLiteral(" class=\"cost\"");
WriteAttribute("value", Tuple.Create(" value=\"", 825), Tuple.Create("\"", 857) WriteAttribute("value", Tuple.Create(" value=\"", 825), Tuple.Create("\"", 857)
#line 27 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 27 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
, Tuple.Create(Tuple.Create("", 833), Tuple.Create<System.Object, System.Int32>(item.Cost.ToString("C") , Tuple.Create(Tuple.Create("", 833), Tuple.Create<System.Object, System.Int32>(item.Cost.ToString("C")
#line default #line default
#line hidden #line hidden
, 833), false) , 833), false)
); );
WriteLiteral(" />\r\n </td>\r\n <td>\r\n <span"); WriteLiteral(" />\r\n </td>\r\n <td>\r\n <span");
WriteAttribute("class", Tuple.Create(" class=\"", 921), Tuple.Create("\"", 992) WriteAttribute("class", Tuple.Create(" class=\"", 921), Tuple.Create("\"", 992)
, Tuple.Create(Tuple.Create("", 929), Tuple.Create("edit", 929), true) , Tuple.Create(Tuple.Create("", 929), Tuple.Create("edit", 929), true)
#line 30 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 30 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
, Tuple.Create(Tuple.Create("", 933), Tuple.Create<System.Object, System.Int32>(item.JobSubTypes.Count > 0 ? " editAlert" : string.Empty , Tuple.Create(Tuple.Create("", 933), Tuple.Create<System.Object, System.Int32>(item.JobSubTypes.Count > 0 ? " editAlert" : string.Empty
#line default #line default
#line hidden #line hidden
, 933), false) , 933), false)
); );
WriteLiteral("></span>\r\n </td>\r\n <td>\r\n <span"); WriteLiteral("></span>\r\n </td>\r\n <td>\r\n <span");
WriteLiteral(" class=\"remove\""); WriteLiteral(" class=\"remove\"");
WriteLiteral("></span>\r\n </td>\r\n </tr>\r\n"); WriteLiteral("></span>\r\n </td>\r\n </tr>\r\n");
#line 36 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 36 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" <tr>\r\n <td"); WriteLiteral(" <tr>\r\n <td");
WriteLiteral(" colspan=\"4\""); WriteLiteral(" colspan=\"4\"");
WriteLiteral(">\r\n <a"); WriteLiteral(">\r\n <a");
WriteLiteral(" href=\"#\""); WriteLiteral(" href=\"#\"");
WriteLiteral(" id=\"addDeviceComponent\""); WriteLiteral(" id=\"addDeviceComponent\"");
WriteLiteral(">Add Component</a>\r\n </td>\r\n </tr>\r\n</table>\r\n<script"); WriteLiteral(">Add Component</a>\r\n </td>\r\n </tr>\r\n</table>\r\n<script");
WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@"> WriteLiteral(@">
$(function () { $(function () {
var $deviceComponents = $('#deviceComponents'); var $deviceComponents = $('#deviceComponents');
$('#addDeviceComponent').click(function () { $('#addDeviceComponent').click(function () {
var dc = $('<tr><td><input type=""text"" class=""description"" /></td><td><input type=""text"" class=""cost"" /></td><td><span class=""edit""></span></td><td><span class=""remove""></span></td></tr>'); var dc = $('<tr><td><input type=""text"" class=""description"" /></td><td><input type=""text"" class=""cost"" /></td><td><span class=""edit""></span></td><td><span class=""remove""></span></td></tr>');
dc.find('input').focus(function () { $(this).select() }) dc.find('input').focus(function () { $(this).select() })
dc.insertBefore($deviceComponents.find('tr').last()); dc.insertBefore($deviceComponents.find('tr').last());
dc.find('input.description').focus(); dc.find('input.description').focus();
return false; return false;
}); });
var removeComponentConfirmed = function (id, row) { var removeComponentConfirmed = function (id, row) {
var data = { id: id }; var data = { id: id };
$.ajax({ $.ajax({
url: '"); url: '");
#line 58 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 58 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(Url.Action(MVC.API.DeviceModel.ComponentRemove())); Write(Url.Action(MVC.API.DeviceModel.ComponentRemove()));
#line default #line default
#line hidden #line hidden
WriteLiteral("\',\r\n dataType: \'json\',\r\n data: data,\r\n " + WriteLiteral("\',\r\n dataType: \'json\',\r\n data: data,\r\n " +
" success: function (d) {\r\n if (d == \'OK\') {\r\n " + " success: function (d) {\r\n if (d == \'OK\') {\r\n " +
" row.remove();\r\n } else {\r\n a" + " row.remove();\r\n } else {\r\n a" +
"lert(\'Unable to remove component: \' + d);\r\n }\r\n " + "lert(\'Unable to remove component: \' + d);\r\n }\r\n " +
" },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n " + " },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n " +
" alert(\'Unable to remove component: \' + textStatus);\r\n " + " alert(\'Unable to remove component: \' + textStatus);\r\n " +
" }\r\n });\r\n }\r\n var removeComponent = function () {\r\n " + " }\r\n });\r\n }\r\n var removeComponent = function () {\r\n " +
" var componentRow = $(this).closest(\'tr\');\r\n var id = compo" + " var componentRow = $(this).closest(\'tr\');\r\n var id = compo" +
"nentRow.attr(\'data-devicecomponentid\');\r\n if (id) {\r\n " + "nentRow.attr(\'data-devicecomponentid\');\r\n if (id) {\r\n " +
"var dialog = $(\"#dialogConfirmRemove\");\r\n var buttons = dialog.di" + "var dialog = $(\"#dialogConfirmRemove\");\r\n var buttons = dialog.di" +
"alog(\"option\", \"buttons\");\r\n buttons[\'Remove\'] = function () { re" + "alog(\"option\", \"buttons\");\r\n buttons[\'Remove\'] = function () { re" +
"moveComponentConfirmed(id, componentRow); $(this).dialog(\"close\"); };\r\n " + "moveComponentConfirmed(id, componentRow); $(this).dialog(\"close\"); };\r\n " +
" var buttons = dialog.dialog(\"option\", \"buttons\", buttons);\r\n " + " var buttons = dialog.dialog(\"option\", \"buttons\", buttons);\r\n " +
" dialog.dialog(\'open\');\r\n } else {\r\n // New - Remove" + " dialog.dialog(\'open\');\r\n } else {\r\n // New - Remove" +
"\r\n componentRow.remove();\r\n }\r\n }\r\n var " + "\r\n componentRow.remove();\r\n }\r\n }\r\n var " +
"updateComponent = function () {\r\n var componentRow = $(this).closest(" + "updateComponent = function () {\r\n var componentRow = $(this).closest(" +
"\'tr\');\r\n componentRow.find(\'input\').attr(\'disabled\', true).addClass(\'" + "\'tr\');\r\n componentRow.find(\'input\').attr(\'disabled\', true).addClass(\'" +
"updating\');\r\n\r\n var id = componentRow.attr(\'data-devicecomponentid\');" + "updating\');\r\n\r\n var id = componentRow.attr(\'data-devicecomponentid\');" +
"\r\n if (id) {\r\n // Update\r\n var data = {" + "\r\n if (id) {\r\n // Update\r\n var data = {" +
"\r\n id: id,\r\n Description: componentRow.fin" + "\r\n id: id,\r\n Description: componentRow.fin" +
"d(\'input.description\').val(),\r\n Cost: componentRow.find(\'inpu" + "d(\'input.description\').val(),\r\n Cost: componentRow.find(\'inpu" +
"t.cost\').val()\r\n };\r\n $.ajax({\r\n " + "t.cost\').val()\r\n };\r\n $.ajax({\r\n " +
" url: \'"); " url: \'");
#line 100 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 100 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(Url.Action(MVC.API.DeviceModel.ComponentUpdate())); Write(Url.Action(MVC.API.DeviceModel.ComponentUpdate()));
#line default #line default
#line hidden #line hidden
WriteLiteral(@"', WriteLiteral(@"',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
data: data, data: data,
success: function (d) { success: function (d) {
componentRow.find('input').attr('disabled', false).removeClass('updating'); componentRow.find('input').attr('disabled', false).removeClass('updating');
if (d.Result == 'OK') { if (d.Result == 'OK') {
componentRow.find('input.description').val(d.Component.Description); componentRow.find('input.description').val(d.Component.Description);
componentRow.find('input.cost').val(d.Component.Cost); componentRow.find('input.cost').val(d.Component.Cost);
} else { } else {
alert('Unable to update component: ' + d.Result); alert('Unable to update component: ' + d.Result);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update component: ' + textStatus); alert('Unable to update component: ' + textStatus);
} }
}); });
} else { } else {
// Add // Add
id = componentRow.closest('table').attr('data-devicemodelid'); id = componentRow.closest('table').attr('data-devicemodelid');
var data = { var data = {
id: id, id: id,
Description: componentRow.find('input.description').val(), Description: componentRow.find('input.description').val(),
Cost: componentRow.find('input.cost').val() Cost: componentRow.find('input.cost').val()
}; };
$.ajax({ $.ajax({
url: '"); url: '");
#line 126 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 126 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(Url.Action(MVC.API.DeviceModel.ComponentAdd(null, null, null))); Write(Url.Action(MVC.API.DeviceModel.ComponentAdd(null, null, null)));
#line default #line default
#line hidden #line hidden
WriteLiteral(@"', WriteLiteral(@"',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
data: data, data: data,
success: function (d) { success: function (d) {
componentRow.find('input').attr('disabled', false).removeClass('updating'); componentRow.find('input').attr('disabled', false).removeClass('updating');
if (d.Result == 'OK') { if (d.Result == 'OK') {
componentRow.attr('data-devicecomponentid', d.Component.Id); componentRow.attr('data-devicecomponentid', d.Component.Id);
componentRow.find('input.description').val(d.Component.Description); componentRow.find('input.description').val(d.Component.Description);
componentRow.find('input.cost').val(d.Component.Cost); componentRow.find('input.cost').val(d.Component.Cost);
} else { } else {
alert('Unable to add component: ' + d.Result); alert('Unable to add component: ' + d.Result);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to add component: ' + textStatus); alert('Unable to add component: ' + textStatus);
} }
}); });
} }
} }
var editComponentJobTypes = function () { var editComponentJobTypes = function () {
var edit$this = $(this); var edit$this = $(this);
var componentRow = edit$this.closest('tr'); var componentRow = edit$this.closest('tr');
var id = componentRow.attr('data-devicecomponentid'); var id = componentRow.attr('data-devicecomponentid');
if (id) { if (id) {
var data = { var data = {
id: id id: id
}; };
$.ajax({ $.ajax({
url: '"); url: '");
#line 157 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 157 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(Url.Action(MVC.API.DeviceModel.Component())); Write(Url.Action(MVC.API.DeviceModel.Component()));
#line default #line default
#line hidden #line hidden
WriteLiteral("\',\r\n dataType: \'json\',\r\n data: data,\r\n " + WriteLiteral("\',\r\n dataType: \'json\',\r\n data: data,\r\n " +
" success: function (d) {\r\n componentRow.fin" + " success: function (d) {\r\n componentRow.fin" +
"d(\'input\').attr(\'disabled\', false).removeClass(\'updating\');\r\n " + "d(\'input\').attr(\'disabled\', false).removeClass(\'updating\');\r\n " +
" if (d.Result == \'OK\') {\r\n $dialogUpdateJobTypes " + " if (d.Result == \'OK\') {\r\n $dialogUpdateJobTypes " +
"= $(\'#dialogUpdateJobTypes\');\r\n $dialogUpdateJobTypes" + "= $(\'#dialogUpdateJobTypes\');\r\n $dialogUpdateJobTypes" +
".find(\'input:checked\').each(function () { $(this).attr(\'checked\', false) });\r\n " + ".find(\'input:checked\').each(function () { $(this).prop(\'checked\', false) });\r\n " +
" for (var i = 0; i < d.Component.JobSubTypes.length; i+" + " for (var i = 0; i < d.Component.JobSubTypes.length; i+" +
"+) {\r\n var sjt = d.Component.JobSubTypes[i];\r\n " + "+) {\r\n var sjt = d.Component.JobSubTypes[i];\r\n " +
" $dialogUpdateJobTypes.find(\'#SubTypes_\' + sjt).attr" + " $dialogUpdateJobTypes.find(\'#SubTypes_\' + sjt).prop" +
"(\'checked\', true);\r\n }\r\n $" + "(\'checked\', true);\r\n }\r\n $" +
"(\'#CheckboxBulkSelect_dialogUpdateJobTypes\').checkboxBulkSelect(\'update\');\r\n " + "(\'#CheckboxBulkSelect_dialogUpdateJobTypes\').checkboxBulkSelect(\'update\');\r\n " +
" var buttons = $dialogUpdateJobTypes.dialog(\"option\", \"bu" + " var buttons = $dialogUpdateJobTypes.dialog(\"option\", \"bu" +
"ttons\");\r\n buttons[\'Save\'] = function () {\r\n " + "ttons\");\r\n buttons[\'Save\'] = function () {\r\n " +
" $dialogUpdateJobTypes.dialog(\"disable\");\r\n " + " $dialogUpdateJobTypes.dialog(\"disable\");\r\n " +
" var selectedSJTs = [];\r\n $dialog" + " var selectedSJTs = [];\r\n $dialog" +
"UpdateJobTypes.find(\'input:checked\').each(function () { selectedSJTs.push($(this" + "UpdateJobTypes.find(\'input:checked\').each(function () { selectedSJTs.push($(this" +
").val()) });\r\n\r\n var data = {\r\n " + ").val()) });\r\n\r\n var data = {\r\n " +
" id: id,\r\n JobSubTypes: sele" + " id: id,\r\n JobSubTypes: sele" +
"ctedSJTs\r\n };\r\n $." + "ctedSJTs\r\n };\r\n $." +
"ajax({\r\n url: \'"); "ajax({\r\n url: \'");
#line 181 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 181 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(Url.Action(MVC.API.DeviceModel.ComponentUpdateJobSubTypes())); Write(Url.Action(MVC.API.DeviceModel.ComponentUpdateJobSubTypes()));
#line default #line default
#line hidden #line hidden
WriteLiteral("\',\r\n dataType: \'json\',\r\n " + WriteLiteral("\',\r\n dataType: \'json\',\r\n " +
" type: \'POST\',\r\n traditional: tr" + " type: \'POST\',\r\n traditional: tr" +
"ue,\r\n data: data,\r\n " + "ue,\r\n data: data,\r\n " +
" success: function (d) {\r\n if (d" + " success: function (d) {\r\n if (d" +
".Result == \'OK\') {\r\n if (d.Component." + ".Result == \'OK\') {\r\n if (d.Component." +
"JobSubTypes.length > 0) {\r\n edit$" + "JobSubTypes.length > 0) {\r\n edit$" +
"this.addClass(\'editAlert\');\r\n } else " + "this.addClass(\'editAlert\');\r\n } else " +
"{\r\n edit$this.removeClass(\'editAl" + "{\r\n edit$this.removeClass(\'editAl" +
"ert\');\r\n }\r\n " + "ert\');\r\n }\r\n " +
" $dialogUpdateJobTypes.dialog(\"enable\");\r\n " + " $dialogUpdateJobTypes.dialog(\"enable\");\r\n " +
" $dialogUpdateJobTypes.dialog(\"close\");\r\n " + " $dialogUpdateJobTypes.dialog(\"close\");\r\n " +
" } else {\r\n al" + " } else {\r\n al" +
"ert(\'Unable to update component sub types: \' + d.Result);\r\n " + "ert(\'Unable to update component sub types: \' + d.Result);\r\n " +
" }\r\n },\r\n " + " }\r\n },\r\n " +
" error: function (jqXHR, textStatus, errorThrown) {\r\n " + " error: function (jqXHR, textStatus, errorThrown) {\r\n " +
" alert(\'Unable to update component sub types: \' + t" + " alert(\'Unable to update component sub types: \' + t" +
"extStatus);\r\n }\r\n " + "extStatus);\r\n }\r\n " +
" });\r\n };\r\n var buttons" + " });\r\n };\r\n var buttons" +
" = $dialogUpdateJobTypes.dialog(\"option\", \"buttons\", buttons);\r\n " + " = $dialogUpdateJobTypes.dialog(\"option\", \"buttons\", buttons);\r\n " +
" $dialogUpdateJobTypes.dialog(\'open\');\r\n } els" + " $dialogUpdateJobTypes.dialog(\'open\');\r\n } els" +
"e {\r\n alert(\'Unable to load component: \' + d.Result);" + "e {\r\n alert(\'Unable to load component: \' + d.Result);" +
"\r\n }\r\n },\r\n error: " + "\r\n }\r\n },\r\n error: " +
"function (jqXHR, textStatus, errorThrown) {\r\n alert(\'Unab" + "function (jqXHR, textStatus, errorThrown) {\r\n alert(\'Unab" +
"le to load component: \' + textStatus);\r\n }\r\n }" + "le to load component: \' + textStatus);\r\n }\r\n }" +
");\r\n }\r\n\r\n }\r\n\r\n $(\"#dialogConfirmRemove\").dialog({\r\n " + ");\r\n }\r\n\r\n }\r\n\r\n $(\"#dialogConfirmRemove\").dialog({\r\n " +
" resizable: false,\r\n height: 140,\r\n modal: true,\r" + " resizable: false,\r\n height: 140,\r\n modal: true,\r" +
"\n autoOpen: false,\r\n buttons: {\r\n \"Remove\":" + "\n autoOpen: false,\r\n buttons: {\r\n \"Remove\":" +
" function () {\r\n $(this).dialog(\"close\");\r\n }," + " function () {\r\n $(this).dialog(\"close\");\r\n }," +
"\r\n Cancel: function () {\r\n $(this).dialog(\"clo" + "\r\n Cancel: function () {\r\n $(this).dialog(\"clo" +
"se\");\r\n }\r\n }\r\n });\r\n\r\n $(\'#dialogUpdate" + "se\");\r\n }\r\n }\r\n });\r\n\r\n $(\'#dialogUpdate" +
"JobTypes\').dialog({\r\n resizable: false,\r\n modal: true,\r\n " + "JobTypes\').dialog({\r\n resizable: false,\r\n modal: true,\r\n " +
" autoOpen: false,\r\n width: 550,\r\n buttons: {\r\n " + " autoOpen: false,\r\n width: 550,\r\n buttons: {\r\n " +
" \"Save\": function () {\r\n $(this).dialog(\"close\");" + " \"Save\": function () {\r\n $(this).dialog(\"close\");" +
"\r\n },\r\n Cancel: function () {\r\n " + "\r\n },\r\n Cancel: function () {\r\n " +
" $(this).dialog(\"close\");\r\n }\r\n }\r\n });\r\n\r\n " + " $(this).dialog(\"close\");\r\n }\r\n }\r\n });\r\n\r\n " +
" $(\'#CheckboxBulkSelect_dialogUpdateJobTypes\').checkboxBulkSelect({ parentSel" + " $(\'#CheckboxBulkSelect_dialogUpdateJobTypes\').checkboxBulkSelect({ parentSel" +
"ector: \'div\' });\r\n\r\n $deviceComponents.find(\'input\').live(\'change\', updat" + "ector: \'div\' });\r\n\r\n $deviceComponents.on(\'change\', \'input\', updateCompon" +
"eComponent).focus(function () { $(this).select() });\r\n $deviceComponents." + "ent);\r\n $deviceComponents.on(\'focus\', \'input\', function () { $(this).sele" +
"find(\'span.remove\').live(\'click\', removeComponent);\r\n $deviceComponents.f" + "ct(); });\r\n\r\n $deviceComponents.on(\'click\', \'span.remove\', removeComponen" +
"ind(\'span.edit\').live(\'click\', editComponentJobTypes);\r\n\r\n });\r\n</script>\r\n<d" + "t);\r\n $deviceComponents.on(\'click\', \'span.edit\', editComponentJobTypes);\r" +
"iv"); "\n });\r\n</script>\r\n<div");
WriteLiteral(" id=\"dialogUpdateJobTypes\""); WriteLiteral(" id=\"dialogUpdateJobTypes\"");
WriteLiteral(" title=\"Update Job Types\""); WriteLiteral(" title=\"Update Job Types\"");
WriteLiteral(">\r\n <div>\r\n <h2>\r\n Hardware Non-Warranty Job Types</h2>\r\n"); WriteLiteral(">\r\n <div>\r\n <h2>\r\n Hardware Non-Warranty Job Types</h2>\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 260 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml" #line 261 "..\..\Areas\Config\Views\DeviceModel\_DeviceComponentsTable.cshtml"
Write(CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.ToSelectListItems(), 2)); Write(CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.ToSelectListItems(), 2));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n <br />\r\n <span"); WriteLiteral("\r\n <br />\r\n <span");
WriteLiteral(" id=\"CheckboxBulkSelect_dialogUpdateJobTypes\""); WriteLiteral(" id=\"CheckboxBulkSelect_dialogUpdateJobTypes\"");
WriteLiteral(" class=\"checkboxBulkSelectContainer\""); WriteLiteral(" class=\"checkboxBulkSelectContainer\"");
WriteLiteral(">\r\n </span>\r\n </div>\r\n</div>\r\n<div"); WriteLiteral(">\r\n </span>\r\n </div>\r\n</div>\r\n<div");
WriteLiteral(" id=\"dialogConfirmRemove\""); WriteLiteral(" id=\"dialogConfirmRemove\"");
WriteLiteral(" title=\"Delete this Component?\""); WriteLiteral(" title=\"Delete this Component?\"");
WriteLiteral(">\r\n <p>\r\n <span"); WriteLiteral(">\r\n <p>\r\n <span");
WriteLiteral(" class=\"ui-icon ui-icon-alert\""); WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\""); WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\"");
WriteLiteral("></span>\r\n This item will be permanently deleted and cannot be recovered. " + WriteLiteral("></span>\r\n This item will be permanently deleted and cannot be recovered. " +
"Are you sure?</p>\r\n</div>\r\n"); "Are you sure?</p>\r\n</div>\r\n");
} }
} }
} }
#pragma warning restore 1591 #pragma warning restore 1591
@@ -1,322 +1,322 @@
@{ @{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Import Status"); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Import Status");
Html.BundleDeferred("~/ClientScripts/Modules/Knockout"); Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
} }
<h2> <h2>
Documents Imported Today Documents Imported Today
</h2> </h2>
<div id="importStatus"> <div id="importStatus">
<div id="noSessions" data-bind="visible: noSessions"> <div id="noSessions" data-bind="visible: noSessions">
<h3> <h3>
No imported documents today</h3> No imported documents today</h3>
</div> </div>
<div id="sessions" data-bind="visible: !noSessions(), foreach: {data: sessions, afterRender: sessionRendered}" <div id="sessions" data-bind="visible: !noSessions(), foreach: {data: sessions, afterRender: sessionRendered}"
style="display: none"> style="display: none">
<div class="session"> <div class="session">
<div class="clearfix"> <div class="clearfix">
<div class="sessionLeftPane"> <div class="sessionLeftPane">
<h3> <h3>
<span data-bind="text: title"></span> <span data-bind="text: title"></span>
</h3> </h3>
</div> </div>
<div class="sessionRightPane"> <div class="sessionRightPane">
<p class="sessionStart" data-bind="text: startTime"> <p class="sessionStart" data-bind="text: startTime">
</p> </p>
<p class="sessionStatus" data-bind="text: progressStatus"> <p class="sessionStatus" data-bind="text: progressStatus">
</p> </p>
<div data-bind="visible: !sessionEnded(), progressValue: progressValue" class="sessionProgress"> <div data-bind="visible: !sessionEnded(), progressValue: progressValue" class="sessionProgress">
</div> </div>
</div> </div>
</div> </div>
<div class="sessionPages clearfix" data-bind="foreach: {data: sessionPages}"> <div class="sessionPages clearfix" data-bind="foreach: {data: sessionPages}">
<div class="sessionPage" data-bind="style: {backgroundImage: thumbnailUrl}"> <div class="sessionPage" data-bind="style: {backgroundImage: thumbnailUrl}">
<div class="sessionPageDetails"> <div class="sessionPageDetails">
<h3 data-bind="text: title"> <h3 data-bind="text: title">
</h3> </h3>
<div data-bind="visible: undetected"> <div data-bind="visible: undetected">
Disco QR-Code not found<br /> Disco QR-Code not found<br />
<a target="_blank" data-bind="attr: {href: manuallyAssignUrl}, visible: $parent.sessionEnded">Manually Assign Page</a> <a target="_blank" data-bind="attr: {href: manuallyAssignUrl}, visible: $parent.sessionEnded">Manually Assign Page</a>
</div> </div>
<div data-bind="visible: detected"> <div data-bind="visible: detected">
Document: <a target="_blank" data-bind="text: documentTemplate, attr: {href: documentTemplateUrl}"> Document: <a target="_blank" data-bind="text: documentTemplate, attr: {href: documentTemplateUrl}">
</a> </a>
<br /> <br />
Target: <a target="_blank" data-bind="text: assignedData, attr: {href: assignedDataUrl}"> Target: <a target="_blank" data-bind="text: assignedData, attr: {href: assignedDataUrl}">
</a> </a>
</div> </div>
<div data-bind="visible: !(detected() || undetected())"> <div data-bind="visible: !(detected() || undetected())">
<p class="sessionStatus" data-bind="text: progressStatus"> <p class="sessionStatus" data-bind="text: progressStatus">
</p> </p>
<div data-bind="progressValue: progressValue" class="sessionProgress"> <div data-bind="progressValue: progressValue" class="sessionProgress">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="sessionInfoMessages"> <div class="sessionInfoMessages">
<table class="logEventsViewport"> <table class="logEventsViewport">
<thead> <thead>
<tr> <tr>
<th class="icon"> <th class="icon">
&nbsp; &nbsp;
</th> </th>
<th class="message"> <th class="message">
Message Message
</th> </th>
</tr> </tr>
</thead> </thead>
</table> </table>
<div class="logEventsViewportContainer"> <div class="logEventsViewportContainer">
<div class="logEventsViewportNoLogs" data-bind="visible: messages().length == 0" <div class="logEventsViewportNoLogs" data-bind="visible: messages().length == 0"
style="display: none"> style="display: none">
No logs No logs
</div> </div>
<table class="logEventsViewport" data-bind="visible: messages().length > 0" style="display: none"> <table class="logEventsViewport" data-bind="visible: messages().length > 0" style="display: none">
<tbody data-bind="foreach: messages"> <tbody data-bind="foreach: messages">
<tr> <tr>
<td class="icon" data-bind="attr: {title: FormattedTimestamp}, css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}"> <td class="icon" data-bind="attr: {title: FormattedTimestamp}, css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}">
&nbsp; &nbsp;
</td> </td>
<td class="message" data-bind="text: FormattedMessage, attr: {title: EventTypeName}"> <td class="message" data-bind="text: FormattedMessage, attr: {title: EventTypeName}">
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
ko.bindingHandlers.progressValue = { ko.bindingHandlers.progressValue = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) { update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var v = ko.utils.unwrapObservable(valueAccessor()); var v = ko.utils.unwrapObservable(valueAccessor());
var vInt = parseInt(v); var vInt = parseInt(v);
if (vInt >= 0) { if (vInt >= 0) {
$element = $(element); $element = $(element);
if (!$element.is('.ui-progressbar')) if (!$element.is('.ui-progressbar'))
$element.progressbar(); $element.progressbar();
$(element).progressbar('option', 'value', vInt); $(element).progressbar('option', 'value', vInt);
} }
} }
}; };
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var vm; var vm;
var host = $('#importStatus'); var host = $('#importStatus');
var hostSessions = $('#sessions'); var hostSessions = $('#sessions');
var liveConnection; var liveConnection;
var urlDeviceShow = '@(Url.Action(MVC.Device.Show()))/' var urlDeviceShow = '@(Url.Action(MVC.Device.Show()))/'
var urlJobShow = '@(Url.Action(MVC.Job.Show()))/' var urlJobShow = '@(Url.Action(MVC.Job.Show()))/'
var urlUserShow = '@(Url.Action(MVC.User.Show()))/' var urlUserShow = '@(Url.Action(MVC.User.Show()))/'
var urlPageThumbnail = '@(Url.Action(MVC.API.DocumentTemplate.ImporterThumbnail()))/' var urlPageThumbnail = '@(Url.Action(MVC.API.DocumentTemplate.ImporterThumbnail()))/'
var urlDocumentTemplate = '@(Url.Action(MVC.Config.DocumentTemplate.Index()))/'; var urlDocumentTemplate = '@(Url.Action(MVC.Config.DocumentTemplate.Index()))/';
var urlManuallyAssign = '@(Url.Action(MVC.Config.DocumentTemplate.UndetectedPages()))'; var urlManuallyAssign = '@(Url.Action(MVC.Config.DocumentTemplate.UndetectedPages()))';
var iconErrorUrl = 'url(@(Links.ClientSource.Style.Images.Status.fail32_png))'; var iconErrorUrl = 'url(@(Links.ClientSource.Style.Images.Status.fail32_png))';
var isLive = false; var isLive = false;
function pageViewModel() { function pageViewModel() {
var self = this; var self = this;
self.noSessions = ko.observable(true); self.noSessions = ko.observable(true);
self.sessions = ko.observableArray(); self.sessions = ko.observableArray();
self.sessionIndex = {}; self.sessionIndex = {};
self.sessionRendered = function (e, d) { self.sessionRendered = function (e, d) {
if (!d.sessionEnded()) { if (!d.sessionEnded()) {
d.progressbar = $(e).find('.sessionProgress').progressbar(); d.progressbar = $(e).find('.sessionProgress').progressbar();
} }
}; };
} }
function sessionViewModel(id) { function sessionViewModel(id) {
var self = this; var self = this;
self.title = ko.observable(id); self.title = ko.observable(id);
self.messages = ko.observableArray(); self.messages = ko.observableArray();
self.progressStatus = ko.observable(); self.progressStatus = ko.observable();
self.progressValue = ko.observable(); self.progressValue = ko.observable();
self.startTime = ko.observable(); self.startTime = ko.observable();
self.sessionEnded = ko.observable(false); self.sessionEnded = ko.observable(false);
self.sessionPages = ko.observableArray(); self.sessionPages = ko.observableArray();
self.sessionPagesIndex = {}; self.sessionPagesIndex = {};
self.addSessionPage = function (sessionPage) { self.addSessionPage = function (sessionPage) {
//if (isLive) { //if (isLive) {
self.sessionPages.push(sessionPage); self.sessionPages.push(sessionPage);
self.sessionPagesIndex[sessionPage.pageNumber] = sessionPage; self.sessionPagesIndex[sessionPage.pageNumber] = sessionPage;
//} //}
} }
} }
function sessionPageViewModel(sessionId, pageNumber) { function sessionPageViewModel(sessionId, pageNumber) {
var self = this; var self = this;
self.sessionId = sessionId; self.sessionId = sessionId;
self.pageNumber = pageNumber; self.pageNumber = pageNumber;
self.title = 'Page ' + pageNumber; self.title = 'Page ' + pageNumber;
self.progressStatus = ko.observable(); self.progressStatus = ko.observable();
self.progressValue = ko.observable(); self.progressValue = ko.observable();
self.undetected = ko.observable(false); self.undetected = ko.observable(false);
self.detected = ko.observable(false); self.detected = ko.observable(false);
self.documentTemplateId = ko.observable(); self.documentTemplateId = ko.observable();
self.documentTemplate = ko.observable(); self.documentTemplate = ko.observable();
self.assignedDataType = ko.observable(); self.assignedDataType = ko.observable();
self.assignedDataId = ko.observable(); self.assignedDataId = ko.observable();
self.assignedData = ko.observable(); self.assignedData = ko.observable();
self.thumbnailEnabled = ko.observable(0); self.thumbnailEnabled = ko.observable(0);
self.updateThumbnail = function () { self.updateThumbnail = function () {
self.thumbnailEnabled(self.thumbnailEnabled() + 1); self.thumbnailEnabled(self.thumbnailEnabled() + 1);
} }
self.documentTemplateUrl = ko.computed(function () { self.documentTemplateUrl = ko.computed(function () {
return urlDocumentTemplate + self.documentTemplateId(); return urlDocumentTemplate + self.documentTemplateId();
}); });
self.manuallyAssignUrl = ko.computed(function () { self.manuallyAssignUrl = ko.computed(function () {
return urlManuallyAssign + '#' + self.sessionId + '_' + self.pageNumber; return urlManuallyAssign + '#' + self.sessionId + '_' + self.pageNumber;
}); });
self.assignedDataUrl = ko.computed(function () { self.assignedDataUrl = ko.computed(function () {
var t = self.assignedDataType(); var t = self.assignedDataType();
var dId = self.assignedDataId(); var dId = self.assignedDataId();
switch (t) { switch (t) {
case 'Device': case 'Device':
return urlDeviceShow + dId; return urlDeviceShow + dId;
case 'Job': case 'Job':
return urlJobShow + dId; return urlJobShow + dId;
case 'User': case 'User':
return urlUserShow + dId; return urlUserShow + dId;
} }
return null; return null;
}); });
self.thumbnailUrl = ko.computed(function () { self.thumbnailUrl = ko.computed(function () {
var enabled = self.thumbnailEnabled(); var enabled = self.thumbnailEnabled();
if (enabled > 0) { if (enabled > 0) {
return 'url(' + urlPageThumbnail + '?SessionId=' + self.sessionId + '&PageNumber=' + self.pageNumber + '&NoCache=' + enabled + ')'; return 'url(' + urlPageThumbnail + '?SessionId=' + self.sessionId + '&PageNumber=' + self.pageNumber + '&NoCache=' + enabled + ')';
} }
return null; return null;
}); });
} }
function parseLog(log) { function parseLog(log) {
if (log.ModuleId === 40 && log.Arguments && log.Arguments.length > 0) { if (log.ModuleId === 40 && log.Arguments && log.Arguments.length > 0) {
// find session // find session
var sessionId = log.Arguments[0]; var sessionId = log.Arguments[0];
var session = vm.sessionIndex[sessionId]; var session = vm.sessionIndex[sessionId];
if (!session && log.EventTypeId === 10) { // Starting Session (Ignore 'partial' sessions) if (!session && log.EventTypeId === 10) { // Starting Session (Ignore 'partial' sessions)
session = new sessionViewModel(log.Arguments[1]); session = new sessionViewModel(log.Arguments[1]);
vm.sessionIndex[sessionId] = session; vm.sessionIndex[sessionId] = session;
vm.sessions.unshift(session); vm.sessions.unshift(session);
vm.noSessions(false); vm.noSessions(false);
} }
if (session) { if (session) {
switch (log.EventTypeId) { switch (log.EventTypeId) {
case 10: // SessionStarting case 10: // SessionStarting
session.startTime(log.FormattedTimestamp.substring(log.FormattedTimestamp.indexOf(' ') + 1)); session.startTime(log.FormattedTimestamp.substring(log.FormattedTimestamp.indexOf(' ') + 1));
break; break;
case 11: // SessionProgress case 11: // SessionProgress
session.progressValue(log.Arguments[1]); session.progressValue(log.Arguments[1]);
session.progressStatus(log.Arguments[2]); session.progressStatus(log.Arguments[2]);
break; break;
case 12: // SessionFinished case 12: // SessionFinished
session.sessionEnded(true); session.sessionEnded(true);
session.progressStatus('Import Finished'); session.progressStatus('Import Finished');
break; break;
case 15: // SessionWarning case 15: // SessionWarning
session.messages.unshift(log); session.messages.unshift(log);
break; break;
case 16: // SessionError case 16: // SessionError
session.messages.unshift(log); session.messages.unshift(log);
break; break;
case 100: // ImportPageStarting case 100: // ImportPageStarting
session.addSessionPage(new sessionPageViewModel(sessionId, log.Arguments[1])); session.addSessionPage(new sessionPageViewModel(sessionId, log.Arguments[1]));
break; break;
case 104: // ImportPageImageUpdate case 104: // ImportPageImageUpdate
var p = session.sessionPagesIndex[log.Arguments[1]]; var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) { if (p) {
p.updateThumbnail(); p.updateThumbnail();
} }
break; break;
case 105: // ImportPageProgress case 105: // ImportPageProgress
var p = session.sessionPagesIndex[log.Arguments[1]]; var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) { if (p) {
p.progressValue(log.Arguments[2]); p.progressValue(log.Arguments[2]);
p.progressStatus(log.Arguments[3]); p.progressStatus(log.Arguments[3]);
} }
break; break;
case 110: // ImportPageDetected case 110: // ImportPageDetected
var p = session.sessionPagesIndex[log.Arguments[1]]; var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) { if (p) {
p.documentTemplateId(log.Arguments[2]); p.documentTemplateId(log.Arguments[2]);
p.documentTemplate(log.Arguments[3]); p.documentTemplate(log.Arguments[3]);
p.assignedDataType(log.Arguments[4]); p.assignedDataType(log.Arguments[4]);
p.assignedDataId(log.Arguments[5]); p.assignedDataId(log.Arguments[5]);
p.assignedData(log.Arguments[6]); p.assignedData(log.Arguments[6]);
p.detected(true); p.detected(true);
if (!isLive) { if (!isLive) {
p.updateThumbnail(); p.updateThumbnail();
} }
} }
session.messages.unshift(log); session.messages.unshift(log);
break; break;
case 115: // ImportPageUndetected case 115: // ImportPageUndetected
var p = session.sessionPagesIndex[log.Arguments[1]]; var p = session.sessionPagesIndex[log.Arguments[1]];
if (p) { if (p) {
p.undetected(true); p.undetected(true);
if (!isLive) { if (!isLive) {
p.updateThumbnail(); p.updateThumbnail();
} }
} }
session.messages.unshift(log); session.messages.unshift(log);
break; break;
case 150: // Ignore: ImportPageUndetectedStored case 150: // Ignore: ImportPageUndetectedStored
break; break;
default: default:
session.messages.unshift(log); session.messages.unshift(log);
} }
} }
} }
} }
function init() { function init() {
// Create View Model // Create View Model
vm = new pageViewModel(); vm = new pageViewModel();
// Load Logs // Load Logs
var d = new Date(); var d = new Date();
var loadData = { var loadData = {
Format: "json", Format: "json",
Start: d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(), Start: d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(),
End: null, End: null,
ModuleId: 40, ModuleId: 40,
Take: 2000 Take: 2000
}; };
$.ajax({ $.ajax({
url: '@(Url.Action(MVC.API.Logging.RetrieveEvents()))', url: '@(Url.Action(MVC.API.Logging.RetrieveEvents()))',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
traditional: true, traditional: true,
data: loadData, data: loadData,
success: init_loadedLogs, success: init_loadedLogs,
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to retrieve logs: ' + errorThrown); alert('Unable to retrieve logs: ' + errorThrown);
} }
}); });
} }
function init_loadedLogs(logs) { function init_loadedLogs(logs) {
logs.reverse(); logs.reverse();
for (var i = 0; i < logs.length; i++) { for (var i = 0; i < logs.length; i++) {
parseLog(logs[i]); parseLog(logs[i]);
} }
// Bind // Bind
ko.applyBindings(vm); ko.applyBindings(vm);
// Init Persistent Connection // Init Persistent Connection
liveConnection = $.connection('@(Url.Content("~/API/Logging/Notifications"))'); liveConnection = $.connection('@(Url.Content("~/API/Logging/Notifications"))');
liveConnection.received(parseLog); liveConnection.received(parseLog);
liveConnection.error(function (e) { alert('Live-Log Error: ' + e) }); liveConnection.error(function (e) { if (e.status != 200) alert('Live-Log Error: ' + e.statusText + ': ' + e.responseText); });
isLive = true; isLive = true;
liveConnection.start(function () { liveConnection.start(function () {
liveConnection.send('/addToGroups:@(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName)'); liveConnection.send('/addToGroups:@(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName)');
}); });
} }
init(); init();
}); });
</script> </script>
@@ -1,484 +1,484 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.17929
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Disco.Web.Areas.Config.Views.DocumentTemplate namespace Disco.Web.Areas.Config.Views.DocumentTemplate
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web; using System.Web;
using System.Web.Helpers; using System.Web.Helpers;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using System.Web.Security; using System.Web.Security;
using System.Web.UI; using System.Web.UI;
using System.Web.WebPages; using System.Web.WebPages;
using Disco.BI.Extensions; using Disco.BI.Extensions;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Web; using Disco.Web;
using Disco.Web.Extensions; using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml")] [System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml")]
public class ImportStatus : System.Web.Mvc.WebViewPage<dynamic> public class ImportStatus : System.Web.Mvc.WebViewPage<dynamic>
{ {
public ImportStatus() public ImportStatus()
{ {
} }
public override void Execute() public override void Execute()
{ {
#line 1 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 1 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Import Status"); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(), "Import Status");
Html.BundleDeferred("~/ClientScripts/Modules/Knockout"); Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n<h2>\r\n Documents Imported Today\r\n</h2>\r\n<div"); WriteLiteral("\r\n<h2>\r\n Documents Imported Today\r\n</h2>\r\n<div");
WriteLiteral(" id=\"importStatus\""); WriteLiteral(" id=\"importStatus\"");
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" id=\"noSessions\""); WriteLiteral(" id=\"noSessions\"");
WriteLiteral(" data-bind=\"visible: noSessions\""); WriteLiteral(" data-bind=\"visible: noSessions\"");
WriteLiteral(">\r\n <h3>\r\n No imported documents today</h3>\r\n </div>\r\n <d" + WriteLiteral(">\r\n <h3>\r\n No imported documents today</h3>\r\n </div>\r\n <d" +
"iv"); "iv");
WriteLiteral(" id=\"sessions\""); WriteLiteral(" id=\"sessions\"");
WriteLiteral(" data-bind=\"visible: !noSessions(), foreach: {data: sessions, afterRender: sessio" + WriteLiteral(" data-bind=\"visible: !noSessions(), foreach: {data: sessions, afterRender: sessio" +
"nRendered}\""); "nRendered}\"");
WriteLiteral("\r\n style=\"display: none\""); WriteLiteral("\r\n style=\"display: none\"");
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"session\""); WriteLiteral(" class=\"session\"");
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"clearfix\""); WriteLiteral(" class=\"clearfix\"");
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"sessionLeftPane\""); WriteLiteral(" class=\"sessionLeftPane\"");
WriteLiteral(">\r\n <h3>\r\n <span"); WriteLiteral(">\r\n <h3>\r\n <span");
WriteLiteral(" data-bind=\"text: title\""); WriteLiteral(" data-bind=\"text: title\"");
WriteLiteral("></span>\r\n </h3>\r\n </div>\r\n <div" + WriteLiteral("></span>\r\n </h3>\r\n </div>\r\n <div" +
""); "");
WriteLiteral(" class=\"sessionRightPane\""); WriteLiteral(" class=\"sessionRightPane\"");
WriteLiteral(">\r\n <p"); WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"sessionStart\""); WriteLiteral(" class=\"sessionStart\"");
WriteLiteral(" data-bind=\"text: startTime\""); WriteLiteral(" data-bind=\"text: startTime\"");
WriteLiteral(">\r\n </p>\r\n <p"); WriteLiteral(">\r\n </p>\r\n <p");
WriteLiteral(" class=\"sessionStatus\""); WriteLiteral(" class=\"sessionStatus\"");
WriteLiteral(" data-bind=\"text: progressStatus\""); WriteLiteral(" data-bind=\"text: progressStatus\"");
WriteLiteral(">\r\n </p>\r\n <div"); WriteLiteral(">\r\n </p>\r\n <div");
WriteLiteral(" data-bind=\"visible: !sessionEnded(), progressValue: progressValue\""); WriteLiteral(" data-bind=\"visible: !sessionEnded(), progressValue: progressValue\"");
WriteLiteral(" class=\"sessionProgress\""); WriteLiteral(" class=\"sessionProgress\"");
WriteLiteral(">\r\n </div>\r\n </div>\r\n </div>\r\n " + WriteLiteral(">\r\n </div>\r\n </div>\r\n </div>\r\n " +
" <div"); " <div");
WriteLiteral(" class=\"sessionPages clearfix\""); WriteLiteral(" class=\"sessionPages clearfix\"");
WriteLiteral(" data-bind=\"foreach: {data: sessionPages}\""); WriteLiteral(" data-bind=\"foreach: {data: sessionPages}\"");
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"sessionPage\""); WriteLiteral(" class=\"sessionPage\"");
WriteLiteral(" data-bind=\"style: {backgroundImage: thumbnailUrl}\""); WriteLiteral(" data-bind=\"style: {backgroundImage: thumbnailUrl}\"");
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"sessionPageDetails\""); WriteLiteral(" class=\"sessionPageDetails\"");
WriteLiteral(">\r\n <h3"); WriteLiteral(">\r\n <h3");
WriteLiteral(" data-bind=\"text: title\""); WriteLiteral(" data-bind=\"text: title\"");
WriteLiteral(">\r\n </h3>\r\n <div"); WriteLiteral(">\r\n </h3>\r\n <div");
WriteLiteral(" data-bind=\"visible: undetected\""); WriteLiteral(" data-bind=\"visible: undetected\"");
WriteLiteral(">\r\n Disco QR-Code not found<br />\r\n " + WriteLiteral(">\r\n Disco QR-Code not found<br />\r\n " +
" <a"); " <a");
WriteLiteral(" target=\"_blank\""); WriteLiteral(" target=\"_blank\"");
WriteLiteral(" data-bind=\"attr: {href: manuallyAssignUrl}, visible: $parent.sessionEnded\""); WriteLiteral(" data-bind=\"attr: {href: manuallyAssignUrl}, visible: $parent.sessionEnded\"");
WriteLiteral(">Manually Assign Page</a>\r\n </div>\r\n " + WriteLiteral(">Manually Assign Page</a>\r\n </div>\r\n " +
" <div"); " <div");
WriteLiteral(" data-bind=\"visible: detected\""); WriteLiteral(" data-bind=\"visible: detected\"");
WriteLiteral(">\r\n Document: <a"); WriteLiteral(">\r\n Document: <a");
WriteLiteral(" target=\"_blank\""); WriteLiteral(" target=\"_blank\"");
WriteLiteral(" data-bind=\"text: documentTemplate, attr: {href: documentTemplateUrl}\""); WriteLiteral(" data-bind=\"text: documentTemplate, attr: {href: documentTemplateUrl}\"");
WriteLiteral(">\r\n </a>\r\n <br />\r\n " + WriteLiteral(">\r\n </a>\r\n <br />\r\n " +
" Target: <a"); " Target: <a");
WriteLiteral(" target=\"_blank\""); WriteLiteral(" target=\"_blank\"");
WriteLiteral(" data-bind=\"text: assignedData, attr: {href: assignedDataUrl}\""); WriteLiteral(" data-bind=\"text: assignedData, attr: {href: assignedDataUrl}\"");
WriteLiteral(">\r\n </a>\r\n </div>\r\n " + WriteLiteral(">\r\n </a>\r\n </div>\r\n " +
" <div"); " <div");
WriteLiteral(" data-bind=\"visible: !(detected() || undetected())\""); WriteLiteral(" data-bind=\"visible: !(detected() || undetected())\"");
WriteLiteral(">\r\n <p"); WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"sessionStatus\""); WriteLiteral(" class=\"sessionStatus\"");
WriteLiteral(" data-bind=\"text: progressStatus\""); WriteLiteral(" data-bind=\"text: progressStatus\"");
WriteLiteral(">\r\n </p>\r\n <div"); WriteLiteral(">\r\n </p>\r\n <div");
WriteLiteral(" data-bind=\"progressValue: progressValue\""); WriteLiteral(" data-bind=\"progressValue: progressValue\"");
WriteLiteral(" class=\"sessionProgress\""); WriteLiteral(" class=\"sessionProgress\"");
WriteLiteral(">\r\n </div>\r\n </div>\r\n " + WriteLiteral(">\r\n </div>\r\n </div>\r\n " +
" </div>\r\n </div>\r\n </div>\r\n <div"); " </div>\r\n </div>\r\n </div>\r\n <div");
WriteLiteral(" class=\"sessionInfoMessages\""); WriteLiteral(" class=\"sessionInfoMessages\"");
WriteLiteral(">\r\n <table"); WriteLiteral(">\r\n <table");
WriteLiteral(" class=\"logEventsViewport\""); WriteLiteral(" class=\"logEventsViewport\"");
WriteLiteral(">\r\n <thead>\r\n <tr>\r\n " + WriteLiteral(">\r\n <thead>\r\n <tr>\r\n " +
" <th"); " <th");
WriteLiteral(" class=\"icon\""); WriteLiteral(" class=\"icon\"");
WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n " + WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n " +
" <th"); " <th");
WriteLiteral(" class=\"message\""); WriteLiteral(" class=\"message\"");
WriteLiteral(">\r\n Message\r\n </th>\r\n " + WriteLiteral(">\r\n Message\r\n </th>\r\n " +
" </tr>\r\n </thead>\r\n </tab" + " </tr>\r\n </thead>\r\n </tab" +
"le>\r\n <div"); "le>\r\n <div");
WriteLiteral(" class=\"logEventsViewportContainer\""); WriteLiteral(" class=\"logEventsViewportContainer\"");
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"logEventsViewportNoLogs\""); WriteLiteral(" class=\"logEventsViewportNoLogs\"");
WriteLiteral(" data-bind=\"visible: messages().length == 0\""); WriteLiteral(" data-bind=\"visible: messages().length == 0\"");
WriteLiteral("\r\n style=\"display: none\""); WriteLiteral("\r\n style=\"display: none\"");
WriteLiteral(">\r\n No logs\r\n </div>\r\n " + WriteLiteral(">\r\n No logs\r\n </div>\r\n " +
" <table"); " <table");
WriteLiteral(" class=\"logEventsViewport\""); WriteLiteral(" class=\"logEventsViewport\"");
WriteLiteral(" data-bind=\"visible: messages().length > 0\""); WriteLiteral(" data-bind=\"visible: messages().length > 0\"");
WriteLiteral(" style=\"display: none\""); WriteLiteral(" style=\"display: none\"");
WriteLiteral(">\r\n <tbody"); WriteLiteral(">\r\n <tbody");
WriteLiteral(" data-bind=\"foreach: messages\""); WriteLiteral(" data-bind=\"foreach: messages\"");
WriteLiteral(">\r\n <tr>\r\n <td"); WriteLiteral(">\r\n <tr>\r\n <td");
WriteLiteral(" class=\"icon\""); WriteLiteral(" class=\"icon\"");
WriteLiteral(" data-bind=\"attr: {title: FormattedTimestamp}, css: {information: EventTypeSeveri" + WriteLiteral(" data-bind=\"attr: {title: FormattedTimestamp}, css: {information: EventTypeSeveri" +
"ty == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}\""); "ty == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}\"");
WriteLiteral(">\r\n &nbsp;\r\n </" + WriteLiteral(">\r\n &nbsp;\r\n </" +
"td>\r\n <td"); "td>\r\n <td");
WriteLiteral(" class=\"message\""); WriteLiteral(" class=\"message\"");
WriteLiteral(" data-bind=\"text: FormattedMessage, attr: {title: EventTypeName}\""); WriteLiteral(" data-bind=\"text: FormattedMessage, attr: {title: EventTypeName}\"");
WriteLiteral(">\r\n </td>\r\n </tr>\r\n " + WriteLiteral(">\r\n </td>\r\n </tr>\r\n " +
" </tbody>\r\n </table>\r\n </di" + " </tbody>\r\n </table>\r\n </di" +
"v>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<script"); "v>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<script");
WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@"> WriteLiteral(@">
ko.bindingHandlers.progressValue = { ko.bindingHandlers.progressValue = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) { update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var v = ko.utils.unwrapObservable(valueAccessor()); var v = ko.utils.unwrapObservable(valueAccessor());
var vInt = parseInt(v); var vInt = parseInt(v);
if (vInt >= 0) { if (vInt >= 0) {
$element = $(element); $element = $(element);
if (!$element.is('.ui-progressbar')) if (!$element.is('.ui-progressbar'))
$element.progressbar(); $element.progressbar();
$(element).progressbar('option', 'value', vInt); $(element).progressbar('option', 'value', vInt);
} }
} }
}; };
</script> </script>
<script"); <script");
WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n var vm;\r\n var host = $(\'#importStatus\');\r\n" + WriteLiteral(">\r\n $(function () {\r\n var vm;\r\n var host = $(\'#importStatus\');\r\n" +
" var hostSessions = $(\'#sessions\');\r\n var liveConnection;\r\n " + " var hostSessions = $(\'#sessions\');\r\n var liveConnection;\r\n " +
" var urlDeviceShow = \'"); " var urlDeviceShow = \'");
#line 111 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 111 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Device.Show())); Write(Url.Action(MVC.Device.Show()));
#line default #line default
#line hidden #line hidden
WriteLiteral("/\'\r\n var urlJobShow = \'"); WriteLiteral("/\'\r\n var urlJobShow = \'");
#line 112 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 112 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Job.Show())); Write(Url.Action(MVC.Job.Show()));
#line default #line default
#line hidden #line hidden
WriteLiteral("/\'\r\n var urlUserShow = \'"); WriteLiteral("/\'\r\n var urlUserShow = \'");
#line 113 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 113 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.User.Show())); Write(Url.Action(MVC.User.Show()));
#line default #line default
#line hidden #line hidden
WriteLiteral("/\'\r\n var urlPageThumbnail = \'"); WriteLiteral("/\'\r\n var urlPageThumbnail = \'");
#line 114 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 114 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.API.DocumentTemplate.ImporterThumbnail())); Write(Url.Action(MVC.API.DocumentTemplate.ImporterThumbnail()));
#line default #line default
#line hidden #line hidden
WriteLiteral("/\'\r\n var urlDocumentTemplate = \'"); WriteLiteral("/\'\r\n var urlDocumentTemplate = \'");
#line 115 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 115 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Config.DocumentTemplate.Index())); Write(Url.Action(MVC.Config.DocumentTemplate.Index()));
#line default #line default
#line hidden #line hidden
WriteLiteral("/\';\r\n var urlManuallyAssign = \'"); WriteLiteral("/\';\r\n var urlManuallyAssign = \'");
#line 116 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 116 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.Config.DocumentTemplate.UndetectedPages())); Write(Url.Action(MVC.Config.DocumentTemplate.UndetectedPages()));
#line default #line default
#line hidden #line hidden
WriteLiteral("\';\r\n var iconErrorUrl = \'url("); WriteLiteral("\';\r\n var iconErrorUrl = \'url(");
#line 117 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 117 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Links.ClientSource.Style.Images.Status.fail32_png); Write(Links.ClientSource.Style.Images.Status.fail32_png);
#line default #line default
#line hidden #line hidden
WriteLiteral(")\';\r\n var isLive = false;\r\n\r\n function pageViewModel() {\r\n " + WriteLiteral(")\';\r\n var isLive = false;\r\n\r\n function pageViewModel() {\r\n " +
" var self = this;\r\n\r\n self.noSessions = ko.observable(true);\r\n " + " var self = this;\r\n\r\n self.noSessions = ko.observable(true);\r\n " +
" self.sessions = ko.observableArray();\r\n self.sessionIndex = {}" + " self.sessions = ko.observableArray();\r\n self.sessionIndex = {}" +
";\r\n\r\n self.sessionRendered = function (e, d) {\r\n if (!" + ";\r\n\r\n self.sessionRendered = function (e, d) {\r\n if (!" +
"d.sessionEnded()) {\r\n d.progressbar = $(e).find(\'.sessionProg" + "d.sessionEnded()) {\r\n d.progressbar = $(e).find(\'.sessionProg" +
"ress\').progressbar();\r\n }\r\n };\r\n }\r\n fun" + "ress\').progressbar();\r\n }\r\n };\r\n }\r\n fun" +
"ction sessionViewModel(id) {\r\n var self = this;\r\n\r\n self.t" + "ction sessionViewModel(id) {\r\n var self = this;\r\n\r\n self.t" +
"itle = ko.observable(id);\r\n self.messages = ko.observableArray();\r\n " + "itle = ko.observable(id);\r\n self.messages = ko.observableArray();\r\n " +
" self.progressStatus = ko.observable();\r\n self.progressValue" + " self.progressStatus = ko.observable();\r\n self.progressValue" +
" = ko.observable();\r\n self.startTime = ko.observable();\r\n " + " = ko.observable();\r\n self.startTime = ko.observable();\r\n " +
"self.sessionEnded = ko.observable(false);\r\n\r\n self.sessionPages = ko." + "self.sessionEnded = ko.observable(false);\r\n\r\n self.sessionPages = ko." +
"observableArray();\r\n self.sessionPagesIndex = {};\r\n self.a" + "observableArray();\r\n self.sessionPagesIndex = {};\r\n self.a" +
"ddSessionPage = function (sessionPage) {\r\n //if (isLive) {\r\n " + "ddSessionPage = function (sessionPage) {\r\n //if (isLive) {\r\n " +
" self.sessionPages.push(sessionPage);\r\n self.sessionPag" + " self.sessionPages.push(sessionPage);\r\n self.sessionPag" +
"esIndex[sessionPage.pageNumber] = sessionPage;\r\n //}\r\n " + "esIndex[sessionPage.pageNumber] = sessionPage;\r\n //}\r\n " +
" }\r\n }\r\n function sessionPageViewModel(sessionId, pageNumber) {\r\n " + " }\r\n }\r\n function sessionPageViewModel(sessionId, pageNumber) {\r\n " +
" var self = this;\r\n\r\n self.sessionId = sessionId;\r\n " + " var self = this;\r\n\r\n self.sessionId = sessionId;\r\n " +
" self.pageNumber = pageNumber;\r\n self.title = \'Page \' + pageNumber" + " self.pageNumber = pageNumber;\r\n self.title = \'Page \' + pageNumber" +
";\r\n self.progressStatus = ko.observable();\r\n self.progress" + ";\r\n self.progressStatus = ko.observable();\r\n self.progress" +
"Value = ko.observable();\r\n self.undetected = ko.observable(false);\r\n " + "Value = ko.observable();\r\n self.undetected = ko.observable(false);\r\n " +
" self.detected = ko.observable(false);\r\n self.documentTempl" + " self.detected = ko.observable(false);\r\n self.documentTempl" +
"ateId = ko.observable();\r\n self.documentTemplate = ko.observable();\r\n" + "ateId = ko.observable();\r\n self.documentTemplate = ko.observable();\r\n" +
" self.assignedDataType = ko.observable();\r\n self.assignedD" + " self.assignedDataType = ko.observable();\r\n self.assignedD" +
"ataId = ko.observable();\r\n self.assignedData = ko.observable();\r\n " + "ataId = ko.observable();\r\n self.assignedData = ko.observable();\r\n " +
" self.thumbnailEnabled = ko.observable(0);\r\n self.updateThumbn" + " self.thumbnailEnabled = ko.observable(0);\r\n self.updateThumbn" +
"ail = function () {\r\n self.thumbnailEnabled(self.thumbnailEnabled" + "ail = function () {\r\n self.thumbnailEnabled(self.thumbnailEnabled" +
"() + 1);\r\n }\r\n self.documentTemplateUrl = ko.computed(func" + "() + 1);\r\n }\r\n self.documentTemplateUrl = ko.computed(func" +
"tion () {\r\n return urlDocumentTemplate + self.documentTemplateId(" + "tion () {\r\n return urlDocumentTemplate + self.documentTemplateId(" +
");\r\n });\r\n self.manuallyAssignUrl = ko.computed(function (" + ");\r\n });\r\n self.manuallyAssignUrl = ko.computed(function (" +
") {\r\n return urlManuallyAssign + \'#\' + self.sessionId + \'_\' + sel" + ") {\r\n return urlManuallyAssign + \'#\' + self.sessionId + \'_\' + sel" +
"f.pageNumber;\r\n });\r\n self.assignedDataUrl = ko.computed(f" + "f.pageNumber;\r\n });\r\n self.assignedDataUrl = ko.computed(f" +
"unction () {\r\n var t = self.assignedDataType();\r\n " + "unction () {\r\n var t = self.assignedDataType();\r\n " +
"var dId = self.assignedDataId();\r\n switch (t) {\r\n " + "var dId = self.assignedDataId();\r\n switch (t) {\r\n " +
" case \'Device\':\r\n return urlDeviceShow + dId;\r\n " + " case \'Device\':\r\n return urlDeviceShow + dId;\r\n " +
" case \'Job\':\r\n return urlJobShow + dId;\r\n " + " case \'Job\':\r\n return urlJobShow + dId;\r\n " +
" case \'User\':\r\n return urlUserShow + dId;\r" + " case \'User\':\r\n return urlUserShow + dId;\r" +
"\n }\r\n return null;\r\n });\r\n s" + "\n }\r\n return null;\r\n });\r\n s" +
"elf.thumbnailUrl = ko.computed(function () {\r\n var enabled = self" + "elf.thumbnailUrl = ko.computed(function () {\r\n var enabled = self" +
".thumbnailEnabled();\r\n if (enabled > 0) {\r\n re" + ".thumbnailEnabled();\r\n if (enabled > 0) {\r\n re" +
"turn \'url(\' + urlPageThumbnail + \'?SessionId=\' + self.sessionId + \'&PageNumber=\'" + "turn \'url(\' + urlPageThumbnail + \'?SessionId=\' + self.sessionId + \'&PageNumber=\'" +
" + self.pageNumber + \'&NoCache=\' + enabled + \')\';\r\n }\r\n " + " + self.pageNumber + \'&NoCache=\' + enabled + \')\';\r\n }\r\n " +
" return null;\r\n });\r\n }\r\n\r\n function parseLog(log)" + " return null;\r\n });\r\n }\r\n\r\n function parseLog(log)" +
" {\r\n if (log.ModuleId === 40 && log.Arguments && log.Arguments.length" + " {\r\n if (log.ModuleId === 40 && log.Arguments && log.Arguments.length" +
" > 0) {\r\n // find session\r\n var sessionId = log.Ar" + " > 0) {\r\n // find session\r\n var sessionId = log.Ar" +
"guments[0];\r\n var session = vm.sessionIndex[sessionId];\r\n " + "guments[0];\r\n var session = vm.sessionIndex[sessionId];\r\n " +
" if (!session && log.EventTypeId === 10) { // Starting Session (Ignore \'p" + " if (!session && log.EventTypeId === 10) { // Starting Session (Ignore \'p" +
"artial\' sessions)\r\n session = new sessionViewModel(log.Argume" + "artial\' sessions)\r\n session = new sessionViewModel(log.Argume" +
"nts[1]);\r\n vm.sessionIndex[sessionId] = session;\r\n " + "nts[1]);\r\n vm.sessionIndex[sessionId] = session;\r\n " +
" vm.sessions.unshift(session);\r\n vm.noSessions(false)" + " vm.sessions.unshift(session);\r\n vm.noSessions(false)" +
";\r\n }\r\n if (session) {\r\n switch" + ";\r\n }\r\n if (session) {\r\n switch" +
" (log.EventTypeId) {\r\n case 10: // SessionStarting\r\n " + " (log.EventTypeId) {\r\n case 10: // SessionStarting\r\n " +
" session.startTime(log.FormattedTimestamp.substring(log.Fo" + " session.startTime(log.FormattedTimestamp.substring(log.Fo" +
"rmattedTimestamp.indexOf(\' \') + 1));\r\n break;\r\n " + "rmattedTimestamp.indexOf(\' \') + 1));\r\n break;\r\n " +
" case 11: // SessionProgress\r\n sessi" + " case 11: // SessionProgress\r\n sessi" +
"on.progressValue(log.Arguments[1]);\r\n session.progres" + "on.progressValue(log.Arguments[1]);\r\n session.progres" +
"sStatus(log.Arguments[2]);\r\n break;\r\n " + "sStatus(log.Arguments[2]);\r\n break;\r\n " +
" case 12: // SessionFinished\r\n session.session" + " case 12: // SessionFinished\r\n session.session" +
"Ended(true);\r\n session.progressStatus(\'Import Finishe" + "Ended(true);\r\n session.progressStatus(\'Import Finishe" +
"d\');\r\n break;\r\n case 15: // Se" + "d\');\r\n break;\r\n case 15: // Se" +
"ssionWarning\r\n session.messages.unshift(log);\r\n " + "ssionWarning\r\n session.messages.unshift(log);\r\n " +
" break;\r\n case 16: // SessionError\r\n" + " break;\r\n case 16: // SessionError\r\n" +
" session.messages.unshift(log);\r\n " + " session.messages.unshift(log);\r\n " +
" break;\r\n case 100: // ImportPageStarting\r\n " + " break;\r\n case 100: // ImportPageStarting\r\n " +
" session.addSessionPage(new sessionPageViewModel(sessionId, " + " session.addSessionPage(new sessionPageViewModel(sessionId, " +
"log.Arguments[1]));\r\n break;\r\n " + "log.Arguments[1]));\r\n break;\r\n " +
" case 104: // ImportPageImageUpdate\r\n var p = session" + " case 104: // ImportPageImageUpdate\r\n var p = session" +
".sessionPagesIndex[log.Arguments[1]];\r\n if (p) {\r\n " + ".sessionPagesIndex[log.Arguments[1]];\r\n if (p) {\r\n " +
" p.updateThumbnail();\r\n }" + " p.updateThumbnail();\r\n }" +
"\r\n break;\r\n case 105: // Impor" + "\r\n break;\r\n case 105: // Impor" +
"tPageProgress\r\n var p = session.sessionPagesIndex[log" + "tPageProgress\r\n var p = session.sessionPagesIndex[log" +
".Arguments[1]];\r\n if (p) {\r\n " + ".Arguments[1]];\r\n if (p) {\r\n " +
" p.progressValue(log.Arguments[2]);\r\n p.pro" + " p.progressValue(log.Arguments[2]);\r\n p.pro" +
"gressStatus(log.Arguments[3]);\r\n }\r\n " + "gressStatus(log.Arguments[3]);\r\n }\r\n " +
" break;\r\n case 110: // ImportPageDetected\r\n " + " break;\r\n case 110: // ImportPageDetected\r\n " +
" var p = session.sessionPagesIndex[log.Arguments[1]];\r\n " + " var p = session.sessionPagesIndex[log.Arguments[1]];\r\n " +
" if (p) {\r\n p.documentTe" + " if (p) {\r\n p.documentTe" +
"mplateId(log.Arguments[2]);\r\n p.documentTemplate(" + "mplateId(log.Arguments[2]);\r\n p.documentTemplate(" +
"log.Arguments[3]);\r\n p.assignedDataType(log.Argum" + "log.Arguments[3]);\r\n p.assignedDataType(log.Argum" +
"ents[4]);\r\n p.assignedDataId(log.Arguments[5]);\r\n" + "ents[4]);\r\n p.assignedDataId(log.Arguments[5]);\r\n" +
" p.assignedData(log.Arguments[6]);\r\n " + " p.assignedData(log.Arguments[6]);\r\n " +
" p.detected(true);\r\n if (!isLiv" + " p.detected(true);\r\n if (!isLiv" +
"e) {\r\n p.updateThumbnail();\r\n " + "e) {\r\n p.updateThumbnail();\r\n " +
" }\r\n }\r\n se" + " }\r\n }\r\n se" +
"ssion.messages.unshift(log);\r\n break;\r\n " + "ssion.messages.unshift(log);\r\n break;\r\n " +
" case 115: // ImportPageUndetected\r\n var p =" + " case 115: // ImportPageUndetected\r\n var p =" +
" session.sessionPagesIndex[log.Arguments[1]];\r\n if (p" + " session.sessionPagesIndex[log.Arguments[1]];\r\n if (p" +
") {\r\n p.undetected(true);\r\n " + ") {\r\n p.undetected(true);\r\n " +
" if (!isLive) {\r\n p.updateThumbnail(" + " if (!isLive) {\r\n p.updateThumbnail(" +
");\r\n }\r\n }\r\n " + ");\r\n }\r\n }\r\n " +
" session.messages.unshift(log);\r\n br" + " session.messages.unshift(log);\r\n br" +
"eak;\r\n case 150: // Ignore: ImportPageUndetectedStored\r\n " + "eak;\r\n case 150: // Ignore: ImportPageUndetectedStored\r\n " +
" break;\r\n default:\r\n " + " break;\r\n default:\r\n " +
" session.messages.unshift(log);\r\n }\r\n " + " session.messages.unshift(log);\r\n }\r\n " +
" }\r\n }\r\n }\r\n function init() {\r\n // C" + " }\r\n }\r\n }\r\n function init() {\r\n // C" +
"reate View Model\r\n vm = new pageViewModel();\r\n\r\n // Load L" + "reate View Model\r\n vm = new pageViewModel();\r\n\r\n // Load L" +
"ogs\r\n var d = new Date();\r\n var loadData = {\r\n " + "ogs\r\n var d = new Date();\r\n var loadData = {\r\n " +
" Format: \"json\",\r\n Start: d.getFullYear() + \'-\' + (d.getMonth(" + " Format: \"json\",\r\n Start: d.getFullYear() + \'-\' + (d.getMonth(" +
") + 1) + \'-\' + d.getDate(),\r\n End: null,\r\n ModuleI" + ") + 1) + \'-\' + d.getDate(),\r\n End: null,\r\n ModuleI" +
"d: 40,\r\n Take: 2000\r\n };\r\n $.ajax({\r\n " + "d: 40,\r\n Take: 2000\r\n };\r\n $.ajax({\r\n " +
" url: \'"); " url: \'");
#line 292 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 292 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Action(MVC.API.Logging.RetrieveEvents())); Write(Url.Action(MVC.API.Logging.RetrieveEvents()));
#line default #line default
#line hidden #line hidden
WriteLiteral(@"', WriteLiteral(@"',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
traditional: true, traditional: true,
data: loadData, data: loadData,
success: init_loadedLogs, success: init_loadedLogs,
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to retrieve logs: ' + errorThrown); alert('Unable to retrieve logs: ' + errorThrown);
} }
}); });
} }
function init_loadedLogs(logs) { function init_loadedLogs(logs) {
logs.reverse(); logs.reverse();
for (var i = 0; i < logs.length; i++) { for (var i = 0; i < logs.length; i++) {
parseLog(logs[i]); parseLog(logs[i]);
} }
// Bind // Bind
ko.applyBindings(vm); ko.applyBindings(vm);
// Init Persistent Connection // Init Persistent Connection
liveConnection = $.connection('"); liveConnection = $.connection('");
#line 312 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 312 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Url.Content("~/API/Logging/Notifications")); Write(Url.Content("~/API/Logging/Notifications"));
#line default #line default
#line hidden #line hidden
WriteLiteral(@"'); WriteLiteral(@"');
liveConnection.received(parseLog); liveConnection.received(parseLog);
liveConnection.error(function (e) { alert('Live-Log Error: ' + e) }); liveConnection.error(function (e) { if (e.status != 200) alert('Live-Log Error: ' + e.statusText + ': ' + e.responseText); });
isLive = true; isLive = true;
liveConnection.start(function () { liveConnection.start(function () {
liveConnection.send('/addToGroups:"); liveConnection.send('/addToGroups:");
#line 317 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml" #line 317 "..\..\Areas\Config\Views\DocumentTemplate\ImportStatus.cshtml"
Write(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName); Write(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName);
#line default #line default
#line hidden #line hidden
WriteLiteral("\');\r\n });\r\n }\r\n init();\r\n });\r\n</script>\r\n"); WriteLiteral("\');\r\n });\r\n }\r\n init();\r\n });\r\n</script>\r\n");
} }
} }
} }
#pragma warning restore 1591 #pragma warning restore 1591
@@ -1,362 +1,362 @@
@model Disco.Web.Areas.Config.Models.DocumentTemplate.ShowModel @model Disco.Web.Areas.Config.Models.DocumentTemplate.ShowModel
@{ @{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description);
} }
<div class="form" style="width: 650px"> <div class="form" style="width: 650px">
<table> <table>
<tr> <tr>
<th> <th>
Id: Id:
</th> </th>
<td>@Html.DisplayFor(model => model.DocumentTemplate.Id) <td>@Html.DisplayFor(model => model.DocumentTemplate.Id)
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Stored Instances: Stored Instances:
</th> </th>
<td>@Html.DisplayFor(model => model.StoredInstanceCount) <td>@Html.DisplayFor(model => model.StoredInstanceCount)
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Description: Description:
</th> </th>
<td>@Html.TextBoxFor(model => model.DocumentTemplate.Description) <td>@Html.TextBoxFor(model => model.DocumentTemplate.Description)
@AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $Description = $('#DocumentTemplate_Description'); var $Description = $('#DocumentTemplate_Description');
var $DescriptionAjaxSave = $Description.next('.ajaxSave'); var $DescriptionAjaxSave = $Description.next('.ajaxSave');
$Description $Description
.watermark('Description') .watermark('Description')
.focus(function () { $Description.select() }) .focus(function () { $Description.select() })
.keydown(function (e) { .keydown(function (e) {
$DescriptionAjaxSave.show(); $DescriptionAjaxSave.show();
if (e.which == 13) { if (e.which == 13) {
$(this).blur(); $(this).blur();
} }
}).blur(function () { }).blur(function () {
$DescriptionAjaxSave.hide(); $DescriptionAjaxSave.hide();
}) })
.change(function () { .change(function () {
$DescriptionAjaxSave.hide(); $DescriptionAjaxSave.hide();
var $ajaxLoading = $DescriptionAjaxSave.next('.ajaxLoading').show(); var $ajaxLoading = $DescriptionAjaxSave.next('.ajaxLoading').show();
var data = { Description: $Description.val() }; var data = { Description: $Description.val() };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))', url: '@Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))',
dataType: 'json', dataType: 'json',
data: data, data: data,
success: function (d) { success: function (d) {
if (d == 'OK') { if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} else { } else {
$ajaxLoading.hide(); $ajaxLoading.hide();
alert('Unable to update description: ' + d); alert('Unable to update description: ' + d);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update description: ' + textStatus); alert('Unable to update description: ' + textStatus);
$ajaxLoading.hide(); $ajaxLoading.hide();
} }
}); });
}); });
}); });
</script> </script>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Always Flatten Form: Always Flatten Form:
</th> </th>
<td> <td>
<input id="DocumentTemplate_FlattenForm" type="checkbox" @(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty))/> <input id="DocumentTemplate_FlattenForm" type="checkbox" @(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty))/>
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
$('#DocumentTemplate_FlattenForm').click(function () { $('#DocumentTemplate_FlattenForm').click(function () {
var $this = $(this); var $this = $(this);
var $ajaxLoading = $this.next('.ajaxLoading').show(); var $ajaxLoading = $this.next('.ajaxLoading').show();
var data = { FlattenForm: $this.is(':checked') }; var data = { FlattenForm: $this.is(':checked') };
$.getJSON('@(Url.Action(MVC.API.DocumentTemplate.UpdateFlattenForm(Model.DocumentTemplate.Id)))', data, function (response, result) { $.getJSON('@(Url.Action(MVC.API.DocumentTemplate.UpdateFlattenForm(Model.DocumentTemplate.Id)))', data, function (response, result) {
if (result != 'success' || response != 'OK') { if (result != 'success' || response != 'OK') {
alert('Unable to change Flatten Form:\n' + response); alert('Unable to change Flatten Form:\n' + response);
$ajaxLoading.hide(); $ajaxLoading.hide();
} else { } else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} }
}); });
}); });
}); });
</script> </script>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Scope: Scope:
</th> </th>
<td> <td>
@Html.DropDownListFor(model => model.DocumentTemplate.Scope, Model.Scopes.ToSelectListItems(null)) @Html.DropDownListFor(model => model.DocumentTemplate.Scope, Model.Scopes.ToSelectListItems(null))
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $scope = $('#DocumentTemplate_Scope'); var $scope = $('#DocumentTemplate_Scope');
$scope.change(function () { $scope.change(function () {
var $ajaxLoading = $scope.next('.ajaxLoading').show(); var $ajaxLoading = $scope.next('.ajaxLoading').show();
var data = { Scope: $scope.val() }; var data = { Scope: $scope.val() };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id))', url: '@Url.Action(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id))',
dataType: 'json', dataType: 'json',
data: data, data: data,
success: function (d) { success: function (d) {
if (d == 'OK') { if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
scopeChange(); scopeChange();
} else { } else {
$ajaxLoading.hide(); $ajaxLoading.hide();
alert('Unable to update scope: ' + d); alert('Unable to update scope: ' + d);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update scope: ' + textStatus); alert('Unable to update scope: ' + textStatus);
$ajaxLoading.hide(); $ajaxLoading.hide();
} }
}); });
}); });
var $trJobTypes = $('#trJobTypes'); var $trJobTypes = $('#trJobTypes');
var $trJobTypeActions = $('#trJobTypeActions'); var $trJobTypeActions = $('#trJobTypeActions');
var $jobTypes = $trJobTypes.find('input[type="checkbox"]'); var $jobTypes = $trJobTypes.find('input[type="checkbox"]');
$jobTypes.change(jobTypesChange); $jobTypes.change(jobTypesChange);
function scopeChange() { function scopeChange() {
if ($scope.val() == 'Job') { if ($scope.val() == 'Job') {
$trJobTypes.show(); $trJobTypes.show();
$trJobTypeActions.show(); $trJobTypeActions.show();
jobTypesChange(); jobTypesChange();
} else { } else {
$trJobTypes.hide(); $trJobTypes.hide();
$trJobTypeActions.hide(); $trJobTypeActions.hide();
$jobTypes.filter(':checked').each(function () { $jobTypes.filter(':checked').each(function () {
$(this).attr('checked', false); $(this).prop('checked', false);
}); });
$('.jobSubTypes').hide().find('input[type="checkbox"]:checked').each(function () { $('.jobSubTypes').hide().find('input[type="checkbox"]:checked').each(function () {
$(this).attr('checked', false); $(this).prop('checked', false);
}); });
} }
} }
function jobTypesChange() { function jobTypesChange() {
$('.jobSubTypes').hide(); $('.jobSubTypes').hide();
$jobTypes.filter(':checked').each(function () { $jobTypes.filter(':checked').each(function () {
$('#trJobSubType' + $(this).val()).show(); $('#trJobSubType' + $(this).val()).show();
}); });
} }
$('#TypeAction_Save').click(function () { $('#TypeAction_Save').click(function () {
var data = { SubTypes: [] }; var data = { SubTypes: [] };
var $ajaxLoading = $('#TypeAction_Save').next('.ajaxLoading').show(); var $ajaxLoading = $('#TypeAction_Save').next('.ajaxLoading').show();
$jobTypes.filter(':checked').each(function () { $jobTypes.filter(':checked').each(function () {
var $this = $(this); var $this = $(this);
$('#trJobSubType' + $this.val()).find('input[type="checkbox"]:checked').each(function () { $('#trJobSubType' + $this.val()).find('input[type="checkbox"]:checked').each(function () {
data.SubTypes.push($(this).val()); data.SubTypes.push($(this).val());
}); });
}); });
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateSubTypes(Model.DocumentTemplate.Id))', url: '@Url.Action(MVC.API.DocumentTemplate.UpdateSubTypes(Model.DocumentTemplate.Id))',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
traditional: true, traditional: true,
data: data, data: data,
success: function (d) { success: function (d) {
if (d == 'OK') { if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
scopeChange(); scopeChange();
} else { } else {
$ajaxLoading.hide(); $ajaxLoading.hide();
alert('Unable to update job types: ' + d); alert('Unable to update job types: ' + d);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update job types: ' + textStatus); alert('Unable to update job types: ' + textStatus);
$ajaxLoading.hide(); $ajaxLoading.hide();
} }
}); });
return false; return false;
}); });
scopeChange(); scopeChange();
}); });
</script> </script>
</td> </td>
</tr> </tr>
<tr id="trJobTypes"> <tr id="trJobTypes">
<th class="name"> <th class="name">
Types: Types:
</th> </th>
<td class="value"> <td class="value">
@CommonHelpers.CheckBoxList("Types", Model.JobTypes.ToSelectListItems(Model.Types), 2) @CommonHelpers.CheckBoxList("Types", Model.JobTypes.ToSelectListItems(Model.Types), 2)
</td> </td>
</tr> </tr>
@foreach (var jt in Model.JobTypes) @foreach (var jt in Model.JobTypes)
{ {
<tr id="trJobSubType@(jt.Id)" class="jobSubTypes"> <tr id="trJobSubType@(jt.Id)" class="jobSubTypes">
<th class="name"> <th class="name">
@jt.Description<br /> @jt.Description<br />
Sub Types<br /> Sub Types<br />
@CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id)) @CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id))
</th> </th>
<td class="value"> <td class="value">
@CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 2) @CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 2)
</td> </td>
</tr> </tr>
} }
<tr id="trJobTypeActions"> <tr id="trJobTypeActions">
<th class="name"> <th class="name">
</th> </th>
<td class="value"> <td class="value">
<a id="TypeAction_Save" href="#" class="button">Save Job Types</a>@AjaxHelpers.AjaxLoader() <a id="TypeAction_Save" href="#" class="button">Save Job Types</a>@AjaxHelpers.AjaxLoader()
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Template PDF Template PDF
</th> </th>
<td> <td>
@Html.ActionLink("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id)) @Html.ActionLink("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id))
<br /> <br />
@using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" })) @using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" }))
{ {
<input type="file" name="Template" id="Template" style="width: 250px;" /> <input type="file" name="Template" id="Template" style="width: 250px;" />
<input class="button" type="submit" value="Upload" /> <input class="button" type="submit" value="Upload" />
} }
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $template = $('#Template'); var $template = $('#Template');
$template.closest('form').submit(function () { $template.closest('form').submit(function () {
if ($template.val() == '') { if ($template.val() == '') {
alert('A template file is required to upload.'); alert('A template file is required to upload.');
return false; return false;
} }
}); });
}); });
</script> </script>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Filter Expression: Filter Expression:
</th> </th>
<td>@Html.TextBoxFor(model => model.DocumentTemplate.FilterExpression) <td>@Html.TextBoxFor(model => model.DocumentTemplate.FilterExpression)
@AjaxHelpers.AjaxRemove() @AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $FilterExpression = $('#DocumentTemplate_FilterExpression'); var $FilterExpression = $('#DocumentTemplate_FilterExpression');
var $ajaxLoading = $FilterExpression.nextAll('.ajaxLoading').first(); var $ajaxLoading = $FilterExpression.nextAll('.ajaxLoading').first();
var $ajaxRemove = $FilterExpression.nextAll('.ajaxRemove').first(); var $ajaxRemove = $FilterExpression.nextAll('.ajaxRemove').first();
$FilterExpression $FilterExpression
.watermark('Filter Expression') .watermark('Filter Expression')
.focus(function () { $FilterExpression.select() }) .focus(function () { $FilterExpression.select() })
.keydown(function (e) { .keydown(function (e) {
if (e.which == 13) { if (e.which == 13) {
$(this).blur(); $(this).blur();
} }
}).change(function () { }).change(function () {
updateFilterExpression($FilterExpression.val()); updateFilterExpression($FilterExpression.val());
}); });
if ($FilterExpression.val() != '') if ($FilterExpression.val() != '')
$ajaxRemove.show(); $ajaxRemove.show();
$ajaxRemove.click(function () { $ajaxRemove.click(function () {
updateFilterExpression(''); updateFilterExpression('');
$FilterExpression.val(''); $FilterExpression.val('');
}); });
var updateFilterExpression = function (filterExpression) { var updateFilterExpression = function (filterExpression) {
$ajaxLoading.show(); $ajaxLoading.show();
$ajaxRemove.hide(); $ajaxRemove.hide();
var data = { FilterExpression: filterExpression }; var data = { FilterExpression: filterExpression };
$.ajax({ $.ajax({
url: '@Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id))', url: '@Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id))',
dataType: 'json', dataType: 'json',
data: data, data: data,
success: function (d) { success: function (d) {
if (d == 'OK') { if (d == 'OK') {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if (data.FilterExpression != '') if (data.FilterExpression != '')
$ajaxRemove.fadeIn('fast'); $ajaxRemove.fadeIn('fast');
} else { } else {
$ajaxLoading.hide(); $ajaxLoading.hide();
alert('Unable to update filter expression: ' + d); alert('Unable to update filter expression: ' + d);
} }
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to update filter expression: ' + textStatus); alert('Unable to update filter expression: ' + textStatus);
$ajaxLoading.hide(); $ajaxLoading.hide();
} }
}); });
}; };
}); });
</script> </script>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Bulk Generate Bulk Generate
</th> </th>
<td> <td>
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post)) @using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post))
{ {
<textarea name="DataIds"></textarea> <textarea name="DataIds"></textarea>
<input class="button" type="submit" value="Generate" /> <input class="button" type="submit" value="Generate" />
} }
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
<h2> <h2>
Template Expressions</h2> Template Expressions</h2>
@Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions) @Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions)
<div id="dialogConfirmDelete" title="Delete this Document Template?"> <div id="dialogConfirmDelete" title="Delete this Document Template?">
<p> <p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 100px 0;"> <span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 100px 0;">
</span>This item will be permanently deleted and cannot be recovered.<br /> </span>This item will be permanently deleted and cannot be recovered.<br />
<em>This <strong>will not delete attachments</strong> which have already been imported, <em>This <strong>will not delete attachments</strong> which have already been imported,
but any generated documents will no longer be automatically imported.</em><br /> but any generated documents will no longer be automatically imported.</em><br />
Are you sure?</p> Are you sure?</p>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var button = $('#buttonDelete'); var button = $('#buttonDelete');
var buttonDialog = $("#dialogConfirmDelete"); var buttonDialog = $("#dialogConfirmDelete");
var buttonLink = button.attr('href'); var buttonLink = button.attr('href');
button.attr('href', '#'); button.attr('href', '#');
button.click(function () { button.click(function () {
buttonDialog.dialog('open'); buttonDialog.dialog('open');
return false; return false;
}); });
buttonDialog.dialog({ buttonDialog.dialog({
resizable: false, resizable: false,
modal: true, modal: true,
autoOpen: false, autoOpen: false,
buttons: { buttons: {
"Delete": function () { "Delete": function () {
$this = $(this); $this = $(this);
$this.dialog('disable'); $this.dialog('disable');
$this.dialog("option", "buttons", null); $this.dialog("option", "buttons", null);
window.location.href = buttonLink; window.location.href = buttonLink;
}, },
Cancel: function () { Cancel: function () {
$(this).dialog("close"); $(this).dialog("close");
} }
} }
}); });
}); });
</script> </script>
<div class="actionBar"> <div class="actionBar">
@Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()) @Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser())
@Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete") @Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete")
</div> </div>
File diff suppressed because it is too large. Load diff
@@ -1,370 +1,370 @@
@{ @{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Enrolment", MVC.Config.Enrolment.Index(), "Status"); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Enrolment", MVC.Config.Enrolment.Index(), "Status");
Html.BundleDeferred("~/ClientScripts/Modules/Knockout"); Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Isotope"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Isotope");
} }
<div id="enrolStatus"> <div id="enrolStatus">
<div id="noSessions" data-bind="visible: noSessions"> <div id="noSessions" data-bind="visible: noSessions">
<h2> <h2>
No enrolment sessions today</h2> No enrolment sessions today</h2>
</div> </div>
<div id="sessions" data-bind="visible: !noSessions(), foreach: {data: sessions, afterRender: sessionRendered, afterAdd: sessionAdded}" <div id="sessions" data-bind="visible: !noSessions(), foreach: {data: sessions, afterRender: sessionRendered, afterAdd: sessionAdded}"
style="display: none"> style="display: none">
<div class="session" data-bind="style: {backgroundImage: deviceModelImageUrl}, click: select"> <div class="session" data-bind="style: {backgroundImage: deviceModelImageUrl}, click: select">
<h3> <h3>
<span data-bind="text: title"></span><span class="details" data-bind="text: '(' + deviceModelDescription() + ')'"> <span data-bind="text: title"></span><span class="details" data-bind="text: '(' + deviceModelDescription() + ')'">
</span> </span>
</h3> </h3>
<p class="sessionStart" data-bind="text: startTime"> <p class="sessionStart" data-bind="text: startTime">
</p> </p>
<p class="sessionStatus" data-bind="text: progressStatus"> <p class="sessionStatus" data-bind="text: progressStatus">
</p> </p>
<div data-bind="visible: !sessionEnded(), progressValue: progressValue" class="sessionProgress"> <div data-bind="visible: !sessionEnded(), progressValue: progressValue" class="sessionProgress">
</div> </div>
</div> </div>
</div> </div>
<div id="dialogSession" data-bind="with: currentSession"> <div id="dialogSession" data-bind="with: currentSession">
<div class="sessionHeader clearfix" data-bind="style: {backgroundImage: deviceModelImageUrl}"> <div class="sessionHeader clearfix" data-bind="style: {backgroundImage: deviceModelImageUrl}">
<h2> <h2>
<a href="" target="_blank" data-bind="text: title, attr: {href: deviceUrl}"></a> <a href="" target="_blank" data-bind="text: title, attr: {href: deviceUrl}"></a>
</h2> </h2>
<h3 data-bind="text: deviceModelDescription"> <h3 data-bind="text: deviceModelDescription">
</h3> </h3>
<table data-bind="if: sessionDeviceInfo"> <table data-bind="if: sessionDeviceInfo">
<tr> <tr>
<th style="width: 128px"> <th style="width: 128px">
Computer Name: Computer Name:
</th> </th>
<td data-bind="text: sessionDeviceInfo().Arguments[3]"> <td data-bind="text: sessionDeviceInfo().Arguments[3]">
</td> </td>
</tr> </tr>
<tr> <tr>
<th style="width: 128px"> <th style="width: 128px">
UUID: UUID:
</th> </th>
<td data-bind="text: sessionDeviceInfo().Arguments[2]"> <td data-bind="text: sessionDeviceInfo().Arguments[2]">
</td> </td>
</tr> </tr>
<tr> <tr>
<th style="width: 128px"> <th style="width: 128px">
LAN Mac Address: LAN Mac Address:
</th> </th>
<td data-bind="text: sessionDeviceInfo().Arguments[4]"> <td data-bind="text: sessionDeviceInfo().Arguments[4]">
</td> </td>
</tr> </tr>
<tr> <tr>
<th style="width: 128px"> <th style="width: 128px">
WLAN Mac Address: WLAN Mac Address:
</th> </th>
<td data-bind="text: sessionDeviceInfo().Arguments[5]"> <td data-bind="text: sessionDeviceInfo().Arguments[5]">
</td> </td>
</tr> </tr>
<tr> <tr>
<th style="width: 128px"> <th style="width: 128px">
Manufacturer/Model: Manufacturer/Model:
</th> </th>
<td data-bind="text: sessionDeviceInfo().Arguments[6] + ' ' + sessionDeviceInfo().Arguments[7]"> <td data-bind="text: sessionDeviceInfo().Arguments[6] + ' ' + sessionDeviceInfo().Arguments[7]">
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
<div class="sessionProgress clearfix"> <div class="sessionProgress clearfix">
<p class="sessionStart" data-bind="text: startTime"> <p class="sessionStart" data-bind="text: startTime">
</p> </p>
<p class="sessionStatus" data-bind="text: progressStatus"> <p class="sessionStatus" data-bind="text: progressStatus">
</p> </p>
<div data-bind="visible: !sessionEnded(), progressValue: progressValue"> <div data-bind="visible: !sessionEnded(), progressValue: progressValue">
</div> </div>
</div> </div>
<div class="sessionInfoContainer clearfix"> <div class="sessionInfoContainer clearfix">
<div class="sessionInfoMessages"> <div class="sessionInfoMessages">
<table class="logEventsViewport"> <table class="logEventsViewport">
<thead> <thead>
<tr> <tr>
<th class="icon"> <th class="icon">
&nbsp; &nbsp;
</th> </th>
<th class="message"> <th class="message">
Message Message
</th> </th>
</tr> </tr>
</thead> </thead>
</table> </table>
<div class="logEventsViewportContainer"> <div class="logEventsViewportContainer">
<div class="logEventsViewportNoLogs" data-bind="visible: messages().length == 0" <div class="logEventsViewportNoLogs" data-bind="visible: messages().length == 0"
style="display: none"> style="display: none">
No logs No logs
</div> </div>
<table class="logEventsViewport" data-bind="visible: messages().length > 0" style="display: none"> <table class="logEventsViewport" data-bind="visible: messages().length > 0" style="display: none">
<tbody data-bind="foreach: messages"> <tbody data-bind="foreach: messages">
<tr> <tr>
<td class="icon" data-bind="attr: {title: FormattedTimestamp}, css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}"> <td class="icon" data-bind="attr: {title: FormattedTimestamp}, css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}">
&nbsp; &nbsp;
</td> </td>
<td class="message" data-bind="text: FormattedMessage, attr: {title: EventTypeName}"> <td class="message" data-bind="text: FormattedMessage, attr: {title: EventTypeName}">
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<div class="sessionInfoConsole" data-bind="foreach: console"> <div class="sessionInfoConsole" data-bind="foreach: console">
<span data-bind="text: Arguments[1]"></span> <span data-bind="text: Arguments[1]"></span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
ko.bindingHandlers.progressValue = { ko.bindingHandlers.progressValue = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) { update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var v = ko.utils.unwrapObservable(valueAccessor()); var v = ko.utils.unwrapObservable(valueAccessor());
var vInt = parseInt(v); var vInt = parseInt(v);
if (vInt >= 0) { if (vInt >= 0) {
$element = $(element); $element = $(element);
if (!$element.is('.ui-progressbar')) if (!$element.is('.ui-progressbar'))
$element.progressbar(); $element.progressbar();
$(element).progressbar('option', 'value', vInt); $(element).progressbar('option', 'value', vInt);
} }
} }
}; };
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var vm; var vm;
var host = $('#enrolStatus'); var host = $('#enrolStatus');
var hostSessions = $('#sessions'); var hostSessions = $('#sessions');
var hostDialogSessions = $('#dialogSession'); var hostDialogSessions = $('#dialogSession');
//var hostDialogSessionsProgress = $('#dialogSession').find('.sessionProgress'); //var hostDialogSessionsProgress = $('#dialogSession').find('.sessionProgress');
var deviceModels = {}; var deviceModels = {};
var liveConnection; var liveConnection;
var deviceBaseUrl = '@(Url.Action(MVC.Device.Show()))/' var deviceBaseUrl = '@(Url.Action(MVC.Device.Show()))/'
var deviceModelImageUrl = '@(Url.Action(MVC.API.DeviceModel.Image()))/' var deviceModelImageUrl = '@(Url.Action(MVC.API.DeviceModel.Image()))/'
var iconWarningUrl = 'url(@(Links.ClientSource.Style.Images.Status.warning32_png))'; var iconWarningUrl = 'url(@(Links.ClientSource.Style.Images.Status.warning32_png))';
var iconErrorUrl = 'url(@(Links.ClientSource.Style.Images.Status.fail32_png))'; var iconErrorUrl = 'url(@(Links.ClientSource.Style.Images.Status.fail32_png))';
function pageViewModel() { function pageViewModel() {
var self = this; var self = this;
self.noSessions = ko.observable(true); self.noSessions = ko.observable(true);
self.sessions = ko.observableArray(); self.sessions = ko.observableArray();
self.sessionIndex = {}; self.sessionIndex = {};
self.isotopeInited = false; self.isotopeInited = false;
self.currentSession = ko.observable(); self.currentSession = ko.observable();
self.sessionRendered = function (e, d) { self.sessionRendered = function (e, d) {
if (!d.sessionEnded()) { if (!d.sessionEnded()) {
d.progressbar = $(e).find('.sessionProgress').progressbar(); d.progressbar = $(e).find('.sessionProgress').progressbar();
} }
}; };
self.sessionAdded = function (e, d) { self.sessionAdded = function (e, d) {
if (self.isotopeInited) { if (self.isotopeInited) {
hostSessions.isotope('reloadItems').isotope({ sortBy: 'original-order' }); hostSessions.isotope('reloadItems').isotope({ sortBy: 'original-order' });
} }
}; };
} }
function sessionViewModel(id) { function sessionViewModel(id) {
var self = this; var self = this;
self.title = ko.observable(id); self.title = ko.observable(id);
self.messages = ko.observableArray(); self.messages = ko.observableArray();
self.console = ko.observableArray(); self.console = ko.observableArray();
self.serialNumber = ko.observable(); self.serialNumber = ko.observable();
self.sessionDeviceInfo = ko.observable(); self.sessionDeviceInfo = ko.observable();
self.progressStatus = ko.observable(); self.progressStatus = ko.observable();
self.progressValue = ko.observable(); self.progressValue = ko.observable();
self.startTime = ko.observable(); self.startTime = ko.observable();
self.sessionEnded = ko.observable(false); self.sessionEnded = ko.observable(false);
self.progressbar = null; self.progressbar = null;
self.hasError = ko.observable(false); self.hasError = ko.observable(false);
self.hasWarning = ko.observable(false); self.hasWarning = ko.observable(false);
self.deviceModelId = ko.observable(); self.deviceModelId = ko.observable();
self.deviceModelDescription = ko.computed(function () { self.deviceModelDescription = ko.computed(function () {
var deviceModelId = self.deviceModelId(); var deviceModelId = self.deviceModelId();
var sessionDeviceInfo = self.sessionDeviceInfo(); var sessionDeviceInfo = self.sessionDeviceInfo();
if (deviceModelId) { if (deviceModelId) {
var dm = deviceModels[deviceModelId]; var dm = deviceModels[deviceModelId];
if (dm) { if (dm) {
if (dm.Description) if (dm.Description)
return dm.Description; return dm.Description;
else else
return dm.Manufacturer + ' ' + dm.Model; return dm.Manufacturer + ' ' + dm.Model;
} }
} }
if (sessionDeviceInfo) { if (sessionDeviceInfo) {
return sessionDeviceInfo.Arguments[6] + ' ' + sessionDeviceInfo.Arguments[7]; return sessionDeviceInfo.Arguments[6] + ' ' + sessionDeviceInfo.Arguments[7];
} }
}); });
self.deviceUrl = ko.computed(function () { self.deviceUrl = ko.computed(function () {
var serialNumber = self.serialNumber(); var serialNumber = self.serialNumber();
if (serialNumber) if (serialNumber)
return deviceBaseUrl + serialNumber; return deviceBaseUrl + serialNumber;
else else
return null; return null;
}); });
self.deviceModelImageUrl = ko.computed(function () { self.deviceModelImageUrl = ko.computed(function () {
var deviceModelImage; var deviceModelImage;
if (self.deviceModelId()) if (self.deviceModelId())
deviceModelImage = 'url(' + deviceModelImageUrl + self.deviceModelId() + ')'; deviceModelImage = 'url(' + deviceModelImageUrl + self.deviceModelId() + ')';
else else
deviceModelImage = 'url(' + deviceModelImageUrl + ')'; deviceModelImage = 'url(' + deviceModelImageUrl + ')';
if (self.hasError()) if (self.hasError())
return iconErrorUrl + ', ' + deviceModelImage; return iconErrorUrl + ', ' + deviceModelImage;
else else
if (self.hasWarning()) if (self.hasWarning())
return iconWarningUrl + ', ' + deviceModelImage; return iconWarningUrl + ', ' + deviceModelImage;
else else
return 'none, ' + deviceModelImage; return 'none, ' + deviceModelImage;
}); });
self.select = function (e, d) { self.select = function (e, d) {
vm.currentSession(self); vm.currentSession(self);
hostDialogSessions.dialog('open'); hostDialogSessions.dialog('open');
hostDialogSessions.dialog('option', 'title', 'Device Enrolment: ' + self.title()); hostDialogSessions.dialog('option', 'title', 'Device Enrolment: ' + self.title());
} }
} }
function parseLog(log) { function parseLog(log) {
if (log.ModuleId === 50 && log.Arguments && log.Arguments.length > 0) { if (log.ModuleId === 50 && log.Arguments && log.Arguments.length > 0) {
// find session // find session
var sessionId = log.Arguments[0]; var sessionId = log.Arguments[0];
var session = vm.sessionIndex[sessionId]; var session = vm.sessionIndex[sessionId];
if (!session && log.EventTypeId === 10) { // Starting Session (Ignore 'partial' sessions) if (!session && log.EventTypeId === 10) { // Starting Session (Ignore 'partial' sessions)
session = new sessionViewModel(sessionId); session = new sessionViewModel(sessionId);
vm.sessionIndex[sessionId] = session; vm.sessionIndex[sessionId] = session;
vm.sessions.unshift(session); vm.sessions.unshift(session);
vm.noSessions(false); vm.noSessions(false);
} }
if (session) { if (session) {
switch (log.EventTypeId) { switch (log.EventTypeId) {
case 10: // SessionStarting case 10: // SessionStarting
session.title(log.Arguments[1]); session.title(log.Arguments[1]);
session.startTime(log.FormattedTimestamp.substring(log.FormattedTimestamp.indexOf(' ') + 1)); session.startTime(log.FormattedTimestamp.substring(log.FormattedTimestamp.indexOf(' ') + 1));
session.messages.unshift(log); session.messages.unshift(log);
break; break;
case 11: // SessionProgress case 11: // SessionProgress
//session.progressbar.progressbar('option', 'value', log.Arguments[1]); //session.progressbar.progressbar('option', 'value', log.Arguments[1]);
session.progressValue(log.Arguments[1]); session.progressValue(log.Arguments[1]);
session.progressStatus(log.Arguments[2]); session.progressStatus(log.Arguments[2]);
break; break;
case 12: // SessionDevice case 12: // SessionDevice
session.title(log.Arguments[1]); session.title(log.Arguments[1]);
session.serialNumber(log.Arguments[1]); session.serialNumber(log.Arguments[1]);
if (log.Arguments.length >= 3 && log.Arguments[2]) if (log.Arguments.length >= 3 && log.Arguments[2])
session.deviceModelId(log.Arguments[2]); session.deviceModelId(log.Arguments[2]);
break; break;
break; break;
case 13: // SessionDeviceInfo case 13: // SessionDeviceInfo
session.title(log.Arguments[1]); session.title(log.Arguments[1]);
session.serialNumber(log.Arguments[1]); session.serialNumber(log.Arguments[1]);
session.sessionDeviceInfo(log); session.sessionDeviceInfo(log);
if (log.Arguments.length >= 10 && log.Arguments[9]) if (log.Arguments.length >= 10 && log.Arguments[9])
session.deviceModelId(log.Arguments[9]); session.deviceModelId(log.Arguments[9]);
break; break;
case 20: // SessionFinished case 20: // SessionFinished
session.sessionEnded(true); session.sessionEnded(true);
if (session.hasError()) if (session.hasError())
session.progressStatus('Enrolment Finished with an Error'); session.progressStatus('Enrolment Finished with an Error');
else else
if (session.hasWarning()) if (session.hasWarning())
session.progressStatus('Enrolment Finished with a Warning'); session.progressStatus('Enrolment Finished with a Warning');
else else
session.progressStatus('Enrolment Finished Successfully'); session.progressStatus('Enrolment Finished Successfully');
session.messages.unshift(log); session.messages.unshift(log);
break; break;
case 21: // SessionDiagnosticInformation case 21: // SessionDiagnosticInformation
session.console.push(log); session.console.push(log);
break; break;
case 22: // SessionWarning case 22: // SessionWarning
session.hasWarning(true); session.hasWarning(true);
session.messages.unshift(log); session.messages.unshift(log);
break; break;
case 23: // SessionError case 23: // SessionError
case 24: // SessionErrorWithInner case 24: // SessionErrorWithInner
case 25: // SessionClientError case 25: // SessionClientError
session.hasError(true); session.hasError(true);
session.messages.unshift(log); session.messages.unshift(log);
break; break;
default: default:
session.messages.unshift(log); session.messages.unshift(log);
} }
} }
} }
} }
function init() { function init() {
hostDialogSessions.dialog({ hostDialogSessions.dialog({
modal: true, modal: true,
height: 664, height: 664,
width: 900, width: 900,
resizable: false, resizable: false,
autoOpen: false, autoOpen: false,
buttons: { 'Close': function () { $(this).dialog('close'); } } buttons: { 'Close': function () { $(this).dialog('close'); } }
}); });
//hostDialogSessionsProgress.progressbar(); //hostDialogSessionsProgress.progressbar();
// Create View Model // Create View Model
vm = new pageViewModel(); vm = new pageViewModel();
$.ajax({ $.ajax({
url: '@(Url.Action(MVC.API.DeviceModel.Index()))', url: '@(Url.Action(MVC.API.DeviceModel.Index()))',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
success: init_loadedDeviceModels, success: init_loadedDeviceModels,
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to retrieve device models: ' + errorThrown); alert('Unable to retrieve device models: ' + errorThrown);
} }
}); });
} }
function init_loadedDeviceModels(models) { function init_loadedDeviceModels(models) {
for (var i = 0; i < models.length; i++) { for (var i = 0; i < models.length; i++) {
var m = models[i]; var m = models[i];
deviceModels[m.Id] = m; deviceModels[m.Id] = m;
} }
// Load Logs // Load Logs
var d = new Date(); var d = new Date();
var loadData = { var loadData = {
Format: "json", Format: "json",
Start: d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(), Start: d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(),
End: null, End: null,
ModuleId: 50, ModuleId: 50,
Take: 2000 Take: 2000
}; };
$.ajax({ $.ajax({
url: '@(Url.Action(MVC.API.Logging.RetrieveEvents()))', url: '@(Url.Action(MVC.API.Logging.RetrieveEvents()))',
dataType: 'json', dataType: 'json',
type: 'POST', type: 'POST',
traditional: true, traditional: true,
data: loadData, data: loadData,
success: init_loadedLogs, success: init_loadedLogs,
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
alert('Unable to retrieve logs: ' + errorThrown); alert('Unable to retrieve logs: ' + errorThrown);
} }
}); });
} }
function init_loadedLogs(logs) { function init_loadedLogs(logs) {
logs.reverse(); logs.reverse();
for (var i = 0; i < logs.length; i++) { for (var i = 0; i < logs.length; i++) {
parseLog(logs[i]); parseLog(logs[i]);
} }
// Bind // Bind
ko.applyBindings(vm); ko.applyBindings(vm);
// Isotope // Isotope
hostSessions.isotope({ hostSessions.isotope({
itemSelector: '.session', itemSelector: '.session',
layoutMode: 'fitRows' layoutMode: 'fitRows'
}); });
vm.isotopeInited = true; vm.isotopeInited = true;
// Init Persistent Connection // Init Persistent Connection
liveConnection = $.connection('@(Url.Content("~/API/Logging/Notifications"))'); liveConnection = $.connection('@(Url.Content("~/API/Logging/Notifications"))');
liveConnection.received(parseLog); liveConnection.received(parseLog);
liveConnection.error(function (e) { alert('Live-Log Error: ' + e) }); liveConnection.error(function (e) { if (e.status != 200) alert('Live-Log Error: ' + e.statusText + ': ' + e.responseText); });
liveConnection.start(function () { liveConnection.start(function () {
liveConnection.send('/addToGroups:@(Disco.BI.DeviceBI.EnrolmentLog.Current.LiveLogGroupName)'); liveConnection.send('/addToGroups:@(Disco.BI.DeviceBI.EnrolmentLog.Current.LiveLogGroupName)');
}); });
} }
init(); init();
}); });
</script> </script>
File diff suppressed because it is too large. Load diff
+164 -164
View File
@@ -1,164 +1,164 @@
@model Disco.Web.Areas.Config.Models.Logging.IndexModel @model Disco.Web.Areas.Config.Models.Logging.IndexModel
@using Disco.Services.Logging @using Disco.Services.Logging
@{ @{
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Logging"); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Logging");
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-TimePicker"); Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-TimePicker");
} }
@using (Html.BeginForm(MVC.API.Logging.RetrieveEvents())) @using (Html.BeginForm(MVC.API.Logging.RetrieveEvents()))
{ {
<div class="form" style="width: 520px;"> <div class="form" style="width: 520px;">
<h2> <h2>
Export Logs</h2> Export Logs</h2>
<table> <table>
<tr> <tr>
<th style="width: 105px;"> <th style="width: 105px;">
Start Filter Start Filter
</th> </th>
<td> <td>
<input id="filterStart" type="text" name="Start" /> <input id="filterStart" type="text" name="Start" />
<span class="smallMessage">* Optional</span> <span class="smallMessage">* Optional</span>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
End Filter End Filter
</th> </th>
<td> <td>
<input id="filterEnd" type="text" name="End" /> <input id="filterEnd" type="text" name="End" />
<span class="smallMessage">* Optional</span> <span class="smallMessage">* Optional</span>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Limit Filter Limit Filter
</th> </th>
<td> <td>
<select name="Take"> <select name="Take">
<option selected="selected" value="">- All Events -</option> <option selected="selected" value="">- All Events -</option>
<option value="1000">1,000 Events</option> <option value="1000">1,000 Events</option>
<option value="500">500 Events</option> <option value="500">500 Events</option>
<option value="100">100 Events</option> <option value="100">100 Events</option>
<option value="50">50 Events</option> <option value="50">50 Events</option>
<option value="10">10 Events</option> <option value="10">10 Events</option>
</select> </select>
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Module Filter Module Filter
</th> </th>
<td> <td>
<select id="moduleId" name="ModuleId"> <select id="moduleId" name="ModuleId">
<option value="" selected="selected">- All Modules -</option> <option value="" selected="selected">- All Modules -</option>
@foreach (var lm in Model.LogModules.Keys.OrderBy(lm => lm.ModuleDescription)) @foreach (var lm in Model.LogModules.Keys.OrderBy(lm => lm.ModuleDescription))
{ {
<option value="@lm.ModuleId">@lm.ModuleDescription</option> <option value="@lm.ModuleId">@lm.ModuleDescription</option>
} }
</select> </select>
</td> </td>
</tr> </tr>
<tr id="trLogModuleEventTypes" style="display: none"> <tr id="trLogModuleEventTypes" style="display: none">
<th> <th>
Event Type Filter <span style="display: block;" class="checkboxBulkSelectContainer"> Event Type Filter <span style="display: block;" class="checkboxBulkSelectContainer">
Select: <a id="eventTypesSelectAll" href="#">ALL</a> | <a id="eventTypesSelectNone" Select: <a id="eventTypesSelectAll" href="#">ALL</a> | <a id="eventTypesSelectNone"
href="#">NONE</a></span> href="#">NONE</a></span>
</th> </th>
<td> <td>
@{int uniqueIdSeed = 0; @{int uniqueIdSeed = 0;
} }
@foreach (var lm in Model.LogModules) @foreach (var lm in Model.LogModules)
{ {
<div data-logmoduleid="@lm.Key.ModuleId" class="logModuleEventTypes"> <div data-logmoduleid="@lm.Key.ModuleId" class="logModuleEventTypes">
@CommonHelpers.CheckBoxList("EventTypeIds", lm.Value.ToSelectListItems(), 2, false, uniqueIdSeed) @CommonHelpers.CheckBoxList("EventTypeIds", lm.Value.ToSelectListItems(), 2, false, uniqueIdSeed)
</div> </div>
uniqueIdSeed += lm.Value.Count; uniqueIdSeed += lm.Value.Count;
} }
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
</th> </th>
<td> <td>
@Html.Hidden("Format", "CSV") @Html.Hidden("Format", "CSV")
<input type="submit" class="button" value="Download CSV" /> <input type="submit" class="button" value="Download CSV" />
</td> </td>
</tr> </tr>
</table> </table>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var filterStart = $('#filterStart').watermark('Start').datetimepicker({ var filterStart = $('#filterStart').watermark('Start').datetimepicker({
ampm: true, ampm: true,
stepMinute: 1, stepMinute: 1,
changeYear: true, changeYear: true,
changeMonth: true, changeMonth: true,
dateFormat: 'yy/mm/dd' dateFormat: 'yy/mm/dd'
}); });
var filterEnd = $('#filterEnd').watermark('End').datetimepicker({ var filterEnd = $('#filterEnd').watermark('End').datetimepicker({
ampm: true, ampm: true,
stepMinute: 1, stepMinute: 1,
changeYear: true, changeYear: true,
changeMonth: true, changeMonth: true,
dateFormat: 'yy/mm/dd' dateFormat: 'yy/mm/dd'
}); });
var moduleId = $('#moduleId'); var moduleId = $('#moduleId');
var trLogModuleEventTypes = $('#trLogModuleEventTypes'); var trLogModuleEventTypes = $('#trLogModuleEventTypes');
var logModuleEventTypes = trLogModuleEventTypes.find('.logModuleEventTypes').hide(); var logModuleEventTypes = trLogModuleEventTypes.find('.logModuleEventTypes').hide();
var logModuleEventTypeCheckboxes = logModuleEventTypes.find('input[type="checkbox"]'); var logModuleEventTypeCheckboxes = logModuleEventTypes.find('input[type="checkbox"]');
moduleId.change(function () { moduleId.change(function () {
// Unselect All // Unselect All
logModuleEventTypes.slideUp(); logModuleEventTypes.slideUp();
logModuleEventTypeCheckboxes.filter(':checked').attr('checked', false); logModuleEventTypeCheckboxes.filter(':checked').prop('checked', false);
var selectedModule = moduleId.val(); var selectedModule = moduleId.val();
if (selectedModule) { if (selectedModule) {
trLogModuleEventTypes.show(); trLogModuleEventTypes.show();
var selectedModuleEventTypes = logModuleEventTypes.filter('[data-logmoduleid="' + selectedModule + '"]'); var selectedModuleEventTypes = logModuleEventTypes.filter('[data-logmoduleid="' + selectedModule + '"]');
if (selectedModuleEventTypes.length > 0) { if (selectedModuleEventTypes.length > 0) {
var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find('input[type="checkbox"]'); var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find('input[type="checkbox"]');
selectedModuleEventTypeCheckboxes.attr('checked', true); selectedModuleEventTypeCheckboxes.prop('checked', true);
trLogModuleEventTypes.show(); trLogModuleEventTypes.show();
selectedModuleEventTypes.slideDown(); selectedModuleEventTypes.slideDown();
} else { } else {
trLogModuleEventTypes.hide(); trLogModuleEventTypes.hide();
} }
} else { } else {
trLogModuleEventTypes.hide(); trLogModuleEventTypes.hide();
} }
}); });
$('#eventTypesSelectAll').click(function () { $('#eventTypesSelectAll').click(function () {
var selectedModule = moduleId.val(); var selectedModule = moduleId.val();
if (selectedModule) { if (selectedModule) {
var selectedModuleEventTypes = logModuleEventTypes.filter('[data-logmoduleid="' + selectedModule + '"]'); var selectedModuleEventTypes = logModuleEventTypes.filter('[data-logmoduleid="' + selectedModule + '"]');
if (selectedModuleEventTypes.length > 0) { if (selectedModuleEventTypes.length > 0) {
var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find('input[type="checkbox"]'); var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find('input[type="checkbox"]');
selectedModuleEventTypeCheckboxes.attr('checked', true); selectedModuleEventTypeCheckboxes.prop('checked', true);
} }
} }
return false; return false;
}); });
$('#eventTypesSelectNone').click(function () { $('#eventTypesSelectNone').click(function () {
var selectedModule = moduleId.val(); var selectedModule = moduleId.val();
if (selectedModule) { if (selectedModule) {
var selectedModuleEventTypes = logModuleEventTypes.filter('[data-logmoduleid="' + selectedModule + '"]'); var selectedModuleEventTypes = logModuleEventTypes.filter('[data-logmoduleid="' + selectedModule + '"]');
if (selectedModuleEventTypes.length > 0) { if (selectedModuleEventTypes.length > 0) {
var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find('input[type="checkbox"]'); var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find('input[type="checkbox"]');
selectedModuleEventTypeCheckboxes.attr('checked', false); selectedModuleEventTypeCheckboxes.prop('checked', false);
} }
} }
return false; return false;
}); });
}); });
</script> </script>
</div> </div>
} }
<h2> <h2>
Live Logging</h2> Live Logging</h2>
@Html.Partial(MVC.Config.Shared.Views.LogEvents, new Disco.Web.Areas.Config.Models.Shared.LogEventsModel() @Html.Partial(MVC.Config.Shared.Views.LogEvents, new Disco.Web.Areas.Config.Models.Shared.LogEventsModel()
{ {
IsLive = true, IsLive = true,
TakeFilter = 100, TakeFilter = 100,
StartFilter = DateTime.Today.AddDays(-1), StartFilter = DateTime.Today.AddDays(-1),
ViewPortHeight = 450 ViewPortHeight = 450
}) })
@@ -1,388 +1,388 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.17929
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Disco.Web.Areas.Config.Views.Logging namespace Disco.Web.Areas.Config.Views.Logging
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web; using System.Web;
using System.Web.Helpers; using System.Web.Helpers;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using System.Web.Security; using System.Web.Security;
using System.Web.UI; using System.Web.UI;
using System.Web.WebPages; using System.Web.WebPages;
using Disco.BI.Extensions; using Disco.BI.Extensions;
using Disco.Models.Repository; using Disco.Models.Repository;
#line 2 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 2 "..\..\Areas\Config\Views\Logging\Index.cshtml"
using Disco.Services.Logging; using Disco.Services.Logging;
#line default #line default
#line hidden #line hidden
using Disco.Web; using Disco.Web;
using Disco.Web.Extensions; using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/Logging/Index.cshtml")] [System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/Logging/Index.cshtml")]
public class Index : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.Logging.IndexModel> public class Index : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.Logging.IndexModel>
{ {
public Index() public Index()
{ {
} }
public override void Execute() public override void Execute()
{ {
#line 3 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 3 "..\..\Areas\Config\Views\Logging\Index.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Logging"); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Logging");
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-TimePicker"); Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-TimePicker");
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n"); WriteLiteral("\r\n");
#line 7 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 7 "..\..\Areas\Config\Views\Logging\Index.cshtml"
using (Html.BeginForm(MVC.API.Logging.RetrieveEvents())) using (Html.BeginForm(MVC.API.Logging.RetrieveEvents()))
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <div"); WriteLiteral(" <div");
WriteLiteral(" class=\"form\""); WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 520px;\""); WriteLiteral(" style=\"width: 520px;\"");
WriteLiteral(">\r\n <h2>\r\n Export Logs</h2>\r\n <table>\r\n <tr>\r" + WriteLiteral(">\r\n <h2>\r\n Export Logs</h2>\r\n <table>\r\n <tr>\r" +
"\n <th"); "\n <th");
WriteLiteral(" style=\"width: 105px;\""); WriteLiteral(" style=\"width: 105px;\"");
WriteLiteral(">\r\n Start Filter\r\n </th>\r\n <td>\r" + WriteLiteral(">\r\n Start Filter\r\n </th>\r\n <td>\r" +
"\n <input"); "\n <input");
WriteLiteral(" id=\"filterStart\""); WriteLiteral(" id=\"filterStart\"");
WriteLiteral(" type=\"text\""); WriteLiteral(" type=\"text\"");
WriteLiteral(" name=\"Start\""); WriteLiteral(" name=\"Start\"");
WriteLiteral(" />\r\n <span"); WriteLiteral(" />\r\n <span");
WriteLiteral(" class=\"smallMessage\""); WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">* Optional</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n " + WriteLiteral(">* Optional</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n " +
" <th>\r\n End Filter\r\n </th>\r\n " + " <th>\r\n End Filter\r\n </th>\r\n " +
" <td>\r\n <input"); " <td>\r\n <input");
WriteLiteral(" id=\"filterEnd\""); WriteLiteral(" id=\"filterEnd\"");
WriteLiteral(" type=\"text\""); WriteLiteral(" type=\"text\"");
WriteLiteral(" name=\"End\""); WriteLiteral(" name=\"End\"");
WriteLiteral(" />\r\n <span"); WriteLiteral(" />\r\n <span");
WriteLiteral(" class=\"smallMessage\""); WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">* Optional</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n " + WriteLiteral(">* Optional</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n " +
" <th>\r\n Limit Filter\r\n </th>\r\n " + " <th>\r\n Limit Filter\r\n </th>\r\n " +
" <td>\r\n <select"); " <td>\r\n <select");
WriteLiteral(" name=\"Take\""); WriteLiteral(" name=\"Take\"");
WriteLiteral(">\r\n <option"); WriteLiteral(">\r\n <option");
WriteLiteral(" selected=\"selected\""); WriteLiteral(" selected=\"selected\"");
WriteLiteral(" value=\"\""); WriteLiteral(" value=\"\"");
WriteLiteral(">- All Events -</option>\r\n <option"); WriteLiteral(">- All Events -</option>\r\n <option");
WriteLiteral(" value=\"1000\""); WriteLiteral(" value=\"1000\"");
WriteLiteral(">1,000 Events</option>\r\n <option"); WriteLiteral(">1,000 Events</option>\r\n <option");
WriteLiteral(" value=\"500\""); WriteLiteral(" value=\"500\"");
WriteLiteral(">500 Events</option>\r\n <option"); WriteLiteral(">500 Events</option>\r\n <option");
WriteLiteral(" value=\"100\""); WriteLiteral(" value=\"100\"");
WriteLiteral(">100 Events</option>\r\n <option"); WriteLiteral(">100 Events</option>\r\n <option");
WriteLiteral(" value=\"50\""); WriteLiteral(" value=\"50\"");
WriteLiteral(">50 Events</option>\r\n <option"); WriteLiteral(">50 Events</option>\r\n <option");
WriteLiteral(" value=\"10\""); WriteLiteral(" value=\"10\"");
WriteLiteral(">10 Events</option>\r\n </select>\r\n </td>\r\n " + WriteLiteral(">10 Events</option>\r\n </select>\r\n </td>\r\n " +
" </tr>\r\n <tr>\r\n <th>\r\n Module " + " </tr>\r\n <tr>\r\n <th>\r\n Module " +
"Filter\r\n </th>\r\n <td>\r\n <select" + "Filter\r\n </th>\r\n <td>\r\n <select" +
""); "");
WriteLiteral(" id=\"moduleId\""); WriteLiteral(" id=\"moduleId\"");
WriteLiteral(" name=\"ModuleId\""); WriteLiteral(" name=\"ModuleId\"");
WriteLiteral(">\r\n <option"); WriteLiteral(">\r\n <option");
WriteLiteral(" value=\"\""); WriteLiteral(" value=\"\"");
WriteLiteral(" selected=\"selected\""); WriteLiteral(" selected=\"selected\"");
WriteLiteral(">- All Modules -</option>\r\n"); WriteLiteral(">- All Modules -</option>\r\n");
#line 53 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 53 "..\..\Areas\Config\Views\Logging\Index.cshtml"
#line default #line default
#line hidden #line hidden
#line 53 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 53 "..\..\Areas\Config\Views\Logging\Index.cshtml"
foreach (var lm in Model.LogModules.Keys.OrderBy(lm => lm.ModuleDescription)) foreach (var lm in Model.LogModules.Keys.OrderBy(lm => lm.ModuleDescription))
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <option"); WriteLiteral(" <option");
WriteAttribute("value", Tuple.Create(" value=\"", 2126), Tuple.Create("\"", 2146) WriteAttribute("value", Tuple.Create(" value=\"", 2126), Tuple.Create("\"", 2146)
#line 55 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 55 "..\..\Areas\Config\Views\Logging\Index.cshtml"
, Tuple.Create(Tuple.Create("", 2134), Tuple.Create<System.Object, System.Int32>(lm.ModuleId , Tuple.Create(Tuple.Create("", 2134), Tuple.Create<System.Object, System.Int32>(lm.ModuleId
#line default #line default
#line hidden #line hidden
, 2134), false) , 2134), false)
); );
WriteLiteral(">"); WriteLiteral(">");
#line 55 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 55 "..\..\Areas\Config\Views\Logging\Index.cshtml"
Write(lm.ModuleDescription); Write(lm.ModuleDescription);
#line default #line default
#line hidden #line hidden
WriteLiteral("</option> \r\n"); WriteLiteral("</option> \r\n");
#line 56 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 56 "..\..\Areas\Config\Views\Logging\Index.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" </select>\r\n </td>\r\n </tr>\r\n " + WriteLiteral(" </select>\r\n </td>\r\n </tr>\r\n " +
" <tr"); " <tr");
WriteLiteral(" id=\"trLogModuleEventTypes\""); WriteLiteral(" id=\"trLogModuleEventTypes\"");
WriteLiteral(" style=\"display: none\""); WriteLiteral(" style=\"display: none\"");
WriteLiteral(">\r\n <th>\r\n Event Type Filter <span"); WriteLiteral(">\r\n <th>\r\n Event Type Filter <span");
WriteLiteral(" style=\"display: block;\""); WriteLiteral(" style=\"display: block;\"");
WriteLiteral(" class=\"checkboxBulkSelectContainer\""); WriteLiteral(" class=\"checkboxBulkSelectContainer\"");
WriteLiteral(">\r\n Select: <a"); WriteLiteral(">\r\n Select: <a");
WriteLiteral(" id=\"eventTypesSelectAll\""); WriteLiteral(" id=\"eventTypesSelectAll\"");
WriteLiteral(" href=\"#\""); WriteLiteral(" href=\"#\"");
WriteLiteral(">ALL</a> | <a"); WriteLiteral(">ALL</a> | <a");
WriteLiteral(" id=\"eventTypesSelectNone\""); WriteLiteral(" id=\"eventTypesSelectNone\"");
WriteLiteral("\r\n href=\"#\""); WriteLiteral("\r\n href=\"#\"");
WriteLiteral(">NONE</a></span>\r\n </th>\r\n <td>\r\n"); WriteLiteral(">NONE</a></span>\r\n </th>\r\n <td>\r\n");
#line 67 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 67 "..\..\Areas\Config\Views\Logging\Index.cshtml"
#line default #line default
#line hidden #line hidden
#line 67 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 67 "..\..\Areas\Config\Views\Logging\Index.cshtml"
int uniqueIdSeed = 0; int uniqueIdSeed = 0;
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n"); WriteLiteral("\r\n");
#line 69 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 69 "..\..\Areas\Config\Views\Logging\Index.cshtml"
#line default #line default
#line hidden #line hidden
#line 69 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 69 "..\..\Areas\Config\Views\Logging\Index.cshtml"
foreach (var lm in Model.LogModules) foreach (var lm in Model.LogModules)
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <div"); WriteLiteral(" <div");
WriteLiteral(" data-logmoduleid=\""); WriteLiteral(" data-logmoduleid=\"");
#line 71 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 71 "..\..\Areas\Config\Views\Logging\Index.cshtml"
Write(lm.Key.ModuleId); Write(lm.Key.ModuleId);
#line default #line default
#line hidden #line hidden
WriteLiteral("\""); WriteLiteral("\"");
WriteLiteral(" class=\"logModuleEventTypes\""); WriteLiteral(" class=\"logModuleEventTypes\"");
WriteLiteral(">\r\n"); WriteLiteral(">\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 72 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 72 "..\..\Areas\Config\Views\Logging\Index.cshtml"
Write(CommonHelpers.CheckBoxList("EventTypeIds", lm.Value.ToSelectListItems(), 2, false, uniqueIdSeed)); Write(CommonHelpers.CheckBoxList("EventTypeIds", lm.Value.ToSelectListItems(), 2, false, uniqueIdSeed));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </div>\r\n"); WriteLiteral("\r\n </div>\r\n");
#line 74 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 74 "..\..\Areas\Config\Views\Logging\Index.cshtml"
uniqueIdSeed += lm.Value.Count; uniqueIdSeed += lm.Value.Count;
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th>\r" + WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th>\r" +
"\n </th>\r\n <td>\r\n"); "\n </th>\r\n <td>\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 82 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 82 "..\..\Areas\Config\Views\Logging\Index.cshtml"
Write(Html.Hidden("Format", "CSV")); Write(Html.Hidden("Format", "CSV"));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n <input"); WriteLiteral("\r\n <input");
WriteLiteral(" type=\"submit\""); WriteLiteral(" type=\"submit\"");
WriteLiteral(" class=\"button\""); WriteLiteral(" class=\"button\"");
WriteLiteral(" value=\"Download CSV\""); WriteLiteral(" value=\"Download CSV\"");
WriteLiteral(" />\r\n </td>\r\n </tr>\r\n </table>\r\n <script"); WriteLiteral(" />\r\n </td>\r\n </tr>\r\n </table>\r\n <script");
WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n var filterStart = $(\'#filterStart" + WriteLiteral(">\r\n $(function () {\r\n var filterStart = $(\'#filterStart" +
"\').watermark(\'Start\').datetimepicker({\r\n ampm: true,\r\n " + "\').watermark(\'Start\').datetimepicker({\r\n ampm: true,\r\n " +
" stepMinute: 1,\r\n changeYear: true,\r\n " + " stepMinute: 1,\r\n changeYear: true,\r\n " +
" changeMonth: true,\r\n dateFormat: \'yy/mm/dd\'\r\n " + " changeMonth: true,\r\n dateFormat: \'yy/mm/dd\'\r\n " +
" });\r\n var filterEnd = $(\'#filterEnd\').watermark(\'End\').da" + " });\r\n var filterEnd = $(\'#filterEnd\').watermark(\'End\').da" +
"tetimepicker({\r\n ampm: true,\r\n stepMinute:" + "tetimepicker({\r\n ampm: true,\r\n stepMinute:" +
" 1,\r\n changeYear: true,\r\n changeMonth: tru" + " 1,\r\n changeYear: true,\r\n changeMonth: tru" +
"e,\r\n dateFormat: \'yy/mm/dd\'\r\n });\r\n " + "e,\r\n dateFormat: \'yy/mm/dd\'\r\n });\r\n " +
" var moduleId = $(\'#moduleId\');\r\n var trLogModuleEventTypes =" + " var moduleId = $(\'#moduleId\');\r\n var trLogModuleEventTypes =" +
" $(\'#trLogModuleEventTypes\');\r\n var logModuleEventTypes = trLogMo" + " $(\'#trLogModuleEventTypes\');\r\n var logModuleEventTypes = trLogMo" +
"duleEventTypes.find(\'.logModuleEventTypes\').hide();\r\n var logModu" + "duleEventTypes.find(\'.logModuleEventTypes\').hide();\r\n var logModu" +
"leEventTypeCheckboxes = logModuleEventTypes.find(\'input[type=\"checkbox\"]\');\r\n\r\n " + "leEventTypeCheckboxes = logModuleEventTypes.find(\'input[type=\"checkbox\"]\');\r\n\r\n " +
" moduleId.change(function () {\r\n // Unselect Al" + " moduleId.change(function () {\r\n // Unselect Al" +
"l\r\n logModuleEventTypes.slideUp();\r\n logMo" + "l\r\n logModuleEventTypes.slideUp();\r\n logMo" +
"duleEventTypeCheckboxes.filter(\':checked\').attr(\'checked\', false);\r\n " + "duleEventTypeCheckboxes.filter(\':checked\').prop(\'checked\', false);\r\n " +
" var selectedModule = moduleId.val();\r\n if (selectedMo" + " var selectedModule = moduleId.val();\r\n if (selectedMo" +
"dule) {\r\n trLogModuleEventTypes.show();\r\n " + "dule) {\r\n trLogModuleEventTypes.show();\r\n " +
" var selectedModuleEventTypes = logModuleEventTypes.filter(\'[data-logmodu" + " var selectedModuleEventTypes = logModuleEventTypes.filter(\'[data-logmodu" +
"leid=\"\' + selectedModule + \'\"]\');\r\n if (selectedModuleEve" + "leid=\"\' + selectedModule + \'\"]\');\r\n if (selectedModuleEve" +
"ntTypes.length > 0) {\r\n var selectedModuleEventTypeCh" + "ntTypes.length > 0) {\r\n var selectedModuleEventTypeCh" +
"eckboxes = selectedModuleEventTypes.find(\'input[type=\"checkbox\"]\');\r\n " + "eckboxes = selectedModuleEventTypes.find(\'input[type=\"checkbox\"]\');\r\n " +
" selectedModuleEventTypeCheckboxes.attr(\'checked\', true);\r\n " + " selectedModuleEventTypeCheckboxes.prop(\'checked\', true);\r\n " +
" trLogModuleEventTypes.show();\r\n " + " trLogModuleEventTypes.show();\r\n " +
" selectedModuleEventTypes.slideDown();\r\n } else {\r\n " + " selectedModuleEventTypes.slideDown();\r\n } else {\r\n " +
" trLogModuleEventTypes.hide();\r\n }\r" + " trLogModuleEventTypes.hide();\r\n }\r" +
"\n } else {\r\n trLogModuleEventTypes.hid" + "\n } else {\r\n trLogModuleEventTypes.hid" +
"e();\r\n }\r\n });\r\n\r\n $(\'#eventTyp" + "e();\r\n }\r\n });\r\n\r\n $(\'#eventTyp" +
"esSelectAll\').click(function () {\r\n var selectedModule = modu" + "esSelectAll\').click(function () {\r\n var selectedModule = modu" +
"leId.val();\r\n if (selectedModule) {\r\n " + "leId.val();\r\n if (selectedModule) {\r\n " +
"var selectedModuleEventTypes = logModuleEventTypes.filter(\'[data-logmoduleid=\"\' " + "var selectedModuleEventTypes = logModuleEventTypes.filter(\'[data-logmoduleid=\"\' " +
"+ selectedModule + \'\"]\');\r\n if (selectedModuleEventTypes." + "+ selectedModule + \'\"]\');\r\n if (selectedModuleEventTypes." +
"length > 0) {\r\n var selectedModuleEventTypeCheckboxes" + "length > 0) {\r\n var selectedModuleEventTypeCheckboxes" +
" = selectedModuleEventTypes.find(\'input[type=\"checkbox\"]\');\r\n " + " = selectedModuleEventTypes.find(\'input[type=\"checkbox\"]\');\r\n " +
" selectedModuleEventTypeCheckboxes.attr(\'checked\', true);\r\n " + " selectedModuleEventTypeCheckboxes.prop(\'checked\', true);\r\n " +
" }\r\n }\r\n return false;\r\n " + " }\r\n }\r\n return false;\r\n " +
" });\r\n $(\'#eventTypesSelectNone\').click(function () {\r\n " + " });\r\n $(\'#eventTypesSelectNone\').click(function () {\r\n " +
" var selectedModule = moduleId.val();\r\n if (s" + " var selectedModule = moduleId.val();\r\n if (s" +
"electedModule) {\r\n var selectedModuleEventTypes = logModu" + "electedModule) {\r\n var selectedModuleEventTypes = logModu" +
"leEventTypes.filter(\'[data-logmoduleid=\"\' + selectedModule + \'\"]\');\r\n " + "leEventTypes.filter(\'[data-logmoduleid=\"\' + selectedModule + \'\"]\');\r\n " +
" if (selectedModuleEventTypes.length > 0) {\r\n " + " if (selectedModuleEventTypes.length > 0) {\r\n " +
" var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find(\'inpu" + " var selectedModuleEventTypeCheckboxes = selectedModuleEventTypes.find(\'inpu" +
"t[type=\"checkbox\"]\');\r\n selectedModuleEventTypeCheckb" + "t[type=\"checkbox\"]\');\r\n selectedModuleEventTypeCheckb" +
"oxes.attr(\'checked\', false);\r\n }\r\n }\r\n" + "oxes.prop(\'checked\', false);\r\n }\r\n }\r\n" +
" return false;\r\n });\r\n\r\n });\r\n " + " return false;\r\n });\r\n\r\n });\r\n " +
" </script>\r\n </div>\r\n"); " </script>\r\n </div>\r\n");
#line 155 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 155 "..\..\Areas\Config\Views\Logging\Index.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral("<h2>\r\n Live Logging</h2>\r\n"); WriteLiteral("<h2>\r\n Live Logging</h2>\r\n");
#line 158 "..\..\Areas\Config\Views\Logging\Index.cshtml" #line 158 "..\..\Areas\Config\Views\Logging\Index.cshtml"
Write(Html.Partial(MVC.Config.Shared.Views.LogEvents, new Disco.Web.Areas.Config.Models.Shared.LogEventsModel() Write(Html.Partial(MVC.Config.Shared.Views.LogEvents, new Disco.Web.Areas.Config.Models.Shared.LogEventsModel()
{ {
IsLive = true, IsLive = true,
TakeFilter = 100, TakeFilter = 100,
StartFilter = DateTime.Today.AddDays(-1), StartFilter = DateTime.Today.AddDays(-1),
ViewPortHeight = 450 ViewPortHeight = 450
})); }));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n"); WriteLiteral("\r\n");
} }
} }
} }
#pragma warning restore 1591 #pragma warning restore 1591
@@ -242,7 +242,7 @@
function updateWithLive() { function updateWithLive() {
liveConnection = $.connection('@(Url.Content("~/API/Logging/TaskStatusNotifications"))'); liveConnection = $.connection('@(Url.Content("~/API/Logging/TaskStatusNotifications"))');
liveConnection.received(update_Received); liveConnection.received(update_Received);
liveConnection.error(function (e) { alert('Live-Status Error: ' + e) }); liveConnection.error(function (e) { if (e.status != 200) alert('Live-Status Error: ' + e.statusText + ': ' + e.responseText); });
liveConnection.start(function () { liveConnection.start(function () {
liveConnection.send('/addToGroups:' + sessionId); liveConnection.send('/addToGroups:' + sessionId);
updateWithAjax(); updateWithAjax();
@@ -294,7 +294,7 @@ WriteLiteral("\';\r\n\r\n var view = $(\'#scheduledTaskStatus\');\r\n
#line hidden #line hidden
WriteLiteral(@"'); WriteLiteral(@"');
liveConnection.received(update_Received); liveConnection.received(update_Received);
liveConnection.error(function (e) { alert('Live-Status Error: ' + e) }); liveConnection.error(function (e) { if (e.status != 200) alert('Live-Status Error: ' + e.statusText + ': ' + e.responseText); });
liveConnection.start(function () { liveConnection.start(function () {
liveConnection.send('/addToGroups:' + sessionId); liveConnection.send('/addToGroups:' + sessionId);
updateWithAjax(); updateWithAjax();
@@ -101,7 +101,7 @@
} }
}, },
Cancel: function () { Cancel: function () {
uninstallPluginData.removeAttr('checked'); uninstallPluginData.prop('checked', false);
$('#uninstallPluginDataAlert').hide(); $('#uninstallPluginDataAlert').hide();
$(this).dialog("close"); $(this).dialog("close");
} }
@@ -125,7 +125,7 @@
$(this).dialog("disable"); $(this).dialog("disable");
}, },
Cancel: function () { Cancel: function () {
uninstallPluginData.removeAttr('checked'); uninstallPluginData.prop('checked', false);
$('#uninstallPluginDataAlert').hide(); $('#uninstallPluginDataAlert').hide();
$(this).dialog("close"); $(this).dialog("close");
} }
@@ -383,33 +383,33 @@ WriteLiteral("/\';\r\n var uninstallPlugin, uninstallPluginData,
"stallPluginDataConfirm.hide();\r\n\r\n $dialogConfirm" + "stallPluginDataConfirm.hide();\r\n\r\n $dialogConfirm" +
".dialog(\'open\');\r\n $(this).dialog(\"close\");\r\n " + ".dialog(\'open\');\r\n $(this).dialog(\"close\");\r\n " +
" }\r\n },\r\n C" + " }\r\n },\r\n C" +
"ancel: function () {\r\n uninstallPluginData.removeAttr" + "ancel: function () {\r\n uninstallPluginData.prop(\'chec" +
"(\'checked\');\r\n $(\'#uninstallPluginDataAlert\').hide();" + "ked\', false);\r\n $(\'#uninstallPluginDataAlert\').hide()" +
"\r\n $(this).dialog(\"close\");\r\n " + ";\r\n $(this).dialog(\"close\");\r\n " +
"}\r\n }\r\n });\r\n\r\n $dialogConfirm " + " }\r\n }\r\n });\r\n\r\n $dialogConfirm" +
"= $(\'#dialogUninstallPluginConfirm\').dialog({\r\n resizable: fa" + " = $(\'#dialogUninstallPluginConfirm\').dialog({\r\n resizable: f" +
"lse,\r\n modal: true,\r\n width: 350,\r\n " + "alse,\r\n modal: true,\r\n width: 350,\r\n " +
" autoOpen: false,\r\n buttons: {\r\n " + " autoOpen: false,\r\n buttons: {\r\n " +
" \"Confirm Uninstall\": function () {\r\n var url =" + " \"Confirm Uninstall\": function () {\r\n var url " +
" uninstallUrl + pluginId;\r\n if (pluginUninstallData)\r" + "= uninstallUrl + pluginId;\r\n if (pluginUninstallData)" +
"\n url += \'?UninstallData=true\'\r\n " + "\r\n url += \'?UninstallData=true\'\r\n " +
" else\r\n url += \'?UninstallData=false\'\r\n" + " else\r\n url += \'?UninstallData=false\'\r" +
"\r\n window.location.href = url;\r\n " + "\n\r\n window.location.href = url;\r\n " +
" $(this).dialog(\"disable\");\r\n },\r\n " + " $(this).dialog(\"disable\");\r\n },\r\n " +
" Cancel: function () {\r\n uninstallPluginData.re" + " Cancel: function () {\r\n uninstallPluginData.p" +
"moveAttr(\'checked\');\r\n $(\'#uninstallPluginDataAlert\')" + "rop(\'checked\', false);\r\n $(\'#uninstallPluginDataAlert" +
".hide();\r\n $(this).dialog(\"close\");\r\n " + "\').hide();\r\n $(this).dialog(\"close\");\r\n " +
" }\r\n }\r\n });\r\n\r\n uninsta" + " }\r\n }\r\n });\r\n\r\n unins" +
"llPlugin = $(\'#uninstallPlugin\');\r\n uninstallPluginData = $(\'#uni" + "tallPlugin = $(\'#uninstallPlugin\');\r\n uninstallPluginData = $(\'#u" +
"nstallPluginData\');\r\n uninstallPluginConfirm = $(\'#uninstallPlugi" + "ninstallPluginData\');\r\n uninstallPluginConfirm = $(\'#uninstallPlu" +
"nConfirm\');\r\n uninstallPluginDataConfirm = $(\'#uninstallPluginDat" + "ginConfirm\');\r\n uninstallPluginDataConfirm = $(\'#uninstallPluginD" +
"aConfirm\');\r\n\r\n $(\'#buttonUninstall\').click(function () {\r\n " + "ataConfirm\');\r\n\r\n $(\'#buttonUninstall\').click(function () {\r\n " +
" $dialog.dialog(\'open\');\r\n return false;\r\n " + " $dialog.dialog(\'open\');\r\n return false;\r\n " +
" });\r\n\r\n $(\'#uninstallPluginData\').change(function () {\r" + " });\r\n\r\n $(\'#uninstallPluginData\').change(function () " +
"\n if ($(this).is(\':checked\')) {\r\n $(\'#" + "{\r\n if ($(this).is(\':checked\')) {\r\n $(" +
"uninstallPluginDataAlert\').slideDown();\r\n } else {\r\n " + "\'#uninstallPluginDataAlert\').slideDown();\r\n } else {\r\n " +
" $(\'#uninstallPluginDataAlert\').slideUp();\r\n }\r" + " $(\'#uninstallPluginDataAlert\').slideUp();\r\n " +
"\n });\r\n });\r\n </script>\r\n"); "}\r\n });\r\n });\r\n </script>\r\n");
#line 154 "..\..\Areas\Config\Views\Plugins\Index.cshtml" #line 154 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
@@ -1,143 +1,135 @@
@model Disco.Web.Areas.Config.Models.Shared.LogEventsModel @model Disco.Web.Areas.Config.Models.Shared.LogEventsModel
@{ @{
Html.BundleDeferred("~/ClientScripts/Modules/Knockout"); Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
var uniqueId = Guid.NewGuid().ToString("N"); var uniqueId = Guid.NewGuid().ToString("N");
} }
<div id="LogEvents_@(uniqueId)" class="logEventsViewport"> <div id="LogEvents_@(uniqueId)" class="logEventsViewport">
<table class="logEventsViewport"> <table class="logEventsViewport">
<thead> <thead>
<tr> <tr>
<th class="icon"> <th class="icon">&nbsp;
&nbsp; </th>
</th> <th class="timestamp">Date/Time
<th class="timestamp"> </th>
Date/Time <th class="eventType">Event Type
</th> </th>
<th class="eventType"> <th class="message">Message
Event Type </th>
</th> </tr>
<th class="message"> </thead>
Message </table>
</th> <div class="logEventsViewportContainer" style="@(Model.ViewPortWidth.HasValue ? string.Format("width:{0}px;", Model.ViewPortWidth.Value) : null)@(Model.ViewPortHeight.HasValue ? string.Format("height:{0}px;", Model.ViewPortHeight.Value - 18) : null)">
</tr> <div class="logEventsViewportNoLogs" data-bind="visible: EventLogs().length == 0"
</thead> style="display: none">
</table> No logs
<div class="logEventsViewportContainer" style="@(Model.ViewPortWidth.HasValue ? string.Format("width:{0}px;", Model.ViewPortWidth.Value) : null)@(Model.ViewPortHeight.HasValue ? string.Format("height:{0}px;", Model.ViewPortHeight.Value - 18) : null)"> </div>
<div class="logEventsViewportNoLogs" data-bind="visible: EventLogs().length == 0" <table class="logEventsViewport" data-bind="visible: EventLogs().length > 0" style="display: none">
style="display: none"> <tbody data-bind="foreach: EventLogs">
No logs <tr>
</div> <td class="icon" data-bind="css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}">&nbsp;
<table class="logEventsViewport" data-bind="visible: EventLogs().length > 0" style="display: none"> </td>
<tbody data-bind="foreach: EventLogs"> <td class="timestamp" data-bind="text: FormattedTimestamp"></td>
<tr> <td class="eventType" data-bind="text: EventTypeName, attr: {title: ModuleDescription}"></td>
<td class="icon" data-bind="css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity == 1, error: EventTypeSeverity == 2}"> <td class="message" data-bind="text: FormattedMessage, attr: {title: $parent.LogArguments($data)}"></td>
&nbsp; </tr>
</td> </tbody>
<td class="timestamp" data-bind="text: FormattedTimestamp"> </table>
</td> </div>
<td class="eventType" data-bind="text: EventTypeName, attr: {title: ModuleDescription}"> @{
</td> var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
<td class="message" data-bind="text: FormattedMessage, attr: {title: $parent.LogArguments($data)}"> var eventTypesFilterJson = (Model.EventTypesFilter != null) ? serializer.Serialize(Model.EventTypesFilter.Select(et => et.Id).ToArray()) : "null";
</td> }
</tr> <script type="text/javascript">
</tbody> $(function () {
</table> var logEventsHost = $('LogEvents_@(uniqueId)');
</div> var logModuleId = '@(Model.ModuleFilter != null ? Model.ModuleFilter.ModuleId.ToString() : null)';
@{ var logModuleLiveGroupName = '@(Model.ModuleFilter != null ? Model.ModuleFilter.LiveLogGroupName : Disco.Services.Logging.LogContext.LiveLogAllEventsGroupName)';
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var logEventTypeFiltered = @(eventTypesFilterJson);
var eventTypesFilterJson = (Model.EventTypesFilter != null) ? serializer.Serialize(Model.EventTypesFilter.Select(et => et.Id).ToArray()) : "null"; var logStartFiler = @(AjaxHelpers.JsonDate(Model.StartFilter));
} var logEndFiler = @(AjaxHelpers.JsonDate(Model.EndFilter));
<script type="text/javascript"> var logTakeFiler = '@(Model.TakeFilter)';
$(function () { var liveConnection = null;
var logEventsHost = $('LogEvents_@(uniqueId)'); var liveEventReceivedFunction = '@(Model.JavascriptLiveEventFunctionName)';
var logModuleId = '@(Model.ModuleFilter != null ? Model.ModuleFilter.ModuleId.ToString() : null)'; var useLive = ('True'==='@(Model.IsLive)');
var logModuleLiveGroupName = '@(Model.ModuleFilter != null ? Model.ModuleFilter.LiveLogGroupName : Disco.Services.Logging.LogContext.LiveLogAllEventsGroupName)';
var logEventTypeFiltered = @(eventTypesFilterJson); // View Model
var logStartFiler = @(AjaxHelpers.JsonDate(Model.StartFilter)); var logsViewModel;
var logEndFiler = @(AjaxHelpers.JsonDate(Model.EndFilter)); function LogsViewModel(initialLogs){
var logTakeFiler = '@(Model.TakeFilter)'; var self = this;
var liveConnection = null;
var liveEventReceivedFunction = '@(Model.JavascriptLiveEventFunctionName)'; self.EventLogs = ko.observableArray(initialLogs);
var useLive = ('True'==='@(Model.IsLive)'); self.LogArguments = function(log){
if (log.Arguments)
// View Model return log.Arguments.join('\n');
var logsViewModel; else
function LogsViewModel(initialLogs){ return null;
var self = this; };
}
self.EventLogs = ko.observableArray(initialLogs); function formatDate(d){
self.LogArguments = function(log){ if (d){
if (log.Arguments) return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':'+d.getMinutes()+':'+d.getSeconds();
return log.Arguments.join('\n'); }else{
else return null;
return null; }
}; }
} function loadInitialData(){
function formatDate(d){ // Load Data
if (d){ var loadData = {
return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':'+d.getMinutes()+':'+d.getSeconds(); Format: "json",
}else{ Start: formatDate(logStartFiler),
return null; End: logEndFiler,
} ModuleId: logModuleId,
} Take: logTakeFiler
function loadInitialData(){ };
// Load Data if (logEventTypeFiltered)
var loadData = { loadData["EventTypeIds"] = logEventTypeFiltered;
Format: "json", $.ajax({
Start: formatDate(logStartFiler), url: '@(Url.Action(MVC.API.Logging.RetrieveEvents()))',
End: logEndFiler, dataType: 'json',
ModuleId: logModuleId, type: 'POST',
Take: logTakeFiler data: loadData,
}; success: function (d) {
if (logEventTypeFiltered) initLogs(d);
loadData["EventTypeIds"] = logEventTypeFiltered; },
$.ajax({ error: function (jqXHR, textStatus, errorThrown) {
url: '@(Url.Action(MVC.API.Logging.RetrieveEvents()))', alert('Unable to retrieve logs: ' + textStatus);
dataType: 'json', }
type: 'POST', });
data: loadData, }
success: function (d) {
initLogs(d); function initLogs(loadedLogs){
}, logsViewModel = new LogsViewModel(loadedLogs);
error: function (jqXHR, textStatus, errorThrown) { ko.applyBindings(logsViewModel, logEventsHost.get(0));
alert('Unable to retrieve logs: ' + textStatus);
} if (useLive){
}); if (liveEventReceivedFunction){
} if (!document.DiscoFunctions) document.DiscoFunctions = {};
if (!document.DiscoFunctions.LogEventsFunctions) document.DiscoFunctions.LogEventsFunctions = {};
function initLogs(loadedLogs){ if (document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction]){
logsViewModel = new LogsViewModel(loadedLogs); liveEventReceivedFunction = document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction];
ko.applyBindings(logsViewModel, logEventsHost.get(0)); }else{
liveEventReceivedFunction = null;
if (useLive){ }
if (liveEventReceivedFunction){ }
if (!document.DiscoFunctions) document.DiscoFunctions = {};
if (!document.DiscoFunctions.LogEventsFunctions) document.DiscoFunctions.LogEventsFunctions = {}; liveConnection = $.connection('@(Url.Content("~/API/Logging/Notifications"))');
if (document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction]){ liveConnection.received(logReceived);
liveEventReceivedFunction = document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction]; liveConnection.error(function(e){if (e.status != 200) alert('Live-Log Error: '+e.statusText +': '+e.responseText);});
}else{ liveConnection.start(function(){
liveEventReceivedFunction = null; if (logModuleLiveGroupName){
} liveConnection.send('/addToGroups:' + logModuleLiveGroupName);
} }
});
liveConnection = $.connection('@(Url.Content("~/API/Logging/Notifications"))'); }
liveConnection.received(logReceived); }
liveConnection.error(function(e){alert('Live-Log Error: '+e)});
liveConnection.start(function(){ function logReceived(log){
if (logModuleLiveGroupName){ if (log.UseDisplay) logsViewModel.EventLogs.unshift(log);
liveConnection.send('/addToGroups:' + logModuleLiveGroupName); if (liveEventReceivedFunction) liveEventReceivedFunction(log);
} }
});
} loadInitialData();
} });
</script>
function logReceived(log){ </div>
if (log.UseDisplay) logsViewModel.EventLogs.unshift(log);
if (liveEventReceivedFunction) liveEventReceivedFunction(log);
}
loadInitialData();
});
</script>
</div>
@@ -1,365 +1,364 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.17929
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Disco.Web.Areas.Config.Views.Shared namespace Disco.Web.Areas.Config.Views.Shared
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web; using System.Web;
using System.Web.Helpers; using System.Web.Helpers;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using System.Web.Security; using System.Web.Security;
using System.Web.UI; using System.Web.UI;
using System.Web.WebPages; using System.Web.WebPages;
using Disco.BI.Extensions; using Disco.BI.Extensions;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Web; using Disco.Web;
using Disco.Web.Extensions; using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/Shared/LogEvents.cshtml")] [System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/Shared/LogEvents.cshtml")]
public class LogEvents : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.Shared.LogEventsModel> public class LogEvents : System.Web.Mvc.WebViewPage<Disco.Web.Areas.Config.Models.Shared.LogEventsModel>
{ {
public LogEvents() public LogEvents()
{ {
} }
public override void Execute() public override void Execute()
{ {
#line 2 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" #line 2 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
Html.BundleDeferred("~/ClientScripts/Modules/Knockout"); Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
var uniqueId = Guid.NewGuid().ToString("N"); var uniqueId = Guid.NewGuid().ToString("N");
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n<div"); WriteLiteral("\r\n<div");
WriteAttribute("id", Tuple.Create(" id=\"", 251), Tuple.Create("\"", 277) WriteAttribute("id", Tuple.Create(" id=\"", 251), Tuple.Create("\"", 277)
, Tuple.Create(Tuple.Create("", 256), Tuple.Create("LogEvents_", 256), true) , Tuple.Create(Tuple.Create("", 256), Tuple.Create("LogEvents_", 256), true)
#line 7 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" #line 7 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
, Tuple.Create(Tuple.Create("", 266), Tuple.Create<System.Object, System.Int32>(uniqueId , Tuple.Create(Tuple.Create("", 266), Tuple.Create<System.Object, System.Int32>(uniqueId
#line default #line default
#line hidden #line hidden
, 266), false) , 266), false)
); );
WriteLiteral(" class=\"logEventsViewport\""); WriteLiteral(" class=\"logEventsViewport\"");
WriteLiteral(">\r\n <table"); WriteLiteral(">\r\n <table");
WriteLiteral(" class=\"logEventsViewport\""); WriteLiteral(" class=\"logEventsViewport\"");
WriteLiteral(">\r\n <thead>\r\n <tr>\r\n <th"); WriteLiteral(">\r\n <thead>\r\n <tr>\r\n <th");
WriteLiteral(" class=\"icon\""); WriteLiteral(" class=\"icon\"");
WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n <th"); WriteLiteral(">&nbsp;\r\n </th>\r\n <th");
WriteLiteral(" class=\"timestamp\""); WriteLiteral(" class=\"timestamp\"");
WriteLiteral(">\r\n Date/Time\r\n </th>\r\n <th"); WriteLiteral(">Date/Time\r\n </th>\r\n <th");
WriteLiteral(" class=\"eventType\""); WriteLiteral(" class=\"eventType\"");
WriteLiteral(">\r\n Event Type\r\n </th>\r\n <th"); WriteLiteral(">Event Type\r\n </th>\r\n <th");
WriteLiteral(" class=\"message\""); WriteLiteral(" class=\"message\"");
WriteLiteral(">\r\n Message\r\n </th>\r\n </tr>\r\n " + WriteLiteral(">Message\r\n </th>\r\n </tr>\r\n </thead>\r\n </table" +
" </thead>\r\n </table>\r\n <div"); ">\r\n <div");
WriteLiteral(" class=\"logEventsViewportContainer\""); WriteLiteral(" class=\"logEventsViewportContainer\"");
WriteAttribute("style", Tuple.Create(" style=\"", 840), Tuple.Create("\"", 1050) WriteAttribute("style", Tuple.Create(" style=\"", 752), Tuple.Create("\"", 962)
#line 26 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" #line 22 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
, Tuple.Create(Tuple.Create("", 848), Tuple.Create<System.Object, System.Int32>(Model.ViewPortWidth.HasValue ? string.Format("width:{0}px;", Model.ViewPortWidth.Value) : null , Tuple.Create(Tuple.Create("", 760), Tuple.Create<System.Object, System.Int32>(Model.ViewPortWidth.HasValue ? string.Format("width:{0}px;", Model.ViewPortWidth.Value) : null
#line default #line default
#line hidden #line hidden
, 848), false) , 760), false)
#line 26 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" #line 22 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
, Tuple.Create(Tuple.Create("", 945), Tuple.Create<System.Object, System.Int32>(Model.ViewPortHeight.HasValue ? string.Format("height:{0}px;", Model.ViewPortHeight.Value - 18) : null , Tuple.Create(Tuple.Create("", 857), Tuple.Create<System.Object, System.Int32>(Model.ViewPortHeight.HasValue ? string.Format("height:{0}px;", Model.ViewPortHeight.Value - 18) : null
#line default #line default
#line hidden #line hidden
, 945), false) , 857), false)
); );
WriteLiteral(">\r\n <div"); WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"logEventsViewportNoLogs\""); WriteLiteral(" class=\"logEventsViewportNoLogs\"");
WriteLiteral(" data-bind=\"visible: EventLogs().length == 0\""); WriteLiteral(" data-bind=\"visible: EventLogs().length == 0\"");
WriteLiteral("\r\n style=\"display: none\""); WriteLiteral("\r\n style=\"display: none\"");
WriteLiteral(">\r\n No logs\r\n </div>\r\n <table"); WriteLiteral(">\r\n No logs\r\n </div>\r\n <table");
WriteLiteral(" class=\"logEventsViewport\""); WriteLiteral(" class=\"logEventsViewport\"");
WriteLiteral(" data-bind=\"visible: EventLogs().length > 0\""); WriteLiteral(" data-bind=\"visible: EventLogs().length > 0\"");
WriteLiteral(" style=\"display: none\""); WriteLiteral(" style=\"display: none\"");
WriteLiteral(">\r\n <tbody"); WriteLiteral(">\r\n <tbody");
WriteLiteral(" data-bind=\"foreach: EventLogs\""); WriteLiteral(" data-bind=\"foreach: EventLogs\"");
WriteLiteral(">\r\n <tr>\r\n <td"); WriteLiteral(">\r\n <tr>\r\n <td");
WriteLiteral(" class=\"icon\""); WriteLiteral(" class=\"icon\"");
WriteLiteral(" data-bind=\"css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity" + WriteLiteral(" data-bind=\"css: {information: EventTypeSeverity == 0, warning: EventTypeSeverity" +
" == 1, error: EventTypeSeverity == 2}\""); " == 1, error: EventTypeSeverity == 2}\"");
WriteLiteral(">\r\n &nbsp;\r\n </td>\r\n " + WriteLiteral(">&nbsp;\r\n </td>\r\n <td");
" <td");
WriteLiteral(" class=\"timestamp\"");
WriteLiteral(" class=\"timestamp\"");
WriteLiteral(" data-bind=\"text: FormattedTimestamp\"");
WriteLiteral(" data-bind=\"text: FormattedTimestamp\"");
WriteLiteral("></td>\r\n <td");
WriteLiteral(">\r\n </td>\r\n <td");
WriteLiteral(" class=\"eventType\"");
WriteLiteral(" class=\"eventType\"");
WriteLiteral(" data-bind=\"text: EventTypeName, attr: {title: ModuleDescription}\"");
WriteLiteral(" data-bind=\"text: EventTypeName, attr: {title: ModuleDescription}\"");
WriteLiteral("></td>\r\n <td");
WriteLiteral(">\r\n </td>\r\n <td");
WriteLiteral(" class=\"message\"");
WriteLiteral(" class=\"message\"");
WriteLiteral(" data-bind=\"text: FormattedMessage, attr: {title: $parent.LogArguments($data)}\"");
WriteLiteral(" data-bind=\"text: FormattedMessage, attr: {title: $parent.LogArguments($data)}\"");
WriteLiteral("></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>" +
WriteLiteral(">\r\n </td>\r\n </tr>\r\n </tbody>\r\n " + "\r\n");
" </table>\r\n </div>\r\n");
#line 39 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 47 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line default
#line default #line hidden
#line hidden
#line 39 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 47 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var eventTypesFilterJson = (Model.EventTypesFilter != null) ? serializer.Serialize(Model.EventTypesFilter.Select(et => et.Id).ToArray()) : "null";
var eventTypesFilterJson = (Model.EventTypesFilter != null) ? serializer.Serialize(Model.EventTypesFilter.Select(et => et.Id).ToArray()) : "null";
#line default
#line default #line hidden
#line hidden WriteLiteral("\r\n <script");
WriteLiteral("\r\n <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n var logEventsHost = $(\'LogEvents_");
WriteLiteral(">\r\n $(function () {\r\n var logEventsHost = $(\'LogEvents_");
#line 45 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 53 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(uniqueId);
Write(uniqueId);
#line default
#line default #line hidden
#line hidden WriteLiteral("\');\r\n var logModuleId = \'");
WriteLiteral("\');\r\n var logModuleId = \'");
#line 46 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 54 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(Model.ModuleFilter != null ? Model.ModuleFilter.ModuleId.ToString() : null);
Write(Model.ModuleFilter != null ? Model.ModuleFilter.ModuleId.ToString() : null);
#line default
#line default #line hidden
#line hidden WriteLiteral("\';\r\n var logModuleLiveGroupName = \'");
WriteLiteral("\';\r\n var logModuleLiveGroupName = \'");
#line 47 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 55 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(Model.ModuleFilter != null ? Model.ModuleFilter.LiveLogGroupName : Disco.Services.Logging.LogContext.LiveLogAllEventsGroupName);
Write(Model.ModuleFilter != null ? Model.ModuleFilter.LiveLogGroupName : Disco.Services.Logging.LogContext.LiveLogAllEventsGroupName);
#line default
#line default #line hidden
#line hidden WriteLiteral("\';\r\n var logEventTypeFiltered = ");
WriteLiteral("\';\r\n var logEventTypeFiltered = ");
#line 48 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 56 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(eventTypesFilterJson);
Write(eventTypesFilterJson);
#line default
#line default #line hidden
#line hidden WriteLiteral(";\r\n var logStartFiler = ");
WriteLiteral(";\r\n var logStartFiler = ");
#line 49 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 57 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(AjaxHelpers.JsonDate(Model.StartFilter));
Write(AjaxHelpers.JsonDate(Model.StartFilter));
#line default
#line default #line hidden
#line hidden WriteLiteral(";\r\n var logEndFiler = ");
WriteLiteral(";\r\n var logEndFiler = ");
#line 50 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 58 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(AjaxHelpers.JsonDate(Model.EndFilter));
Write(AjaxHelpers.JsonDate(Model.EndFilter));
#line default
#line default #line hidden
#line hidden WriteLiteral(";\r\n var logTakeFiler = \'");
WriteLiteral(";\r\n var logTakeFiler = \'");
#line 51 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 59 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(Model.TakeFilter);
Write(Model.TakeFilter);
#line default
#line default #line hidden
#line hidden WriteLiteral("\';\r\n var liveConnection = null;\r\n var liveEventReceivedFunc" +
WriteLiteral("\';\r\n var liveConnection = null;\r\n var liveEventReceivedFunc" + "tion = \'");
"tion = \'");
#line 53 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 61 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(Model.JavascriptLiveEventFunctionName);
Write(Model.JavascriptLiveEventFunctionName);
#line default
#line default #line hidden
#line hidden WriteLiteral("\';\r\n var useLive = (\'True\'===\'");
WriteLiteral("\';\r\n var useLive = (\'True\'===\'");
#line 54 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 62 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(Model.IsLive);
Write(Model.IsLive);
#line default
#line default #line hidden
#line hidden WriteLiteral(@"');
WriteLiteral(@"');
// View Model
// View Model var logsViewModel;
var logsViewModel; function LogsViewModel(initialLogs){
function LogsViewModel(initialLogs){ var self = this;
var self = this;
self.EventLogs = ko.observableArray(initialLogs);
self.EventLogs = ko.observableArray(initialLogs); self.LogArguments = function(log){
self.LogArguments = function(log){ if (log.Arguments)
if (log.Arguments) return log.Arguments.join('\n');
return log.Arguments.join('\n'); else
else return null;
return null; };
}; }
} function formatDate(d){
function formatDate(d){ if (d){
if (d){ return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':'+d.getMinutes()+':'+d.getSeconds();
return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':'+d.getMinutes()+':'+d.getSeconds(); }else{
}else{ return null;
return null; }
} }
} function loadInitialData(){
function loadInitialData(){ // Load Data
// Load Data var loadData = {
var loadData = { Format: ""json"",
Format: ""json"", Start: formatDate(logStartFiler),
Start: formatDate(logStartFiler), End: logEndFiler,
End: logEndFiler, ModuleId: logModuleId,
ModuleId: logModuleId, Take: logTakeFiler
Take: logTakeFiler };
}; if (logEventTypeFiltered)
if (logEventTypeFiltered) loadData[""EventTypeIds""] = logEventTypeFiltered;
loadData[""EventTypeIds""] = logEventTypeFiltered; $.ajax({
$.ajax({ url: '");
url: '");
#line 88 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 96 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(Url.Action(MVC.API.Logging.RetrieveEvents()));
Write(Url.Action(MVC.API.Logging.RetrieveEvents()));
#line default
#line default #line hidden
#line hidden WriteLiteral(@"',
WriteLiteral(@"', dataType: 'json',
dataType: 'json', type: 'POST',
type: 'POST', data: loadData,
data: loadData, success: function (d) {
success: function (d) { initLogs(d);
initLogs(d); },
}, error: function (jqXHR, textStatus, errorThrown) {
error: function (jqXHR, textStatus, errorThrown) { alert('Unable to retrieve logs: ' + textStatus);
alert('Unable to retrieve logs: ' + textStatus); }
} });
}); }
}
function initLogs(loadedLogs){
function initLogs(loadedLogs){ logsViewModel = new LogsViewModel(loadedLogs);
logsViewModel = new LogsViewModel(loadedLogs); ko.applyBindings(logsViewModel, logEventsHost.get(0));
ko.applyBindings(logsViewModel, logEventsHost.get(0));
if (useLive){
if (useLive){ if (liveEventReceivedFunction){
if (liveEventReceivedFunction){ if (!document.DiscoFunctions) document.DiscoFunctions = {};
if (!document.DiscoFunctions) document.DiscoFunctions = {}; if (!document.DiscoFunctions.LogEventsFunctions) document.DiscoFunctions.LogEventsFunctions = {};
if (!document.DiscoFunctions.LogEventsFunctions) document.DiscoFunctions.LogEventsFunctions = {}; if (document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction]){
if (document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction]){ liveEventReceivedFunction = document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction];
liveEventReceivedFunction = document.DiscoFunctions.LogEventsFunctions[liveEventReceivedFunction]; }else{
}else{ liveEventReceivedFunction = null;
liveEventReceivedFunction = null; }
} }
}
liveConnection = $.connection('");
liveConnection = $.connection('");
#line 116 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml"
#line 124 "..\..\Areas\Config\Views\Shared\LogEvents.cshtml" Write(Url.Content("~/API/Logging/Notifications"));
Write(Url.Content("~/API/Logging/Notifications"));
#line default
#line default #line hidden
#line hidden WriteLiteral(@"');
WriteLiteral(@"'); liveConnection.received(logReceived);
liveConnection.received(logReceived); liveConnection.error(function(e){if (e.status != 200) alert('Live-Log Error: '+e.statusText +': '+e.responseText);});
liveConnection.error(function(e){alert('Live-Log Error: '+e)}); liveConnection.start(function(){
liveConnection.start(function(){ if (logModuleLiveGroupName){
if (logModuleLiveGroupName){ liveConnection.send('/addToGroups:' + logModuleLiveGroupName);
liveConnection.send('/addToGroups:' + logModuleLiveGroupName); }
} });
}); }
} }
}
function logReceived(log){
function logReceived(log){ if (log.UseDisplay) logsViewModel.EventLogs.unshift(log);
if (log.UseDisplay) logsViewModel.EventLogs.unshift(log); if (liveEventReceivedFunction) liveEventReceivedFunction(log);
if (liveEventReceivedFunction) liveEventReceivedFunction(log); }
}
loadInitialData();
loadInitialData(); });
}); </script>
</script> </div>
</div> ");
");
}
} }
} }
} #pragma warning restore 1591
#pragma warning restore 1591
@@ -1,46 +1,48 @@
///#source 1 1 /ClientSource/Scripts/Modules/Disco-CreateJob/disco.createjob.js ///#source 1 1 /ClientSource/Scripts/Modules/Disco-CreateJob/disco.createjob.js
/// <reference path="../../Core/jquery-1.8.1.js" /> /// <reference path="../../Core/jquery-1.8.1.js" />
/// <reference path="../../Core/jquery-ui-1.8.23.js" /> /// <reference path="../../Core/jquery-ui-1.8.23.js" />
(function ($, window, document) { (function ($, window, document) {
$(function () { $(function () {
var createJobDialog = null; var createJobDialog = null;
var dialogMethods = { var dialogMethods = {
close: function () { close: function () {
createJobDialog.dialog('close'); createJobDialog.dialog('close');
}, },
setButtons: function (buttons) { setButtons: function (buttons) {
if (createJobDialog) if (createJobDialog)
createJobDialog.dialog('option', 'buttons', buttons); createJobDialog.dialog('option', 'buttons', buttons);
} }
} }
// Create Job Button // Create Job Button
$('#buttonCreateJob').click(function () { $('#buttonCreateJob').click(function () {
var $this = $(this); var $this = $(this);
var href = $this.attr('href'); var href = $this.attr('href');
var iframe = $('<iframe>').attr({ 'src': href }).width('100%').height('100%').css('border', 'none');
createJobDialog = $('<div>').attr('id', 'createJobDialog').width('100%').height('100%') createJobDialog = $('<div>').attr('id', 'createJobDialog').width('100%').height('100%').appendTo(document.body);
.appendTo(document)
.append(iframe) createJobDialog.dialog({
.dialog({ resizable: false,
resizable: false, draggable: false,
draggable: false, modal: true,
modal: true, autoOpen: true,
autoOpen: true, title: 'Create Job',
title: 'Create Job', width: 850,
width: 850, height: $(window).height() - 50,
height: $(window).height() - 50, close: function () {
close: function () { createJobDialog.find('iframe').attr('src', 'about:blank');
createJobDialog.find('iframe').attr('src', 'about:blank'); createJobDialog.dialog('destroy').remove();
createJobDialog.dialog('destroy').remove(); createJobDialog = null;
createJobDialog = null; },
}, buttons: {}
buttons: {} });
});
createJobDialog[0].discoDialogMethods = dialogMethods; var iframe = $('<iframe>').attr({ 'src': href }).width('100%').height('100%').css('border', 'none').appendTo(createJobDialog);
return false; createJobDialog[0].discoDialogMethods = dialogMethods;
});
}) return false;
})($, window, document); });
})
})($, window, document);
@@ -1,2 +1,2 @@
(function(n,t,i){n(function(){var r=null,u={close:function(){r.dialog("close")},setButtons:function(n){r&&r.dialog("option","buttons",n)}};n("#buttonCreateJob").click(function(){var f=n(this),e=f.attr("href"),o=n("<iframe>").attr({src:e}).width("100%").height("100%").css("border","none");return r=n("<div>").attr("id","createJobDialog").width("100%").height("100%").appendTo(i).append(o).dialog({resizable:!1,draggable:!1,modal:!0,autoOpen:!0,title:"Create Job",width:850,height:n(t).height()-50,close:function(){r.find("iframe").attr("src","about:blank"),r.dialog("destroy").remove(),r=null},buttons:{}}),r[0].discoDialogMethods=u,!1})})})($,window,document); (function(n,t,i){n(function(){var r=null,u={close:function(){r.dialog("close")},setButtons:function(n){r&&r.dialog("option","buttons",n)}};n("#buttonCreateJob").click(function(){var f=n(this),e=f.attr("href"),o;return r=n("<div>").attr("id","createJobDialog").width("100%").height("100%").appendTo(i.body),r.dialog({resizable:!1,draggable:!1,modal:!0,autoOpen:!0,title:"Create Job",width:850,height:n(t).height()-50,close:function(){r.find("iframe").attr("src","about:blank"),r.dialog("destroy").remove(),r=null},buttons:{}}),o=n("<iframe>").attr({src:e}).width("100%").height("100%").css("border","none").appendTo(r),r[0].discoDialogMethods=u,!1})})})($,window,document);
//@ sourceMappingURL=Disco-CreateJob.min.js.map //@ sourceMappingURL=Disco-CreateJob.min.js.map
@@ -1,8 +1,8 @@
{ {
"version":3, "version":3,
"file":"Disco-CreateJob.min.js", "file":"Disco-CreateJob.min.js",
"lineCount":1, "lineCount":1,
"mappings":"CAGC,QAAS,CAACA,CAAC,CAAEC,CAAM,CAAEC,CAAZ,CAAsB,CAC5BF,CAAC,CAAC,QAAS,CAAA,CAAG,CACV,IAAIG,EAAkB,KAClBC,EAAgB,CAChB,KAAK,CAAEC,QAAS,CAAA,CAAG,CACfF,CAAeG,OAAO,CAAC,OAAD,CADP,CAElB,CACD,UAAU,CAAEC,QAAS,CAACC,CAAD,CAAU,CACvBL,C,EACAA,CAAeG,OAAO,CAAC,QAAQ,CAAE,SAAS,CAAEE,CAAtB,CAFC,CAJf,CADM,CAY1BR,CAAC,CAAC,kBAAD,CAAoBS,MAAM,CAAC,QAAS,CAAA,CAAG,CACpC,IAAIC,EAAQV,CAAC,CAAC,IAAD,EACTW,EAAOD,CAAKE,KAAK,CAAC,MAAD,EACjBC,EAASb,CAAC,CAAC,UAAD,CAAYY,KAAK,CAAC,CAAE,GAAK,CAAED,CAAT,CAAD,CAAiBG,MAAM,CAAC,MAAD,CAAQC,OAAO,CAAC,MAAD,CAAQC,IAAI,CAAC,QAAQ,CAAE,MAAX,CAF9D,CAuBnB,OApBAb,CAAgB,CAAEH,CAAC,CAAC,OAAD,CAASY,KAAK,CAAC,IAAI,CAAE,iBAAP,CAAyBE,MAAM,CAAC,MAAD,CAAQC,OAAO,CAAC,MAAD,CAC3EE,SAAS,CAACf,CAAD,CACTgB,OAAO,CAACL,CAAD,CACPP,OAAO,CAAC,CACJ,SAAS,CAAE,CAAA,CAAK,CAChB,SAAS,CAAE,CAAA,CAAK,CAChB,KAAK,CAAE,CAAA,CAAI,CACX,QAAQ,CAAE,CAAA,CAAI,CACd,KAAK,CAAE,YAAY,CACnB,KAAK,CAAE,GAAG,CACV,MAAM,CAAEN,CAAC,CAACC,CAAD,CAAQc,OAAO,CAAA,CAAG,CAAE,EAAE,CAC/B,KAAK,CAAEV,QAAS,CAAA,CAAG,CACfF,CAAegB,KAAK,CAAC,QAAD,CAAUP,KAAK,CAAC,KAAK,CAAE,aAAR,CAAsB,CACzDT,CAAeG,OAAO,CAAC,SAAD,CAAWc,OAAO,CAAA,CAAE,CAC1CjB,CAAgB,CAAE,IAHH,CAIlB,CACD,OAAO,CAAE,CAAA,CAbL,CAAD,CAcL,CACNA,CAAgB,CAAA,CAAA,CAAEkB,mBAAoB,CAAEjB,CAAa,CAE9C,CAAA,CAxB6B,CAAb,CAbjB,CAAb,CAD2B,EAyC9B,CAACJ,CAAC,CAAEC,MAAM,CAAEC,QAAZ,CAAqB", "mappings":"CAGC,QAAS,CAACA,CAAC,CAAEC,CAAM,CAAEC,CAAZ,CAAsB,CAC5BF,CAAC,CAAC,QAAS,CAAA,CAAG,CACV,IAAIG,EAAkB,KAClBC,EAAgB,CAChB,KAAK,CAAEC,QAAS,CAAA,CAAG,CACfF,CAAeG,OAAO,CAAC,OAAD,CADP,CAElB,CACD,UAAU,CAAEC,QAAS,CAACC,CAAD,CAAU,CACvBL,C,EACAA,CAAeG,OAAO,CAAC,QAAQ,CAAE,SAAS,CAAEE,CAAtB,CAFC,CAJf,CADM,CAY1BR,CAAC,CAAC,kBAAD,CAAoBS,MAAM,CAAC,QAAS,CAAA,CAAG,CACpC,IAAIC,EAAQV,CAAC,CAAC,IAAD,EACTW,EAAOD,CAAKE,KAAK,CAAC,MAAD,EAoBjBC,CArBe,CAyBnB,OAtBAV,CAAgB,CAAEH,CAAC,CAAC,OAAD,CAASY,KAAK,CAAC,IAAI,CAAE,iBAAP,CAAyBE,MAAM,CAAC,MAAD,CAAQC,OAAO,CAAC,MAAD,CAAQC,SAAS,CAACd,CAAQe,KAAT,CAAe,CAE/Gd,CAAeG,OAAO,CAAC,CACnB,SAAS,CAAE,CAAA,CAAK,CAChB,SAAS,CAAE,CAAA,CAAK,CAChB,KAAK,CAAE,CAAA,CAAI,CACX,QAAQ,CAAE,CAAA,CAAI,CACd,KAAK,CAAE,YAAY,CACnB,KAAK,CAAE,GAAG,CACV,MAAM,CAAEN,CAAC,CAACC,CAAD,CAAQc,OAAO,CAAA,CAAG,CAAE,EAAE,CAC/B,KAAK,CAAEV,QAAS,CAAA,CAAG,CACfF,CAAee,KAAK,CAAC,QAAD,CAAUN,KAAK,CAAC,KAAK,CAAE,aAAR,CAAsB,CACzDT,CAAeG,OAAO,CAAC,SAAD,CAAWa,OAAO,CAAA,CAAE,CAC1ChB,CAAgB,CAAE,IAHH,CAIlB,CACD,OAAO,CAAE,CAAA,CAbU,CAAD,CAcpB,CAEEU,CAAO,CAAEb,CAAC,CAAC,UAAD,CAAYY,KAAK,CAAC,CAAE,GAAK,CAAED,CAAT,CAAD,CAAiBG,MAAM,CAAC,MAAD,CAAQC,OAAO,CAAC,MAAD,CAAQK,IAAI,CAAC,QAAQ,CAAE,MAAX,CAAkBJ,SAAS,CAACb,CAAD,C,CAE5GA,CAAgB,CAAA,CAAA,CAAEkB,mBAAoB,CAAEjB,CAAa,CAE9C,CAAA,CA1B6B,CAAb,CAbjB,CAAb,CAD2B,EA2C9B,CAACJ,CAAC,CAAEC,MAAM,CAAEC,QAAZ,CAAqB",
"sources":["/ClientSource/Scripts/Modules/Disco-CreateJob/disco.createjob.js"], "sources":["/ClientSource/Scripts/Modules/Disco-CreateJob/disco.createjob.js"],
"names":["$","window","document","createJobDialog","dialogMethods","close","dialog","setButtons","buttons","click","$this","href","attr","iframe","width","height","css","appendTo","append","find","remove","discoDialogMethods"] "names":["$","window","document","createJobDialog","dialogMethods","close","dialog","setButtons","buttons","click","$this","href","attr","iframe","width","height","appendTo","body","find","remove","css","discoDialogMethods"]
} }
@@ -1,45 +1,47 @@
/// <reference path="../../Core/jquery-1.8.1.js" /> /// <reference path="../../Core/jquery-1.8.1.js" />
/// <reference path="../../Core/jquery-ui-1.8.23.js" /> /// <reference path="../../Core/jquery-ui-1.8.23.js" />
(function ($, window, document) { (function ($, window, document) {
$(function () { $(function () {
var createJobDialog = null; var createJobDialog = null;
var dialogMethods = { var dialogMethods = {
close: function () { close: function () {
createJobDialog.dialog('close'); createJobDialog.dialog('close');
}, },
setButtons: function (buttons) { setButtons: function (buttons) {
if (createJobDialog) if (createJobDialog)
createJobDialog.dialog('option', 'buttons', buttons); createJobDialog.dialog('option', 'buttons', buttons);
} }
} }
// Create Job Button // Create Job Button
$('#buttonCreateJob').click(function () { $('#buttonCreateJob').click(function () {
var $this = $(this); var $this = $(this);
var href = $this.attr('href'); var href = $this.attr('href');
var iframe = $('<iframe>').attr({ 'src': href }).width('100%').height('100%').css('border', 'none');
createJobDialog = $('<div>').attr('id', 'createJobDialog').width('100%').height('100%') createJobDialog = $('<div>').attr('id', 'createJobDialog').width('100%').height('100%').appendTo(document.body);
.appendTo(document)
.append(iframe) createJobDialog.dialog({
.dialog({ resizable: false,
resizable: false, draggable: false,
draggable: false, modal: true,
modal: true, autoOpen: true,
autoOpen: true, title: 'Create Job',
title: 'Create Job', width: 850,
width: 850, height: $(window).height() - 50,
height: $(window).height() - 50, close: function () {
close: function () { createJobDialog.find('iframe').attr('src', 'about:blank');
createJobDialog.find('iframe').attr('src', 'about:blank'); createJobDialog.dialog('destroy').remove();
createJobDialog.dialog('destroy').remove(); createJobDialog = null;
createJobDialog = null; },
}, buttons: {}
buttons: {} });
});
createJobDialog[0].discoDialogMethods = dialogMethods; var iframe = $('<iframe>').attr({ 'src': href }).width('100%').height('100%').css('border', 'none').appendTo(createJobDialog);
return false; createJobDialog[0].discoDialogMethods = dialogMethods;
});
}) return false;
});
})
})($, window, document); })($, window, document);
File diff suppressed because it is too large. Load diff
@@ -1,2 +1,2 @@
(function(n,t){"use strict";var nt=n.document,i=n.Modernizr,o=function(n){return n.charAt(0).toUpperCase()+n.slice(1)},p="Moz Webkit O Ms".split(" "),u=function(n){var r=nt.documentElement.style,i,t,u;if(typeof r[n]=="string")return n;for(n=o(n),t=0,u=p.length;t<u;t++)if(i=p[t]+n,typeof r[i]=="string")return i},s=u("transform"),w=u("transitionProperty"),f={csstransforms:function(){return!!s},csstransforms3d:function(){var n=!!u("perspective");if(n){var r=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),f="@media ("+r.join("transform-3d),(")+"modernizr)",e=t("<style>"+f+"{#modernizr{height:3px}}<\/style>").appendTo("head"),i=t('<div id="modernizr" />').appendTo("html");n=i.height()===3,i.remove(),e.remove()}return n},csstransitions:function(){return!!w}},r,h,c,b,l,k,d,e,a,g,v,y;if(i)for(r in f)i.hasOwnProperty(r)||i.addTest(r,f[r]);else{i=n.Modernizr={_version:"1.6ish: miniModernizr for Isotope"},h=" ";for(r in f)c=f[r](),i[r]=c,h+=" "+(c?"":"no-")+r;t("html").addClass(h)}i.csstransforms&&(b=i.csstransforms3d?{translate:function(n){return"translate3d("+n[0]+"px, "+n[1]+"px, 0) "},scale:function(n){return"scale3d("+n+", "+n+", 1) "}}:{translate:function(n){return"translate("+n[0]+"px, "+n[1]+"px) "},scale:function(n){return"scale("+n+") "}},l=function(n,i,r){var u=t.data(n,"isoTransform")||{},o={},f,e={},h;o[i]=r,t.extend(u,o);for(f in u)h=u[f],e[f]=b[f](h);var c=e.translate||"",l=e.scale||"",a=c+l;t.data(n,"isoTransform",u),n.style[s]=a},t.cssNumber.scale=!0,t.cssHooks.scale={set:function(n,t){l(n,"scale",t)},get:function(n){var i=t.data(n,"isoTransform");return i&&i.scale?i.scale:1}},t.fx.step.scale=function(n){t.cssHooks.scale.set(n.elem,n.now+n.unit)},t.cssNumber.translate=!0,t.cssHooks.translate={set:function(n,t){l(n,"translate",t)},get:function(n){var i=t.data(n,"isoTransform");return i&&i.translate?i.translate:[0,0]}}),i.csstransitions&&(k={WebkitTransitionProperty:"webkitTransitionEnd",MozTransitionProperty:"transitionend",OTransitionProperty:"oTransitionEnd",transitionProperty:"transitionEnd"}[w],d=u("transitionDuration")),e=t.event,e.special.smartresize={setup:function(){t(this).bind("resize",e.special.smartresize.handler)},teardown:function(){t(this).unbind("resize",e.special.smartresize.handler)},handler:function(n,t){var i=this,r=arguments;n.type="smartresize",a&&clearTimeout(a),a=setTimeout(function(){jQuery.event.handle.apply(i,r)},t==="execAsap"?0:100)}},t.fn.smartresize=function(n){return n?this.bind("smartresize",n):this.trigger("smartresize",["execAsap"])},t.Isotope=function(n,i,r){this.element=t(i),this._create(n),this._init(r)},g=["width","height"],v=t(n),t.Isotope.settings={resizable:!0,layoutMode:"masonry",containerClass:"isotope",itemClass:"isotope-item",hiddenClass:"isotope-hidden",hiddenStyle:{opacity:0,scale:.001},visibleStyle:{opacity:1,scale:1},containerStyle:{position:"relative",overflow:"hidden"},animationEngine:"best-available",animationOptions:{queue:!1,duration:800},sortBy:"original-order",sortAscending:!0,resizesContainer:!0,transformsEnabled:!t.browser.opera,itemPositionDataEnabled:!1},t.Isotope.prototype={_create:function(n){var e,r,i,u,o,s,f;this.options=t.extend({},t.Isotope.settings,n),this.styleQueue=[],this.elemCount=0,e=this.element[0].style,this.originalStyle={},r=g.slice(0);for(i in this.options.containerStyle)r.push(i);for(u=0,o=r.length;u<o;u++)i=r[u],this.originalStyle[i]=e[i]||"";this.element.css(this.options.containerStyle),this._updateAnimationEngine(),this._updateUsingTransforms(),s={"original-order":function(n,t){return t.elemCount++,t.elemCount},random:function(){return Math.random()}},this.options.getSortData=t.extend(this.options.getSortData,s),this.reloadItems(),this.offset={left:parseInt(this.element.css("padding-left")||0,10),top:parseInt(this.element.css("padding-top")||0,10)},f=this,setTimeout(function(){f.element.addClass(f.options.containerClass)},0),this.options.resizable&&v.bind("smartresize.isotope",function(){f.resize()}),this.element.delegate("."+this.options.hiddenClass,"click",function(){return!1})},_getAtoms:function(n){var t=this.options.itemSelector,i=t?n.filter(t).add(n.find(t)):n,r={position:"absolute"};return this.usingTransforms&&(r.left=0,r.top=0),i.css(r).addClass(this.options.itemClass),this.updateSortData(i,!0),i},_init:function(n){this.$filteredAtoms=this._filter(this.$allAtoms),this._sort(),this.reLayout(n)},option:function(n){var i,r;if(t.isPlainObject(n)){this.options=t.extend(!0,this.options,n);for(r in n)i="_update"+o(r),this[i]&&this[i]()}},_updateAnimationEngine:function(){var t=this.options.animationEngine.toLowerCase().replace(/[ _\-]/g,""),n;switch(t){case"css":case"none":n=!1;break;case"jquery":n=!0;break;default:n=!i.csstransitions}this.isUsingJQueryAnimation=n,this._updateUsingTransforms()},_updateTransformsEnabled:function(){this._updateUsingTransforms()},_updateUsingTransforms:function(){var n=this.usingTransforms=this.options.transformsEnabled&&i.csstransforms&&i.csstransitions&&!this.isUsingJQueryAnimation;n|Line truncated (function(n,t){"use strict";var tt=n.document,i=n.Modernizr,o=function(n){return n.charAt(0).toUpperCase()+n.slice(1)},p="Moz Webkit O Ms".split(" "),f=function(n){var r=tt.documentElement.style,i,t,u;if(typeof r[n]=="string")return n;for(n=o(n),t=0,u=p.length;t<u;t++)if(i=p[t]+n,typeof r[i]=="string")return i},s=f("transform"),w=f("transitionProperty"),e={csstransforms:function(){return!!s},csstransforms3d:function(){var n=!!f("perspective");if(n){var r=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),u="@media ("+r.join("transform-3d),(")+"modernizr)",e=t("<style>"+u+"{#modernizr{height:3px}}<\/style>").appendTo("head"),i=t('<div id="modernizr" />').appendTo("html");n=i.height()===3,i.remove(),e.remove()}return n},csstransitions:function(){return!!w}},r,h,c,b,l,k,d,u,g,a,nt,v,y;if(i)for(r in e)i.hasOwnProperty(r)||i.addTest(r,e[r]);else{i=n.Modernizr={_version:"1.6ish: miniModernizr for Isotope"},h=" ";for(r in e)c=e[r](),i[r]=c,h+=" "+(c?"":"no-")+r;t("html").addClass(h)}i.csstransforms&&(b=i.csstransforms3d?{translate:function(n){return"translate3d("+n[0]+"px, "+n[1]+"px, 0) "},scale:function(n){return"scale3d("+n+", "+n+", 1) "}}:{translate:function(n){return"translate("+n[0]+"px, "+n[1]+"px) "},scale:function(n){return"scale("+n+") "}},l=function(n,i,r){var u=t.data(n,"isoTransform")||{},o={},f,e={},h;o[i]=r,t.extend(u,o);for(f in u)h=u[f],e[f]=b[f](h);var c=e.translate||"",l=e.scale||"",a=c+l;t.data(n,"isoTransform",u),n.style[s]=a},t.cssNumber.scale=!0,t.cssHooks.scale={set:function(n,t){l(n,"scale",t)},get:function(n){var i=t.data(n,"isoTransform");return i&&i.scale?i.scale:1}},t.fx.step.scale=function(n){t.cssHooks.scale.set(n.elem,n.now+n.unit)},t.cssNumber.translate=!0,t.cssHooks.translate={set:function(n,t){l(n,"translate",t)},get:function(n){var i=t.data(n,"isoTransform");return i&&i.translate?i.translate:[0,0]}}),i.csstransitions&&(k={WebkitTransitionProperty:"webkitTransitionEnd",MozTransitionProperty:"transitionend",OTransitionProperty:"oTransitionEnd otransitionend",transitionProperty:"transitionend"}[w],d=f("transitionDuration")),u=t.event,g=t.event.handle?"handle":"dispatch",u.special.smartresize={setup:function(){t(this).bind("resize",u.special.smartresize.handler)},teardown:function(){t(this).unbind("resize",u.special.smartresize.handler)},handler:function(n,t){var i=this,r=arguments;n.type="smartresize",a&&clearTimeout(a),a=setTimeout(function(){u[g].apply(i,r)},t==="execAsap"?0:100)}},t.fn.smartresize=function(n){return n?this.bind("smartresize",n):this.trigger("smartresize",["execAsap"])},t.Isotope=function(n,i,r){this.element=t(i),this._create(n),this._init(r)},nt=["width","height"],v=t(n),t.Isotope.settings={resizable:!0,layoutMode:"masonry",containerClass:"isotope",itemClass:"isotope-item",hiddenClass:"isotope-hidden",hiddenStyle:{opacity:0,scale:.001},visibleStyle:{opacity:1,scale:1},containerStyle:{position:"relative",overflow:"hidden"},animationEngine:"best-available",animationOptions:{queue:!1,duration:800},sortBy:"original-order",sortAscending:!0,resizesContainer:!0,transformsEnabled:!0,itemPositionDataEnabled:!1},t.Isotope.prototype={_create:function(n){var e,r,i,u,o,s,f;this.options=t.extend({},t.Isotope.settings,n),this.styleQueue=[],this.elemCount=0,e=this.element[0].style,this.originalStyle={},r=nt.slice(0);for(i in this.options.containerStyle)r.push(i);for(u=0,o=r.length;u<o;u++)i=r[u],this.originalStyle[i]=e[i]||"";this.element.css(this.options.containerStyle),this._updateAnimationEngine(),this._updateUsingTransforms(),s={"original-order":function(n,t){return t.elemCount++,t.elemCount},random:function(){return Math.random()}},this.options.getSortData=t.extend(this.options.getSortData,s),this.reloadItems(),this.offset={left:parseInt(this.element.css("padding-left")||0,10),top:parseInt(this.element.css("padding-top")||0,10)},f=this,setTimeout(function(){f.element.addClass(f.options.containerClass)},0),this.options.resizable&&v.bind("smartresize.isotope",function(){f.resize()}),this.element.delegate("."+this.options.hiddenClass,"click",function(){return!1})},_getAtoms:function(n){var i=this.options.itemSelector,t=i?n.filter(i).add(n.find(i)):n,r={position:"absolute"};return t=t.filter(function(n,t){return t.nodeType===1}),this.usingTransforms&&(r.left=0,r.top=0),t.css(r).addClass(this.options.itemClass),this.updateSortData(t,!0),t},_init:function(n){this.$filteredAtoms=this._filter(this.$allAtoms),this._sort(),this.reLayout(n)},option:function(n){var i,r;if(t.isPlainObject(n)){this.options=t.extend(!0,this.options,n);for(r in n)i="_update"+o(r),this[i]&&this[i]()}},_updateAnimationEngine:function(){var t=this.options.animationEngine.toLowerCase().replace(/[ _\-]/g,""),n;switch(t){case"css":case"none":n=!1;break;case"jquery":n=!0;break;default:n=!i.csstransitions}this.isUsingJQueryAnimation=n,this._updateUsingTransforms()},_updateTransformsEnabled:function(){this._updateUsingTransforms()},_updateUsingTransforms:function(){var n=this.usingTransforms=this.options.transforLine truncated
//@ sourceMappingURL=jQuery-Isotope.min.js.map //@ sourceMappingURL=jQuery-Isotope.min.js.map
@@ -1,8 +1,8 @@
{ {
"version":3, "version":3,
"file":"jQuery-Isotope.min.js", "file":"jQuery-Isotope.min.js",
"lineCount":1, "lineCount":1,
"mappings":"CAcC,QAAS,CAACA,CAAM,CAAEC,CAAT,CAAuB,CAE7B,Y,CAGA,IAAIC,GAAWF,CAAME,UACjBC,EAAYH,CAAMG,WAGlBC,EAAaA,QAAS,CAACC,CAAD,CAAM,CAC5B,OAAOA,CAAGC,OAAO,CAAC,CAAD,CAAGC,YAAY,CAAA,CAAG,CAAEF,CAAGG,MAAM,CAAC,CAAD,CADlB,EAO5BC,EAAW,iBAAiBC,MAAM,CAAC,GAAD,EAElCC,EAAmBA,QAAS,CAACC,CAAD,CAAW,CACvC,IAAIC,EAAQX,EAAQY,gBAAgBD,OAChCE,EAWKC,EAAOC,CAXJ,CAGZ,GAAI,OAAOJ,CAAM,CAAAD,CAAA,CAAU,EAAI,SAC3B,OAAOA,CAAQ,CAOnB,IAHAA,CAAS,CAAER,CAAU,CAACQ,CAAD,CAAU,CAGtBI,CAAE,CAAE,C,CAAGC,CAAI,CAAER,CAAQS,OAAO,CAAEF,CAAE,CAAEC,CAAG,CAAED,CAAC,EAAjD,CAEI,GADAD,CAAS,CAAEN,CAAS,CAAAO,CAAA,CAAG,CAAEJ,CAAQ,CAC7B,OAAOC,CAAM,CAAAE,CAAA,CAAU,EAAI,SAC3B,OAAOA,CAhBwB,EAqBvCI,EAAgBR,CAAgB,CAAC,WAAD,EAChCS,EAAiBT,CAAgB,CAAC,oBAAD,EAwBjCU,EAAQ,CACR,aAAa,CAAEC,QAAS,CAAA,CAAG,CACvB,MAAO,CAAC,CAACH,CADc,CAE1B,CAED,eAAe,CAAEI,QAAS,CAAA,CAAG,CACzB,IAAIC,EAAO,CAAC,CAACb,CAAgB,CAAC,aAAD,CAAe,CAE5C,GAAIa,EAAM,CACN,IAAIC,EAAoB,mCAAmCf,MAAM,CAAC,GAAD,EAC7DgB,EAAa,UAAW,CAAED,CAAiBE,KAAK,CAAC,iBAAD,CAAoB,CAAE,aACtEC,EAAS3B,CAAC,CAAC,SAAU,CAAEyB,CAAW,C,mCAAxB,CACEG,SAAS,CAAC,MAAD,EACrBC,EAAO7B,CAAC,CAAC,wBAAD,CAA0B4B,SAAS,CAAC,MAAD,CAAQ,CAEvDL,CAAK,CAAEM,CAAIC,OAAO,CAAA,CAAG,GAAI,CAAC,CAE1BD,CAAIE,OAAO,CAAA,CAAE,CACbJ,CAAMI,OAAO,CAAA,CAVP,CAYV,OAAOR,CAfkB,CAgB5B,CAED,cAAc,CAAES,QAAS,CAAA,CAAG,CACxB,MAAO,CAAC,CAACb,CADe,CAvBpB,EA4BRc,EAgBIC,EACAC,EA0BAC,EAmBAC,EAwFJC,EAAoBC,EAyBpBC,EACAC,EA0CAC,EAEAC,EAggCAC,CAnzC0B,CAyF9B,GAAI1C,EAEA,IAAK+B,EAAS,GAAGb,CAAjB,CACSlB,CAAS2C,eAAe,CAACZ,CAAD,C,EAEzB/B,CAAS4C,QAAQ,CAACb,CAAQ,CAAEb,CAAM,CAAAa,CAAA,CAAjB,CAA2B,CAGtD,IAAK,CAEH/B,CAAU,CAAEH,CAAMG,UAAW,CAAE,CAC3B,QAAQ,CAAE,mCADiB,CAE9B,CAEGgC,CAAQ,CAAE,G,CAId,IAAKD,EAAS,GAAGb,CAAjB,CACIe,CAAO,CAAEf,CAAM,CAAAa,CAAA,CAAS,CAAA,CAAE,CAC1B/B,CAAU,CAAA+B,CAAA,CAAU,CAAEE,CAAM,CAC5BD,CAAQ,EAAG,GAAI,CAAE,CAACC,CAAO,CAAE,EAAG,CAAE,KAAf,CAAsB,CAAEF,CAAQ,CAIrDjC,CAAC,CAAC,MAAD,CAAQ+C,SAAS,CAACb,CAAD,CAjBf,CA8BHhC,CAASmB,c,GAGLe,CAAqB,CAAElC,CAASoB,gBAAiB,CACvD,CACI,SAAS,CAAE0B,QAAS,CAACC,CAAD,CAAW,CAC3B,MAAO,cAAe,CAAEA,CAAS,CAAA,CAAA,CAAG,CAAE,MAAO,CAAEA,CAAS,CAAA,CAAA,CAAG,CAAE,SADlC,CAE9B,CACD,KAAK,CAAEC,QAAS,CAACA,CAAD,CAAQ,CACpB,MAAO,UAAW,CAAEA,CAAM,CAAE,IAAK,CAAEA,CAAM,CAAE,OADvB,CAJ5B,CAOE,CACF,CACI,SAAS,CAAEF,QAAS,CAACC,CAAD,CAAW,CAC3B,MAAO,YAAa,CAAEA,CAAS,CAAA,CAAA,CAAG,CAAE,MAAO,CAAEA,CAAS,CAAA,CAAA,CAAG,CAAE,MADhC,CAE9B,CACD,KAAK,CAAEC,QAAS,CAACA,CAAD,CAAQ,CACpB,MAAO,QAAS,CAAEA,CAAM,CAAE,IADN,CAJ5B,C,CAUMb,CAAgB,CAAEA,QAAS,CAACc,CAAI,CAAEC,CAAI,CAAEC,CAAb,CAAoB,CAE/C,IAAIC,EAAOtD,CAACsD,KAAK,CAACH,CAAI,CAAE,cAAP,CAAuB,EAAG,CAAA,EACvCI,EAAU,CAAA,EACVC,EACAC,EAAe,CAAA,EACfC,CAAc,CAGlBH,CAAQ,CAAAH,CAAA,CAAM,CAAEC,CAAK,CAErBrD,CAAC2D,OAAO,CAACL,CAAI,CAAEC,CAAP,CAAe,CAEvB,IAAKC,EAAO,GAAGF,CAAf,CACII,CAAe,CAAEJ,CAAK,CAAAE,CAAA,CAAO,CAC7BC,CAAa,CAAAD,CAAA,CAAQ,CAAEpB,CAAqB,CAAAoB,CAAA,CAAO,CAACE,CAAD,CAAgB,CAMvE,IAAIE,EAAcH,CAAYT,UAAW,EAAG,GACxCa,EAAUJ,CAAYP,MAAO,EAAG,GAEhCY,EAAWF,CAAY,CAAEC,CAAO,CAGpC7D,CAACsD,KAAK,CAACH,CAAI,CAAE,cAAc,CAAEG,CAAvB,CAA4B,CAGlCH,CAAIvC,MAAO,CAAAM,CAAA,CAAe,CAAE4C,CA9BmB,C,CAmCnD9D,CAAC+D,UAAUb,MAAO,CAAE,CAAA,CAAI,CAExBlD,CAACgE,SAASd,MAAO,CAAE,CACf,GAAG,CAAEe,QAAS,CAACd,CAAI,CAAEE,CAAP,CAAc,CAKxBhB,CAAe,CAACc,CAAI,CAAE,OAAO,CAAEE,CAAhB,CALS,CAM3B,CACD,GAAG,CAAEa,QAAS,CAACf,CAAD,CAAiB,CAC3B,IAAIgB,EAAYnE,CAACsD,KAAK,CAACH,CAAI,CAAE,cAAP,CAAsB,CAC5C,OAAOgB,CAAU,EAAGA,CAASjB,MAAO,CAAEiB,CAASjB,MAAO,CAAE,CAF7B,CARhB,CAYlB,CAEDlD,CAACoE,GAAGC,KAAKnB,MAAO,CAAEoB,QAAS,CAACF,CAAD,CAAK,CAC5BpE,CAACgE,SAASd,MAAMe,IAAI,CAACG,CAAEjB,KAAK,CAAEiB,CAAEG,IAAK,CAAEH,CAAEI,KAArB,CADQ,CAE/B,CAKDxE,CAAC+D,UAAUf,UAAW,CAAE,CAAA,CAAI,CAE5BhD,CAACgE,SAAShB,UAAW,CAAE,CACnB,GAAG,CAAEiB,QAAS,CAACd,CAAI,CAAEE,CAAP,CAAc,CAexBhB,CAAe,CAACc,CAAI,CAAE,WAAW,CAAEE,CAApB,CAfS,CAgB3B,CAED,GAAG,CAAEa,QAAS,CAACf,CAAD,CAAiB,CAC3B,IAAIgB,EAAYnE,CAACsD,KAAK,CAACH,CAAI,CAAE,cAAP,CAAsB,CAC5C,OAAOgB,CAAU,EAAGA,CAASnB,UAAW,CAAEmB,CAASnB,UAAW,CAAE,CAAC,CAAC,CAAE,CAAJ,CAFrC,CAnBZ,EAuBtB,CAOD9C,CAAS8B,e,GACTM,CAAmB,CAAE,CACjB,wBAAwB,CAAE,qBAAqB,CAC/C,qBAAqB,CAAE,eAAe,CACtC,mBAAmB,CAAE,gBAAgB,CACrC,kBAAkB,CAAE,eAJH,CAKnB,CAAAnB,CAAA,CAAe,CAEjBoB,CAAkB,CAAE7B,CAAgB,CAAC,oBAAD,EAAsB,CAe1D8B,CAAO,CAAExC,CAACyE,M,CAGdjC,CAAMkC,QAAQC,YAAa,CAAE,CACzB,KAAK,CAAEC,QAAS,CAAA,CAAG,CACf5E,CAAC,CAAC,IAAD,CAAM6E,KAAK,CAAC,QAAQ,CAAErC,CAAMkC,QAAQC,YAAYG,QAArC,CADG,CAElB,CACD,QAAQ,CAAEC,QAAS,CAAA,CAAG,CAClB/E,CAAC,CAAC,IAAD,CAAMgF,OAAO,CAAC,QAAQ,CAAExC,CAAMkC,QAAQC,YAAYG,QAArC,CADI,CAErB,CACD,OAAO,CAAEA,QAAS,CAACL,CAAK,CAAEQ,CAAR,CAAkB,CAEhC,IAAIC,EAAU,KACVC,EAAOC,SAAS,CAGpBX,CAAKY,KAAM,CAAE,aAAa,CAEtB5C,C,EAAiB6C,YAAY,CAAC7C,CAAD,CAAe,CAChDA,CAAc,CAAE8C,UAAU,CAAC,QAAS,CAAA,CAAG,CACnCC,MAAMf,MAAMgB,OAAOC,MAAM,CAACR,CAAO,CAAEC,CAAV,CADU,CAEtC,CAAEF,CAAS,GAAI,UAAW,CAAE,CAAE,CAAE,GAFP,CATM,CAPX,CAoB5B,CAEDjF,CAAC2F,GAAGhB,YAAa,CAAEiB,QAAS,CAACD,CAAD,CAAK,CAC7B,OAAOA,CAAG,CAAE,IAAId,KAAK,CAAC,aAAa,CAAEc,CAAhB,CAAoB,CAAE,IAAIE,QAAQ,CAAC,aAAa,CAAE,CAAC,UAAD,CAAhB,CAD1B,CAEhC,CAQD7F,CAAC8F,QAAS,CAAEC,QAAS,CAACC,CAAO,CAAEC,CAAO,CAAEC,CAAnB,CAA6B,CAC9C,IAAID,QAAS,CAAEjG,CAAC,CAACiG,CAAD,CAAS,CAEzB,IAAIE,QAAQ,CLine truncated "mappings":"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 truncated
"sources":["/ClientSource/Scripts/Modules/jQuery-Isotope/jquery.isotope.js"], "sources":["/ClientSource/Scripts/Modules/jQuery-Isotope/jquery.isotope.js"],
"names":["window","$","document","Modernizr","capitalize","str","charAt","toUpperCase","slice","prefixes","split","getStyleProperty","propName","style","documentElement","prefixed","i","len","length","transformProp","transitionProp","tests","csstransforms","csstransforms3d","test","vendorCSSPrefixes","mediaQuery","join","$style","appendTo","$div","height","remove","csstransitions","testName","classes","result","transformFnNotations","setIsoTransform","transitionEndEvent","transitionDurProp","$event","resizeTimeout","isoContainerStyles","$window","logError","hasOwnProperty","addTest","addClass","translate","position","scale","elem","name","value","data","newData","fnName","transformObj","transformValue","extend","translateFn","scaleFn","valueFns","cssNumber","cssHooks","set","get","transform","fx","step","$.fx.step.scale","now","unit","event","special","smartresize","setup","bind","handler","teardown","unbind","execAsap","context","args","arguments","type","clearTimeout","setTimeout","jQuery","handle","apply","fn","$.fn.smartresize","trigger","Isotope","$.Isotope","options","element","callback","_create","_init","settings","browser","opera","prototype","elemStyle","containerStyles","prop","originalOrderSorter","instance","styleQueue","elemCount","originalStyle","containerStyle","push","css","_updateAnimationEngine","_updateUsingTransforms","original-order","$elem","random","Math","getSortData","reloadItems","offset","parseInt","containerClass","resizable","resize","delegate","hiddenClass","_getAtoms","$elems","selector","itemSelector","$atoms","filter","add","find","atomStyle","usingTransforms","left","top","itemClass","updateSortData","$filteredAtoms","_filter","$allAtoms","_sort","reLayout","option","opts","updateOptionFn","optionName","isPlainObject","animationEngine","toLowerCase","replace","isUsingJQueryAnimation","_updateTransformsEnabled","transformsEnabled","hiddenStyle","visibleStyle","getPositionStyles","_translate","_positionAbs","$atomsToHide","hiddenSelector","$hiddenAtoms","$atomsToShow","not","removeClass","isIncrementingElemCount","$this","sortData","each","key","sortBy","getSorter","_getSorter","sortDir","sortAscending","sortFn","alpha","beta","a","b","sort","x","y","_pushPosition","round","itemPositionDataEnabled","layout","layoutMode","resizesContainer","_processStyleQueue","isLaidOut","styleFn","animOpts","animationOptions","onLayout","objStyleFn","processor","triggerCallbackNow","callbackFn","duration","obj","$el","_isInserting","hasClass","complete","isCallbackTriggered","callbacks","hollaback","call","firstItem","testElem","styleObj","parseFloat","getComputedStyle","one","addItems","$content","$newAtoms","insert","append","$newFilteredAtoms","_addHideAppended","_revealAppended","appended","children","removeContent","shuffle","destroy","opacity","undelegate","removeData","_getSegments","isRows","namespace","measure","size","segmentsName","containerSize","segments","segmentSize","floor","max","_checkIfSegmentsChanged","prevSegments","_masonryReset","masonry","cols","colYs","_masonryLayout","props","colSpan","ceil","outerWidth","columnWidth","groupCount","groupY","groupColY","min","_masonryPlaceBrick","$brick","setY","minimumY","shortCol","setHeight","setSpan","outerHeight","_masonryGetContainerSize","containerHeight","_masonryResizeChanged","_fitRowsReset","fitRows","_fitRowsLayout","containerWidth","width","atomW","atomH","_fitRowsGetContainerSize","_fitRowsResizeChanged","_cellsByRowReset","cellsByRow","_cellsByRowLayout","col","index","row","rowHeight","_cellsByRowGetContainerSize","_cellsByRowResizeChanged","_straightDownReset","straightDown","_straightDownLayout","_straightDownGetContainerSize","_straightDownResizeChanged","_masonryHorizontalReset","masonryHorizontal","rows","rowXs","_masonryHorizontalLayout","rowSpan","groupX","groupRowX","_masonryHorizontalPlaceBrick","setX","minimumX","smallRow","setWidth","_masonryHorizontalGetContainerSize","_masonryHorizontalResizeChanged","_fitColumnsReset","fitColumns","_fitColumnsLayout","_fitColumnsGetContainerSize","_fitColumnsResizeChanged","_cellsByColumnReset","cellsByColumn","_cellsByColumnLayout","_cellsByColumnGetContainerSize","_cellsByColumnResizeChanged","_straightAcrossReset","straightAcross","_straightAcrossLayout","_straightAcrossGetContainerSize","_straightAcrossResizeChanged","imagesLoaded","$.fn.imagesLoaded","triggerCallback","$images","imgLoaded","img","target","src","blank","inArray","loaded","message","console","error","isotope","$.fn.isotope","Array","isFunction"] "names":["window","$","document","Modernizr","capitalize","str","charAt","toUpperCase","slice","prefixes","split","getStyleProperty","propName","style","documentElement","prefixed","i","len","length","transformProp","transitionProp","tests","csstransforms","csstransforms3d","test","vendorCSSPrefixes","mediaQuery","join","$style","appendTo","$div","height","remove","csstransitions","testName","classes","result","transformFnNotations","setIsoTransform","transitionEndEvent","transitionDurProp","$event","dispatchMethod","resizeTimeout","isoContainerStyles","$window","logError","hasOwnProperty","addTest","addClass","translate","position","scale","elem","name","value","data","newData","fnName","transformObj","transformValue","extend","translateFn","scaleFn","valueFns","cssNumber","cssHooks","set","get","transform","fx","step","$.fx.step.scale","now","unit","event","handle","special","smartresize","setup","bind","handler","teardown","unbind","execAsap","context","args","arguments","type","clearTimeout","setTimeout","apply","fn","$.fn.smartresize","trigger","Isotope","$.Isotope","options","element","callback","_create","_init","settings","prototype","elemStyle","containerStyles","prop","originalOrderSorter","instance","styleQueue","elemCount","originalStyle","containerStyle","push","css","_updateAnimationEngine","_updateUsingTransforms","original-order","$elem","random","Math","getSortData","reloadItems","offset","parseInt","containerClass","resizable","resize","delegate","hiddenClass","_getAtoms","$elems","selector","itemSelector","$atoms","filter","add","find","atomStyle","atom","nodeType","usingTransforms","left","top","itemClass","updateSortData","$filteredAtoms","_filter","$allAtoms","_sort","reLayout","option","opts","updateOptionFn","optionName","isPlainObject","animationEngine","toLowerCase","replace","isUsingJQueryAnimation","_updateTransformsEnabled","transformsEnabled","hiddenStyle","visibleStyle","getPositionStyles","_translate","_positionAbs","$atomsToHide","hiddenSelector","$hiddenAtoms","$atomsToShow","not","removeClass","isIncrementingElemCount","$this","sortData","each","key","sortBy","getSorter","_getSorter","sortDir","sortAscending","sortFn","alpha","beta","a","b","sort","x","y","_pushPosition","round","itemPositionDataEnabled","layout","layoutMode","resizesContainer","_processStyleQueue","isLaidOut","styleFn","animOpts","animationOptions","onLayout","objStyleFn","processor","triggerCallbackNow","callbackFn","duration","obj","$el","_isInserting","hasClass","complete","isCallbackTriggered","callbacks","hollaback","call","firstItem","testElem","styleObj","parseFloat","getComputedStyle","one","addItems","$content","$newAtoms","insert","append","$newFilteredAtoms","_addHideAppended","_revealAppended","appended","children","removeContent","shuffle","destroy","opacity","undelegate","removeData","_getSegments","isRows","namespace","measure","size","segmentsName","containerSize","segments","segmentSize","floor","max","_checkIfSegmentsChanged","prevSegments","_masonryReset","masonry","cols","colYs","_masonryLayout","props","colSpan","ceil","outerWidth","columnWidth","groupCount","groupY","groupColY","min","_masonryPlaceBrick","$brick","setY","minimumY","shortCol","setHeight","setSpan","outerHeight","_masonryGetContainerSize","containerHeight","_masonryResizeChanged","_fitRowsReset","fitRows","_fitRowsLayout","containerWidth","width","atomW","atomH","_fitRowsGetContainerSize","_fitRowsResizeChanged","_cellsByRowReset","cellsByRow","_cellsByRowLayout","col","index","row","rowHeight","_cellsByRowGetContainerSize","_cellsByRowResizeChanged","_straightDownReset","straightDown","_straightDownLayout","_straightDownGetContainerSize","_straightDownResizeChanged","_masonryHorizontalReset","masonryHorizontal","rows","rowXs","_masonryHorizontalLayout","rowSpan","groupX","groupRowX","_masonryHorizontalPlaceBrick","setX","minimumX","smallRow","setWidth","_masonryHorizontalGetContainerSize","_masonryHorizontalResizeChanged","_fitColumnsReset","fitColumns","_fitColumnsLayout","_fitColumnsGetContainerSize","_fitColumnsResizeChanged","_cellsByColumnReset","cellsByColumn","_cellsByColumnLayout","_cellsByColumnGetContainerSize","_cellsByColumnResizeChanged","_straightAcrossReset","straightAcross","_straightAcrossLayout","_straightAcrossGetContainerSize","_straightAcrossResizeChanged","imagesLoaded","$.fn.imagesLoaded","triggerCallback","$images","imgLoaded","img","target","src","blank","inArray","loaded","message","console","error","isotope","$.fn.isotope","Array","isFunction","jQuery"]
} }
File diff suppressed because it is too large. Load diff
@@ -1463,6 +1463,11 @@ footer a:visited,
footer a:active, footer a:active,
#footer a:active { #footer a:active {
color: #777; color: #777;
}
footer a:link,
#footer a:link,
footer a:active,
#footer a:active {
text-decoration: underline; text-decoration: underline;
} }
footer a:hover, footer a:hover,
+1 -1
View File
@@ -1 +1 @@
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:1Line truncated .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:1Line truncated
+13 -5
View File
@@ -1,15 +1,22 @@
.tableData { .tableData {
border: solid 1px #e8eef4; border: solid 1px #e8eef4;
border-collapse: collapse; border-collapse: collapse;
} }
.tableData td { .tableData > tbody > tr > td {
border: solid 1px #e8eef4; border: solid 1px #e8eef4;
background-color: #fff; background-color: #fff;
} }
.tableData th { .tableData > tbody > tr:nth-child(odd) > td {
background-color: #fcfcfd;
}
.tableData > thead > tr > th,
.tableData > tbody > tr > th {
background-color: #e8eef4; background-color: #e8eef4;
border: solid 1px #e8eef4; border: solid 1px #e8eef4;
} }
.tableData > tbody > tr:hover > td {
background-color: #e8eef4;
}
.tableDataDark { .tableDataDark {
border: solid 1px #8db2d8; border: solid 1px #8db2d8;
border-collapse: collapse; border-collapse: collapse;
@@ -97,11 +104,12 @@ table.deviceShow td.model {
table.deviceShow td.model table td { table.deviceShow td.model table td {
text-align: center; text-align: center;
} }
table.deviceShow #deviceBatchDetails { table.deviceShow #deviceBatchSummary {
display: none; display: none;
font-size: 0.9em; font-size: 0.9em;
} }
table.deviceShow #deviceBatchEdit { 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*/; 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*/;
} }
a.unlocked16 { a.unlocked16 {
+141 -141
View File
@@ -1,142 +1,142 @@
@import "Shared"; @import "Shared";
// Device Show // Device Show
table.deviceShow table.deviceShow
{ {
td.details{ td.details{
padding: 0; padding: 0;
&>table { &>table {
.tableDataVertical; .tableDataVertical;
} }
} }
td.model { td.model {
width: 300px; width: 300px;
table { table {
td { td {
text-align: center; text-align: center;
} }
} }
} }
#deviceBatchDetails { #deviceBatchSummary {
display: none; display: none;
font-size: 0.9em; font-size: 0.9em;
} }
#deviceBatchEdit { #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*/; 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*/;
} }
} }
a.unlocked16 { a.unlocked16 {
height: 16px; 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*/; 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; display: inline-block;
text-decoration: none !important; text-decoration: none !important;
} }
a.locked16 { a.locked16 {
height: 16px; 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*/; 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; display: inline-block;
text-decoration: none !important; text-decoration: none !important;
} }
#deviceShowResources { #deviceShowResources {
margin-top: 10px; margin-top: 10px;
#Attachments { #Attachments {
padding: 0; padding: 0;
border: 1px solid @SubtleBorderColour; border: 1px solid @SubtleBorderColour;
div.attachmentOutput { div.attachmentOutput {
height: 115px; height: 115px;
overflow: auto; overflow: auto;
font-size: 0.95em; font-size: 0.95em;
&>a{ &>a{
display: block; display: block;
float: left; float: left;
height: 48px; height: 48px;
width: 221px; width: 221px;
padding: 2px; padding: 2px;
margin: 2px; margin: 2px;
font-size: 0.9em; font-size: 0.9em;
border: 1px solid #fff; border: 1px solid #fff;
color: #000; color: #000;
text-decoration: none; text-decoration: none;
span.comments, span.author, span.timestamp { span.comments, span.author, span.timestamp {
display: block; display: block;
float: left; float: left;
width: 168px; width: 168px;
overflow: hidden; overflow: hidden;
height: 16px; height: 16px;
} }
span.author { span.author {
color: #888; color: #888;
width: 150px; width: 150px;
} }
span.timestamp { span.timestamp {
color: #888; color: #888;
font-style: italic; font-style: italic;
} }
span.icon { span.icon {
display: block; display: block;
float: left; float: left;
height: 48px; height: 48px;
width: 48px; width: 48px;
margin-right: 2px; margin-right: 2px;
img { img {
height: 48px; height: 48px;
width: 48px; width: 48px;
} }
} }
&:hover { &:hover {
background-color: @SubtleColour; background-color: @SubtleColour;
border: 1px solid @SubtleBorderColour; border: 1px solid @SubtleBorderColour;
.border-radius(3px); .border-radius(3px);
span.remove { 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*/; 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 { span.remove {
display: block; display: block;
float: left; float: left;
height: 16px; height: 16px;
width: 16px; width: 16px;
margin-left: 2px; margin-left: 2px;
&:hover { &: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*/; 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 { div.attachmentInput {
border-top: 1px solid @SubtleBorderColour; border-top: 1px solid @SubtleBorderColour;
height: 40px; height: 40px;
background-color: #fff; background-color: #fff;
padding: 3px; padding: 3px;
span.action { span.action {
display: block; display: block;
margin: 2px 4px 0 0; margin: 2px 4px 0 0;
height: 32px; height: 32px;
width: 32px; width: 32px;
cursor: pointer; cursor: pointer;
float: right; float: right;
border: 1px solid #fff; border: 1px solid #fff;
padding: 3px; padding: 3px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: 2px 3px; background-position: 2px 3px;
&:hover { &:hover {
background-color: @SubtleColour; background-color: @SubtleColour;
border: 1px solid @SubtleBorderColour; border: 1px solid @SubtleBorderColour;
.border-radius(3px); .border-radius(3px);
} }
} }
span.upload { 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*/; 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 { span.photo {
background-image: url(data:image/png;base64,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) /*Images/Actions/photo.png*/; background-image: url(data:image/png;base64,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) /*Images/Actions/photo.png*/;
} }
} }
} }
} }
+1 -1
View File
@@ -1 +1 @@
.tableData{border:solid 1px #e8eef4;border-collapse:collapse}.tableData td{border:solid 1px #e8eef4;background-color:#fff}.tableData th{background-color:#e8eef4;border:solid 1px #e8eef4}.tableDataDark{border:solid 1px #8db2d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #8db2d8;background-color:#fff}.tableDataDark th{background-color:#8db2d8;border:solid 1px #8db2d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #e8eef4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}table.deviceShow td.details{padding:0}table.deviceShow td.details>table{border:solid 1px #e8eef4;border-collapse:collapse}table.deviceShow td.details>table>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}table.deviceShow td.details>table>tbody>tr>th.name{width:170px;text-align:right}table.deviceShow td.details>table table.sub>tbody>tr:not(:first-child)>th,table.deviceShow td.details>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}table.deviceShow td.details>table table.sub>tbody>tr>th{font-weight:normal;text-align:right}table.deviceShow td.details>table table.sub>tbody>tr>th.name{text-align:right}table.deviceShow td.model{width:300px}table.deviceShow td.model table td{text-align:center}table.deviceShow #deviceBatchDetails{display:none;font-size:.9em}table.deviceShow #deviceBatchEdit{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)}a.unlocked16{height: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==);display:inline-block;text-decoration:none!important}a.locked16{height: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);display:inline-block;text-decoration:none!important}#deviceShowResources{margin-top:10px}#deviceShowResources #Attachments{padding:0;bordeLine truncated .tableData{border:solid 1px #e8eef4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #e8eef4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfd}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#e8eef4;border:solid 1px #e8eef4}.tableData>tbody>tr:hover>td{background-color:#e8eef4}.tableDataDark{border:solid 1px #8db2d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #8db2d8;background-color:#fff}.tableDataDark th{background-color:#8db2d8;border:solid 1px #8db2d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #e8eef4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}table.deviceShow td.details{padding:0}table.deviceShow td.details>table{border:solid 1px #e8eef4;border-collapse:collapse}table.deviceShow td.details>table>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}table.deviceShow td.details>table>tbody>tr>th.name{width:170px;text-align:right}table.deviceShow td.details>table table.sub>tbody>tr:not(:first-child)>th,table.deviceShow td.details>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}table.deviceShow td.details>table table.sub>tbody>tr>th{font-weight:normal;text-align:right}table.deviceShow td.details>table table.sub>tbody>tr>th.name{text-align:right}table.deviceShow td.model{width:300px}table.deviceShow td.model table td{text-align:center}table.deviceShow #deviceBatchSummary{display:none;font-size:.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)}a.unlocked16{height: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==);display:inline-block;text-decoration:none!important}a.locked16{height: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+37kOFBcX7ygqKrpWU1P7kylPqrXtGdqf6DAwMIjhkZcYGrHAZLbBYLine truncated
-5
View File
@@ -146,11 +146,6 @@
#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container #Job_Show_GenerateDocument { #Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container #Job_Show_GenerateDocument {
padding: 0; padding: 0;
} }
#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container #Job_Show_GenerateDocument_Status {
padding: 0;
display: none;
white-space: nowrap;
}
#Job_Show #Job_Show_Subjects #Job_Show_Device > div { #Job_Show #Job_Show_Subjects #Job_Show_Device > div {
padding-left: 102px; padding-left: 102px;
min-height: 100px; min-height: 100px;
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -1 +1 @@
.tableData{border:solid 1px #e8eef4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #e8eef4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfd}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#e8eef4;border:solid 1px #e8eef4}.tableData>tbody>tr:hover>td{background-color:#e8eef4}.tableDataDark{border:solid 1px #8db2d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #8db2d8;background-color:#fff}.tableDataDark th{background-color:#8db2d8;border:solid 1px #8db2d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #e8eef4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}#layout_PageHeading #Job_Show_Status{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:.7em;text-transform:uppercase}#layout_PageHeading #Job_Show_Status span.icon{margin-right:6px}#Job_Show #Job_Show_Subjects{table-layout:fixed}#Job_Show #Job_Show_Subjects>tbody>tr>td{padding-top:0;height:100%}#Job_Show #Job_Show_Subjects>tbody>tr>td>div{position:relative}#Job_Show #Job_Show_Subjects>tbody>tr>td>div div.status{margin-top:2px;padding-top:2px;border-top:1px dashed #ddd}#Job_Show #Job_Show_Subjects>tbody>tr>td>div input.discreet{margin-left:-2px}#Job_Show #Job_Show_Subjects>tbody>tr>td:not(:last-child){border-right:1px dashed #aaa}#Job_Show #Job_Show_Subjects .dialog{display:none}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Type>table{table-layout:fixed}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_1,#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_2{padding-left:16px;font-weight:bold}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_Update{margin-left:16px;font-size:.9em}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_Update_Dialog{display:none}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates{padding-bottom:6px}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates table{table-layout:fixed}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates table>tbody>tr>td{vertical-align:middle}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates table>tbody>tr>td:first-child{font-weight:bold;width:60px}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container{padding-top:4px}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container #Job_Show_GenerateDocument{padding:0}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container #Job_Show_GenerateDocument_Status{padding:0;display:none;white-space:nowrap}#Job_Show #Job_Show_Subjects #Job_Show_Device>div{padding-left:102px;min-height:100px}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Model_Image{position:absolute;left:0;top:0;height:96px;width:96px}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details{float:left}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HWar,#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HNWar{float:right;border-left:1px dashed #ddd;padding-left:4px;margin-right:2px}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HWar_Details_Button,#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HNWar_Details_Button{font-size:.9em}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_DeviceHeld table{table-layout:fixed}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_DeviceHeld table>tbody>tr>td:first-child{width:62px}#Job_Show #Job_Show_Subjects #Job_Show_User #Job_Show_User_Type{font-style:italic}#Job_Show #Job_Show_Subjects #Job_Show_Subjects_Actions>td{padding-top:4px}#Job_Show #Job_Show_Subjects #Job_Show_Subjects_Actions #Job_Show_Device_Actions{padding-left:111px}#jobDetailTabs{margin-top:10px;border-radius:0;background-image:none;background-color:#fff;border:none;padding:0}#jobDetailTabs #jobDetailTabItems{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}#jobDetailTabs #jobDetailTabItems>li{top:0;border-radius:0;margin:0 5px 0 0;padding:0;line-height:normal;margin-right:4px}#jobDetailTabs #jobDetailTabItems>li>a{padding:5px 8px}#jobLine truncated .tableData{border:solid 1px #e8eef4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #e8eef4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfd}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#e8eef4;border:solid 1px #e8eef4}.tableData>tbody>tr:hover>td{background-color:#e8eef4}.tableDataDark{border:solid 1px #8db2d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #8db2d8;background-color:#fff}.tableDataDark th{background-color:#8db2d8;border:solid 1px #8db2d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #e8eef4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}#layout_PageHeading #Job_Show_Status{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:.7em;text-transform:uppercase}#layout_PageHeading #Job_Show_Status span.icon{margin-right:6px}#Job_Show #Job_Show_Subjects{table-layout:fixed}#Job_Show #Job_Show_Subjects>tbody>tr>td{padding-top:0;height:100%}#Job_Show #Job_Show_Subjects>tbody>tr>td>div{position:relative}#Job_Show #Job_Show_Subjects>tbody>tr>td>div div.status{margin-top:2px;padding-top:2px;border-top:1px dashed #ddd}#Job_Show #Job_Show_Subjects>tbody>tr>td>div input.discreet{margin-left:-2px}#Job_Show #Job_Show_Subjects>tbody>tr>td:not(:last-child){border-right:1px dashed #aaa}#Job_Show #Job_Show_Subjects .dialog{display:none}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Type>table{table-layout:fixed}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_1,#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_2{padding-left:16px;font-weight:bold}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_Update{margin-left:16px;font-size:.9em}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_SubTypes_Update_Dialog{display:none}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates{padding-bottom:6px}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates table{table-layout:fixed}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates table>tbody>tr>td{vertical-align:middle}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_Job_Dates table>tbody>tr>td:first-child{font-weight:bold;width:60px}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container{padding-top:4px}#Job_Show #Job_Show_Subjects #Job_Show_Job #Job_Show_GenerateDocument_Container #Job_Show_GenerateDocument{padding:0}#Job_Show #Job_Show_Subjects #Job_Show_Device>div{padding-left:102px;min-height:100px}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Model_Image{position:absolute;left:0;top:0;height:96px;width:96px}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details{float:left}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HWar,#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HNWar{float:right;border-left:1px dashed #ddd;padding-left:4px;margin-right:2px}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HWar_Details_Button,#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_Details_HNWar_Details_Button{font-size:.9em}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_DeviceHeld table{table-layout:fixed}#Job_Show #Job_Show_Subjects #Job_Show_Device #Job_Show_Device_DeviceHeld table>tbody>tr>td:first-child{width:62px}#Job_Show #Job_Show_Subjects #Job_Show_User #Job_Show_User_Type{font-style:italic}#Job_Show #Job_Show_Subjects #Job_Show_Subjects_Actions>td{padding-top:4px}#Job_Show #Job_Show_Subjects #Job_Show_Subjects_Actions #Job_Show_Device_Actions{padding-left:111px}#jobDetailTabs{margin-top:10px;border-radius:0;background-image:none;background-color:#fff;border:none;padding:0}#jobDetailTabs #jobDetailTabItems{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}#jobDetailTabs #jobDetailTabItems>li{top:0;border-radius:0;margin:0 5px 0 0;padding:0;line-height:normal;margin-right:4px}#jobDetailTabs #jobDetailTabItems>li>a{padding:5px 8px}#jobDetailTabs 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:noneLine truncated
+5
View File
@@ -285,6 +285,11 @@ footer a:visited,
footer a:active, footer a:active,
#footer a:active { #footer a:active {
color: #777; color: #777;
}
footer a:link,
#footer a:link,
footer a:active,
#footer a:active {
text-decoration: underline; text-decoration: underline;
} }
footer a:hover, footer a:hover,
+3
View File
@@ -251,6 +251,9 @@ footer, #footer
&:link, &:visited, &:active &:link, &:visited, &:active
{ {
color: #777; color: #777;
}
&:link, &:active
{
text-decoration: underline; text-decoration: underline;
} }
+1 -1
View File
@@ -1 +1 @@
.tableData{border:solid 1px #e8eef4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #e8eef4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfd}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#e8eef4;border:solid 1px #e8eef4}.tableData>tbody>tr:hover>td{background-color:#e8eef4}.tableDataDark{border:solid 1px #8db2d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #8db2d8;background-color:#fff}.tableDataDark th{background-color:#8db2d8;border:solid 1px #8db2d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #e8eef4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0 10px;color:#333}body.layout{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAFvCAMAAABEoqrSAAADAFBMVEVRUVFUVFRYWFhbW1tfX19iYmJmZmZpaWltbW1wcHB0dHR3d3d7e3t/f3/MzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD28iAmAAAAbklEQVRIx2NUZ4ABlv9kMZkYRrXhYUphMwzZXEYCogQV0FfbUHMOrSxGAoyMBEygM/M/zZnMjFiZDPQEjCYEsin2/EYKk6qGDTVzR7TnRwN1NFBHPT8aqKOBOur5Uc+PBip1zWVkYGCBCv2nhrkAr7hI+jpl4KUAAAAASUVORK5CYII=) left top repeat-x #d1d1d1}.page{max-width:1230px;min-width:750px;margin-left:auto;margin-right:auto}header,#header{position:relative;margin:0;padding:0;height:110px}header #headerMenu,#header #headerMenu{height:24px;padding:4px;line-height:22px;text-align:right}header #headerMenu a,#header #headerMenu a{color:#000;text-decoration:none}header #headerMenu a:hover,#header #headerMenu a:hover{text-decoration:underline}header #heading,#header #heading{float:left;height:75px}header #heading img,#header #heading img{height:75px;width:300px}header nav,#header nav{padding:0;margin:0;font-size:1.1em}header nav ul#menu,#header nav ul#menu{height:29px;padding:3px 6px;margin:0;list-style:none;z-index:100000}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;margin-bottom:-4px}header nav ul#menu>li a,#header nav ul#menu>li a{padding:4px 10px;text-decoration:none;color:#fff;display:inline-block;height:21px}header nav ul#menu>li a:hover,#header nav ul#menu>li a:hover{color:#ffd5ba;text-decoration:none}header nav ul#menu>li a:active,#header nav ul#menu>li a:active{text-decoration:none}header nav ul#menu>li.sep,#header nav ul#menu>li.sep{margin-top:4px;height:21px;border-left:1px solid #777}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:40px}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:2px 0 0 0;-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0;border-left:1px solid #ecab72;border-bottom:2px solid #ecab72;border-right:1px solid #ecab72;padding:0;min-width:180px}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-color:rgba(242,242,242,.9);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAUCAYAAABMDlehAAAAIUlEQVQI12NgYGBQYGJgYPgLJ/6gciEEMwMDAyMzA1kAAB/mByD2JQzYAAAAAElFTkSuQmCC);background-position:top;background-repeat:repeat-x}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{background-color:rgba(249,228,210,.75)}header nav ul#menu>li>ul li.hasSubmenu,#header nav ul#menu>li>ul li.hasSubmenu{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAa0lEQVQoz2NgGBRg8uTJO4BYhxIDVgPxHyCeDcQS5BpiAcSHgfgzENcBMRe5BgUC8Line truncated .tableData{border:solid 1px #e8eef4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #e8eef4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfd}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#e8eef4;border:solid 1px #e8eef4}.tableData>tbody>tr:hover>td{background-color:#e8eef4}.tableDataDark{border:solid 1px #8db2d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #8db2d8;background-color:#fff}.tableDataDark th{background-color:#8db2d8;border:solid 1px #8db2d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #e8eef4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#e8eef4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0 10px;color:#333}body.layout{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAFvCAMAAABEoqrSAAADAFBMVEVRUVFUVFRYWFhbW1tfX19iYmJmZmZpaWltbW1wcHB0dHR3d3d7e3t/f3/MzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD28iAmAAAAbklEQVRIx2NUZ4ABlv9kMZkYRrXhYUphMwzZXEYCogQV0FfbUHMOrSxGAoyMBEygM/M/zZnMjFiZDPQEjCYEsin2/EYKk6qGDTVzR7TnRwN1NFBHPT8aqKOBOur5Uc+PBip1zWVkYGCBCv2nhrkAr7hI+jpl4KUAAAAASUVORK5CYII=) left top repeat-x #d1d1d1}.page{max-width:1230px;min-width:750px;margin-left:auto;margin-right:auto}header,#header{position:relative;margin:0;padding:0;height:110px}header #headerMenu,#header #headerMenu{height:24px;padding:4px;line-height:22px;text-align:right}header #headerMenu a,#header #headerMenu a{color:#000;text-decoration:none}header #headerMenu a:hover,#header #headerMenu a:hover{text-decoration:underline}header #heading,#header #heading{float:left;height:75px}header #heading img,#header #heading img{height:75px;width:300px}header nav,#header nav{padding:0;margin:0;font-size:1.1em}header nav ul#menu,#header nav ul#menu{height:29px;padding:3px 6px;margin:0;list-style:none;z-index:100000}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;margin-bottom:-4px}header nav ul#menu>li a,#header nav ul#menu>li a{padding:4px 10px;text-decoration:none;color:#fff;display:inline-block;height:21px}header nav ul#menu>li a:hover,#header nav ul#menu>li a:hover{color:#ffd5ba;text-decoration:none}header nav ul#menu>li a:active,#header nav ul#menu>li a:active{text-decoration:none}header nav ul#menu>li.sep,#header nav ul#menu>li.sep{margin-top:4px;height:21px;border-left:1px solid #777}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:40px}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:2px 0 0 0;-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0;border-left:1px solid #ecab72;border-bottom:2px solid #ecab72;border-right:1px solid #ecab72;padding:0;min-width:180px}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-color:rgba(242,242,242,.9);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAUCAYAAABMDlehAAAAIUlEQVQI12NgYGBQYGJgYPgLJ/6gciEEMwMDAyMzA1kAAB/mByD2JQzYAAAAAElFTkSuQmCC);background-position:top;background-repeat:repeat-x}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{background-color:rgba(249,228,210,.75)}header nav ul#menu>li>ul li.hasSubmenu,#header nav ul#menu>li>ul li.hasSubmenu{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAa0lEQVQoz2NgGBRg8uTJO4BYhxIDVgPxHyCeDcQS5BpiAcSHgfgzENcBMRe5BgUC8Line truncated
+2 -2
View File
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// //
// You can specify all the values or you can default the Revision and Build Numbers // You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
[assembly: AssemblyVersion("1.2.0219.1605")] [assembly: AssemblyVersion("1.2.0219.1854")]
[assembly: AssemblyFileVersion("1.2.0219.1605")] [assembly: AssemblyFileVersion("1.2.0219.1854")]
+114 -114
View File
@@ -1,114 +1,114 @@
@model Disco.Web.Models.Device.AddOfflineModel @model Disco.Web.Models.Device.AddOfflineModel
@{ @{
ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Add Offline"); ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Add Offline");
} }
@using (Html.BeginForm()) @using (Html.BeginForm())
{ {
@Html.ValidationSummary(true) @Html.ValidationSummary(true)
<div class="form" style="width: 450px"> <div class="form" style="width: 450px">
<table> <table>
<tr> <tr>
<th> <th>
Serial Number: Serial Number:
</th> </th>
<td> <td>
@Html.TextBoxFor(model => model.Device.SerialNumber)<br /> @Html.TextBoxFor(model => model.Device.SerialNumber)<br />
@Html.ValidationMessageFor(model => model.Device.SerialNumber) @Html.ValidationMessageFor(model => model.Device.SerialNumber)
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Asset Number: Asset Number:
</th> </th>
<td>@Html.TextBoxFor(model => model.Device.AssetNumber)<br /> <td>@Html.TextBoxFor(model => model.Device.AssetNumber)<br />
@Html.ValidationMessageFor(model => model.Device.AssetNumber) @Html.ValidationMessageFor(model => model.Device.AssetNumber)
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Location: Location:
</th> </th>
<td>@Html.TextBoxFor(model => model.Device.Location)<br /> <td>@Html.TextBoxFor(model => model.Device.Location)<br />
@Html.ValidationMessageFor(model => model.Device.Location) @Html.ValidationMessageFor(model => model.Device.Location)
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Device Batch: Device Batch:
</th> </th>
<td> <td>
@Html.DropDownListFor(model => model.Device.DeviceBatchId, Model.DeviceBatches) <br /> @Html.DropDownListFor(model => model.Device.DeviceBatchId, Model.DeviceBatches) <br />
@Html.ValidationMessageFor(model => model.Device.DeviceBatchId) @Html.ValidationMessageFor(model => model.Device.DeviceBatchId)
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Device Profile: Device Profile:
</th> </th>
<td> <td>
@Html.DropDownListFor(model => model.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.DefaultDeviceProfileId))<br /> @Html.DropDownListFor(model => model.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.DefaultDeviceProfileId))<br />
@Html.ValidationMessageFor(model => model.Device.DeviceProfileId) @Html.ValidationMessageFor(model => model.Device.DeviceProfileId)
</td> </td>
</tr> </tr>
<tr> <tr>
<th> <th>
Assigned User: Assigned User:
</th> </th>
<td> <td>
@Html.TextBoxFor(model => model.Device.AssignedUserId)<br /> @Html.TextBoxFor(model => model.Device.AssignedUserId)<br />
@Html.ValidationMessageFor(model => model.Device.AssignedUserId) @Html.ValidationMessageFor(model => model.Device.AssignedUserId)
</td> </td>
</tr> </tr>
</table> </table>
<p class="actions"> <p class="actions">
<input type="submit" class="button" value="Add" /> <input type="submit" class="button" value="Add" />
</p> </p>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
$SerialNumber = $('#Device_SerialNumber'); $SerialNumber = $('#Device_SerialNumber');
$AssetNumber = $('#Device_AssetNumber'); $AssetNumber = $('#Device_AssetNumber');
$Location = $('#Device_Location'); $Location = $('#Device_Location');
$AssignedUserId = $('#Device_AssignedUserId'); $AssignedUserId = $('#Device_AssignedUserId');
$SerialNumber.focus().keydown(function (e) { $SerialNumber.focus().keydown(function (e) {
if (e.which == 13) { if (e.which == 13) {
$AssignedUserId.focus(); $AssignedUserId.focus();
return false; return false;
} }
}); });
$AssetNumber.keydown(function (e) { $AssetNumber.keydown(function (e) {
if (e.which == 13) { if (e.which == 13) {
$Location.focus(); $Location.focus();
return false; return false;
} }
}); });
$Location.keydown(function (e) { $Location.keydown(function (e) {
if (e.which == 13) { if (e.which == 13) {
$AssignedUserId.focus(); $AssignedUserId.focus();
return false; return false;
} }
}); });
$AssignedUserId $AssignedUserId
.watermark('Search Users') .watermark('Search Users')
.focus(function () { $AssignedUserId.select() }) .focus(function () { $AssignedUserId.select() })
.autocomplete({ .autocomplete({
source: '@(Url.Action(MVC.API.User.UpstreamUsers()))', source: '@(Url.Action(MVC.API.User.UpstreamUsers()))',
minLength: 2, minLength: 2,
focus: function (e, ui) { focus: function (e, ui) {
$AssignedUserId.val(ui.item.DisplayName + ' (' + ui.item.Id + ')'); $AssignedUserId.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
return false; return false;
}, },
select: function (e, ui) { select: function (e, ui) {
$AssignedUserId.val(ui.item.Id).blur(); $AssignedUserId.val(ui.item.Id).blur();
return false; return false;
} }
}).data('autocomplete')._renderItem = function (ul, item) { }).data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li></li>") return $("<li></li>")
.data("item.autocomplete", item) .data("item.autocomplete", item)
.append("<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>") .append("<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul); .appendTo(ul);
}; };
}); });
</script> </script>
</div> </div>
} }
+304 -304
View File
@@ -1,304 +1,304 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.17929
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Disco.Web.Views.Device namespace Disco.Web.Views.Device
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web; using System.Web;
using System.Web.Helpers; using System.Web.Helpers;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using System.Web.Security; using System.Web.Security;
using System.Web.UI; using System.Web.UI;
using System.Web.WebPages; using System.Web.WebPages;
using Disco.BI.Extensions; using Disco.BI.Extensions;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Web; using Disco.Web;
using Disco.Web.Extensions; using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/AddOffline.cshtml")] [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/AddOffline.cshtml")]
public class AddOffline : System.Web.Mvc.WebViewPage<Disco.Web.Models.Device.AddOfflineModel> public class AddOffline : System.Web.Mvc.WebViewPage<Disco.Web.Models.Device.AddOfflineModel>
{ {
public AddOffline() public AddOffline()
{ {
} }
public override void Execute() public override void Execute()
{ {
#line 2 "..\..\Views\Device\AddOffline.cshtml" #line 2 "..\..\Views\Device\AddOffline.cshtml"
ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Add Offline"); ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Add Offline");
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n"); WriteLiteral("\r\n");
#line 5 "..\..\Views\Device\AddOffline.cshtml" #line 5 "..\..\Views\Device\AddOffline.cshtml"
using (Html.BeginForm()) using (Html.BeginForm())
{ {
#line default #line default
#line hidden #line hidden
#line 7 "..\..\Views\Device\AddOffline.cshtml" #line 7 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.ValidationSummary(true)); Write(Html.ValidationSummary(true));
#line default #line default
#line hidden #line hidden
#line 7 "..\..\Views\Device\AddOffline.cshtml" #line 7 "..\..\Views\Device\AddOffline.cshtml"
#line default #line default
#line hidden #line hidden
WriteLiteral(" <div"); WriteLiteral(" <div");
WriteLiteral(" class=\"form\""); WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 450px\""); WriteLiteral(" style=\"width: 450px\"");
WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th>\r\n S" + WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th>\r\n S" +
"erial Number:\r\n </th>\r\n <td>\r\n"); "erial Number:\r\n </th>\r\n <td>\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 15 "..\..\Views\Device\AddOffline.cshtml" #line 15 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.TextBoxFor(model => model.Device.SerialNumber)); Write(Html.TextBoxFor(model => model.Device.SerialNumber));
#line default #line default
#line hidden #line hidden
WriteLiteral("<br />\r\n"); WriteLiteral("<br />\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 16 "..\..\Views\Device\AddOffline.cshtml" #line 16 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.ValidationMessageFor(model => model.Device.SerialNumber)); Write(Html.ValidationMessageFor(model => model.Device.SerialNumber));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" + WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Asset Number:\r\n </th>\r\n <td" + ">\r\n Asset Number:\r\n </th>\r\n <td" +
">"); ">");
#line 23 "..\..\Views\Device\AddOffline.cshtml" #line 23 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.TextBoxFor(model => model.Device.AssetNumber)); Write(Html.TextBoxFor(model => model.Device.AssetNumber));
#line default #line default
#line hidden #line hidden
WriteLiteral("<br />\r\n"); WriteLiteral("<br />\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 24 "..\..\Views\Device\AddOffline.cshtml" #line 24 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.ValidationMessageFor(model => model.Device.AssetNumber)); Write(Html.ValidationMessageFor(model => model.Device.AssetNumber));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" + WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Location:\r\n </th>\r\n <td>"); ">\r\n Location:\r\n </th>\r\n <td>");
#line 31 "..\..\Views\Device\AddOffline.cshtml" #line 31 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.TextBoxFor(model => model.Device.Location)); Write(Html.TextBoxFor(model => model.Device.Location));
#line default #line default
#line hidden #line hidden
WriteLiteral("<br />\r\n"); WriteLiteral("<br />\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 32 "..\..\Views\Device\AddOffline.cshtml" #line 32 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.ValidationMessageFor(model => model.Device.Location)); Write(Html.ValidationMessageFor(model => model.Device.Location));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" + WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Device Batch:\r\n </th>\r\n <td" + ">\r\n Device Batch:\r\n </th>\r\n <td" +
">\r\n"); ">\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 40 "..\..\Views\Device\AddOffline.cshtml" #line 40 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.DropDownListFor(model => model.Device.DeviceBatchId, Model.DeviceBatches)); Write(Html.DropDownListFor(model => model.Device.DeviceBatchId, Model.DeviceBatches));
#line default #line default
#line hidden #line hidden
WriteLiteral(" <br />\r\n"); WriteLiteral(" <br />\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 41 "..\..\Views\Device\AddOffline.cshtml" #line 41 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.ValidationMessageFor(model => model.Device.DeviceBatchId)); Write(Html.ValidationMessageFor(model => model.Device.DeviceBatchId));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" + WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Device Profile:\r\n </th>\r\n <" + ">\r\n Device Profile:\r\n </th>\r\n <" +
"td>\r\n"); "td>\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 49 "..\..\Views\Device\AddOffline.cshtml" #line 49 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.DropDownListFor(model => model.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.DefaultDeviceProfileId))); Write(Html.DropDownListFor(model => model.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.DefaultDeviceProfileId)));
#line default #line default
#line hidden #line hidden
WriteLiteral("<br />\r\n"); WriteLiteral("<br />\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 50 "..\..\Views\Device\AddOffline.cshtml" #line 50 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.ValidationMessageFor(model => model.Device.DeviceProfileId)); Write(Html.ValidationMessageFor(model => model.Device.DeviceProfileId));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" + WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
">\r\n Assigned User:\r\n </th>\r\n <t" + ">\r\n Assigned User:\r\n </th>\r\n <t" +
"d>\r\n"); "d>\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 58 "..\..\Views\Device\AddOffline.cshtml" #line 58 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.TextBoxFor(model => model.Device.AssignedUserId)); Write(Html.TextBoxFor(model => model.Device.AssignedUserId));
#line default #line default
#line hidden #line hidden
WriteLiteral("<br />\r\n"); WriteLiteral("<br />\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 59 "..\..\Views\Device\AddOffline.cshtml" #line 59 "..\..\Views\Device\AddOffline.cshtml"
Write(Html.ValidationMessageFor(model => model.Device.AssignedUserId)); Write(Html.ValidationMessageFor(model => model.Device.AssignedUserId));
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </td>\r\n </tr>\r\n </table>\r\n <p"); WriteLiteral("\r\n </td>\r\n </tr>\r\n </table>\r\n <p");
WriteLiteral(" class=\"actions\""); WriteLiteral(" class=\"actions\"");
WriteLiteral(">\r\n <input"); WriteLiteral(">\r\n <input");
WriteLiteral(" type=\"submit\""); WriteLiteral(" type=\"submit\"");
WriteLiteral(" class=\"button\""); WriteLiteral(" class=\"button\"");
WriteLiteral(" value=\"Add\""); WriteLiteral(" value=\"Add\"");
WriteLiteral(" />\r\n </p>\r\n <script"); WriteLiteral(" />\r\n </p>\r\n <script");
WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@"> WriteLiteral(@">
$(function () { $(function () {
$SerialNumber = $('#Device_SerialNumber'); $SerialNumber = $('#Device_SerialNumber');
$AssetNumber = $('#Device_AssetNumber'); $AssetNumber = $('#Device_AssetNumber');
$Location = $('#Device_Location'); $Location = $('#Device_Location');
$AssignedUserId = $('#Device_AssignedUserId'); $AssignedUserId = $('#Device_AssignedUserId');
$SerialNumber.focus().keydown(function (e) { $SerialNumber.focus().keydown(function (e) {
if (e.which == 13) { if (e.which == 13) {
$AssignedUserId.focus(); $AssignedUserId.focus();
return false; return false;
} }
}); });
$AssetNumber.keydown(function (e) { $AssetNumber.keydown(function (e) {
if (e.which == 13) { if (e.which == 13) {
$Location.focus(); $Location.focus();
return false; return false;
} }
}); });
$Location.keydown(function (e) { $Location.keydown(function (e) {
if (e.which == 13) { if (e.which == 13) {
$AssignedUserId.focus(); $AssignedUserId.focus();
return false; return false;
} }
}); });
$AssignedUserId $AssignedUserId
.watermark('Search Users') .watermark('Search Users')
.focus(function () { $AssignedUserId.select() }) .focus(function () { $AssignedUserId.select() })
.autocomplete({ .autocomplete({
source: '"); source: '");
#line 95 "..\..\Views\Device\AddOffline.cshtml" #line 95 "..\..\Views\Device\AddOffline.cshtml"
Write(Url.Action(MVC.API.User.UpstreamUsers())); Write(Url.Action(MVC.API.User.UpstreamUsers()));
#line default #line default
#line hidden #line hidden
WriteLiteral(@"', WriteLiteral(@"',
minLength: 2, minLength: 2,
focus: function (e, ui) { focus: function (e, ui) {
$AssignedUserId.val(ui.item.DisplayName + ' (' + ui.item.Id + ')'); $AssignedUserId.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
return false; return false;
}, },
select: function (e, ui) { select: function (e, ui) {
$AssignedUserId.val(ui.item.Id).blur(); $AssignedUserId.val(ui.item.Id).blur();
return false; return false;
} }
}).data('autocomplete')._renderItem = function (ul, item) { }).data('ui-autocomplete')._renderItem = function (ul, item) {
return $(""<li></li>"") return $(""<li></li>"")
.data(""item.autocomplete"", item) .data(""item.autocomplete"", item)
.append(""<a><strong>"" + item.DisplayName + ""</strong><br>"" + item.Id + "" ("" + item.Type + "")</a>"") .append(""<a><strong>"" + item.DisplayName + ""</strong><br>"" + item.Id + "" ("" + item.Type + "")</a>"")
.appendTo(ul); .appendTo(ul);
}; };
}); });
</script> </script>
</div> </div>
"); ");
#line 114 "..\..\Views\Device\AddOffline.cshtml" #line 114 "..\..\Views\Device\AddOffline.cshtml"
} }
#line default #line default
#line hidden #line hidden
} }
} }
} }
#pragma warning restore 1591 #pragma warning restore 1591
+478 -467
View File
@@ -1,467 +1,478 @@
@model Disco.Web.Models.Device.ShowModel @model Disco.Web.Models.Device.ShowModel
@{ @{
ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), string.Format("{0} ({1})", Model.Device.ComputerName, Model.Device.SerialNumber)); ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), string.Format("{0} ({1})", Model.Device.ComputerName, Model.Device.SerialNumber));
Html.BundleDeferred("~/ClientScripts/Modules/Silverlight"); Html.BundleDeferred("~/ClientScripts/Modules/Silverlight");
} }
<table class="deviceShow"> <table class="deviceShow">
<tr> <tr>
<td class="details"> <td class="details">
<table> <table>
<tr> <tr>
<th class="name"> <th class="name">
Computer Name: Computer Name:
</th> </th>
<td class="value"> <td class="value">
@if (string.IsNullOrWhiteSpace(Model.Device.ComputerName)) @if (string.IsNullOrWhiteSpace(Model.Device.ComputerName))
{ {
<span class="smallMessage">&lt;Unknown/Not Allocated&gt;</span> <span class="smallMessage">&lt;Unknown/Not Allocated&gt;</span>
} }
else else
{ {
@Model.Device.ComputerName @Model.Device.ComputerName
} }
</td> </td>
</tr> </tr>
<tr> <tr>
<th class="name"> <th class="name">
Asset Number: Asset Number:
</th> </th>
<td class="value"> <td class="value">
@Html.TextBoxFor(m => m.Device.AssetNumber) @Html.TextBoxFor(m => m.Device.AssetNumber)
@AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $ajaxSave = $('#Device_AssetNumber').next('.ajaxSave'); var $ajaxSave = $('#Device_AssetNumber').next('.ajaxSave');
$('#Device_AssetNumber').watermark('Asset Number').keydown(function (e) { $('#Device_AssetNumber').watermark('Asset Number').keydown(function (e) {
$ajaxSave.show(); $ajaxSave.show();
if (e.which == 13) { if (e.which == 13) {
$(this).blur(); $(this).blur();
} }
}).change(function () { }).change(function () {
var $this = $(this); var $this = $(this);
$ajaxSave.hide(); $ajaxSave.hide();
var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show(); var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show();
var data = { AssetNumber: $this.val() }; var data = { AssetNumber: $this.val() };
$.getJSON('@(Url.Action(@MVC.API.Device.UpdateAssetNumber(Model.Device.SerialNumber)))', data, function (response, result) { $.getJSON('@(Url.Action(@MVC.API.Device.UpdateAssetNumber(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') { if (result != 'success' || response != 'OK') {
alert('Unable to change Asset Number:\n' + response); alert('Unable to change Asset Number:\n' + response);
$ajaxLoading.hide(); $ajaxLoading.hide();
} else { } else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} }
}); });
}).blur(function () { }).blur(function () {
$ajaxSave.hide(); $ajaxSave.hide();
}).focus(function () { }).focus(function () {
$(this).select(); $(this).select();
}); });
}); });
</script> </script>
</td> </td>
</tr> </tr>
<tr> <tr>
<th class="name"> <th class="name">
Location: Location:
</th> </th>
<td class="value"> <td class="value">
@Html.TextBoxFor(m => m.Device.Location) @Html.TextBoxFor(m => m.Device.Location)
@AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $ajaxSave = $('#Device_Location').next('.ajaxSave'); var $ajaxSave = $('#Device_Location').next('.ajaxSave');
$('#Device_Location').watermark('Location').keydown(function (e) { $('#Device_Location').watermark('Location').keydown(function (e) {
$ajaxSave.show(); $ajaxSave.show();
if (e.which == 13) { if (e.which == 13) {
$(this).blur(); $(this).blur();
} }
}).change(function () { }).change(function () {
var $this = $(this); var $this = $(this);
$ajaxSave.hide(); $ajaxSave.hide();
var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show(); var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show();
var data = { Location: $this.val() }; var data = { Location: $this.val() };
$.getJSON('@(Url.Action(@MVC.API.Device.UpdateLocation(Model.Device.SerialNumber)))', data, function (response, result) { $.getJSON('@(Url.Action(@MVC.API.Device.UpdateLocation(Model.Device.SerialNumber)))', data, function (response, result) {
if (result != 'success' || response != 'OK') { if (result != 'success' || response != 'OK') {
alert('Unable to change Location:\n' + response); alert('Unable to change Location:\n' + response);
$ajaxLoading.hide(); $ajaxLoading.hide();
} else { } else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} }
}); });
}).blur(function () { }).blur(function () {
$ajaxSave.hide(); $ajaxSave.hide();
}).focus(function () { }).focus(function () {
$(this).select(); $(this).select();
}); });
}); });
</script> </script>
</td> </td>
</tr> </tr>
<tr> <tr>
<th class="name"> <th class="name">
Batch: Batch:
</th> </th>
<td class="value"> <td class="value">
@Html.DropDownListFor(m => m.Device.DeviceBatchId, Model.DeviceBatches) @Html.DropDownListFor(m => m.Device.DeviceBatchId, Model.DeviceBatches)
@AjaxHelpers.AjaxLoader() <span id="deviceBatchEdit" class="icon16" title="Edit"> @AjaxHelpers.AjaxLoader() <span id="deviceBatchDetails" class="icon16" title="Batch Details"></span>
</span> <script type="text/javascript">
<script type="text/javascript"> $(function () {
$(function () { var $DeviceBatchId = $('#Device_DeviceBatchId');
var $DeviceBatchId = $('#Device_DeviceBatchId'); var $DeviceBatchDetails = $('#deviceBatchDetails');
var $DeviceBatchDetails = $('#deviceBatchDetails'); var $DeviceBatchSummary = $('#deviceBatchSummary');
var $DeviceBatchEdit = $('#deviceBatchEdit'); var initUpdate = false;
var jsonDate = function (json, unknownValue) { var jsonDate = function (json, unknownValue) {
if (json && json.indexOf('') == 0) { if (json && json.indexOf('') == 0) {
return $.datepicker.formatDate('yy-mm-dd', new Date(parseInt(json.substr(6, json.length - 8)))); return $.datepicker.formatDate('yy-mm-dd', new Date(parseInt(json.substr(6, json.length - 8))));
} else } else
return unknownValue; return unknownValue;
} }
var updateDetails = function (deviceBatchId) { var updateDetails = function (deviceBatchId) {
$.getJSON('@(Url.Action(MVC.API.DeviceBatch.Index()))/' + deviceBatchId, function (response, result) { $.getJSON('@(Url.Action(MVC.API.DeviceBatch.Index()))/' + deviceBatchId, function (response, result) {
if (result == 'success') { if (result == 'success') {
if (response.Supplier) if (response.Supplier)
$DeviceBatchDetails.find('.supplier').text(response.Supplier); $DeviceBatchSummary.find('.supplier').text(response.Supplier);
else else
$DeviceBatchDetails.find('.supplier').text('Unknown'); $DeviceBatchSummary.find('.supplier').text('Unknown');
$DeviceBatchDetails.find('.purchaseDate').text(jsonDate(response.PurchaseDate, 'Unknown')); $DeviceBatchSummary.find('.purchaseDate').text(jsonDate(response.PurchaseDate, 'Unknown'));
$DeviceBatchDetails.find('.warrantyValidUntil').text(jsonDate(response.WarrantyValidUntil, 'Unknown')); $DeviceBatchSummary.find('.warrantyValidUntil').text(jsonDate(response.WarrantyValidUntil, 'Unknown'));
if (response.InsuranceSupplier) if (response.InsuranceSupplier)
$DeviceBatchDetails.find('.insuranceSupplier').text(response.InsuranceSupplier); $DeviceBatchSummary.find('.insuranceSupplier').text(response.InsuranceSupplier);
else else
$DeviceBatchDetails.find('.insuranceSupplier').text('Unknown'); $DeviceBatchSummary.find('.insuranceSupplier').text('Unknown');
$DeviceBatchDetails.find('.insuredUntil').text(jsonDate(response.InsuredUntil, 'Unknown')); $DeviceBatchSummary.find('.insuredUntil').text(jsonDate(response.InsuredUntil, 'Unknown'));
$DeviceBatchDetails.slideDown('fast'); if (initUpdate){
$DeviceBatchEdit.fadeIn(); $DeviceBatchSummary.show();
} else { $DeviceBatchDetails.show();
alert('Unable to load Device Batch details:\n' + response); initUpdate = false;
} }else{
}); $DeviceBatchSummary.slideDown('fast');
}; $DeviceBatchDetails.fadeIn();
$DeviceBatchEdit.click(function () { }
window.location.href = '@(Url.Action(MVC.Config.DeviceBatch.Index(null)))/' + $DeviceBatchId.val(); } else {
}); alert('Unable to load Device Batch details:\n' + response);
$DeviceBatchId.change(function () { }
var $this = $(this); });
var $ajaxLoading = $this.next('.ajaxLoading').show(); };
$DeviceBatchDetails.hide(); $DeviceBatchDetails.click(function () {
$DeviceBatchEdit.hide(); window.location.href = '@(Url.Action(MVC.Config.DeviceBatch.Index(null)))/' + $DeviceBatchId.val();
var data = { DeviceBatchId: $this.val() }; });
$.getJSON('@(Url.Action(MVC.API.Device.UpdateDeviceBatchId(Model.Device.SerialNumber)))', data, function (response, result) { $DeviceBatchId.change(function () {
if (result != 'success' || response != 'OK') { var $this = $(this);
alert('Unable to change Device Batch:\n' + response); var $ajaxLoading = $this.next('.ajaxLoading').show();
$ajaxLoading.hide(); $DeviceBatchSummary.hide();
} else { $DeviceBatchDetails.hide();
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); var data = { DeviceBatchId: $this.val() };
if ($DeviceBatchId.val()) $.getJSON('@(Url.Action(MVC.API.Device.UpdateDeviceBatchId(Model.Device.SerialNumber)))', data, function (response, result) {
updateDetails($DeviceBatchId.val()); if (result != 'success' || response != 'OK') {
} alert('Unable to change Device Batch:\n' + response);
}); $ajaxLoading.hide();
}); } else {
$DeviceBatchEdit.hide(); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
if ($DeviceBatchId.val()) if ($DeviceBatchId.val())
updateDetails($DeviceBatchId.val()); updateDetails($DeviceBatchId.val());
}); }
</script> });
<div id="deviceBatchDetails"> });
<table class="sub"> $DeviceBatchSummary.hide();
<tr> if ($DeviceBatchId.val()){
<th style="width: 50px"> initUpdate = true;
<strong>Purchased:</strong> updateDetails($DeviceBatchId.val());
</th> }
<td> });
Supplier: <span class="supplier"></span> </script>
<br /> <div id="deviceBatchSummary">
On: <span class="purchaseDate"></span> <table class="sub">
</td> <tr>
<th style="width: 50px"> <th style="width: 50px">
<strong>Warranty:</strong> <strong>Purchased:</strong>
</th> </th>
<td> <td>
Valid Until: <span class="warrantyValidUntil"></span> Supplier: <span class="supplier"></span>
</td> <br />
<th style="width: 50px"> On: <span class="purchaseDate"></span>
<strong>Insurance:</strong> </td>
</th> <th style="width: 50px">
<td> <strong>Warranty:</strong>
Supplier: <span class="insuranceSupplier"></span> </th>
<br /> <td>
Until: <span class="insuredUntil"></span> Valid Until: <span class="warrantyValidUntil"></span>
</td> </td>
</tr> <th style="width: 50px">
</table> <strong>Insurance:</strong>
</div> </th>
</td> <td>
</tr> Supplier: <span class="insuranceSupplier"></span>
<tr> <br />
<th class="name"> Until: <span class="insuredUntil"></span>
Profile: </td>
</th> </tr>
<td class="value"> </table>
@if (Model.Device.DecommissionedDate.HasValue) </div>
{ </td>
@Model.Device.DeviceProfile.ToString() </tr>
} <tr>
else <th class="name">
{ Profile:
@Html.DropDownListFor(m => m.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.Device.DeviceProfile)) </th>
@AjaxHelpers.AjaxLoader() <td class="value">
<script type="text/javascript"> @if (Model.Device.DecommissionedDate.HasValue)
$(function () { {
$('#Device_DeviceProfileId').change(function () { @Model.Device.DeviceProfile.ToString()
var $this = $(this); }
var $ajaxLoading = $this.next('.ajaxLoading').show(); else
var data = { DeviceProfileId: $this.val() }; {
$.getJSON('@(Url.Action(MVC.API.Device.UpdateDeviceProfileId(Model.Device.SerialNumber)))', data, function (response, result) { @Html.DropDownListFor(m => m.Device.DeviceProfileId, Model.DeviceProfiles.ToSelectListItems(Model.Device.DeviceProfile))
if (result != 'success' || response != 'OK') { @AjaxHelpers.AjaxLoader()<span id="deviceProfileDetails" class="icon16" title="Profile Details"></span>
alert('Unable to change Device Profile:\n' + response); <script type="text/javascript">
$ajaxLoading.hide(); $(function () {
} else { $('#Device_DeviceProfileId').change(function () {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); 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') {
</script> alert('Unable to change Device Profile:\n' + response);
} $ajaxLoading.hide();
</td> } else {
</tr> $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
<tr> }
<th class="name"> });
Created: });
</th> $('#deviceProfileDetails').click(function(){
<td class="value"> window.location.href = '@(Url.Action(MVC.Config.DeviceProfile.Index(null)))/' + $('#Device_DeviceProfileId').val();
@CommonHelpers.FriendlyDate(Model.Device.CreatedDate) });
</td> });
</tr> </script>
<tr> }
<th class="name"> </td>
Enrolment: </tr>
</th> <tr>
<td class="value"> <th class="name">
First: Created:
@CommonHelpers.FriendlyDate(Model.Device.EnrolledDate) </th>
@if (Model.Device.AllowUnauthenticatedEnrol) <td class="value">
{ @CommonHelpers.FriendlyDate(Model.Device.CreatedDate)
<a class="unlocked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "false", true))" title="Unauthenticated Enrolment is Allowed"> </td>
&nbsp;</a> </tr>
} <tr>
else <th class="name">
{ Enrolment:
<a class="locked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "true", true))" title="Unauthenticated Enrolment is Blocked"> </th>
&nbsp;</a> <td class="value">
} First:
<br /> @CommonHelpers.FriendlyDate(Model.Device.EnrolledDate)
Last: @if (Model.Device.AllowUnauthenticatedEnrol)
@CommonHelpers.FriendlyDate(Model.Device.LastEnrolDate) {
</td> <a class="unlocked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "false", true))" title="Unauthenticated Enrolment is Allowed">
</tr> &nbsp;</a>
<tr> }
<th class="name"> else
Decommissioned: {
</th> <a class="locked16" href="@Url.Action(MVC.API.Device.UpdateAllowUnauthenticatedEnrol(Model.Device.SerialNumber, "true", true))" title="Unauthenticated Enrolment is Blocked">
<td class="value"> &nbsp;</a>
@CommonHelpers.FriendlyDate(Model.Device.DecommissionedDate) }
</td> <br />
</tr> Last:
<tr> @CommonHelpers.FriendlyDate(Model.Device.LastEnrolDate)
<th class="name"> </td>
Last Network Logon: </tr>
</th> <tr>
<td class="value"> <th class="name">
<span id="lastNetworkLogonDate" class="nowrap">@CommonHelpers.FriendlyDate(Model.Device.LastNetworkLogonDate)</span> Decommissioned:
@if (!string.IsNullOrEmpty(Model.Device.ComputerName)) </th>
{ <td class="value">
<script type="text/javascript"> @CommonHelpers.FriendlyDate(Model.Device.DecommissionedDate)
$(function () { </td>
var span = $('#lastNetworkLogonDate'); </tr>
$('<span>').addClass('ajaxHelperIcon ajaxLoading ajaxShowInitially').attr('title', 'Loading...').appendTo(span); <tr>
<th class="name">
$.getJSON('@(Url.Action(MVC.API.Device.LastNetworkLogonDate(Model.Device.SerialNumber)))', function (response, result) { Last Network Logon:
if (result != 'success') { </th>
alert('Unable to retrieve latest network logon date:\n' + response); <td class="value">
$('<span>').addClass('smallMessage').text('[may not be current]').appendTo(span); <span id="lastNetworkLogonDate" class="nowrap">@CommonHelpers.FriendlyDate(Model.Device.LastNetworkLogonDate)</span>
} else { @if (!string.IsNullOrEmpty(Model.Device.ComputerName))
span.find('.ajaxLoading').hide(); {
span.attr('title', response.Formatted).text(response.Friendly); <script type="text/javascript">
} $(function () {
}); var span = $('#lastNetworkLogonDate');
}); $('<span>').addClass('ajaxHelperIcon ajaxLoading ajaxShowInitially').attr('title', 'Loading...').appendTo(span);
</script>
} $.getJSON('@(Url.Action(MVC.API.Device.LastNetworkLogonDate(Model.Device.SerialNumber)))', function (response, result) {
</td> if (result != 'success') {
</tr> alert('Unable to retrieve latest network logon date:\n' + response);
@if (!Model.Device.DecommissionedDate.HasValue) $('<span>').addClass('smallMessage').text('[may not be current]').appendTo(span);
{ } else {
<tr> span.find('.ajaxLoading').hide();
<th class="name"> span.attr('title', response.Formatted).text(response.Friendly);
Assigned User: }
</th> });
<td class="value"> });
@Html.TextBoxFor(m => m.Device.AssignedUser, new { userId = Model.Device.AssignedUserId }) </script>
@AjaxHelpers.AjaxRemove() }
@AjaxHelpers.AjaxLoader() </td>
<br /> </tr>
<a href="#" id="Device_AssignedUser_History_Trigger" class="smallLink">Show Assignment @if (!Model.Device.DecommissionedDate.HasValue)
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> <tr>
<div id="dialogRemoveAssignedUser" title="Remove this Device Assignment?"> <th class="name">
<p> Assigned User:
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span> </th>
Are you sure?</p> <td class="value">
</div> @Html.TextBoxFor(m => m.Device.AssignedUser, new { userId = Model.Device.AssignedUserId })
<script type="text/javascript"> @AjaxHelpers.AjaxRemove()
$(function () { @AjaxHelpers.AjaxLoader()
// Common Objects <br />
var $assignedUser = $('#Device_AssignedUser'); <a href="#" id="Device_AssignedUser_History_Trigger" class="smallLink">Show Assignment
var $ajaxLoading = $assignedUser.nextAll('.ajaxLoading').first(); History (<span id="Device_AssignedUser_History_RecordCount"></span>)</a> <span id="Device_AssignedUser_History_None"
var $ajaxRemove = $assignedUser.nextAll('.ajaxRemove').first(); class="smallMessage" style="display: none">No Assignment History Available</span>
<div id="dialogRemoveAssignedUser" title="Remove this Device Assignment?">
// Assign User <p>
$assignedUser <span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
.watermark('No Assigned User') Are you sure?</p>
.focus(function () { $assignedUser.select() }) </div>
.autocomplete({ <script type="text/javascript">
source: '@(Url.Action(MVC.API.User.UpstreamUsers()))', $(function () {
minLength: 2, // Common Objects
focus: function (e, ui) { var $assignedUser = $('#Device_AssignedUser');
$assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')'); var $ajaxLoading = $assignedUser.nextAll('.ajaxLoading').first();
return false; var $ajaxRemove = $assignedUser.nextAll('.ajaxRemove').first();
},
select: function (e, ui) { // Assign User
updateAssignedUser(ui.item.Id); $assignedUser
$assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')'); .watermark('No Assigned User')
return false; .focus(function () { $assignedUser.select() })
} .autocomplete({
}) source: '@(Url.Action(MVC.API.User.UpstreamUsers()))',
.data('autocomplete')._renderItem = function (ul, item) { minLength: 2,
return $("<li></li>") focus: function (e, ui) {
.data("item.autocomplete", item) $assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
.append("<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>") return false;
.appendTo(ul); },
}; select: function (e, ui) {
updateAssignedUser(ui.item.Id);
var $dialogRemoveAssignedUser = $('#dialogRemoveAssignedUser'); $assignedUser.val(ui.item.DisplayName + ' (' + ui.item.Id + ')');
$dialogRemoveAssignedUser.dialog({ return false;
resizable: false, }
height: 140, })
modal: true, .data('ui-autocomplete')._renderItem = function (ul, item) {
autoOpen: false, return $("<li></li>")
buttons: { .data("item.autocomplete", item)
"Remove": function () { .append("<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
updateAssignedUser(''); .appendTo(ul);
$assignedUser.val(''); };
$dialogRemoveAssignedUser.dialog("close");
}, var $dialogRemoveAssignedUser = $('#dialogRemoveAssignedUser');
"Cancel": function () { $dialogRemoveAssignedUser.dialog({
$dialogRemoveAssignedUser.dialog("close"); resizable: false,
} height: 140,
} modal: true,
}); autoOpen: false,
buttons: {
// Un-Assign User "Remove": function () {
if ($assignedUser.val() != '') updateAssignedUser('');
$ajaxRemove.show(); $assignedUser.val('');
$ajaxRemove.click(function () { $dialogRemoveAssignedUser.dialog("close");
$dialogRemoveAssignedUser.dialog('open'); },
return false; "Cancel": function () {
}); $dialogRemoveAssignedUser.dialog("close");
}
// History }
var deviceUserAssignmentCount = @(Model.Device.DeviceUserAssignments.Count); });
if (deviceUserAssignmentCount > 0) {
$('#Device_AssignedUser_History_Trigger').click(function () { // Un-Assign User
$(this).hide(); if ($assignedUser.val() != '')
$('#Device_AssignedUser_History_Host').show(); $ajaxRemove.show();
$('#Device_AssignedUser_History').slideDown('slow'); $ajaxRemove.click(function () {
return false; $dialogRemoveAssignedUser.dialog('open');
}); return false;
var recordCountText = deviceUserAssignmentCount + ' record'; });
if (deviceUserAssignmentCount != 1)
recordCountText += 's'; // History
$('#Device_AssignedUser_History_RecordCount').text(recordCountText) var deviceUserAssignmentCount = @(Model.Device.DeviceUserAssignments.Count);
} if (deviceUserAssignmentCount > 0) {
else { $('#Device_AssignedUser_History_Trigger').click(function () {
$('#Device_AssignedUser_History_Trigger').hide(); $(this).hide();
$('#Device_AssignedUser_History_None').show(); $('#Device_AssignedUser_History_Host').show();
}; $('#Device_AssignedUser_History').slideDown('slow');
return false;
function updateAssignedUser(userId) { });
$ajaxLoading.show(); var recordCountText = deviceUserAssignmentCount + ' record';
$ajaxRemove.hide(); if (deviceUserAssignmentCount != 1)
var data = { AssignedUserId: userId }; recordCountText += 's';
$.getJSON('@(Url.Action(MVC.API.Device.UpdateAssignedUserId(Model.Device.SerialNumber)))', data, function (response, result) { $('#Device_AssignedUser_History_RecordCount').text(recordCountText)
if (result != 'success' || response != 'OK') { }
alert('Unable to change Assigned User:\n' + response); else {
$ajaxLoading.hide(); $('#Device_AssignedUser_History_Trigger').hide();
} else { $('#Device_AssignedUser_History_None').show();
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); };
if (userId != '')
$ajaxRemove.fadeIn('fast'); 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) {
</script> if (result != 'success' || response != 'OK') {
</td> alert('Unable to change Assigned User:\n' + response);
</tr> $ajaxLoading.hide();
} } else {
<tr id="Device_AssignedUser_History_Host" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")"> $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
<td colspan="2"> if (userId != '')
<div id="Device_AssignedUser_History" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")"> $ajaxRemove.fadeIn('fast');
<h2> }
Assigned User History</h2> });
@Html.Partial(MVC.Device.Views._DeviceUserAssignmentHistoryTable, Model.Device) }
</div> });
</td> </script>
</tr> </td>
<tr> </tr>
<th class="name"> }
Generate Documents: <tr id="Device_AssignedUser_History_Host" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")">
</th> <td colspan="2">
<td class="value" colspan="3"> <div id="Device_AssignedUser_History" style="@(Model.Device.DecommissionedDate.HasValue ? "" : "display: none")">
@Html.DropDownList("DocumentTemplates", Model.DocumentTemplatesSelectListItems) <h2>
<script type="text/javascript"> Assigned User History</h2>
$(function () { @Html.Partial(MVC.Device.Views._DeviceUserAssignmentHistoryTable, Model.Device)
var generatePdfUrl = '@Url.Action(MVC.API.Device.GeneratePdf(Model.Device.SerialNumber, null))?DocumentTemplateId='; </div>
var $documentTemplates = $('#DocumentTemplates'); </td>
$documentTemplates.change(function () { </tr>
var v = $documentTemplates.val(); <tr>
if (v) { <th class="name">
window.location.href = generatePdfUrl + v; Generate Documents:
$documentTemplates.val(''); </th>
} <td class="value" colspan="3">
}); @Html.DropDownList("DocumentTemplates", Model.DocumentTemplatesSelectListItems)
}); <script type="text/javascript">
</script> $(function () {
</td> var generatePdfUrl = '@Url.Action(MVC.API.Device.GeneratePdf(Model.Device.SerialNumber, null))?DocumentTemplateId=';
</tr> var $documentTemplates = $('#DocumentTemplates');
</table> $documentTemplates.change(function () {
</td> var v = $documentTemplates.val();
<td class="model"> if (v) {
<table> window.location.href = generatePdfUrl + v;
<tr> $documentTemplates.val('');
<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> </script>
</td> </td>
</tr> </tr>
</table> </table>
</td> </td>
</tr> <td class="model">
</table> <table>
<h2> <tr>
Certificates</h2> <td class="subtleHighlight">
@Html.Partial(MVC.Device.Views._CertificateTable, Model.Certificates) <img alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.Device.DeviceModelId, Model.Device.DeviceModel.ImageHash()))" />
<h2> <h2>
Attachments</h2> <a href="@(Url.Action(MVC.Config.DeviceModel.Index(Model.Device.DeviceModelId)))">@Model.Device.DeviceModel.ToString()</a></h2>
@Html.Partial(MVC.Device.Views.DeviceParts.Resources, Model) </td>
<h2> </tr>
Jobs</h2> </table>
@Html.Partial(MVC.Shared.Views._JobTable, Model.Jobs) </td>
@Html.Partial(MVC.Device.Views._DeviceActions, Model.Device) </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)
File diff suppressed because it is too large. Load diff
-58
View File
@@ -1,58 +0,0 @@
@model Disco.Web.Models.Job.CreateModel
@{
ViewBag.Title = Html.ToBreadcrumb("Jobs", MVC.Job.Index(), "Create");
}
@using (Html.BeginForm(MVC.Job.Create(), FormMethod.Post))
{
@Html.ValidationSummary(false)
@Html.HiddenFor(m => m.DeviceSerialNumber)
@Html.HiddenFor(m => m.UserId)
<div id="createDialog" class="form" style="width: 650px">
<table>
<tr>
<td colspan="2">
@Html.Partial(MVC.Job.Views._CreateSubject, Model)
</td>
</tr>
<tr id="trJobType">
<th class="name">
Type:
</th>
<td class="value">
@CommonHelpers.RadioButtonList("Type", Model.JobTypes.ToSelectListItems(Model.Type), 2)
</td>
</tr>
@foreach (var jt in Model.JobTypes)
{
<tr id="trJobSubType@(jt.Id)" class="jobSubTypes">
<th class="name">
@jt.Description<br />
Sub Types
</th>
<td class="value">
@CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 2)
</td>
</tr>
}
</table>
<p class="actions">
<input type="submit" class="button" value="Create" />
</p>
<script type="text/javascript">
$(function () {
$trJobType = $('#trJobType');
$jobTypes = $trJobType.find('input[type="radio"]');
$jobTypes.change(jobTypeChange);
jobTypeChange();
function jobTypeChange() {
$('.jobSubTypes').hide();
var jobType = $jobTypes.filter(':checked').val();
$('#trJobSubType' + jobType).show();
}
});
</script>
</div>
}
+301 -301
View File
@@ -1,301 +1,301 @@
@model Disco.Web.Models.Job.CreateModel @model Disco.Web.Models.Job.CreateModel
@{ @{
Layout = "~/Views/Shared/_DialogLayout.cshtml"; Layout = "~/Views/Shared/_DialogLayout.cshtml";
ViewBag.Title = Html.ToBreadcrumb("Jobs", MVC.Job.Index(), "Create"); ViewBag.Title = Html.ToBreadcrumb("Jobs", MVC.Job.Index(), "Create");
} }
<div id="createJob_Container"> <div id="createJob_Container">
@using (Html.BeginForm(MVC.Job.Create(), FormMethod.Post)) @using (Html.BeginForm(MVC.Job.Create(), FormMethod.Post))
{ {
@Html.HiddenFor(m => m.DeviceSerialNumber) @Html.HiddenFor(m => m.DeviceSerialNumber)
@Html.HiddenFor(m => m.UserId) @Html.HiddenFor(m => m.UserId)
@Html.HiddenFor(m => m.QuickLogDestinationUrl) @Html.HiddenFor(m => m.QuickLogDestinationUrl)
@Html.Partial(MVC.Job.Views._CreateSubject, Model) @Html.Partial(MVC.Job.Views._CreateSubject, Model)
@Html.ValidationSummary(true) @Html.ValidationSummary(true)
<div class="createJob_Component"> <div class="createJob_Component">
<div id="createJob_Type"> <div id="createJob_Type">
<h3>Type</h3> <h3>Type</h3>
@Html.ValidationMessageFor(m => m.Type) @Html.ValidationMessageFor(m => m.Type)
@CommonHelpers.RadioButtonList("Type", Model.JobTypes.ToSelectListItems(Model.Type), 3) @CommonHelpers.RadioButtonList("Type", Model.JobTypes.ToSelectListItems(Model.Type), 3)
@Html.ValidationMessageFor(m => m.SubTypes) @Html.ValidationMessageFor(m => m.SubTypes)
</div> </div>
<div id="createJob_SubTypes"> <div id="createJob_SubTypes">
@foreach (var jt in Model.JobTypes) @foreach (var jt in Model.JobTypes)
{ {
<div id="createJob_SubType_@(jt.Id)" class="createJob_SubType"> <div id="createJob_SubType_@(jt.Id)" class="createJob_SubType">
<div class="createJob_SubTypes"> <div class="createJob_SubTypes">
@CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 3) @CommonHelpers.CheckBoxList("SubTypes", Model.JobSubTypes.Where(jst => jst.JobTypeId == jt.Id).ToList().ToSelectListItems(Model.SubTypes), 3)
</div> </div>
</div> </div>
} }
</div> </div>
</div> </div>
<div id="createJob_DeviceHeldContainer" class="createJob_Component"> <div id="createJob_DeviceHeldContainer" class="createJob_Component">
@Html.ValidationMessageFor(m => m.DeviceHeld) @Html.ValidationMessageFor(m => m.DeviceHeld)
@Html.HiddenFor(m => m.DeviceHeld) @Html.HiddenFor(m => m.DeviceHeld)
<table> <table>
<tr> <tr>
<td> <td>
<h3>Device Held</h3> <h3>Device Held</h3>
</td> </td>
<td> <td>
<input id="createJob_DeviceHeld" name="_DeviceHeld" type="radio" value="true" /><label for="createJob_DeviceHeld">Held</label> <input id="createJob_DeviceHeld" name="_DeviceHeld" type="radio" value="true" /><label for="createJob_DeviceHeld">Held</label>
</td> </td>
<td> <td>
<input id="createJob_DeviceNotHeld" name="_DeviceHeld" type="radio" value="false" /><label for="createJob_DeviceNotHeld">Not Held</label> <input id="createJob_DeviceNotHeld" name="_DeviceHeld" type="radio" value="false" /><label for="createJob_DeviceNotHeld">Not Held</label>
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
<div id="createJob_CommentsContainer" class="createJob_Component"> <div id="createJob_CommentsContainer" class="createJob_Component">
<table> <table>
<tr> <tr>
<td> <td>
<h3>Comments</h3> <h3>Comments</h3>
</td> </td>
<td> <td>
@Html.EditorFor(m => m.Comments) @Html.EditorFor(m => m.Comments)
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
<div id="createJob_QuickLogContainer" class="createJob_Component"> <div id="createJob_QuickLogContainer" class="createJob_Component">
<div id="createJob_QuickLogAutoCloseContainer"> <div id="createJob_QuickLogAutoCloseContainer">
<h3>Quick Log</h3> <h3>Quick Log</h3>
<input id="createJob_QuickLog" name="QuickLog" type="checkbox" value="true" /><label for="createJob_QuickLog">Automatically close this job</label> <input id="createJob_QuickLog" name="QuickLog" type="checkbox" value="true" /><label for="createJob_QuickLog">Automatically close this job</label>
</div> </div>
<div id="createJob_QuickLogTaskTimeContainer"> <div id="createJob_QuickLogTaskTimeContainer">
<h3>Task Time</h3> <h3>Task Time</h3>
@Html.ValidationMessageFor(m => m.QuickLogTaskTimeMinutes) @Html.ValidationMessageFor(m => m.QuickLogTaskTimeMinutes)
<input type="radio" id="createJob_TaskTime10" name="QuickLogTaskTimeMinutes" value="10" /><label for="createJob_TaskTime10"> 10 Minutes</label> <input type="radio" id="createJob_TaskTime10" name="QuickLogTaskTimeMinutes" value="10" /><label for="createJob_TaskTime10"> 10 Minutes</label>
<input type="radio" id="createJob_TaskTime30" name="QuickLogTaskTimeMinutes" value="30" /><label for="createJob_TaskTime30"> 30 Minutes</label> <input type="radio" id="createJob_TaskTime30" name="QuickLogTaskTimeMinutes" value="30" /><label for="createJob_TaskTime30"> 30 Minutes</label>
<input type="radio" id="createJob_TaskTime60" name="QuickLogTaskTimeMinutes" value="60" /><label for="createJob_TaskTime60"> 1 Hour</label> <input type="radio" id="createJob_TaskTime60" name="QuickLogTaskTimeMinutes" value="60" /><label for="createJob_TaskTime60"> 1 Hour</label>
<input type="radio" id="createJob_TaskTime120" name="QuickLogTaskTimeMinutes" value="120" /><label for="createJob_TaskTime120"> 2 Hours</label> <input type="radio" id="createJob_TaskTime120" name="QuickLogTaskTimeMinutes" value="120" /><label for="createJob_TaskTime120"> 2 Hours</label>
<input type="radio" id="createJob_TaskTimeOther" name="QuickLogTaskTimeMinutes" value="" /><label for="createJob_TaskTimeOther"> Other</label> <input type="radio" id="createJob_TaskTimeOther" name="QuickLogTaskTimeMinutes" value="" /><label for="createJob_TaskTimeOther"> Other</label>
<span id="createJob_TaskTimeOtherMinutesContainer"> <span id="createJob_TaskTimeOtherMinutesContainer">
<input type="number" id="createJob_TaskTimeOtherMinutes" name="QuickLogTaskTimeMinutesOther" value="" disabled="disabled" /> <input type="number" id="createJob_TaskTimeOtherMinutes" name="QuickLogTaskTimeMinutesOther" value="" disabled="disabled" />
Minutes Minutes
</span> </span>
</div> </div>
</div> </div>
} }
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var discoDialogMethods; var discoDialogMethods;
var init = true; var init = true;
//#region Parent Dialog //#region Parent Dialog
if (window.parent && window.parent.document) { if (window.parent && window.parent.document) {
$('#QuickLogDestinationUrl').val(window.parent.window.location.href); $('#QuickLogDestinationUrl').val(window.parent.window.location.href);
var parentDialog = $('#createJobDialog', window.parent.document); var parentDialog = $('#createJobDialog', window.parent.document);
if (parentDialog.length > 0) { if (parentDialog.length > 0) {
discoDialogMethods = parentDialog[0].discoDialogMethods; discoDialogMethods = parentDialog[0].discoDialogMethods;
var buttons = { var buttons = {
"Create Job": function () { "Create Job": function () {
createJobForm.submit() createJobForm.submit()
}, },
Cancel: function () { Cancel: function () {
discoDialogMethods.close(); discoDialogMethods.close();
} }
} }
discoDialogMethods.setButtons(buttons); discoDialogMethods.setButtons(buttons);
} }
} }
//#endregion //#endregion
var createJobForm = $('form'); var createJobForm = $('form');
var validator = createJobForm.data('validator'); var validator = createJobForm.data('validator');
var unobtrusiveValidation = createJobForm.data('unobtrusiveValidation'); var unobtrusiveValidation = createJobForm.data('unobtrusiveValidation');
// Validate all Fields // Validate all Fields
validator.settings.ignore = ''; validator.settings.ignore = '';
//#region Job Type/SubTypes //#region Job Type/SubTypes
var $jobTypeContainer = $('#createJob_Type'); var $jobTypeContainer = $('#createJob_Type');
var $typeValidationMessage = $('[data-valmsg-for="Type"]', $jobTypeContainer) var $typeValidationMessage = $('[data-valmsg-for="Type"]', $jobTypeContainer)
var $subTypesValidationMessage = $('[data-valmsg-for="SubTypes"]', $jobTypeContainer) var $subTypesValidationMessage = $('[data-valmsg-for="SubTypes"]', $jobTypeContainer)
var $jobTypes = $jobTypeContainer.find('input[type="radio"]').change(jobTypeChange); var $jobTypes = $jobTypeContainer.find('input[type="radio"]').change(jobTypeChange);
$('#createJob_SubTypes').find('input[type="checkbox"]').change(jobSubTypeHighlight).each(jobSubTypeHighlight); $('#createJob_SubTypes').find('input[type="checkbox"]').change(jobSubTypeHighlight).each(jobSubTypeHighlight);
jobTypeChange(); jobTypeChange();
function jobSubTypeHighlight() { function jobSubTypeHighlight() {
var $this = $(this); var $this = $(this);
if ($this.is(':checked')) if ($this.is(':checked'))
$this.closest('li').addClass('highlight'); $this.closest('li').addClass('highlight');
else else
$this.closest('li').removeClass('highlight'); $this.closest('li').removeClass('highlight');
} }
function jobTypeChange() { function jobTypeChange() {
var $checkedItem = $jobTypes.filter(':checked'); var $checkedItem = $jobTypes.filter(':checked');
$jobTypes.closest('li').removeClass('highlight'); $jobTypes.closest('li').removeClass('highlight');
$checkedItem.closest('li').addClass('highlight'); $checkedItem.closest('li').addClass('highlight');
if (init) { if (init) {
var jobType = $checkedItem.val(); var jobType = $checkedItem.val();
$('#createJob_SubType_' + jobType).show(); $('#createJob_SubType_' + jobType).show();
} else { } else {
$('#createJob_SubTypes').find('.createJob_SubType:visible').slideUp(); $('#createJob_SubTypes').find('.createJob_SubType:visible').slideUp();
var jobType = $checkedItem.val(); var jobType = $checkedItem.val();
$('#createJob_SubType_' + jobType).slideDown(); $('#createJob_SubType_' + jobType).slideDown();
} }
} }
var additionalValidation = function (form) { var additionalValidation = function (form) {
var isValid = true; var isValid = true;
// Validate Type // Validate Type
var typeValue = $jobTypes.filter(':checked').val(); var typeValue = $jobTypes.filter(':checked').val();
if (typeValue) { if (typeValue) {
$typeValidationMessage.removeClass('field-validation-error').addClass('field-validation-valid'); $typeValidationMessage.removeClass('field-validation-error').addClass('field-validation-valid');
// Validate SubTypes // Validate SubTypes
if ($('#createJob_SubType_' + typeValue).find('input:checked').length > 0) { if ($('#createJob_SubType_' + typeValue).find('input:checked').length > 0) {
$subTypesValidationMessage.removeClass('field-validation-error').addClass('field-validation-valid'); $subTypesValidationMessage.removeClass('field-validation-error').addClass('field-validation-valid');
} else { } else {
$subTypesValidationMessage.text('At least one Job Sub Type is required').removeClass('field-validation-valid').addClass('field-validation-error'); $subTypesValidationMessage.text('At least one Job Sub Type is required').removeClass('field-validation-valid').addClass('field-validation-error');
isValid = false; isValid = false;
} }
} else { } else {
$typeValidationMessage.text('A Job Type is required').removeClass('field-validation-valid').addClass('field-validation-error'); $typeValidationMessage.text('A Job Type is required').removeClass('field-validation-valid').addClass('field-validation-error');
isValid = false; isValid = false;
} }
// Validate QuickLog Task Time // Validate QuickLog Task Time
if ($quickLog.is(':checked')) { if ($quickLog.is(':checked')) {
var selectedTime = $quickLogTaskTimes.filter(':checked'); var selectedTime = $quickLogTaskTimes.filter(':checked');
if (selectedTime.length > 0) { if (selectedTime.length > 0) {
if (selectedTime.val() === '') { if (selectedTime.val() === '') {
// Handle 'Other' // Handle 'Other'
var otherTime = parseInt($quickLogTaskTimeOtherMinutes.val()); var otherTime = parseInt($quickLogTaskTimeOtherMinutes.val());
if (!otherTime || otherTime <= 0) { if (!otherTime || otherTime <= 0) {
$quickLogTaskTimeValidationMessage.text('A Task Time is required').removeClass('field-validation-valid').addClass('field-validation-error'); $quickLogTaskTimeValidationMessage.text('A Task Time is required').removeClass('field-validation-valid').addClass('field-validation-error');
isValid = false; isValid = false;
} }
} else { } else {
$quickLogTaskTimeValidationMessage.removeClass('field-validation-valid').addClass('field-validation-error'); $quickLogTaskTimeValidationMessage.removeClass('field-validation-valid').addClass('field-validation-error');
} }
} else { } else {
$quickLogTaskTimeValidationMessage.text('A Task Time is required').removeClass('field-validation-valid').addClass('field-validation-error'); $quickLogTaskTimeValidationMessage.text('A Task Time is required').removeClass('field-validation-valid').addClass('field-validation-error');
isValid = false; isValid = false;
} }
} else { } else {
$quickLogTaskTimeValidationMessage.removeClass('field-validation-valid').addClass('field-validation-error'); $quickLogTaskTimeValidationMessage.removeClass('field-validation-valid').addClass('field-validation-error');
} }
return isValid; return isValid;
} }
validator.settings.submitHandler = function (form) { validator.settings.submitHandler = function (form) {
if (additionalValidation()) { if (additionalValidation()) {
discoDialogMethods.setButtons({}); discoDialogMethods.setButtons({});
form.submit(); form.submit();
} }
} }
//#endregion //#endregion
//#region DeviceHeld //#region DeviceHeld
var $deviceHeld = $('#DeviceHeld'); var $deviceHeld = $('#DeviceHeld');
if ($('#DeviceSerialNumber').val()) { if ($('#DeviceSerialNumber').val()) {
switch ($deviceHeld.val()) { switch ($deviceHeld.val()) {
case 'True': case 'True':
$('#createJob_DeviceHeld').attr('checked', 'checked'); $('#createJob_DeviceHeld').prop('checked', true);
$('#createJob_DeviceNotHeld').attr('checked', null); $('#createJob_DeviceNotHeld').prop('checked', false);
break; break;
case 'False': case 'False':
$('#createJob_DeviceHeld').attr('checked', null); $('#createJob_DeviceHeld').prop('checked', false);
$('#createJob_DeviceNotHeld').attr('checked', 'checked'); $('#createJob_DeviceNotHeld').prop('checked', true);
break; break;
default: default:
$('#createJob_DeviceHeld').attr('checked', null); $('#createJob_DeviceHeld').prop('checked', false);
$('#createJob_DeviceNotHeld').attr('checked', null); $('#createJob_DeviceNotHeld').prop('checked', false);
break; break;
} }
$('#createJob_DeviceHeldContainer').find('input[type="radio"]').change(function () { $('#createJob_DeviceHeldContainer').find('input[type="radio"]').change(function () {
// Update Hidden Field with Boolean Value // Update Hidden Field with Boolean Value
// Set DeviceHeld // Set DeviceHeld
var deviceHeldValue = ''; var deviceHeldValue = '';
if ($('#createJob_DeviceHeld').is(':checked')) if ($('#createJob_DeviceHeld').is(':checked'))
deviceHeldValue = 'True'; deviceHeldValue = 'True';
if ($('#createJob_DeviceNotHeld').is(':checked')) if ($('#createJob_DeviceNotHeld').is(':checked'))
deviceHeldValue = 'False'; deviceHeldValue = 'False';
$deviceHeld.val(deviceHeldValue).change(); $deviceHeld.val(deviceHeldValue).change();
}); });
} else { } else {
// No Device Associated // No Device Associated
$deviceHeld.val('False'); $deviceHeld.val('False');
$('#createJob_DeviceHeldContainer').hide(); $('#createJob_DeviceHeldContainer').hide();
} }
//#endregion //#endregion
//#region QuickLog //#region QuickLog
var $quickLog = $('#createJob_QuickLog'); var $quickLog = $('#createJob_QuickLog');
var $quickLogContainer = $('#createJob_QuickLogContainer'); var $quickLogContainer = $('#createJob_QuickLogContainer');
var $quickLogTaskTimeContainer = $('#createJob_QuickLogTaskTimeContainer'); var $quickLogTaskTimeContainer = $('#createJob_QuickLogTaskTimeContainer');
var $quickLogTaskTimes = $quickLogTaskTimeContainer.find('input[type="radio"]'); var $quickLogTaskTimes = $quickLogTaskTimeContainer.find('input[type="radio"]');
var $quickLogTaskTimeOtherMinutes = $('#createJob_TaskTimeOtherMinutes'); var $quickLogTaskTimeOtherMinutes = $('#createJob_TaskTimeOtherMinutes');
var $quickLogTaskTimeValidationMessage = $quickLogTaskTimeContainer.find('[data-valmsg-for="QuickLogTaskTimeMinutes"]'); var $quickLogTaskTimeValidationMessage = $quickLogTaskTimeContainer.find('[data-valmsg-for="QuickLogTaskTimeMinutes"]');
$deviceHeld.change(validateQuickLog); $deviceHeld.change(validateQuickLog);
$jobTypes.change(validateQuickLog); $jobTypes.change(validateQuickLog);
validateQuickLog(); validateQuickLog();
function validateQuickLog() { function validateQuickLog() {
var quickLogAllowed = false; var quickLogAllowed = false;
if ($deviceHeld.val() === 'True') { if ($deviceHeld.val() === 'True') {
quickLogAllowed = false; quickLogAllowed = false;
} else { } else {
var selectedType = $jobTypes.filter(':checked').val(); var selectedType = $jobTypes.filter(':checked').val();
switch (selectedType) { switch (selectedType) {
case 'HMisc': case 'HMisc':
case 'SApp': case 'SApp':
case 'SImg': case 'SImg':
case 'SOS': case 'SOS':
case 'UMgmt': case 'UMgmt':
quickLogAllowed = true; quickLogAllowed = true;
break; break;
default: default:
quickLogAllowed = false; quickLogAllowed = false;
break; break;
} }
} }
if (quickLogAllowed) { if (quickLogAllowed) {
$quickLogContainer.slideDown(); $quickLogContainer.slideDown();
} else { } else {
if (init) if (init)
$quickLogContainer.hide(); $quickLogContainer.hide();
else else
$quickLogContainer.slideUp(); $quickLogContainer.slideUp();
$quickLog.attr('checked', null).change(); $quickLog.prop('checked', false).change();
} }
} }
$quickLog.change(function () { $quickLog.change(function () {
if ($(this).is(':checked')) { if ($(this).is(':checked')) {
$quickLogTaskTimeContainer.slideDown(); $quickLogTaskTimeContainer.slideDown();
} else { } else {
$quickLogTaskTimeContainer.slideUp(); $quickLogTaskTimeContainer.slideUp();
} }
}); });
$quickLogTaskTimes.change(function () { $quickLogTaskTimes.change(function () {
if ($quickLogTaskTimes.filter(':checked').val() === "") { if ($quickLogTaskTimes.filter(':checked').val() === "") {
$('#createJob_TaskTimeOtherMinutesContainer').show(); $('#createJob_TaskTimeOtherMinutesContainer').show();
$quickLogTaskTimeOtherMinutes.attr('disabled', null).focus().select(); $quickLogTaskTimeOtherMinutes.attr('disabled', null).focus().select();
} else { } else {
$('#createJob_TaskTimeOtherMinutesContainer').hide(); $('#createJob_TaskTimeOtherMinutesContainer').hide();
$quickLogTaskTimeOtherMinutes.attr('disabled', 'disabled'); $quickLogTaskTimeOtherMinutes.attr('disabled', 'disabled');
} }
}); });
//#endregion //#endregion
init = false; init = false;
}); });
</script> </script>
</div> </div>
File diff suppressed because it is too large. Load diff
+187 -184
View File
@@ -1,184 +1,187 @@
@model Disco.Web.Models.Job.ShowModel @model Disco.Web.Models.Job.ShowModel
@{ @{
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-NumberFormatter"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-NumberFormatter");
} }
<table id="jobComponents"> <table id="jobComponents">
<tr> <tr>
<th> <th>
Description Description
</th> </th>
<th> <th>
Cost Cost
</th> </th>
<th class="actions"> <th class="actions">
&nbsp; &nbsp;
</th> </th>
</tr> </tr>
@foreach (var jc in Model.Job.JobComponents) @foreach (var jc in Model.Job.JobComponents)
{ {
<tr data-jobcomponentid="@jc.Id"> <tr data-jobcomponentid="@jc.Id">
<td> <td>
<input type="text" class="description" value="@jc.Description" /> <input type="text" class="description" value="@jc.Description" />
</td> </td>
<td> <td>
<input type="text" class="cost" value="@jc.Cost.ToString("C")" /> <input type="text" class="cost" value="@jc.Cost.ToString("C")" />
</td> </td>
<td> <td>
<span class="remove"></span> <span class="remove"></span>
</td> </td>
</tr> </tr>
} }
<tr> <tr>
<td> <td>
<a href="#" id="jobComponentsAdd">Add Component</a> <a href="#" id="jobComponentsAdd">Add Component</a>
</td> </td>
<td colspan="2" class="totalCost"> <td colspan="2" class="totalCost">
Total: <span id="jobComponentsTotalCost"></span> Total: <span id="jobComponentsTotalCost"></span>
</td> </td>
</tr> </tr>
</table> </table>
<div id="dialogRemoveComponent" title="Remove this Component?"> <div id="dialogRemoveComponent" title="Remove this Component?">
<p> <p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span> <span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure?</p> Are you sure?</p>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var $jobComponents = $('#jobComponents'); var $jobComponents = $('#jobComponents');
$jobComponents.find('input').live('change', updateComponent).focus(function () { $(this).select() }).filter('.cost'); $jobComponents.on('change', 'input', updateComponent);
$jobComponents.find('span.remove').live('click', removeComponent); $jobComponents.on('focus', 'input', function () { $(this).select() });
$('#jobComponentsAdd').click(function () {
var jc = $('<tr><td><input type="text" class="description" /></td><td><input type="text" class="cost" /></td><td><span class="remove"></span></td></tr>'); $jobComponents.on('click', 'span.remove', removeComponent);
jc.find('input').focus(function () { $(this).select() })
jc.insertBefore($jobComponents.find('tr').last()); $('#jobComponentsAdd').click(function () {
jc.find('input.description').focus(); var jc = $('<tr><td><input type="text" class="description" /></td><td><input type="text" class="cost" /></td><td><span class="remove"></span></td></tr>');
return false; jc.find('input').focus(function () { $(this).select() })
}); jc.insertBefore($jobComponents.find('tr').last());
jc.find('input.description').focus();
$('#dialogRemoveComponent').dialog({ return false;
resizable: false, });
height: 140,
modal: true, $('#dialogRemoveComponent').dialog({
autoOpen: false resizable: false,
}); height: 140,
modal: true,
function removeComponent() { autoOpen: false
var componentRow = $(this).closest('tr'); });
var id = componentRow.attr('data-jobcomponentid');
if (id) { function removeComponent() {
var data = { id: id }; var componentRow = $(this).closest('tr');
var id = componentRow.attr('data-jobcomponentid');
var $dialogRemoveComponent = $('#dialogRemoveComponent'); if (id) {
$dialogRemoveComponent.dialog("enable"); var data = { id: id };
$dialogRemoveComponent.dialog('option', 'buttons', {
"Remove": function () { var $dialogRemoveComponent = $('#dialogRemoveComponent');
$dialogRemoveComponent.dialog("disable"); $dialogRemoveComponent.dialog("enable");
$dialogRemoveComponent.dialog("option", "buttons", null); $dialogRemoveComponent.dialog('option', 'buttons', {
$.ajax({ "Remove": function () {
url: '@Url.Action(MVC.API.Job.ComponentRemove())', $dialogRemoveComponent.dialog("disable");
dataType: 'json', $dialogRemoveComponent.dialog("option", "buttons", null);
data: data, $.ajax({
success: function (d) { url: '@Url.Action(MVC.API.Job.ComponentRemove())',
if (d == 'OK') { dataType: 'json',
componentRow.remove(); data: data,
updateTotalCost(); success: function (d) {
} else { if (d == 'OK') {
alert('Unable to remove component: ' + d); componentRow.remove();
} updateTotalCost();
$dialogRemoveComponent.dialog("close"); } else {
}, alert('Unable to remove component: ' + d);
error: function (jqXHR, textStatus, errorThrown) { }
alert('Unable to remove component: ' + textStatus); $dialogRemoveComponent.dialog("close");
$dialogRemoveComponent.dialog("close"); },
} error: function (jqXHR, textStatus, errorThrown) {
}); alert('Unable to remove component: ' + textStatus);
}, $dialogRemoveComponent.dialog("close");
Cancel: function () { }
$dialogRemoveComponent.dialog("close"); });
} },
}); Cancel: function () {
$dialogRemoveComponent.dialog("close");
$dialogRemoveComponent.dialog('open'); }
});
} else {
// New - Remove $dialogRemoveComponent.dialog('open');
componentRow.remove();
updateTotalCost(); } else {
} // New - Remove
} componentRow.remove();
function updateTotalCost() { updateTotalCost();
var totalCost = 0; }
}
$jobComponents.find('input.cost').each(function () { function updateTotalCost() {
var v = $(this).val(); var totalCost = 0;
v = $.parseNumber(v, { format: '#,##0.00', locale: 'au' });
if (!isNaN(v)) $jobComponents.find('input.cost').each(function () {
totalCost += v; var v = $(this).val();
}); v = $.parseNumber(v, { format: '#,##0.00', locale: 'au' });
var totalCostFormatted = $.formatNumber(totalCost, { format: '#,##0.00', locale: 'au' }); if (!isNaN(v))
$('#jobComponentsTotalCost').text('$' + totalCostFormatted); totalCost += v;
} });
function updateComponent() { var totalCostFormatted = $.formatNumber(totalCost, { format: '#,##0.00', locale: 'au' });
var componentRow = $(this).closest('tr'); $('#jobComponentsTotalCost').text('$' + totalCostFormatted);
}
componentRow.find('input').attr('disabled', true).addClass('updating'); function updateComponent() {
var componentRow = $(this).closest('tr');
var id = componentRow.attr('data-jobcomponentid');
if (id) { componentRow.find('input').attr('disabled', true).addClass('updating');
// Update
var data = { var id = componentRow.attr('data-jobcomponentid');
id: id, if (id) {
Description: componentRow.find('input.description').val(), // Update
Cost: componentRow.find('input.cost').val() var data = {
}; id: id,
$.ajax({ Description: componentRow.find('input.description').val(),
url: '@Url.Action(MVC.API.Job.ComponentUpdate())', Cost: componentRow.find('input.cost').val()
dataType: 'json', };
data: data, $.ajax({
success: function (d) { url: '@Url.Action(MVC.API.Job.ComponentUpdate())',
componentRow.find('input').attr('disabled', false).removeClass('updating'); dataType: 'json',
if (d.Result == 'OK') { data: data,
componentRow.find('input.description').val(d.Component.Description); success: function (d) {
componentRow.find('input.cost').val(d.Component.Cost); componentRow.find('input').attr('disabled', false).removeClass('updating');
} else { if (d.Result == 'OK') {
alert('Unable to update component: ' + d.Result); componentRow.find('input.description').val(d.Component.Description);
} componentRow.find('input.cost').val(d.Component.Cost);
}, } else {
error: function (jqXHR, textStatus, errorThrown) { alert('Unable to update component: ' + d.Result);
alert('Unable to update component: ' + textStatus); }
} },
}); error: function (jqXHR, textStatus, errorThrown) {
} else { alert('Unable to update component: ' + textStatus);
// Add }
var data = { });
id: id, } else {
Description: componentRow.find('input.description').val(), // Add
Cost: componentRow.find('input.cost').val() var data = {
}; id: id,
$.ajax({ Description: componentRow.find('input.description').val(),
url: '@Url.Action(MVC.API.Job.ComponentAdd(Model.Job.Id, null, null))', Cost: componentRow.find('input.cost').val()
dataType: 'json', };
data: data, $.ajax({
success: function (d) { url: '@Url.Action(MVC.API.Job.ComponentAdd(Model.Job.Id, null, null))',
componentRow.find('input').attr('disabled', false).removeClass('updating'); dataType: 'json',
if (d.Result == 'OK') { data: data,
componentRow.attr('data-jobcomponentid', d.Component.Id); success: function (d) {
componentRow.find('input.description').val(d.Component.Description); componentRow.find('input').attr('disabled', false).removeClass('updating');
componentRow.find('input.cost').val(d.Component.Cost); if (d.Result == 'OK') {
} else { componentRow.attr('data-jobcomponentid', d.Component.Id);
alert('Unable to add component: ' + d.Result); componentRow.find('input.description').val(d.Component.Description);
} componentRow.find('input.cost').val(d.Component.Cost);
}, } else {
error: function (jqXHR, textStatus, errorThrown) { alert('Unable to add component: ' + d.Result);
alert('Unable to add component: ' + textStatus); }
} },
}); error: function (jqXHR, textStatus, errorThrown) {
} alert('Unable to add component: ' + textStatus);
updateTotalCost(); }
} });
updateTotalCost(); }
updateTotalCost();
}); }
</script> updateTotalCost();
});
</script>
@@ -1,294 +1,295 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.17929
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Disco.Web.Views.Job.JobParts namespace Disco.Web.Views.Job.JobParts
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web; using System.Web;
using System.Web.Helpers; using System.Web.Helpers;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using System.Web.Security; using System.Web.Security;
using System.Web.UI; using System.Web.UI;
using System.Web.WebPages; using System.Web.WebPages;
using Disco.BI.Extensions; using Disco.BI.Extensions;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Web; using Disco.Web;
using Disco.Web.Extensions; using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Job/JobParts/Components.cshtml")] [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Job/JobParts/Components.cshtml")]
public class Components : System.Web.Mvc.WebViewPage<Disco.Web.Models.Job.ShowModel> public class Components : System.Web.Mvc.WebViewPage<Disco.Web.Models.Job.ShowModel>
{ {
public Components() public Components()
{ {
} }
public override void Execute() public override void Execute()
{ {
#line 2 "..\..\Views\Job\JobParts\Components.cshtml" #line 2 "..\..\Views\Job\JobParts\Components.cshtml"
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-NumberFormatter"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-NumberFormatter");
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n<table"); WriteLiteral("\r\n<table");
WriteLiteral(" id=\"jobComponents\""); WriteLiteral(" id=\"jobComponents\"");
WriteLiteral(">\r\n <tr>\r\n <th>\r\n Description\r\n </th>\r\n <th>\r\n" + WriteLiteral(">\r\n <tr>\r\n <th>\r\n Description\r\n </th>\r\n <th>\r\n" +
" Cost\r\n </th>\r\n <th"); " Cost\r\n </th>\r\n <th");
WriteLiteral(" class=\"actions\""); WriteLiteral(" class=\"actions\"");
WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n </tr>\r\n"); WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n </tr>\r\n");
#line 17 "..\..\Views\Job\JobParts\Components.cshtml" #line 17 "..\..\Views\Job\JobParts\Components.cshtml"
#line default #line default
#line hidden #line hidden
#line 17 "..\..\Views\Job\JobParts\Components.cshtml" #line 17 "..\..\Views\Job\JobParts\Components.cshtml"
foreach (var jc in Model.Job.JobComponents) foreach (var jc in Model.Job.JobComponents)
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <tr"); WriteLiteral(" <tr");
WriteLiteral(" data-jobcomponentid=\""); WriteLiteral(" data-jobcomponentid=\"");
#line 19 "..\..\Views\Job\JobParts\Components.cshtml" #line 19 "..\..\Views\Job\JobParts\Components.cshtml"
Write(jc.Id); Write(jc.Id);
#line default #line default
#line hidden #line hidden
WriteLiteral("\""); WriteLiteral("\"");
WriteLiteral(">\r\n <td>\r\n <input"); WriteLiteral(">\r\n <td>\r\n <input");
WriteLiteral(" type=\"text\""); WriteLiteral(" type=\"text\"");
WriteLiteral(" class=\"description\""); WriteLiteral(" class=\"description\"");
WriteAttribute("value", Tuple.Create(" value=\"", 513), Tuple.Create("\"", 536) WriteAttribute("value", Tuple.Create(" value=\"", 513), Tuple.Create("\"", 536)
#line 21 "..\..\Views\Job\JobParts\Components.cshtml" #line 21 "..\..\Views\Job\JobParts\Components.cshtml"
, Tuple.Create(Tuple.Create("", 521), Tuple.Create<System.Object, System.Int32>(jc.Description , Tuple.Create(Tuple.Create("", 521), Tuple.Create<System.Object, System.Int32>(jc.Description
#line default #line default
#line hidden #line hidden
, 521), false) , 521), false)
); );
WriteLiteral(" />\r\n </td>\r\n <td>\r\n <input"); WriteLiteral(" />\r\n </td>\r\n <td>\r\n <input");
WriteLiteral(" type=\"text\""); WriteLiteral(" type=\"text\"");
WriteLiteral(" class=\"cost\""); WriteLiteral(" class=\"cost\"");
WriteAttribute("value", Tuple.Create(" value=\"", 626), Tuple.Create("\"", 656) WriteAttribute("value", Tuple.Create(" value=\"", 626), Tuple.Create("\"", 656)
#line 24 "..\..\Views\Job\JobParts\Components.cshtml" #line 24 "..\..\Views\Job\JobParts\Components.cshtml"
, Tuple.Create(Tuple.Create("", 634), Tuple.Create<System.Object, System.Int32>(jc.Cost.ToString("C") , Tuple.Create(Tuple.Create("", 634), Tuple.Create<System.Object, System.Int32>(jc.Cost.ToString("C")
#line default #line default
#line hidden #line hidden
, 634), false) , 634), false)
); );
WriteLiteral(" />\r\n </td>\r\n <td>\r\n <span"); WriteLiteral(" />\r\n </td>\r\n <td>\r\n <span");
WriteLiteral(" class=\"remove\""); WriteLiteral(" class=\"remove\"");
WriteLiteral("></span>\r\n </td>\r\n </tr>\r\n"); WriteLiteral("></span>\r\n </td>\r\n </tr>\r\n");
#line 30 "..\..\Views\Job\JobParts\Components.cshtml" #line 30 "..\..\Views\Job\JobParts\Components.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" <tr>\r\n <td>\r\n <a"); WriteLiteral(" <tr>\r\n <td>\r\n <a");
WriteLiteral(" href=\"#\""); WriteLiteral(" href=\"#\"");
WriteLiteral(" id=\"jobComponentsAdd\""); WriteLiteral(" id=\"jobComponentsAdd\"");
WriteLiteral(">Add Component</a>\r\n </td>\r\n <td"); WriteLiteral(">Add Component</a>\r\n </td>\r\n <td");
WriteLiteral(" colspan=\"2\""); WriteLiteral(" colspan=\"2\"");
WriteLiteral(" class=\"totalCost\""); WriteLiteral(" class=\"totalCost\"");
WriteLiteral(">\r\n Total: <span"); WriteLiteral(">\r\n Total: <span");
WriteLiteral(" id=\"jobComponentsTotalCost\""); WriteLiteral(" id=\"jobComponentsTotalCost\"");
WriteLiteral("></span>\r\n </td>\r\n </tr>\r\n</table>\r\n<div"); WriteLiteral("></span>\r\n </td>\r\n </tr>\r\n</table>\r\n<div");
WriteLiteral(" id=\"dialogRemoveComponent\""); WriteLiteral(" id=\"dialogRemoveComponent\"");
WriteLiteral(" title=\"Remove this Component?\""); WriteLiteral(" title=\"Remove this Component?\"");
WriteLiteral(">\r\n <p>\r\n <span"); WriteLiteral(">\r\n <p>\r\n <span");
WriteLiteral(" class=\"ui-icon ui-icon-alert\""); WriteLiteral(" class=\"ui-icon ui-icon-alert\"");
WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\""); WriteLiteral(" style=\"float: left; margin: 0 7px 20px 0;\"");
WriteLiteral("></span>\r\n Are you sure?</p>\r\n</div>\r\n<script"); WriteLiteral("></span>\r\n Are you sure?</p>\r\n</div>\r\n<script");
WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n var $jobComponents = $(\'#jobComponents\');\r\n\r\n " + WriteLiteral(">\r\n $(function () {\r\n var $jobComponents = $(\'#jobComponents\');\r\n\r\n " +
" $jobComponents.find(\'input\').live(\'change\', updateComponent).focus(function " + " $jobComponents.on(\'change\', \'input\', updateComponent);\r\n $jobComponen" +
"() { $(this).select() }).filter(\'.cost\');\r\n $jobComponents.find(\'span.rem" + "ts.on(\'focus\', \'input\', function () { $(this).select() });\r\n\r\n\r\n $jobComp" +
"ove\').live(\'click\', removeComponent);\r\n\r\n $(\'#jobComponentsAdd\').click(fu" + "onents.on(\'click\', \'span.remove\', removeComponent);\r\n\r\n $(\'#jobComponents" +
"nction () {\r\n var jc = $(\'<tr><td><input type=\"text\" class=\"descripti" + "Add\').click(function () {\r\n var jc = $(\'<tr><td><input type=\"text\" cl" +
"on\" /></td><td><input type=\"text\" class=\"cost\" /></td><td><span class=\"remove\"><" + "ass=\"description\" /></td><td><input type=\"text\" class=\"cost\" /></td><td><span cl" +
"/span></td></tr>\');\r\n jc.find(\'input\').focus(function () { $(this).se" + "ass=\"remove\"></span></td></tr>\');\r\n jc.find(\'input\').focus(function (" +
"lect() })\r\n jc.insertBefore($jobComponents.find(\'tr\').last());\r\n " + ") { $(this).select() })\r\n jc.insertBefore($jobComponents.find(\'tr\').l" +
" jc.find(\'input.description\').focus();\r\n return false;\r\n " + "ast());\r\n jc.find(\'input.description\').focus();\r\n return f" +
" });\r\n\r\n $(\'#dialogRemoveComponent\').dialog({\r\n resizable: fal" + "alse;\r\n });\r\n\r\n $(\'#dialogRemoveComponent\').dialog({\r\n " +
"se,\r\n height: 140,\r\n modal: true,\r\n autoOpen: f" + "resizable: false,\r\n height: 140,\r\n modal: true,\r\n " +
"alse\r\n });\r\n\r\n function removeComponent() {\r\n var compo" + " autoOpen: false\r\n });\r\n\r\n function removeComponent() {\r\n " +
"nentRow = $(this).closest(\'tr\');\r\n var id = componentRow.attr(\'data-j" + " var componentRow = $(this).closest(\'tr\');\r\n var id = componentRo" +
"obcomponentid\');\r\n if (id) {\r\n var data = { id: id };\r" + "w.attr(\'data-jobcomponentid\');\r\n if (id) {\r\n var data " +
"\n\r\n var $dialogRemoveComponent = $(\'#dialogRemoveComponent\');\r\n " + "= { id: id };\r\n\r\n var $dialogRemoveComponent = $(\'#dialogRemoveCo" +
" $dialogRemoveComponent.dialog(\"enable\");\r\n $dialogR" + "mponent\');\r\n $dialogRemoveComponent.dialog(\"enable\");\r\n " +
"emoveComponent.dialog(\'option\', \'buttons\', {\r\n \"Remove\": func" + " $dialogRemoveComponent.dialog(\'option\', \'buttons\', {\r\n " +
"tion () {\r\n $dialogRemoveComponent.dialog(\"disable\");\r\n " + "\"Remove\": function () {\r\n $dialogRemoveComponent.dialog(\"" +
" $dialogRemoveComponent.dialog(\"option\", \"buttons\", null);\r" + "disable\");\r\n $dialogRemoveComponent.dialog(\"option\", \"but" +
"\n $.ajax({\r\n url: \'"); "tons\", null);\r\n $.ajax({\r\n url" +
": \'");
#line 80 "..\..\Views\Job\JobParts\Components.cshtml"
Write(Url.Action(MVC.API.Job.ComponentRemove())); #line 83 "..\..\Views\Job\JobParts\Components.cshtml"
Write(Url.Action(MVC.API.Job.ComponentRemove()));
#line default
#line hidden #line default
WriteLiteral("\',\r\n dataType: \'json\',\r\n da" + #line hidden
"ta: data,\r\n success: function (d) {\r\n " + WriteLiteral("\',\r\n dataType: \'json\',\r\n da" +
" if (d == \'OK\') {\r\n componentR" + "ta: data,\r\n success: function (d) {\r\n " +
"ow.remove();\r\n updateTotalCost();\r\n " + " if (d == \'OK\') {\r\n componentR" +
" } else {\r\n alert(\'Unabl" + "ow.remove();\r\n updateTotalCost();\r\n " +
"e to remove component: \' + d);\r\n }\r\n " + " } else {\r\n alert(\'Unabl" +
" $dialogRemoveComponent.dialog(\"close\");\r\n " + "e to remove component: \' + d);\r\n }\r\n " +
" },\r\n error: function (jqXHR, textStatus, erro" + " $dialogRemoveComponent.dialog(\"close\");\r\n " +
"rThrown) {\r\n alert(\'Unable to remove component: \'" + " },\r\n error: function (jqXHR, textStatus, erro" +
" + textStatus);\r\n $dialogRemoveComponent.dialog(\"" + "rThrown) {\r\n alert(\'Unable to remove component: \'" +
"close\");\r\n }\r\n });\r\n " + " + textStatus);\r\n $dialogRemoveComponent.dialog(\"" +
" },\r\n Cancel: function () {\r\n " + "close\");\r\n }\r\n });\r\n " +
" $dialogRemoveComponent.dialog(\"close\");\r\n }\r\n " + " },\r\n Cancel: function () {\r\n " +
" });\r\n\r\n $dialogRemoveComponent.dialog(\'open\');\r\n\r\n } " + " $dialogRemoveComponent.dialog(\"close\");\r\n }\r\n " +
"else {\r\n // New - Remove\r\n componentRow.remove();\r" + " });\r\n\r\n $dialogRemoveComponent.dialog(\'open\');\r\n\r\n } " +
"\n updateTotalCost();\r\n }\r\n }\r\n function " + "else {\r\n // New - Remove\r\n componentRow.remove();\r" +
"updateTotalCost() {\r\n var totalCost = 0;\r\n\r\n $jobComponent" + "\n updateTotalCost();\r\n }\r\n }\r\n function " +
"s.find(\'input.cost\').each(function () {\r\n var v = $(this).val();\r" + "updateTotalCost() {\r\n var totalCost = 0;\r\n\r\n $jobComponent" +
"\n v = $.parseNumber(v, { format: \'#,##0.00\', locale: \'au\' });\r\n " + "s.find(\'input.cost\').each(function () {\r\n var v = $(this).val();\r" +
" if (!isNaN(v))\r\n totalCost += v;\r\n }" + "\n v = $.parseNumber(v, { format: \'#,##0.00\', locale: \'au\' });\r\n " +
");\r\n var totalCostFormatted = $.formatNumber(totalCost, { format: \'#," + " if (!isNaN(v))\r\n totalCost += v;\r\n }" +
"##0.00\', locale: \'au\' });\r\n $(\'#jobComponentsTotalCost\').text(\'$\' + t" + ");\r\n var totalCostFormatted = $.formatNumber(totalCost, { format: \'#," +
"otalCostFormatted);\r\n }\r\n function updateComponent() {\r\n " + "##0.00\', locale: \'au\' });\r\n $(\'#jobComponentsTotalCost\').text(\'$\' + t" +
" var componentRow = $(this).closest(\'tr\');\r\n\r\n componentRow.find(\'in" + "otalCostFormatted);\r\n }\r\n function updateComponent() {\r\n " +
"put\').attr(\'disabled\', true).addClass(\'updating\');\r\n\r\n var id = compo" + " var componentRow = $(this).closest(\'tr\');\r\n\r\n componentRow.find(\'in" +
"nentRow.attr(\'data-jobcomponentid\');\r\n if (id) {\r\n // " + "put\').attr(\'disabled\', true).addClass(\'updating\');\r\n\r\n var id = compo" +
"Update\r\n var data = {\r\n id: id,\r\n " + "nentRow.attr(\'data-jobcomponentid\');\r\n if (id) {\r\n // " +
" Description: componentRow.find(\'input.description\').val(),\r\n " + "Update\r\n var data = {\r\n id: id,\r\n " +
" Cost: componentRow.find(\'input.cost\').val()\r\n };\r\n " + " Description: componentRow.find(\'input.description\').val(),\r\n " +
" $.ajax({\r\n url: \'"); " Cost: componentRow.find(\'input.cost\').val()\r\n };\r\n " +
" $.ajax({\r\n url: \'");
#line 137 "..\..\Views\Job\JobParts\Components.cshtml"
Write(Url.Action(MVC.API.Job.ComponentUpdate())); #line 140 "..\..\Views\Job\JobParts\Components.cshtml"
Write(Url.Action(MVC.API.Job.ComponentUpdate()));
#line default
#line hidden #line default
WriteLiteral(@"', #line hidden
dataType: 'json', WriteLiteral(@"',
data: data, dataType: 'json',
success: function (d) { data: data,
componentRow.find('input').attr('disabled', false).removeClass('updating'); success: function (d) {
if (d.Result == 'OK') { componentRow.find('input').attr('disabled', false).removeClass('updating');
componentRow.find('input.description').val(d.Component.Description); if (d.Result == 'OK') {
componentRow.find('input.cost').val(d.Component.Cost); componentRow.find('input.description').val(d.Component.Description);
} else { componentRow.find('input.cost').val(d.Component.Cost);
alert('Unable to update component: ' + d.Result); } else {
} alert('Unable to update component: ' + d.Result);
}, }
error: function (jqXHR, textStatus, errorThrown) { },
alert('Unable to update component: ' + textStatus); error: function (jqXHR, textStatus, errorThrown) {
} alert('Unable to update component: ' + textStatus);
}); }
} else { });
// Add } else {
var data = { // Add
id: id, var data = {
Description: componentRow.find('input.description').val(), id: id,
Cost: componentRow.find('input.cost').val() Description: componentRow.find('input.description').val(),
}; Cost: componentRow.find('input.cost').val()
$.ajax({ };
url: '"); $.ajax({
url: '");
#line 161 "..\..\Views\Job\JobParts\Components.cshtml"
Write(Url.Action(MVC.API.Job.ComponentAdd(Model.Job.Id, null, null))); #line 164 "..\..\Views\Job\JobParts\Components.cshtml"
Write(Url.Action(MVC.API.Job.ComponentAdd(Model.Job.Id, null, null)));
#line default
#line hidden #line default
WriteLiteral(@"', #line hidden
dataType: 'json', WriteLiteral(@"',
data: data, dataType: 'json',
success: function (d) { data: data,
componentRow.find('input').attr('disabled', false).removeClass('updating'); success: function (d) {
if (d.Result == 'OK') { componentRow.find('input').attr('disabled', false).removeClass('updating');
componentRow.attr('data-jobcomponentid', d.Component.Id); if (d.Result == 'OK') {
componentRow.find('input.description').val(d.Component.Description); componentRow.attr('data-jobcomponentid', d.Component.Id);
componentRow.find('input.cost').val(d.Component.Cost); componentRow.find('input.description').val(d.Component.Description);
} else { componentRow.find('input.cost').val(d.Component.Cost);
alert('Unable to add component: ' + d.Result); } else {
} alert('Unable to add component: ' + d.Result);
}, }
error: function (jqXHR, textStatus, errorThrown) { },
alert('Unable to add component: ' + textStatus); error: function (jqXHR, textStatus, errorThrown) {
} alert('Unable to add component: ' + textStatus);
}); }
} });
updateTotalCost(); }
} updateTotalCost();
updateTotalCost(); }
updateTotalCost();
});
</script> });
"); </script>
");
}
} }
} }
#pragma warning restore 1591 }
#pragma warning restore 1591
+90 -90
View File
@@ -1,90 +1,90 @@
@model Disco.Web.Models.Job.ShowModel @model Disco.Web.Models.Job.ShowModel
@{ @{
var validFlags = Model.Job.ValidFlagsGrouped(); var validFlags = Model.Job.ValidFlagsGrouped();
} }
<div id="jobDetailTab-Flags" class="jobPart"> <div id="jobDetailTab-Flags" class="jobPart">
<table id="jobFlags"> <table id="jobFlags">
@foreach (var flagGroup in validFlags) @foreach (var flagGroup in validFlags)
{ {
<tr> <tr>
<th> <th>
<span class="flagGroupName">@flagGroup.Key</span><br /> <span class="flagGroupName">@flagGroup.Key</span><br />
@AjaxHelpers.AjaxLoader() @AjaxHelpers.AjaxLoader()
</th> </th>
<td> <td>
@foreach (var flagItem in flagGroup.Value) @foreach (var flagItem in flagGroup.Value)
{ {
<div> <div>
<input type="checkbox" value="@flagItem.Item1" id="jobFlag_@(flagItem.Item1)" @(flagItem.Item3 ? new HtmlString("checked=\"checked\"") : new HtmlString(string.Empty)) /><label id="jobFlagLabel_@(flagItem.Item1)" for="jobFlag_@(flagItem.Item1)">@flagItem.Item2</label></div> <input type="checkbox" value="@flagItem.Item1" id="jobFlag_@(flagItem.Item1)" @(flagItem.Item3 ? new HtmlString("checked=\"checked\"") : new HtmlString(string.Empty)) /><label id="jobFlagLabel_@(flagItem.Item1)" for="jobFlag_@(flagItem.Item1)">@flagItem.Item2</label></div>
} }
</td> </td>
</tr> </tr>
} }
</table> </table>
<div id="dialogFlagsAction" title="Add Flag"> <div id="dialogFlagsAction" title="Add Flag">
@using (Html.BeginForm(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, true))) @using (Html.BeginForm(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, true)))
{ {
<input id="dialogFlagsActionFlag" type="hidden" name="Flag" value="0" /> <input id="dialogFlagsActionFlag" type="hidden" name="Flag" value="0" />
<h3> <h3>
Reason:</h3> Reason:</h3>
<p> <p>
<textarea name="Reason" class="block"></textarea> <textarea name="Reason" class="block"></textarea>
</p> </p>
} }
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$('#jobDetailTabItems').append('<li><a href="#jobDetailTab-Flags">Flags</a></li>'); $('#jobDetailTabItems').append('<li><a href="#jobDetailTab-Flags">Flags</a></li>');
$(function () { $(function () {
var $flagCheckboxes = $('#jobFlags').find('input[type="checkbox"]'); var $flagCheckboxes = $('#jobFlags').find('input[type="checkbox"]');
var $dialogFlagsAction = $('#dialogFlagsAction'); var $dialogFlagsAction = $('#dialogFlagsAction');
var $flagCheckbox; var $flagCheckbox;
var updateFlags = function () { var updateFlags = function () {
$flagCheckbox = $(this); $flagCheckbox = $(this);
var flagValue = $flagCheckbox.val(); var flagValue = $flagCheckbox.val();
if ($flagCheckbox.is(':checked')) { if ($flagCheckbox.is(':checked')) {
// Add // Add
$('#dialogFlagsActionFlag').val(flagValue); $('#dialogFlagsActionFlag').val(flagValue);
var title = 'Add Flag: ' + $flagCheckbox.closest('tr').find('th .flagGroupName').text() + ': ' + $('#jobFlagLabel_' + flagValue).text(); var title = 'Add Flag: ' + $flagCheckbox.closest('tr').find('th .flagGroupName').text() + ': ' + $('#jobFlagLabel_' + flagValue).text();
$dialogFlagsAction.dialog('option', 'title', title); $dialogFlagsAction.dialog('option', 'title', title);
$dialogFlagsAction.dialog('open'); $dialogFlagsAction.dialog('open');
} else { } else {
// Remove // Remove
var $ajaxLoading = $flagCheckbox.closest('tr').find('span.ajaxLoading'); var $ajaxLoading = $flagCheckbox.closest('tr').find('span.ajaxLoading');
$ajaxLoading.show(); $ajaxLoading.show();
$.getJSON('@(Url.Action(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, false)))', { Flag: '-' + flagValue }, function (response, result) { $.getJSON('@(Url.Action(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, false)))', { Flag: '-' + flagValue }, function (response, result) {
if (result != 'success' || response != 'OK') { if (result != 'success' || response != 'OK') {
alert('Unable to change Flag:\n' + response); alert('Unable to change Flag:\n' + response);
$ajaxLoading.hide(); $ajaxLoading.hide();
} else { } else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} }
}) })
} }
}; };
$dialogFlagsAction.dialog({ $dialogFlagsAction.dialog({
resizable: false, resizable: false,
height: 240, height: 240,
modal: true, modal: true,
autoOpen: false, autoOpen: false,
buttons: { buttons: {
"Add": function () { "Add": function () {
var $this = $(this); var $this = $(this);
$this.dialog("disable"); $this.dialog("disable");
$this.dialog("option", "buttons", null); $this.dialog("option", "buttons", null);
$this.find('form').first().submit(); $this.find('form').first().submit();
}, },
Cancel: function () { Cancel: function () {
$(this).dialog("close"); $(this).dialog("close");
} }
}, },
close: function () { close: function () {
$flagCheckbox.attr('checked', false); $flagCheckbox.prop('checked', false);
} }
}); });
$flagCheckboxes.click(updateFlags); $flagCheckboxes.click(updateFlags);
}); });
</script> </script>
</div> </div>
+327 -327
View File
@@ -1,327 +1,327 @@
#pragma warning disable 1591 #pragma warning disable 1591
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.17929
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Disco.Web.Views.Job.JobParts namespace Disco.Web.Views.Job.JobParts
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Web; using System.Web;
using System.Web.Helpers; using System.Web.Helpers;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using System.Web.Security; using System.Web.Security;
using System.Web.UI; using System.Web.UI;
using System.Web.WebPages; using System.Web.WebPages;
using Disco.BI.Extensions; using Disco.BI.Extensions;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Web; using Disco.Web;
using Disco.Web.Extensions; using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Job/JobParts/Flags.cshtml")] [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Job/JobParts/Flags.cshtml")]
public class Flags : System.Web.Mvc.WebViewPage<Disco.Web.Models.Job.ShowModel> public class Flags : System.Web.Mvc.WebViewPage<Disco.Web.Models.Job.ShowModel>
{ {
public Flags() public Flags()
{ {
} }
public override void Execute() public override void Execute()
{ {
#line 2 "..\..\Views\Job\JobParts\Flags.cshtml" #line 2 "..\..\Views\Job\JobParts\Flags.cshtml"
var validFlags = Model.Job.ValidFlagsGrouped(); var validFlags = Model.Job.ValidFlagsGrouped();
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n<div"); WriteLiteral("\r\n<div");
WriteLiteral(" id=\"jobDetailTab-Flags\""); WriteLiteral(" id=\"jobDetailTab-Flags\"");
WriteLiteral(" class=\"jobPart\""); WriteLiteral(" class=\"jobPart\"");
WriteLiteral(">\r\n <table"); WriteLiteral(">\r\n <table");
WriteLiteral(" id=\"jobFlags\""); WriteLiteral(" id=\"jobFlags\"");
WriteLiteral(">\r\n"); WriteLiteral(">\r\n");
#line 7 "..\..\Views\Job\JobParts\Flags.cshtml" #line 7 "..\..\Views\Job\JobParts\Flags.cshtml"
#line default #line default
#line hidden #line hidden
#line 7 "..\..\Views\Job\JobParts\Flags.cshtml" #line 7 "..\..\Views\Job\JobParts\Flags.cshtml"
foreach (var flagGroup in validFlags) foreach (var flagGroup in validFlags)
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <tr>\r\n <th>\r\n <span"); WriteLiteral(" <tr>\r\n <th>\r\n <span");
WriteLiteral(" class=\"flagGroupName\""); WriteLiteral(" class=\"flagGroupName\"");
WriteLiteral(">"); WriteLiteral(">");
#line 11 "..\..\Views\Job\JobParts\Flags.cshtml" #line 11 "..\..\Views\Job\JobParts\Flags.cshtml"
Write(flagGroup.Key); Write(flagGroup.Key);
#line default #line default
#line hidden #line hidden
WriteLiteral("</span><br />\r\n"); WriteLiteral("</span><br />\r\n");
WriteLiteral(" "); WriteLiteral(" ");
#line 12 "..\..\Views\Job\JobParts\Flags.cshtml" #line 12 "..\..\Views\Job\JobParts\Flags.cshtml"
Write(AjaxHelpers.AjaxLoader()); Write(AjaxHelpers.AjaxLoader());
#line default #line default
#line hidden #line hidden
WriteLiteral("\r\n </th>\r\n <td>\r\n"); WriteLiteral("\r\n </th>\r\n <td>\r\n");
#line 15 "..\..\Views\Job\JobParts\Flags.cshtml" #line 15 "..\..\Views\Job\JobParts\Flags.cshtml"
#line default #line default
#line hidden #line hidden
#line 15 "..\..\Views\Job\JobParts\Flags.cshtml" #line 15 "..\..\Views\Job\JobParts\Flags.cshtml"
foreach (var flagItem in flagGroup.Value) foreach (var flagItem in flagGroup.Value)
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <div>\r\n <input"); WriteLiteral(" <div>\r\n <input");
WriteLiteral(" type=\"checkbox\""); WriteLiteral(" type=\"checkbox\"");
WriteAttribute("value", Tuple.Create(" value=\"", 609), Tuple.Create("\"", 632) WriteAttribute("value", Tuple.Create(" value=\"", 609), Tuple.Create("\"", 632)
#line 18 "..\..\Views\Job\JobParts\Flags.cshtml" #line 18 "..\..\Views\Job\JobParts\Flags.cshtml"
, Tuple.Create(Tuple.Create("", 617), Tuple.Create<System.Object, System.Int32>(flagItem.Item1 , Tuple.Create(Tuple.Create("", 617), Tuple.Create<System.Object, System.Int32>(flagItem.Item1
#line default #line default
#line hidden #line hidden
, 617), false) , 617), false)
); );
WriteAttribute("id", Tuple.Create(" id=\"", 633), Tuple.Create("\"", 663) WriteAttribute("id", Tuple.Create(" id=\"", 633), Tuple.Create("\"", 663)
, Tuple.Create(Tuple.Create("", 638), Tuple.Create("jobFlag_", 638), true) , Tuple.Create(Tuple.Create("", 638), Tuple.Create("jobFlag_", 638), true)
#line 18 "..\..\Views\Job\JobParts\Flags.cshtml" #line 18 "..\..\Views\Job\JobParts\Flags.cshtml"
, Tuple.Create(Tuple.Create("", 646), Tuple.Create<System.Object, System.Int32>(flagItem.Item1 , Tuple.Create(Tuple.Create("", 646), Tuple.Create<System.Object, System.Int32>(flagItem.Item1
#line default #line default
#line hidden #line hidden
, 646), false) , 646), false)
); );
WriteLiteral(" "); WriteLiteral(" ");
#line 18 "..\..\Views\Job\JobParts\Flags.cshtml" #line 18 "..\..\Views\Job\JobParts\Flags.cshtml"
Write(flagItem.Item3 ? new HtmlString("checked=\"checked\"") : new HtmlString(string.Empty)); Write(flagItem.Item3 ? new HtmlString("checked=\"checked\"") : new HtmlString(string.Empty));
#line default #line default
#line hidden #line hidden
WriteLiteral(" /><label"); WriteLiteral(" /><label");
WriteAttribute("id", Tuple.Create(" id=\"", 762), Tuple.Create("\"", 797) WriteAttribute("id", Tuple.Create(" id=\"", 762), Tuple.Create("\"", 797)
, Tuple.Create(Tuple.Create("", 767), Tuple.Create("jobFlagLabel_", 767), true) , Tuple.Create(Tuple.Create("", 767), Tuple.Create("jobFlagLabel_", 767), true)
#line 18 "..\..\Views\Job\JobParts\Flags.cshtml" #line 18 "..\..\Views\Job\JobParts\Flags.cshtml"
, Tuple.Create(Tuple.Create("", 780), Tuple.Create<System.Object, System.Int32>(flagItem.Item1 , Tuple.Create(Tuple.Create("", 780), Tuple.Create<System.Object, System.Int32>(flagItem.Item1
#line default #line default
#line hidden #line hidden
, 780), false) , 780), false)
); );
WriteAttribute("for", Tuple.Create(" for=\"", 798), Tuple.Create("\"", 829) WriteAttribute("for", Tuple.Create(" for=\"", 798), Tuple.Create("\"", 829)
, Tuple.Create(Tuple.Create("", 804), Tuple.Create("jobFlag_", 804), true) , Tuple.Create(Tuple.Create("", 804), Tuple.Create("jobFlag_", 804), true)
#line 18 "..\..\Views\Job\JobParts\Flags.cshtml" #line 18 "..\..\Views\Job\JobParts\Flags.cshtml"
, Tuple.Create(Tuple.Create("", 812), Tuple.Create<System.Object, System.Int32>(flagItem.Item1 , Tuple.Create(Tuple.Create("", 812), Tuple.Create<System.Object, System.Int32>(flagItem.Item1
#line default #line default
#line hidden #line hidden
, 812), false) , 812), false)
); );
WriteLiteral(">"); WriteLiteral(">");
#line 18 "..\..\Views\Job\JobParts\Flags.cshtml" #line 18 "..\..\Views\Job\JobParts\Flags.cshtml"
Write(flagItem.Item2); Write(flagItem.Item2);
#line default #line default
#line hidden #line hidden
WriteLiteral("</label></div>\r\n"); WriteLiteral("</label></div>\r\n");
#line 19 "..\..\Views\Job\JobParts\Flags.cshtml" #line 19 "..\..\Views\Job\JobParts\Flags.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" </td>\r\n </tr>\r\n"); WriteLiteral(" </td>\r\n </tr>\r\n");
#line 22 "..\..\Views\Job\JobParts\Flags.cshtml" #line 22 "..\..\Views\Job\JobParts\Flags.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" </table>\r\n <div"); WriteLiteral(" </table>\r\n <div");
WriteLiteral(" id=\"dialogFlagsAction\""); WriteLiteral(" id=\"dialogFlagsAction\"");
WriteLiteral(" title=\"Add Flag\""); WriteLiteral(" title=\"Add Flag\"");
WriteLiteral(">\r\n"); WriteLiteral(">\r\n");
#line 25 "..\..\Views\Job\JobParts\Flags.cshtml" #line 25 "..\..\Views\Job\JobParts\Flags.cshtml"
#line default #line default
#line hidden #line hidden
#line 25 "..\..\Views\Job\JobParts\Flags.cshtml" #line 25 "..\..\Views\Job\JobParts\Flags.cshtml"
using (Html.BeginForm(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, true))) using (Html.BeginForm(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, true)))
{ {
#line default #line default
#line hidden #line hidden
WriteLiteral(" <input"); WriteLiteral(" <input");
WriteLiteral(" id=\"dialogFlagsActionFlag\""); WriteLiteral(" id=\"dialogFlagsActionFlag\"");
WriteLiteral(" type=\"hidden\""); WriteLiteral(" type=\"hidden\"");
WriteLiteral(" name=\"Flag\""); WriteLiteral(" name=\"Flag\"");
WriteLiteral(" value=\"0\""); WriteLiteral(" value=\"0\"");
WriteLiteral(" />\r\n"); WriteLiteral(" />\r\n");
WriteLiteral(" <h3>\r\n Reason:</h3>\r\n"); WriteLiteral(" <h3>\r\n Reason:</h3>\r\n");
WriteLiteral(" <p>\r\n <textarea"); WriteLiteral(" <p>\r\n <textarea");
WriteLiteral(" name=\"Reason\""); WriteLiteral(" name=\"Reason\"");
WriteLiteral(" class=\"block\""); WriteLiteral(" class=\"block\"");
WriteLiteral("></textarea>\r\n </p>\r\n"); WriteLiteral("></textarea>\r\n </p>\r\n");
#line 33 "..\..\Views\Job\JobParts\Flags.cshtml" #line 33 "..\..\Views\Job\JobParts\Flags.cshtml"
} }
#line default #line default
#line hidden #line hidden
WriteLiteral(" </div>\r\n <script"); WriteLiteral(" </div>\r\n <script");
WriteLiteral(" type=\"text/javascript\""); WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@"> WriteLiteral(@">
$('#jobDetailTabItems').append('<li><a href=""#jobDetailTab-Flags"">Flags</a></li>'); $('#jobDetailTabItems').append('<li><a href=""#jobDetailTab-Flags"">Flags</a></li>');
$(function () { $(function () {
var $flagCheckboxes = $('#jobFlags').find('input[type=""checkbox""]'); var $flagCheckboxes = $('#jobFlags').find('input[type=""checkbox""]');
var $dialogFlagsAction = $('#dialogFlagsAction'); var $dialogFlagsAction = $('#dialogFlagsAction');
var $flagCheckbox; var $flagCheckbox;
var updateFlags = function () { var updateFlags = function () {
$flagCheckbox = $(this); $flagCheckbox = $(this);
var flagValue = $flagCheckbox.val(); var flagValue = $flagCheckbox.val();
if ($flagCheckbox.is(':checked')) { if ($flagCheckbox.is(':checked')) {
// Add // Add
$('#dialogFlagsActionFlag').val(flagValue); $('#dialogFlagsActionFlag').val(flagValue);
var title = 'Add Flag: ' + $flagCheckbox.closest('tr').find('th .flagGroupName').text() + ': ' + $('#jobFlagLabel_' + flagValue).text(); var title = 'Add Flag: ' + $flagCheckbox.closest('tr').find('th .flagGroupName').text() + ': ' + $('#jobFlagLabel_' + flagValue).text();
$dialogFlagsAction.dialog('option', 'title', title); $dialogFlagsAction.dialog('option', 'title', title);
$dialogFlagsAction.dialog('open'); $dialogFlagsAction.dialog('open');
} else { } else {
// Remove // Remove
var $ajaxLoading = $flagCheckbox.closest('tr').find('span.ajaxLoading'); var $ajaxLoading = $flagCheckbox.closest('tr').find('span.ajaxLoading');
$ajaxLoading.show(); $ajaxLoading.show();
$.getJSON('"); $.getJSON('");
#line 56 "..\..\Views\Job\JobParts\Flags.cshtml" #line 56 "..\..\Views\Job\JobParts\Flags.cshtml"
Write(Url.Action(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, false))); Write(Url.Action(MVC.API.Job.UpdateFlag(Model.Job.Id, null, null, false)));
#line default #line default
#line hidden #line hidden
WriteLiteral(@"', { Flag: '-' + flagValue }, function (response, result) { WriteLiteral(@"', { Flag: '-' + flagValue }, function (response, result) {
if (result != 'success' || response != 'OK') { if (result != 'success' || response != 'OK') {
alert('Unable to change Flag:\n' + response); alert('Unable to change Flag:\n' + response);
$ajaxLoading.hide(); $ajaxLoading.hide();
} else { } else {
$ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow');
} }
}) })
} }
}; };
$dialogFlagsAction.dialog({ $dialogFlagsAction.dialog({
resizable: false, resizable: false,
height: 240, height: 240,
modal: true, modal: true,
autoOpen: false, autoOpen: false,
buttons: { buttons: {
""Add"": function () { ""Add"": function () {
var $this = $(this); var $this = $(this);
$this.dialog(""disable""); $this.dialog(""disable"");
$this.dialog(""option"", ""buttons"", null); $this.dialog(""option"", ""buttons"", null);
$this.find('form').first().submit(); $this.find('form').first().submit();
}, },
Cancel: function () { Cancel: function () {
$(this).dialog(""close""); $(this).dialog(""close"");
} }
}, },
close: function () { close: function () {
$flagCheckbox.attr('checked', false); $flagCheckbox.prop('checked', false);
} }
}); });
$flagCheckboxes.click(updateFlags); $flagCheckboxes.click(updateFlags);
}); });
</script> </script>
</div> </div>
"); ");
} }
} }
} }
#pragma warning restore 1591 #pragma warning restore 1591
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -1,34 +0,0 @@
@model Disco.Web.Models.Job.CreateModel
<table class="subtleHighlight">
<tr>
<td style="width: 50%">
<h2>
Device</h2>
@if (Model.Device == null)
{
<span class="smallMessage">No Device referenced to this Job</span>
}
else
{
<span><strong>Serial Number:</strong> @Html.ActionLink(Model.Device.SerialNumber, MVC.Device.Show(Model.Device.SerialNumber))</span><br />
<span><strong>Name:</strong> @Model.Device.ComputerName</span><br />
<span><strong>Model:</strong> @Model.Device.DeviceModel.ToString()</span><br />
<img alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.Device.DeviceModelId, Model.Device.DeviceModel.ImageHash()))" />
}
</td>
<td style="width: 50%">
<h2>
User</h2>
@if (Model.User == null)
{
<span class="smallMessage">No User referenced to this Job</span>
}
else
{
<span><strong>Id:</strong> @Html.ActionLink(Model.User.Id, MVC.User.Show(Model.User.Id))</span><br />
<span><strong>Name:</strong> @Model.User.DisplayName</span><br />
<span><strong>Type:</strong> @Model.User.Type</span>
}
</td>
</tr>
</table>
@@ -1,229 +0,0 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Views.Job
{
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.Optimization;
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", "1.5.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Job/_CreateSubject-Old.cshtml")]
public class CreateSubject_Old : System.Web.Mvc.WebViewPage<Disco.Web.Models.Job.CreateModel>
{
public CreateSubject_Old()
{
}
public override void Execute()
{
WriteLiteral("<table");
WriteLiteral(" class=\"subtleHighlight\"");
WriteLiteral(">\r\n <tr>\r\n <td");
WriteLiteral(" style=\"width: 50%\"");
WriteLiteral(">\r\n <h2>\r\n Device</h2>\r\n");
#line 7 "..\..\Views\Job\_CreateSubject-Old.cshtml"
#line default
#line hidden
#line 7 "..\..\Views\Job\_CreateSubject-Old.cshtml"
if (Model.Device == null)
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">No Device referenced to this Job</span>\r\n");
#line 10 "..\..\Views\Job\_CreateSubject-Old.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <span><strong>Serial Number:</strong> ");
#line 13 "..\..\Views\Job\_CreateSubject-Old.cshtml"
Write(Html.ActionLink(Model.Device.SerialNumber, MVC.Device.Show(Model.Device.SerialNumber)));
#line default
#line hidden
WriteLiteral("</span>");
WriteLiteral("<br />\r\n");
WriteLiteral(" <span><strong>Name:</strong> ");
#line 14 "..\..\Views\Job\_CreateSubject-Old.cshtml"
Write(Model.Device.ComputerName);
#line default
#line hidden
WriteLiteral("</span>");
WriteLiteral("<br />\r\n");
WriteLiteral(" <span><strong>Model:</strong> ");
#line 15 "..\..\Views\Job\_CreateSubject-Old.cshtml"
Write(Model.Device.DeviceModel.ToString());
#line default
#line hidden
WriteLiteral("</span>");
WriteLiteral("<br />\r\n");
WriteLiteral(" <img");
WriteLiteral(" alt=\"Model Image\"");
WriteAttribute("src", Tuple.Create(" src=\"", 730), Tuple.Create("\"", 840)
#line 16 "..\..\Views\Job\_CreateSubject-Old.cshtml"
, Tuple.Create(Tuple.Create("", 736), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.DeviceModel.Image(Model.Device.DeviceModelId, Model.Device.DeviceModel.ImageHash()))
#line default
#line hidden
, 736), false)
);
WriteLiteral(" />\r\n");
#line 17 "..\..\Views\Job\_CreateSubject-Old.cshtml"
}
#line default
#line hidden
WriteLiteral(" </td>\r\n <td");
WriteLiteral(" style=\"width: 50%\"");
WriteLiteral(">\r\n <h2>\r\n User</h2>\r\n");
#line 22 "..\..\Views\Job\_CreateSubject-Old.cshtml"
#line default
#line hidden
#line 22 "..\..\Views\Job\_CreateSubject-Old.cshtml"
if (Model.User == null)
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">No User referenced to this Job</span>\r\n");
#line 25 "..\..\Views\Job\_CreateSubject-Old.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <span><strong>Id:</strong> ");
#line 28 "..\..\Views\Job\_CreateSubject-Old.cshtml"
Write(Html.ActionLink(Model.User.Id, MVC.User.Show(Model.User.Id)));
#line default
#line hidden
WriteLiteral("</span>");
WriteLiteral("<br />\r\n");
WriteLiteral(" <span><strong>Name:</strong> ");
#line 29 "..\..\Views\Job\_CreateSubject-Old.cshtml"
Write(Model.User.DisplayName);
#line default
#line hidden
WriteLiteral("</span>");
WriteLiteral("<br />\r\n");
WriteLiteral(" <span><strong>Type:</strong> ");
#line 30 "..\..\Views\Job\_CreateSubject-Old.cshtml"
Write(Model.User.Type);
#line default
#line hidden
WriteLiteral("</span>\r\n");
#line 31 "..\..\Views\Job\_CreateSubject-Old.cshtml"
}
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n</table>");
}
}
}
#pragma warning restore 1591
+1 -1
View File
@@ -10,7 +10,7 @@
<add key="PreserveLoginUrl" value="true" /> <add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" /> <add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="DiscoIgnoreVersionUpdate" value="false" /> <add key="DiscoIgnoreVersionUpdate" value="true" />
</appSettings> </appSettings>
<connectionStrings> <connectionStrings>
<add name="DiscoDataContext" connectionString="data source=(local);Initial Catalog=Disco;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> <add name="DiscoDataContext" connectionString="data source=(local);Initial Catalog=Disco;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />