Fix: Javascript Bugs
jQuery v1.9 migrations; Isotope Update
This commit is contained in:
@@ -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.
@@ -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")]
|
||||||
|
|||||||
@@ -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")]
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|
||||||
</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 \r\n </th>\r\n </tr>\r\n");
|
WriteLiteral(">\r\n \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">
|
||||||
|
|
||||||
</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}">
|
||||||
|
|
||||||
</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 \r\n </th>\r\n " +
|
WriteLiteral(">\r\n \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 \r\n </" +
|
WriteLiteral(">\r\n \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">
|
||||||
|
|
||||||
</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}">
|
||||||
|
|
||||||
</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
@@ -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">
|
||||||
|
</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}">
|
||||||
<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>
|
||||||
|
</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 \r\n </th>\r\n <th");
|
WriteLiteral("> \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 \r\n </td>\r\n " +
|
WriteLiteral("> \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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
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
File diff suppressed because one or more lines are too long
@@ -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 {
|
||||||
|
|||||||
@@ -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,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALH0lEQVRYw8WXa4xd11XHf2vvfc59zJ33y+PxYzyel2dsx48hdnCaNMFNFUGgkKCoKLxCE1EJKgoBCbW0fACpoihSUVBQUgW1FCRaJURRcF4iL8eJkzbYY0+Sie3YHs/kzvt13/eeffbmwx07IMFnjnTO3ufonL3+67/W2ue/xHvP/+chfX27+J3ffoCRwV307x5ibP8hWluauf22YwwNDjA2tofBgSFuOniYP/rjR8jOXqO7u4utPVvYu3eM4ZFh9u0/THNLKzftHWXfvlFGR4YZ3bOHA4cOc9udd+nmpsb23i1do4PDI7f+60+eebparX6ktQHA/O+4fP30vj4Azjni2BLbCBvVcHGEjy0+jolrFfp39TU1ZBq2490hH9vDcVQZK2ys9p0/826HSbWlK16FTcmApcWl9kQq/fUgCBBRGO/hRhi8wzmHtZYoqhHHFu8sOIuLa7S0tISlQr7TaHWT4Mdxdr+3lYFSYbVn8sMPm7wEYcWJym54Li96XsoWyE6VWVhf4NN1y7d+Yyf7R3cPtbZ3kEyl0VpjnItxLt40FGOjCsPDw23JRLIfH497Zw8R1/bUSvkdj373r1slbE7FXpnFKlxZ9ExlK7z4swJzqwus5S2lmsM7h1YKEyiSRhEYoTVlWM7Dvn37+u657zdvcG2SyeQRG9XudbHd4+Jqf7W41v3+mXMZLyosOpHpZc+lOcsPP8ox+2aR5Y1VCuWYWuxQogi0kAyEQCtSgZBJBCjxiFZoJSjRKOUx1jC/DneP7esCNBADmC/dc/cjf/Wdv73v+XOWdxdLPP1mkfm1LLliRLEa47xDI+hAERoIlaKtMUBrUAhKQIkgIoholN6cK6k/VwpBIVqxVPB0HxpobGrMtBQLhZUwkcCcnzjzdrnq7/vOM9MkxZJJKRJGSCWEhoSpLwTIDUMKJR6tQLzgtUFwiNKIEjSC1/URrRC1+Y0SChWPMsmwo615sLU5sxImkpjL12bf0xL7Pb2NUigWSASCEoUClNQvSkA8eBGUEgRBhLqnWvBiEJE65Urwqs6CUmrzfUVCacqxB6Vlx7atB5U2p4MgxKysrF9wtlbb0Z1JXLxWIxF4tBLwgjJqs0IEUSAIKI9gEPGIZtOwBhFEeYySzXndEa3qcy0aGynKwPDQ4IEwkSJIJDDr6+ura/OfFPt6RhOXsgFBSL3+xaEDjfebxqXuNQqMaLwCBegbLAkaj9KgUIjWmwwotBZAExvFmoOxvXv3tLV3kEynMbFz8fnzk4u7D+9tezVhCBP1eHtfX72eSCBKoUXQOkTCEGVriLcgghKP2qRfXQ+TaLRWiCh0KKTS0BJCycPBQ+PbP3fHXfUyfPzvvsuZsxNXHvjil0fCRIAJPUrxWYzFo8UgClSYAlvCzU6QHhhHfIi3MXIdwH/Lfq0FZYRME+gEzF5Z5+RzP+KN2lW+962vtxljEtbaqnnn9E+pVSvn2zV3N6YSJE1cz3L9Ge2iFNqESACJt39EfvJNXn31MPc88idQEbxjE7TURw3pRggzMHXmAm/+8/eYm3iNteVZerZvJ5X5drqrs6uzWCzOmo+mPsZ7f0bhaG0KIBa0Bu2lnmTXyyijUGdfJly8QFN/P1vfPc3Vc5e49RcHcDVwFrwDrcEkYebyIuf/8Sny504yZgz7bxplobqdy3Oz4L3p7ure7/Gz5sLFT2hsajrr4yjubg31ak4T1pMaLXUAOqlwuXXspVPM5xxDXQ388p0H+P7TT6LNvSx/cpEdg6P07uqjEpWYPfsWc//+E3oyhsMHb2ZhYZG55RVaMhlWK/MsLM+xe2hoPBEGJ8xGvkA1qs1uLM7UtjQPpIplRTqsU+kFRIFJQfWnLxHbKtZrenq7efGt95n/9D1W/uYVJqYu4pXHJDOkUoYH77iVge42yk746Mo0nQ0NSOxYWFvkC7vHafUwsmdkf3NzMya2ltmZ6cKpk2+sbj0+0DtZKqBrVbwWkqlmdGAoTk2RnjlD2BAyVyryzcf+iYnJ89z1uT6KJUGMQaihraXBG05+NMVY1wgd6QZev/oetaLl/i98nl628s7rpzh35jKHDx0a+NUv/Qpmfm6B+cWlp44c+3zXlk7YMbxIXC6ighSJ1hCco5CEcPh+onQHTR98zM4DBzk2fgjjoUKVXKmIjzyGkPWlZZ58+imWN1bI56rcOn4bP/y3E7x2Psfgni7W2gLm3Qzjo8d7AJGrly+rnbt2VYCgLj3qm8D7b59kOvspnVs78Klmpi5+yi+MHyA7c5XHHn+MB379t5hfXeDnjx6je0s3yTBJmA6p1ark8wUKG2s8+vhfkExamtOQnZnFN6+wlM/S2d7Oo9/4uNyzZdtWc25ycteOnTuNKIV1UMitkG5sYq1iKKokPq9JVIuszF9h9lorG6t55pbXCDJp+lt2kCvlKF4tkUw00NXZRjqTpJAvo2iA5qu8eOY/6U8JnSnD4rylsOHJXl4AHyU6O7v6zfMnThw7fvy4pFIpquUy1YrF2Tx33P5ziCjwELuYu24ep1gtASmOf/FOfnb6XWreUKlUWVtfYvqTKxw8dICWjg7KhQKN6XZuG/t9XjnxMBdCz3ImIt1h2NLdTG/PdhKJlBocGLjDXLp4uVqulEmlUhTLJYqVIuJhY22DyFapuhqFYo1qLcKWKpSVxZYKFIolhvqHmF5Y4S//4M+4NHeJIAh48MGv8mv330tHe8D2LSP8+df+lP7Rg/R1DaJMiy2vx+WZ2ez6k0/8IDv18YfnzPLSkirlirS1tkEc46wH8XjxeCXEFY94j3EWZ2JSTjOfy3H77bfR0dZD9toLTM1fpOXHY6x/bZIf/8sPeOirD9O7tR0jjpdebjh54tnnTszOzJyfX8yeW1xcWHr99VcryVSCYrGEKRRLUq5WN0W6oLQC71FaEfkIYwQVORweFwveR5gwIG2SOGcp5PNohPXvT8I2xda5bnL5dYJEPyjhwsUP/hDUhPeOjY0clUqJIDBordBaYSJbpRZFAFhncXG8+TcUrLVUqxFRFOOcx+OJHTQkM0ycPUfL1h4uzkzzjUe+zbsvv4YkNYO/NMbk2XMM7t7NxMQZ29rcvIj3XLkS31DfIvKZKBWluH6fNElIQxiGWGuJ45ggGYKAUnKdJJRJsby8TMXG7O7bRSqT5sixo7z21huUygUyjQ18+MEkL77wwsW5uexcGIQsLS2Sy60CEEUR3nu895hCLn8DjXWWUqlELpcjjmNEhEKuQKVSJrIWFzu8jwFFKt3A2toKx245ShgGvPjKf9Da2sTIyCANqTQfTE7aI0eOfPl3v/J7/7MVE6FQyGOtrQN46KGvJFZX68gaGxspFIo4F2GMwQQB6XSNKLKI1rgophJVcJsfb+vbzrVr0zQ3NjE6MkAutxWjNesb6/HNR49+s1DIT9R3Nm40oNfDcOHCP9QBPfHEE52nTp169ZYjRwfzubxGeVFKS2ytVKpVbGTBQ6lSxsYWnMM5X++g4gjn6osGWhMkEiTCRGVwePDN0bHRv49tnI3j+HIqlVrz1FW1MYYwDGlpaWF8fBzp6uoyDz38cIez8eHTp9/ZeW1mZqCQz2+LarU2B+nYxaEgOo5jtenNZr/ovYh4rXVstLZ4V1UmyLW2tMwEYfhJ9tPsVKlcOq+UWq5UKsX/szvu3bYjfP7557p7e3srb508GU5OTmamp6cbs9lsx/LySls+n2uslCsNNrYJ55xxzmkQH8c2NsZEqWS61NbeWtBWrzvxK80dLRvDQ0OV3f27q88++8zSLUePFvWmxpPPEmFTOyr+C6xPNMD6P8TnAAAAAElFTkSuQmCC) /*Images/Actions/photo.png*/;
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALH0lEQVRYw8WXa4xd11XHf2vvfc59zJ33y+PxYzyel2dsx48hdnCaNMFNFUGgkKCoKLxCE1EJKgoBCbW0fACpoihSUVBQUgW1FCRaJURRcF4iL8eJkzbYY0+Sie3YHs/kzvt13/eeffbmwx07IMFnjnTO3ufonL3+67/W2ue/xHvP/+chfX27+J3ffoCRwV307x5ibP8hWluauf22YwwNDjA2tofBgSFuOniYP/rjR8jOXqO7u4utPVvYu3eM4ZFh9u0/THNLKzftHWXfvlFGR4YZ3bOHA4cOc9udd+nmpsb23i1do4PDI7f+60+eebparX6ktQHA/O+4fP30vj4Azjni2BLbCBvVcHGEjy0+jolrFfp39TU1ZBq2490hH9vDcVQZK2ys9p0/826HSbWlK16FTcmApcWl9kQq/fUgCBBRGO/hRhi8wzmHtZYoqhHHFu8sOIuLa7S0tISlQr7TaHWT4Mdxdr+3lYFSYbVn8sMPm7wEYcWJym54Li96XsoWyE6VWVhf4NN1y7d+Yyf7R3cPtbZ3kEyl0VpjnItxLt40FGOjCsPDw23JRLIfH497Zw8R1/bUSvkdj373r1slbE7FXpnFKlxZ9ExlK7z4swJzqwus5S2lmsM7h1YKEyiSRhEYoTVlWM7Dvn37+u657zdvcG2SyeQRG9XudbHd4+Jqf7W41v3+mXMZLyosOpHpZc+lOcsPP8ox+2aR5Y1VCuWYWuxQogi0kAyEQCtSgZBJBCjxiFZoJSjRKOUx1jC/DneP7esCNBADmC/dc/cjf/Wdv73v+XOWdxdLPP1mkfm1LLliRLEa47xDI+hAERoIlaKtMUBrUAhKQIkgIoholN6cK6k/VwpBIVqxVPB0HxpobGrMtBQLhZUwkcCcnzjzdrnq7/vOM9MkxZJJKRJGSCWEhoSpLwTIDUMKJR6tQLzgtUFwiNKIEjSC1/URrRC1+Y0SChWPMsmwo615sLU5sxImkpjL12bf0xL7Pb2NUigWSASCEoUClNQvSkA8eBGUEgRBhLqnWvBiEJE65Urwqs6CUmrzfUVCacqxB6Vlx7atB5U2p4MgxKysrF9wtlbb0Z1JXLxWIxF4tBLwgjJqs0IEUSAIKI9gEPGIZtOwBhFEeYySzXndEa3qcy0aGynKwPDQ4IEwkSJIJDDr6+ura/OfFPt6RhOXsgFBSL3+xaEDjfebxqXuNQqMaLwCBegbLAkaj9KgUIjWmwwotBZAExvFmoOxvXv3tLV3kEynMbFz8fnzk4u7D+9tezVhCBP1eHtfX72eSCBKoUXQOkTCEGVriLcgghKP2qRfXQ+TaLRWiCh0KKTS0BJCycPBQ+PbP3fHXfUyfPzvvsuZsxNXHvjil0fCRIAJPUrxWYzFo8UgClSYAlvCzU6QHhhHfIi3MXIdwH/Lfq0FZYRME+gEzF5Z5+RzP+KN2lW+962vtxljEtbaqnnn9E+pVSvn2zV3N6YSJE1cz3L9Ge2iFNqESACJt39EfvJNXn31MPc88idQEbxjE7TURw3pRggzMHXmAm/+8/eYm3iNteVZerZvJ5X5drqrs6uzWCzOmo+mPsZ7f0bhaG0KIBa0Bu2lnmTXyyijUGdfJly8QFN/P1vfPc3Vc5e49RcHcDVwFrwDrcEkYebyIuf/8Sny504yZgz7bxplobqdy3Oz4L3p7ure7/Gz5sLFT2hsajrr4yjubg31ak4T1pMaLXUAOqlwuXXspVPM5xxDXQ388p0H+P7TT6LNvSx/cpEdg6P07uqjEpWYPfsWc//+E3oyhsMHb2ZhYZG55RVaMhlWK/MsLM+xe2hoPBEGJ8xGvkA1qs1uLM7UtjQPpIplRTqsU+kFRIFJQfWnLxHbKtZrenq7efGt95n/9D1W/uYVJqYu4pXHJDOkUoYH77iVge42yk746Mo0nQ0NSOxYWFvkC7vHafUwsmdkf3NzMya2ltmZ6cKpk2+sbj0+0DtZKqBrVbwWkqlmdGAoTk2RnjlD2BAyVyryzcf+iYnJ89z1uT6KJUGMQaihraXBG05+NMVY1wgd6QZev/oetaLl/i98nl628s7rpzh35jKHDx0a+NUv/Qpmfm6B+cWlp44c+3zXlk7YMbxIXC6ighSJ1hCco5CEcPh+onQHTR98zM4DBzk2fgjjoUKVXKmIjzyGkPWlZZ58+imWN1bI56rcOn4bP/y3E7x2Psfgni7W2gLm3Qzjo8d7AJGrly+rnbt2VYCgLj3qm8D7b59kOvspnVs78Klmpi5+yi+MHyA7c5XHHn+MB379t5hfXeDnjx6je0s3yTBJmA6p1ark8wUKG2s8+vhfkExamtOQnZnFN6+wlM/S2d7Oo9/4uNyzZdtWc25ycteOnTuNKIV1UMitkG5sYq1iKKokPq9JVIuszF9h9lorG6t55pbXCDJp+lt2kCvlKF4tkUw00NXZRjqTpJAvo2iA5qu8eOY/6U8JnSnD4rylsOHJXl4AHyU6O7v6zfMnThw7fvy4pFIpquUy1YrF2Tx33P5ziCjwELuYu24ep1gtASmOf/FOfnb6XWreUKlUWVtfYvqTKxw8dICWjg7KhQKN6XZuG/t9XjnxMBdCz3ImIt1h2NLdTG/PdhKJlBocGLjDXLp4uVqulEmlUhTLJYqVIuJhY22DyFapuhqFYo1qLcKWKpSVxZYKFIolhvqHmF5Y4S//4M+4NHeJIAh48MGv8mv330tHe8D2LSP8+df+lP7Rg/R1DaJMiy2vx+WZ2ez6k0/8IDv18YfnzPLSkirlirS1tkEc46wH8XjxeCXEFY94j3EWZ2JSTjOfy3H77bfR0dZD9toLTM1fpOXHY6x/bZIf/8sPeOirD9O7tR0jjpdebjh54tnnTszOzJyfX8yeW1xcWHr99VcryVSCYrGEKRRLUq5WN0W6oLQC71FaEfkIYwQVORweFwveR5gwIG2SOGcp5PNohPXvT8I2xda5bnL5dYJEPyjhwsUP/hDUhPeOjY0clUqJIDBordBaYSJbpRZFAFhncXG8+TcUrLVUqxFRFOOcx+OJHTQkM0ycPUfL1h4uzkzzjUe+zbsvv4YkNYO/NMbk2XMM7t7NxMQZ29rcvIj3XLkS31DfIvKZKBWluH6fNElIQxiGWGuJ45ggGYKAUnKdJJRJsby8TMXG7O7bRSqT5sixo7z21huUygUyjQ18+MEkL77wwsW5uexcGIQsLS2Sy60CEEUR3nu895hCLn8DjXWWUqlELpcjjmNEhEKuQKVSJrIWFzu8jwFFKt3A2toKx245ShgGvPjKf9Da2sTIyCANqTQfTE7aI0eOfPl3v/J7/7MVE6FQyGOtrQN46KGvJFZX68gaGxspFIo4F2GMwQQB6XSNKLKI1rgophJVcJsfb+vbzrVr0zQ3NjE6MkAutxWjNesb6/HNR49+s1DIT9R3Nm40oNfDcOHCP9QBPfHEE52nTp169ZYjRwfzubxGeVFKS2ytVKpVbGTBQ6lSxsYWnMM5X++g4gjn6osGWhMkEiTCRGVwePDN0bHRv49tnI3j+HIqlVrz1FW1MYYwDGlpaWF8fBzp6uoyDz38cIez8eHTp9/ZeW1mZqCQz2+LarU2B+nYxaEgOo5jtenNZr/ovYh4rXVstLZ4V1UmyLW2tMwEYfhJ9tPsVKlcOq+UWq5UKsX/szvu3bYjfP7557p7e3srb508GU5OTmamp6cbs9lsx/LySls+n2uslCsNNrYJ55xxzmkQH8c2NsZEqWS61NbeWtBWrzvxK80dLRvDQ0OV3f27q88++8zSLUePFvWmxpPPEmFTOyr+C6xPNMD6P8TnAAAAAElFTkSuQmCC) /*Images/Actions/photo.png*/;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -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
File diff suppressed because one or more lines are too long
@@ -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,
|
||||||
|
|||||||
@@ -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
File diff suppressed because one or more lines are too long
@@ -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")]
|
||||||
|
|||||||
@@ -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>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
@@ -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"><Unknown/Not Allocated></span>
|
<span class="smallMessage"><Unknown/Not Allocated></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>
|
||||||
</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>
|
||||||
</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>
|
</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">
|
</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)
|
||||||
|
|||||||
+1220
-1200
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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
@@ -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">
|
||||||
|
|
||||||
</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 \r\n </th>\r\n </tr>\r\n");
|
WriteLiteral(">\r\n \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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user