feature: initial comments template

completes #150
This commit is contained in:
Gary Sharp
2025-01-24 17:28:27 +11:00
parent 408e1c4c14
commit 0853bcee50
39 changed files with 956 additions and 527 deletions
@@ -6,6 +6,7 @@ using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Exporting;
using Disco.Services.Interop;
using Disco.Services.Jobs;
using Disco.Services.Jobs.Exporting;
using Disco.Services.Jobs.JobLists;
using Disco.Services.Jobs.Statistics;
@@ -1809,6 +1810,15 @@ namespace Disco.Web.Areas.API.Controllers
#endregion
#region Job Comments
[HttpPost, ValidateAntiForgeryToken, DiscoAuthorize(Claims.Job.Actions.Create)]
public virtual ActionResult InitialComments(CreateModel m)
{
m.UpdateModel(Database, Authorization);
return Json(Jobs.GenerateInitialComments(Database, m, CurrentUser, out _));
}
[DiscoAuthorize(Claims.Job.ShowLogs)]
public virtual ActionResult Comments(int id)
{
@@ -11,6 +11,30 @@ namespace Disco.Web.Areas.API.Controllers
{
public partial class JobPreferencesController : AuthorizedDatabaseController
{
[DiscoAuthorize(Claims.Config.JobPreferences.Configure)]
public virtual ActionResult UpdateInitialCommentsTemplate(string initialCommentsTemplate, bool redirect = false)
{
string expression = null;
if (!string.IsNullOrWhiteSpace(initialCommentsTemplate))
{
expression = initialCommentsTemplate.Trim();
}
if (Database.DiscoConfiguration.JobPreferences.InitialCommentsTemplate != expression)
{
Database.DiscoConfiguration.JobPreferences.InitialCommentsTemplate = expression;
Database.SaveChanges();
Jobs.InitialCommentsTemplateInvalidateCache();
}
if (redirect)
return RedirectToAction(MVC.Config.JobPreferences.Index());
else
return Json("OK", JsonRequestBehavior.AllowGet);
}
[DiscoAuthorize(Claims.Config.JobPreferences.Configure)]
public virtual ActionResult UpdateLongRunningJobDaysThreshold(int LongRunningJobDaysThreshold, bool redirect = false)
{
@@ -13,6 +13,7 @@ namespace Disco.Web.Areas.Config.Controllers
{
var m = new Models.JobPreferences.IndexModel()
{
InitialCommentsTemplate = Database.DiscoConfiguration.JobPreferences.InitialCommentsTemplate,
LongRunningJobDaysThreshold = Database.DiscoConfiguration.JobPreferences.LongRunningJobDaysThreshold,
StaleJobMinutesThreshold = Database.DiscoConfiguration.JobPreferences.StaleJobMinutesThreshold,
LodgmentIncludeAllAttachmentsByDefault = Database.DiscoConfiguration.JobPreferences.LodgmentIncludeAllAttachmentsByDefault,
@@ -11,6 +11,8 @@ namespace Disco.Web.Areas.Config.Models.JobPreferences
{
public class IndexModel : ConfigJobPreferencesIndexModel
{
[DataType(DataType.MultilineText)]
public string InitialCommentsTemplate { get; set; }
public int LongRunningJobDaysThreshold { get; set; }
public int StaleJobMinutesThreshold { get; set; }
public bool LodgmentIncludeAllAttachmentsByDefault { get; set; }
@@ -12,7 +12,6 @@
Html.BundleDeferred("~/ClientScripts/Modules/Disco-AjaxHelperIcons");
}
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.General);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Lodgment);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Reports);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Locations);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Expressions);
@@ -58,7 +58,6 @@ namespace Disco.Web.Areas.Config.Views.JobPreferences
Html.BundleDeferred("~/ClientScripts/Modules/Disco-AjaxHelperIcons");
}
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.General);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Lodgment);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Reports);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Locations);
Html.RenderPartial(MVC.Config.JobPreferences.Views.Parts.Expressions);
@@ -8,7 +8,7 @@
<h2>Expressions</h2>
<table>
<tr>
<th style="width: 200px">On Create:</th>
<th style="width: 140px">On Create:</th>
<td>
@if (canConfig)
{
@@ -76,7 +76,7 @@
</td>
</tr>
<tr>
<th style="width: 200px">On Device Ready For Return:</th>
<th>On Device Ready For Return:</th>
<td>
@if (canConfig)
{
@@ -144,7 +144,7 @@
</td>
</tr>
<tr>
<th style="width: 200px">On Close:</th>
<th>On Close:</th>
<td>
@if (canConfig)
{
@@ -63,7 +63,7 @@ WriteLiteral(" style=\"width: 530px;\"");
WriteLiteral(">\r\n <h2>Expressions</h2>\r\n <table>\r\n <tr>\r\n <th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(" style=\"width: 140px\"");
WriteLiteral(">On Create:</th>\r\n <td>\r\n");
@@ -243,14 +243,15 @@ WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-fw fa-info-circle\"");
WriteLiteral("></i>This expression will be evaluated whenever a job is created. If the expressi" +
"on has any output it will be added to the job log.\r\n </p>\r\n " +
" </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n " +
" <th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(">On Device Ready For Return:</th>\r\n <td>\r\n");
WriteLiteral(@"></i>This expression will be evaluated whenever a job is created. If the expression has any output it will be added to the job log.
</p>
</div>
</td>
</tr>
<tr>
<th>On Device Ready For Return:</th>
<td>
");
#line 81 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
@@ -444,11 +445,9 @@ WriteLiteral(@"></i>This expression will be evaluated whenever a device is flagg
</td>
</tr>
<tr>
<th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(">On Close:</th>\r\n <td>\r\n");
<th>On Close:</th>
<td>
");
#line 149 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
@@ -4,18 +4,93 @@
var canConfig = Authorization.Has(Claims.Config.JobPreferences.Configure);
}
<div class="form" style="width: 530px;">
<div id="Config_JobPref_General" class="form" style="width: 530px;">
<h2>General Preferences</h2>
<table>
<tr>
<th style="width: 200px">Long Running Threshold:
</th>
<td>@if (canConfig)
<td colspan="2">
<div>Initial Comments Template:</div>
@if (canConfig)
{
@Html.DropDownListFor(model => model.LongRunningJobDaysThreshold, Model.LongRunningJobDaysThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value }))
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
@Html.EditorFor(model => model.InitialCommentsTemplate)
@AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var field = $('#InitialCommentsTemplate');
var fieldRemove = field.next('.ajaxRemove');
var fieldOriginalWidth, fieldOriginalHeight;
document.DiscoFunctions.PropertyChangeHelper(
field,
'None',
'@Url.Action(MVC.API.JobPreferences.UpdateInitialCommentsTemplate())',
'initialCommentsTemplate'
);
field.change(function () {
if (!!field.val()) {
fieldRemove.show();
} else {
fieldRemove.hide();
}
}).attr('placeholder', 'None');
fieldRemove.click(function () {
field.val('').trigger('change');
});
if (!!field.val()) {
fieldRemove.show();
} else {
fieldRemove.hide();
}
});
</script>
}
else
{
if (string.IsNullOrWhiteSpace(Model.InitialCommentsTemplate))
{
<span class="smallMessage">&lt;None Specified&gt;</span>
}
else
{
<div class="code">
@Model.InitialCommentsTemplate
</div>
}
}
<div class="info-box">
<p class="fa-p">
<i class="fa fa-fw fa-info-circle"></i>This template is added to the Comments box shown when creating a job. Expressions can be included. Add expressions inside curly braces, for example:
<div class="code">Justification for {#JobType}: </div>
</p>
<p>
The following additional variables are available:
<ul>
<li><code>#TechUser</code>: The user creating the job</li>
<li><code>#User</code>: The user linked to the job (or <code>null</code> if no user is associated)</li>
<li><code>#Device</code>: The user linked to the job (or <code>null</code> if no user is associated)</li>
<li><code>#JobType</code>: The selected job type (for example 'Hardware - Warranty')</li>
<li><code>#JobSubTypes</code>: A list of selected job sub-types (for example ['Motherboard', 'Screen'])</li>
</ul>
</p>
</div>
</td>
</tr>
<tr>
<th style="width: 140px">
Long Running Threshold:
</th>
<td>
@if (canConfig)
{
@Html.DropDownListFor(model => model.LongRunningJobDaysThreshold, Model.LongRunningJobDaysThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value }))
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
document.DiscoFunctions.PropertyChangeHelper(
$('#LongRunningJobDaysThreshold'),
@@ -23,27 +98,30 @@
'@(Url.Action(MVC.API.JobPreferences.UpdateLongRunningJobDaysThreshold()))',
'LongRunningJobDaysThreshold');
});
</script>
</script>
}
else
{
@Model.LongRunningJobDaysThresholdOptions().First(o => o.Key == Model.LongRunningJobDaysThreshold).Value
@Model.LongRunningJobDaysThresholdOptions().First(o => o.Key == Model.LongRunningJobDaysThreshold).Value
}
<div class="smallMessage">
Jobs which have been open for longer than the threshold are considered 'long-running' and will appear in the <code>Long Running Jobs</code> list.
</div>
@if (Authorization.Has(Claims.Job.Lists.LongRunningJobs)) { @Html.ActionLinkSmallButton("Show Long Running Jobs", MVC.Job.LongRunning()) }
@if (Authorization.Has(Claims.Job.Lists.LongRunningJobs))
{@Html.ActionLinkSmallButton("Show Long Running Jobs", MVC.Job.LongRunning())}
</td>
</tr>
<tr>
<th style="width: 200px">Stale Threshold:
<th>
Stale Threshold:
</th>
<td>@if (canConfig)
<td>
@if (canConfig)
{
@Html.DropDownListFor(model => model.StaleJobMinutesThreshold, Model.StaleJobMinutesThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value }))
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
@Html.DropDownListFor(model => model.StaleJobMinutesThreshold, Model.StaleJobMinutesThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value }))
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
document.DiscoFunctions.PropertyChangeHelper(
$('#StaleJobMinutesThreshold'),
@@ -51,16 +129,51 @@
'@(Url.Action(MVC.API.JobPreferences.UpdateStaleJobMinutesThreshold()))',
'StaleJobMinutesThreshold');
});
</script>
</script>
}
else
{
@Model.StaleJobMinutesThresholdOptions().First(o => o.Key == Model.StaleJobMinutesThreshold).Value
@Model.StaleJobMinutesThresholdOptions().First(o => o.Key == Model.StaleJobMinutesThreshold).Value
}
<div class="smallMessage">
Jobs which have no recoded action for longer than the threshold are considered 'stale' and will appear in the <code>Stale Jobs</code> list.
</div>
@if (Authorization.Has(Claims.Job.Lists.LongRunningJobs)) { @Html.ActionLinkSmallButton("Show Stale Jobs", MVC.Job.Stale()) }
@if (Authorization.Has(Claims.Job.Lists.LongRunningJobs))
{@Html.ActionLinkSmallButton("Show Stale Jobs", MVC.Job.Stale())}
</td>
</tr>
<tr>
<th>
Lodgment:
</th>
<td>
@if (canConfig)
{
@Html.CheckBoxFor(model => model.LodgmentIncludeAllAttachmentsByDefault)
<label for="LodgmentIncludeAllAttachmentsByDefault">Include All Attachments by Default</label>
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<div class="info-box">
<p class="fa-p">
<i class="fa fa-info-circle"></i>If enabled, all attachments will be selected by default when lodging a job.
</p>
</div>
<script type="text/javascript">
$(function () {
document.DiscoFunctions.PropertyChangeHelper(
$('#LodgmentIncludeAllAttachmentsByDefault'),
null,
'@(Url.Action(MVC.API.JobPreferences.UpdateLodgmentIncludeAllAttachmentsByDefault()))',
'includeAllAttachmentsByDefault');
});
</script>
}
else
{
<span>
@(Model.LodgmentIncludeAllAttachmentsByDefault ? "Yes" : "No")
</span>
}
</td>
</tr>
</table>
@@ -55,67 +55,284 @@ namespace Disco.Web.Areas.Config.Views.JobPreferences.Parts
#line hidden
WriteLiteral("\r\n<div");
WriteLiteral(" id=\"Config_JobPref_General\"");
WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 530px;\"");
WriteLiteral(">\r\n <h2>General Preferences</h2>\r\n <table>\r\n <tr>\r\n <th");
WriteLiteral(">\r\n <h2>General Preferences</h2>\r\n <table>\r\n <tr>\r\n <td");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(" colspan=\"2\"");
WriteLiteral(">Long Running Threshold:\r\n </th>\r\n <td>");
WriteLiteral(">\r\n <div>Initial Comments Template:</div>\r\n");
#line 13 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 13 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 15 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.DropDownListFor(model => model.LongRunningJobDaysThreshold, Model.LongRunningJobDaysThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value })));
Write(Html.EditorFor(model => model.InitialCommentsTemplate));
#line default
#line hidden
#line 15 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 16 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxSave());
Write(AjaxHelpers.AjaxRemove());
#line default
#line hidden
#line 16 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 18 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 18 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var field = $('#InitialCommentsTemplate');
var fieldRemove = field.next('.ajaxRemove');
var fieldOriginalWidth, fieldOriginalHeight;
document.DiscoFunctions.PropertyChangeHelper(
field,
'None',
'");
#line 28 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateInitialCommentsTemplate()));
#line default
#line hidden
WriteLiteral(@"',
'initialCommentsTemplate'
);
field.change(function () {
if (!!field.val()) {
fieldRemove.show();
} else {
fieldRemove.hide();
}
}).attr('placeholder', 'None');
fieldRemove.click(function () {
field.val('').trigger('change');
});
if (!!field.val()) {
fieldRemove.show();
} else {
fieldRemove.hide();
}
});
</script>
");
#line 51 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
else
{
if (string.IsNullOrWhiteSpace(Model.InitialCommentsTemplate))
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">&lt;None Specified&gt;</span>\r\n");
#line 57 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 61 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Model.InitialCommentsTemplate);
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n");
#line 63 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
}
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"info-box\"");
WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"fa-p\"");
WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-fw fa-info-circle\"");
WriteLiteral("></i>This template is added to the Comments box shown when creating a job. Expres" +
"sions can be included. Add expressions inside curly braces, for example:\r\n " +
" <div");
WriteLiteral(" class=\"code\"");
WriteLiteral(@">Justification for {#JobType}: </div>
</p>
<p>
The following additional variables are available:
<ul>
<li><code>#TechUser</code>: The user creating the job</li>
<li><code>#User</code>: The user linked to the job (or <code>null</code> if no user is associated)</li>
<li><code>#Device</code>: The user linked to the job (or <code>null</code> if no user is associated)</li>
<li><code>#JobType</code>: The selected job type (for example 'Hardware - Warranty')</li>
<li><code>#JobSubTypes</code>: A list of selected job sub-types (for example ['Motherboard', 'Screen'])</li>
</ul>
</p>
</div>
</td>
</tr>
<tr>
<th");
WriteLiteral(" style=\"width: 140px\"");
WriteLiteral(">\r\n Long Running Threshold:\r\n </th>\r\n <td>\r\n" +
"");
#line 88 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line 88 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 90 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.DropDownListFor(model => model.LongRunningJobDaysThreshold, Model.LongRunningJobDaysThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value })));
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 90 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 91 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
WriteLiteral(" <script");
#line 91 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 92 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 92 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
@@ -124,34 +341,34 @@ WriteLiteral(">\r\n $(function () {\r\n
"Threshold\'),\r\n null,\r\n \'");
#line 23 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 98 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateLongRunningJobDaysThreshold()));
#line default
#line hidden
WriteLiteral("\',\r\n \'LongRunningJobDaysThreshold\');\r\n " +
" });\r\n </script>\r\n");
" });\r\n </script>\r\n");
#line 27 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 102 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
else
{
#line default
#line hidden
#line 30 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Model.LongRunningJobDaysThresholdOptions().First(o => o.Key == Model.LongRunningJobDaysThreshold).Value);
#line 105 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Model.LongRunningJobDaysThresholdOptions().First(o => o.Key == Model.LongRunningJobDaysThreshold).Value);
#line default
#line hidden
#line 30 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 105 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
@@ -166,88 +383,92 @@ WriteLiteral(">\r\n Jobs which have been open for longer than
"> list.\r\n </div>\r\n");
#line 35 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 110 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 35 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (Authorization.Has(Claims.Job.Lists.LongRunningJobs)) {
#line 110 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (Authorization.Has(Claims.Job.Lists.LongRunningJobs))
{
#line default
#line hidden
#line 35 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.ActionLinkSmallButton("Show Long Running Jobs", MVC.Job.LongRunning()));
#line 111 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.ActionLinkSmallButton("Show Long Running Jobs", MVC.Job.LongRunning()));
#line default
#line hidden
#line 35 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
#line 111 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(">Stale Threshold:\r\n </th>\r\n <td>");
WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n " +
" Stale Threshold:\r\n </th>\r\n <td>\r\n");
#line 41 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 119 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 119 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 43 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.DropDownListFor(model => model.StaleJobMinutesThreshold, Model.StaleJobMinutesThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value })));
#line 121 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.DropDownListFor(model => model.StaleJobMinutesThreshold, Model.StaleJobMinutesThresholdOptions().Select(o => new SelectListItem() { Value = o.Key.ToString(), Text = o.Value })));
#line default
#line hidden
#line 43 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 121 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 44 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxSave());
#line 122 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 44 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 122 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 45 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line 123 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 45 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 123 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
WriteLiteral(" <script");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
@@ -256,34 +477,34 @@ WriteLiteral(">\r\n $(function () {\r\n
"eshold\'),\r\n null,\r\n \'");
#line 51 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 129 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateStaleJobMinutesThreshold()));
#line default
#line hidden
WriteLiteral("\',\r\n \'StaleJobMinutesThreshold\');\r\n " +
" });\r\n </script>\r\n");
" });\r\n </script>\r\n");
#line 55 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 133 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
else
{
#line default
#line hidden
#line 58 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Model.StaleJobMinutesThresholdOptions().First(o => o.Key == Model.StaleJobMinutesThreshold).Value);
#line 136 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Model.StaleJobMinutesThresholdOptions().First(o => o.Key == Model.StaleJobMinutesThreshold).Value);
#line default
#line hidden
#line 58 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 136 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
@@ -298,27 +519,161 @@ WriteLiteral(">\r\n Jobs which have no recoded action for lon
".\r\n </div>\r\n");
#line 63 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line 141 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 63 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (Authorization.Has(Claims.Job.Lists.LongRunningJobs)) {
#line 141 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (Authorization.Has(Claims.Job.Lists.LongRunningJobs))
{
#line default
#line hidden
#line 63 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.ActionLinkSmallButton("Show Stale Jobs", MVC.Job.Stale()));
#line 142 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.ActionLinkSmallButton("Show Stale Jobs", MVC.Job.Stale()));
#line default
#line hidden
#line 63 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
#line 142 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n " +
" Lodgment:\r\n </th>\r\n <td>\r\n");
#line 150 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 150 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 152 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Html.CheckBoxFor(model => model.LodgmentIncludeAllAttachmentsByDefault));
#line default
#line hidden
#line 152 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
WriteLiteral(" <label");
WriteLiteral(" for=\"LodgmentIncludeAllAttachmentsByDefault\"");
WriteLiteral(">Include All Attachments by Default</label>\r\n");
#line 154 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 154 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 154 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
#line 155 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 155 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"info-box\"");
WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"fa-p\"");
WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-info-circle\"");
WriteLiteral("></i>If enabled, all attachments will be selected by default when lodging a job.\r" +
"\n </p>\r\n </div>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n document.DiscoFunctions.PropertyC" +
"hangeHelper(\r\n $(\'#LodgmentIncludeAllAttachmentsByDefault\'),\r" +
"\n null,\r\n \'");
#line 166 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateLodgmentIncludeAllAttachmentsByDefault()));
#line default
#line hidden
WriteLiteral("\',\r\n \'includeAllAttachmentsByDefault\');\r\n });\r\n " +
" </script>\r\n");
#line 170 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <span>\r\n");
WriteLiteral(" ");
#line 174 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
Write(Model.LodgmentIncludeAllAttachmentsByDefault ? "Yes" : "No");
#line default
#line hidden
WriteLiteral("\r\n </span>\r\n");
#line 176 "..\..\Areas\Config\Views\JobPreferences\Parts\General.cshtml"
}
#line default
@@ -8,7 +8,7 @@
<h2>Job Locations</h2>
<table>
<tr>
<th style="width: 200px">Mode:
<th style="width: 140px">Mode:
</th>
<td>@if (canConfig)
{
@@ -63,7 +63,7 @@ WriteLiteral(" style=\"width: 530px;\"");
WriteLiteral(">\r\n <h2>Job Locations</h2>\r\n <table>\r\n <tr>\r\n <th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(" style=\"width: 140px\"");
WriteLiteral(">Mode:\r\n </th>\r\n <td>");
@@ -1,45 +0,0 @@
@model Disco.Web.Areas.Config.Models.JobPreferences.IndexModel
@{
Authorization.Require(Claims.Config.JobPreferences.Show);
var canConfig = Authorization.Has(Claims.Config.JobPreferences.Configure);
}
<div id="Config_Lodgment" class="form" style="width: 530px;">
<h2>Job Lodgment</h2>
<table>
<tr>
<th style="width: 200px">
&nbsp;
</th>
<td>
@if (canConfig)
{
@Html.CheckBoxFor(model => model.LodgmentIncludeAllAttachmentsByDefault)
<label for="LodgmentIncludeAllAttachmentsByDefault">Include All Attachments by Default</label>
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<div class="info-box">
<p class="fa-p">
<i class="fa fa-info-circle"></i>If enabled, all attachments will be selected by default when lodging a job.
</p>
</div>
<script type="text/javascript">
$(function () {
document.DiscoFunctions.PropertyChangeHelper(
$('#LodgmentIncludeAllAttachmentsByDefault'),
null,
'@(Url.Action(MVC.API.JobPreferences.UpdateLodgmentIncludeAllAttachmentsByDefault()))',
'includeAllAttachmentsByDefault');
});
</script>
}
else
{
<span>
@(Model.LodgmentIncludeAllAttachmentsByDefault ? "Yes" : "No")
</span>
}
</td>
</tr>
</table>
</div>
@@ -1,206 +0,0 @@
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Disco.Web.Areas.Config.Views.JobPreferences.Parts
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using Disco;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
using Disco.Web.Extensions;
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/JobPreferences/Parts/Lodgment.cshtml")]
public partial class Lodgment : Disco.Services.Web.WebViewPage<Disco.Web.Areas.Config.Models.JobPreferences.IndexModel>
{
public Lodgment()
{
}
public override void Execute()
{
#line 2 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
Authorization.Require(Claims.Config.JobPreferences.Show);
var canConfig = Authorization.Has(Claims.Config.JobPreferences.Configure);
#line default
#line hidden
WriteLiteral("\r\n<div");
WriteLiteral(" id=\"Config_Lodgment\"");
WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 530px;\"");
WriteLiteral(">\r\n <h2>Job Lodgment</h2>\r\n <table>\r\n <tr>\r\n <th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(">\r\n &nbsp;\r\n </th>\r\n <td>\r\n");
#line 15 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
#line default
#line hidden
#line 15 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
Write(Html.CheckBoxFor(model => model.LodgmentIncludeAllAttachmentsByDefault));
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
#line default
#line hidden
WriteLiteral(" <label");
WriteLiteral(" for=\"LodgmentIncludeAllAttachmentsByDefault\"");
WriteLiteral(">Include All Attachments by Default</label>\r\n");
#line 19 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
#line default
#line hidden
#line 19 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 19 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
#line default
#line hidden
#line 20 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 20 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"info-box\"");
WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"fa-p\"");
WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-info-circle\"");
WriteLiteral("></i>If enabled, all attachments will be selected by default when lodging a job.\r" +
"\n </p>\r\n </div>\r\n");
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n document.DiscoFun" +
"ctions.PropertyChangeHelper(\r\n $(\'#LodgmentIncludeAll" +
"AttachmentsByDefault\'),\r\n null,\r\n " +
" \'");
#line 31 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateLodgmentIncludeAllAttachmentsByDefault()));
#line default
#line hidden
WriteLiteral("\',\r\n \'includeAllAttachmentsByDefault\');\r\n " +
" });\r\n </script>\r\n");
#line 35 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <span>\r\n");
WriteLiteral(" ");
#line 39 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
Write(Model.LodgmentIncludeAllAttachmentsByDefault ? "Yes" : "No");
#line default
#line hidden
WriteLiteral("\r\n </span>\r\n");
#line 41 "..\..\Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml"
}
#line default
#line hidden
WriteLiteral(" </td>\r\n </tr>\r\n </table>\r\n</div>\r\n");
}
}
}
#pragma warning restore 1591
@@ -8,8 +8,9 @@
<h2>Report Preferences</h2>
<table>
<tr>
<th style="width: 200px">
Noticeboard Default Theme:
<th style="width: 140px">
Noticeboard<br />
Default Theme:
</th>
<td>
@if (canConfig)
@@ -63,19 +63,19 @@ WriteLiteral(" style=\"width: 530px;\"");
WriteLiteral(">\r\n <h2>Report Preferences</h2>\r\n <table>\r\n <tr>\r\n <th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(" style=\"width: 140px\"");
WriteLiteral(">\r\n Noticeboard Default Theme:\r\n </th>\r\n <td" +
">\r\n");
WriteLiteral(">\r\n Noticeboard<br />\r\n Default Theme:\r\n " +
" </th>\r\n <td>\r\n");
#line 15 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 16 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line default
#line hidden
#line 15 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 16 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
if (canConfig)
{
@@ -83,42 +83,42 @@ WriteLiteral(">\r\n Noticeboard Default Theme:\r\n </t
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 18 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Html.DropDownListFor(model => model.DefaultNoticeboardTheme, Model.DefaultNoticeboardThemeOptions().Select(o => new SelectListItem() { Value = o.Key, Text = o.Value })));
#line default
#line hidden
#line 17 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 18 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line default
#line hidden
#line 18 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 19 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 18 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 19 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line default
#line hidden
#line 19 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 20 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 19 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 20 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
@@ -138,7 +138,7 @@ WriteLiteral(@">
'");
#line 27 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 28 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateDefaultNoticeboardTheme()));
@@ -155,7 +155,7 @@ WriteLiteral(@"',
");
#line 35 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 36 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
}
else
{
@@ -164,14 +164,14 @@ WriteLiteral(@"',
#line default
#line hidden
#line 38 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 39 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Model.DefaultNoticeboardThemeOptions().First(o => o.Key == Model.DefaultNoticeboardTheme).Value);
#line default
#line hidden
#line 38 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 39 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
}
@@ -182,15 +182,15 @@ WriteLiteral(" <div");
WriteLiteral(" id=\"Config_ReportPrefs_Preview\"");
WriteAttribute("class", Tuple.Create(" class=\"", 1754), Tuple.Create("\"", 1800)
, Tuple.Create(Tuple.Create("", 1762), Tuple.Create("theme-", 1762), true)
WriteAttribute("class", Tuple.Create(" class=\"", 1777), Tuple.Create("\"", 1823)
, Tuple.Create(Tuple.Create("", 1785), Tuple.Create("theme-", 1785), true)
#line 40 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 1768), Tuple.Create<System.Object, System.Int32>(Model.DefaultNoticeboardTheme
#line 41 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 1791), Tuple.Create<System.Object, System.Int32>(Model.DefaultNoticeboardTheme
#line default
#line hidden
, 1768), false)
, 1791), false)
);
WriteLiteral(">\r\n <div");
@@ -286,7 +286,7 @@ WriteLiteral(" class=\"themeable componentable\"");
WriteLiteral(" data-url=\"");
#line 66 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 67 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Url.ActionAbsolute(MVC.Public.UserHeldDevices.Noticeboard()));
@@ -313,7 +313,7 @@ WriteLiteral(" name=\"Report\"");
WriteLiteral(" data-url=\"");
#line 69 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 70 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Url.ActionAbsolute(MVC.Public.UserHeldDevices.Index()));
@@ -340,7 +340,7 @@ WriteLiteral(" class=\"themeable componentable\"");
WriteLiteral(" data-url=\"");
#line 72 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 73 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Url.ActionAbsolute(MVC.Public.HeldDevices.Noticeboard()));
@@ -365,7 +365,7 @@ WriteLiteral(" name=\"Report\"");
WriteLiteral(" data-url=\"");
#line 75 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 76 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Url.ActionAbsolute(MVC.Public.HeldDevices.Index()));
@@ -417,7 +417,7 @@ WriteLiteral(">\r\n <h3>Noticeboard Theme</h3>\r\n");
WriteLiteral(" ");
#line 89 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 90 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(Html.DropDownList("Config_ReportPrefs_Builder_Theme", new SelectListItem[] { new SelectListItem() { Value = "", Text = "<Default>", Selected = true } }.Concat(Model.DefaultNoticeboardThemeOptions().Select(o => new SelectListItem() { Value = o.Key, Text = o.Value }))));
@@ -495,13 +495,13 @@ WriteLiteral(" class=\"none\"");
WriteLiteral(">\r\n");
#line 105 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 106 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line default
#line hidden
#line 105 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 106 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
foreach (var deviceProfile in Model.DeviceProfiles.Value)
{
@@ -511,46 +511,46 @@ WriteLiteral(">\r\n");
WriteLiteral(" <li>\r\n " +
" <input");
WriteAttribute("id", Tuple.Create(" id=\"", 7290), Tuple.Create("\"", 7344)
, Tuple.Create(Tuple.Create("", 7295), Tuple.Create("Config_ReportPrefs_Builder_DP_", 7295), true)
WriteAttribute("id", Tuple.Create(" id=\"", 7313), Tuple.Create("\"", 7367)
, Tuple.Create(Tuple.Create("", 7318), Tuple.Create("Config_ReportPrefs_Builder_DP_", 7318), true)
#line 108 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 7325), Tuple.Create<System.Object, System.Int32>(deviceProfile.Id
#line 109 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 7348), Tuple.Create<System.Object, System.Int32>(deviceProfile.Id
#line default
#line hidden
, 7325), false)
, 7348), false)
);
WriteLiteral(" type=\"checkbox\"");
WriteAttribute("value", Tuple.Create(" value=\"", 7361), Tuple.Create("\"", 7386)
WriteAttribute("value", Tuple.Create(" value=\"", 7384), Tuple.Create("\"", 7409)
#line 108 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 7369), Tuple.Create<System.Object, System.Int32>(deviceProfile.Id
#line 109 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 7392), Tuple.Create<System.Object, System.Int32>(deviceProfile.Id
#line default
#line hidden
, 7369), false)
, 7392), false)
);
WriteLiteral(" /><label");
WriteAttribute("for", Tuple.Create(" for=\"", 7396), Tuple.Create("\"", 7451)
, Tuple.Create(Tuple.Create("", 7402), Tuple.Create("Config_ReportPrefs_Builder_DP_", 7402), true)
WriteAttribute("for", Tuple.Create(" for=\"", 7419), Tuple.Create("\"", 7474)
, Tuple.Create(Tuple.Create("", 7425), Tuple.Create("Config_ReportPrefs_Builder_DP_", 7425), true)
#line 108 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 7432), Tuple.Create<System.Object, System.Int32>(deviceProfile.Id
#line 109 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 7455), Tuple.Create<System.Object, System.Int32>(deviceProfile.Id
#line default
#line hidden
, 7432), false)
, 7455), false)
);
WriteLiteral(">");
#line 108 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 109 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(deviceProfile.Description);
@@ -559,7 +559,7 @@ WriteLiteral(">");
WriteLiteral("</label>\r\n </li>\r\n");
#line 110 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 111 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
}
@@ -577,13 +577,13 @@ WriteLiteral(" class=\"none\"");
WriteLiteral(">\r\n");
#line 115 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 116 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line default
#line hidden
#line 115 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 116 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
foreach (var address in Model.OrganisationAddresses.Value)
{
@@ -593,46 +593,46 @@ WriteLiteral(">\r\n");
WriteLiteral(" <li>\r\n " +
" <input");
WriteAttribute("id", Tuple.Create(" id=\"", 8051), Tuple.Create("\"", 8099)
, Tuple.Create(Tuple.Create("", 8056), Tuple.Create("Config_ReportPrefs_Builder_OA_", 8056), true)
WriteAttribute("id", Tuple.Create(" id=\"", 8074), Tuple.Create("\"", 8122)
, Tuple.Create(Tuple.Create("", 8079), Tuple.Create("Config_ReportPrefs_Builder_OA_", 8079), true)
#line 118 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 8086), Tuple.Create<System.Object, System.Int32>(address.Id
#line 119 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 8109), Tuple.Create<System.Object, System.Int32>(address.Id
#line default
#line hidden
, 8086), false)
, 8109), false)
);
WriteLiteral(" type=\"checkbox\"");
WriteAttribute("value", Tuple.Create(" value=\"", 8116), Tuple.Create("\"", 8142)
WriteAttribute("value", Tuple.Create(" value=\"", 8139), Tuple.Create("\"", 8165)
#line 118 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 8124), Tuple.Create<System.Object, System.Int32>(address.ShortName
#line 119 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 8147), Tuple.Create<System.Object, System.Int32>(address.ShortName
#line default
#line hidden
, 8124), false)
, 8147), false)
);
WriteLiteral(" /><label");
WriteAttribute("for", Tuple.Create(" for=\"", 8152), Tuple.Create("\"", 8201)
, Tuple.Create(Tuple.Create("", 8158), Tuple.Create("Config_ReportPrefs_Builder_OA_", 8158), true)
WriteAttribute("for", Tuple.Create(" for=\"", 8175), Tuple.Create("\"", 8224)
, Tuple.Create(Tuple.Create("", 8181), Tuple.Create("Config_ReportPrefs_Builder_OA_", 8181), true)
#line 118 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 8188), Tuple.Create<System.Object, System.Int32>(address.Id
#line 119 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
, Tuple.Create(Tuple.Create("", 8211), Tuple.Create<System.Object, System.Int32>(address.Id
#line default
#line hidden
, 8188), false)
, 8211), false)
);
WriteLiteral(">");
#line 118 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 119 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(address.Name);
@@ -641,7 +641,7 @@ WriteLiteral(">");
WriteLiteral(" (");
#line 118 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 119 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
Write(address.ShortName);
@@ -650,7 +650,7 @@ WriteLiteral(" (");
WriteLiteral(")</label>\r\n </li>\r\n");
#line 120 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
#line 121 "..\..\Areas\Config\Views\JobPreferences\Parts\Reports.cshtml"
}
@@ -15,7 +15,7 @@
document.DiscoFunctions = {};
}
document.DiscoFunctions.CreateOpenJobDialog = function (url) {
createJobDialog = $('<div>').attr('id', 'createJobDialog').css({ paddingTop: '0' }).appendTo(document.body);
createJobDialog = $('<div>').attr('id', 'createJobDialog').css({ padding: '0', overflow: 'hidden', backgroundColor: '#fff' }).appendTo(document.body);
createJobDialog.dialog({
resizable: false,
@@ -1 +1 @@
(function(n,t,i){n(function(){var r=null,u={close:function(){r.dialog("close")},setButtons:function(n){r&&r.dialog("option","buttons",n)}};i.DiscoFunctions||(i.DiscoFunctions={});i.DiscoFunctions.CreateOpenJobDialog=function(f){r=n("<div>").attr("id","createJobDialog").css({paddingTop:"0"}).appendTo(i.body);r.dialog({resizable:!1,draggable:!1,modal:!0,autoOpen:!1,title:"Create Job",width:850,height:Math.min(670,n(t).height()-50),close:function(){r.find("iframe").attr("src","about:blank");r.dialog("destroy").remove();r=null},buttons:{}});var e=n("<iframe>").attr({src:f}).css({border:"none",height:"100%",width:"100%"}).appendTo(r);r[0].discoDialogMethods=u;t.setTimeout(function(){r.dialog("open")},1)};n("#buttonCreateJob").click(function(){var t=n(this),r=t.attr("href");return i.DiscoFunctions.CreateOpenJobDialog(r),!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)}};i.DiscoFunctions||(i.DiscoFunctions={});i.DiscoFunctions.CreateOpenJobDialog=function(f){r=n("<div>").attr("id","createJobDialog").css({padding:"0",overflow:"hidden",backgroundColor:"#fff"}).appendTo(i.body);r.dialog({resizable:!1,draggable:!1,modal:!0,autoOpen:!1,title:"Create Job",width:850,height:Math.min(670,n(t).height()-50),close:function(){r.find("iframe").attr("src","about:blank");r.dialog("destroy").remove();r=null},buttons:{}});var e=n("<iframe>").attr({src:f}).css({border:"none",height:"100%",width:"100%"}).appendTo(r);r[0].discoDialogMethods=u;t.setTimeout(function(){r.dialog("open")},1)};n("#buttonCreateJob").click(function(){var t=n(this),r=t.attr("href");return i.DiscoFunctions.CreateOpenJobDialog(r),!1})})})($,window,document);
@@ -15,7 +15,7 @@
document.DiscoFunctions = {};
}
document.DiscoFunctions.CreateOpenJobDialog = function (url) {
createJobDialog = $('<div>').attr('id', 'createJobDialog').css({ paddingTop: '0' }).appendTo(document.body);
createJobDialog = $('<div>').attr('id', 'createJobDialog').css({ padding: '0', overflow: 'hidden', backgroundColor: '#fff' }).appendTo(document.body);
createJobDialog.dialog({
resizable: false,
+7
View File
@@ -1554,6 +1554,13 @@ h1.Config_DocumentTemplates {
height: 200px;
margin: 0 auto;
}
#Config_JobPref_General #InitialCommentsTemplate {
margin-top: 4px;
min-width: calc(100% - 43px);
min-height: 40px;
height: auto;
field-sizing: content;
}
#Config_JobPref_Expressions {
margin-top: 10px;
}
+10
View File
@@ -1813,6 +1813,16 @@ h1.Config_DocumentTemplates {
}
}
#Config_JobPref_General {
#InitialCommentsTemplate {
margin-top: 4px;
min-width: calc(100% - 43px);
min-height: 40px;
height: auto;
field-sizing: content;
}
}
#Config_JobPref_Expressions {
margin-top: 10px;
File diff suppressed because one or more lines are too long
+4 -6
View File
@@ -902,19 +902,16 @@
height: 150px;
}
#createJob_Container {
margin: 0 -20px;
margin: 0 10px;
}
#createJob_Container img.modelImage {
width: 64px;
height: 64px;
}
#createJob_Container .createJob_Component {
#createJob_Container .createJob_Component:not(:first-child) {
margin: 0 10px;
padding: 5px 0;
border-bottom: 1px dashed #ccc;
}
#createJob_Container .createJob_Component:last-child {
border-bottom: none;
border-top: 1px dashed #ccc;
}
#createJob_Container #createJob_Type {
border: 1px solid #ccc;
@@ -962,6 +959,7 @@
#createJob_Container #createJob_CommentsContainer #Comments {
width: 100%;
min-width: 500px;
field-sizing: content;
}
#createJob_Container #createJob_QuickLogAutoCloseContainer h3 {
margin-bottom: 4px;
+4 -8
View File
@@ -970,24 +970,19 @@
}
#createJob_Container {
margin: 0 -20px;
margin: 0 10px;
img.modelImage {
width: 64px;
height: 64px;
}
.createJob_Component {
.createJob_Component:not(:first-child) {
margin: 0 10px;
padding: 5px 0;
border-bottom: 1px dashed #ccc;
border-top: 1px dashed #ccc;
}
.createJob_Component:last-child {
border-bottom: none;
}
#createJob_Type {
border: 1px solid #ccc;
background-color: @BackgroundColourGradient;
@@ -1040,6 +1035,7 @@
#Comments {
width: 100%;
min-width: 500px;
field-sizing: content;
}
}
File diff suppressed because one or more lines are too long
+4 -1
View File
@@ -411,12 +411,15 @@ namespace Disco.Web.Controllers
};
m.UpdateModel(Database, Authorization);
m.Comments = Jobs.GenerateInitialComments(Database, m, CurrentUser, out var isTypeDynamic);
m.RegenerateCommentsOnTypeChange = isTypeDynamic;
// UI Extensions
UIExtensions.ExecuteExtensions<JobCreateModel>(this.ControllerContext, m);
return View(m);
}
[HttpPost, DiscoAuthorize(Claims.Job.Actions.Create)]
[HttpPost, ValidateAntiForgeryToken, DiscoAuthorize(Claims.Job.Actions.Create)]
public virtual ActionResult Create(Models.Job.CreateModel m)
{
m.UpdateModel(Database, Authorization);
-9
View File
@@ -316,11 +316,6 @@
<DesignTime>True</DesignTime>
<DependentUpon>General.cshtml</DependentUpon>
</Compile>
<Compile Include="Areas\Config\Views\JobPreferences\Parts\Lodgment.generated.cs">
<DependentUpon>Lodgment.cshtml</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Areas\Config\Views\JobPreferences\Parts\Locations.generated.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
@@ -1366,10 +1361,6 @@
<Generator>RazorGenerator</Generator>
<LastGenOutput>General.generated.cs</LastGenOutput>
</None>
<None Include="Areas\Config\Views\JobPreferences\Parts\Lodgment.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>Lodgment.generated.cs</LastGenOutput>
</None>
<None Include="Areas\Config\Views\JobPreferences\Parts\Locations.cshtml">
<Generator>RazorGenerator</Generator>
<LastGenOutput>Locations.generated.cs</LastGenOutput>
@@ -361,6 +361,12 @@ namespace Disco.Web.Areas.API.Controllers
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult InitialComments()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.InitialComments);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult Comments()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Comments);
@@ -527,6 +533,7 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string Reopen = "Reopen";
public readonly string Delete = "Delete";
public readonly string ConvertHWarToHNWar = "ConvertHWarToHNWar";
public readonly string InitialComments = "InitialComments";
public readonly string Comments = "Comments";
public readonly string Comment = "Comment";
public readonly string CommentPost = "CommentPost";
@@ -601,6 +608,7 @@ namespace Disco.Web.Areas.API.Controllers
public const string Reopen = "Reopen";
public const string Delete = "Delete";
public const string ConvertHWarToHNWar = "ConvertHWarToHNWar";
public const string InitialComments = "InitialComments";
public const string Comments = "Comments";
public const string Comment = "Comment";
public const string CommentPost = "CommentPost";
@@ -1119,6 +1127,14 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string id = "id";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_InitialComments s_params_InitialComments = new ActionParamsClass_InitialComments();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_InitialComments InitialCommentsParams { get { return s_params_InitialComments; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_InitialComments
{
public readonly string m = "m";
}
static readonly ActionParamsClass_Comments s_params_Comments = new ActionParamsClass_Comments();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_Comments CommentsParams { get { return s_params_Comments; } }
@@ -1978,6 +1994,18 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo;
}
[NonAction]
partial void InitialCommentsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, Disco.Web.Models.Job.CreateModel m);
[NonAction]
public override System.Web.Mvc.ActionResult InitialComments(Disco.Web.Models.Job.CreateModel m)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.InitialComments);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "m", m);
InitialCommentsOverride(callInfo, m);
return callInfo;
}
[NonAction]
partial void CommentsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id);
@@ -59,6 +59,12 @@ namespace Disco.Web.Areas.API.Controllers
return RedirectToActionPermanent(taskResult.Result);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateInitialCommentsTemplate()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateInitialCommentsTemplate);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateLongRunningJobDaysThreshold()
@@ -135,6 +141,7 @@ namespace Disco.Web.Areas.API.Controllers
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionNamesClass
{
public readonly string UpdateInitialCommentsTemplate = "UpdateInitialCommentsTemplate";
public readonly string UpdateLongRunningJobDaysThreshold = "UpdateLongRunningJobDaysThreshold";
public readonly string UpdateStaleJobMinutesThreshold = "UpdateStaleJobMinutesThreshold";
public readonly string UpdateLodgmentIncludeAllAttachmentsByDefault = "UpdateLodgmentIncludeAllAttachmentsByDefault";
@@ -150,6 +157,7 @@ namespace Disco.Web.Areas.API.Controllers
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionNameConstants
{
public const string UpdateInitialCommentsTemplate = "UpdateInitialCommentsTemplate";
public const string UpdateLongRunningJobDaysThreshold = "UpdateLongRunningJobDaysThreshold";
public const string UpdateStaleJobMinutesThreshold = "UpdateStaleJobMinutesThreshold";
public const string UpdateLodgmentIncludeAllAttachmentsByDefault = "UpdateLodgmentIncludeAllAttachmentsByDefault";
@@ -163,6 +171,15 @@ namespace Disco.Web.Areas.API.Controllers
}
static readonly ActionParamsClass_UpdateInitialCommentsTemplate s_params_UpdateInitialCommentsTemplate = new ActionParamsClass_UpdateInitialCommentsTemplate();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateInitialCommentsTemplate UpdateInitialCommentsTemplateParams { get { return s_params_UpdateInitialCommentsTemplate; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateInitialCommentsTemplate
{
public readonly string initialCommentsTemplate = "initialCommentsTemplate";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_UpdateLongRunningJobDaysThreshold s_params_UpdateLongRunningJobDaysThreshold = new ActionParamsClass_UpdateLongRunningJobDaysThreshold();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateLongRunningJobDaysThreshold UpdateLongRunningJobDaysThresholdParams { get { return s_params_UpdateLongRunningJobDaysThreshold; } }
@@ -274,6 +291,19 @@ namespace Disco.Web.Areas.API.Controllers
{
public T4MVC_JobPreferencesController() : base(Dummy.Instance) { }
[NonAction]
partial void UpdateInitialCommentsTemplateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string initialCommentsTemplate, bool redirect);
[NonAction]
public override System.Web.Mvc.ActionResult UpdateInitialCommentsTemplate(string initialCommentsTemplate, bool redirect)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateInitialCommentsTemplate);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "initialCommentsTemplate", initialCommentsTemplate);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
UpdateInitialCommentsTemplateOverride(callInfo, initialCommentsTemplate, redirect);
return callInfo;
}
[NonAction]
partial void UpdateLongRunningJobDaysThresholdOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int LongRunningJobDaysThreshold, bool redirect);
@@ -110,13 +110,11 @@ namespace Disco.Web.Areas.Config.Controllers
public readonly string Expressions = "Expressions";
public readonly string General = "General";
public readonly string Locations = "Locations";
public readonly string Lodgment = "Lodgment";
public readonly string Reports = "Reports";
}
public readonly string Expressions = "~/Areas/Config/Views/JobPreferences/Parts/Expressions.cshtml";
public readonly string General = "~/Areas/Config/Views/JobPreferences/Parts/General.cshtml";
public readonly string Locations = "~/Areas/Config/Views/JobPreferences/Parts/Locations.cshtml";
public readonly string Lodgment = "~/Areas/Config/Views/JobPreferences/Parts/Lodgment.cshtml";
public readonly string Reports = "~/Areas/Config/Views/JobPreferences/Parts/Reports.cshtml";
}
}
+2 -1
View File
@@ -20,8 +20,9 @@ namespace Disco.Web.Models.Job
[Required]
public List<string> SubTypes { get; set; }
[DataType(System.ComponentModel.DataAnnotations.DataType.MultilineText)]
[DataType(DataType.MultilineText)]
public string Comments { get; set; }
public bool RegenerateCommentsOnTypeChange { get; set; }
[Required(ErrorMessage = "Please specify whether the device is held or not")]
public bool? DeviceHeld { get; set; }
+27 -3
View File
@@ -8,6 +8,7 @@
<div id="createJob_Container">
@using (Html.BeginForm(MVC.Job.Create(), FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.DeviceSerialNumber)
@Html.HiddenFor(m => m.UserId)
@Html.HiddenFor(m => m.SourceUrl)
@@ -15,7 +16,7 @@
@Html.Partial(MVC.Job.Views._CreateSubject, Model)
@Html.ValidationSummary(true)
<div class="createJob_Component">
<div id="createJob_Types" class="createJob_Component">
<div id="createJob_Type">
<h3>Type</h3>
@Html.ValidationMessageFor(m => m.Type)
@@ -29,7 +30,7 @@
<div class="createJob_SubTypes">
@CommonHelpers.CheckBoxList("SubTypes", jt.JobSubTypes.ToSelectListItems(Model.SubTypes, true), 3, true, null, false)
</div>
</div>
</div>
}
</div>
</div>
@@ -54,7 +55,7 @@
}else{
@Html.Hidden("DeviceHeld", false)
}
<div id="createJob_CommentsContainer" class="createJob_Component">
<div id="createJob_CommentsContainer" class="createJob_Component" data-dynamic="@(Model.RegenerateCommentsOnTypeChange ? Url.Action(MVC.API.Job.InitialComments()) : null)">
<table>
<tr>
<td>
@@ -152,6 +153,29 @@
}
}
const initialCommentsUrl = $('#createJob_CommentsContainer').attr('data-dynamic');
if (!!initialCommentsUrl) {
let commentsDirty = false;
$('#Comments').on('change', function () {
commentsDirty = true;
});
$('#createJob_Types').on('change', 'input', async function () {
if (commentsDirty) {
return;
}
const body = new FormData(createJobForm.get(0));
const response = await fetch(initialCommentsUrl, {
method: 'POST',
body: body
});
if (response.ok) {
const comments = await response.json();
$('#Comments').val(comments);
} else {
console.error('Failed to fetch updated initial comments');
}
})
}
var additionalValidation = function (form) {
var isValid = true;
+97 -56
View File
@@ -76,41 +76,55 @@ WriteLiteral(">\r\n");
#line hidden
#line 11 "..\..\Views\Job\Create.cshtml"
Write(Html.HiddenFor(m => m.DeviceSerialNumber));
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 11 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 12 "..\..\Views\Job\Create.cshtml"
Write(Html.HiddenFor(m => m.DeviceSerialNumber));
#line default
#line hidden
#line 12 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 12 "..\..\Views\Job\Create.cshtml"
#line 13 "..\..\Views\Job\Create.cshtml"
Write(Html.HiddenFor(m => m.UserId));
#line default
#line hidden
#line 12 "..\..\Views\Job\Create.cshtml"
#line 13 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 13 "..\..\Views\Job\Create.cshtml"
#line 14 "..\..\Views\Job\Create.cshtml"
Write(Html.HiddenFor(m => m.SourceUrl));
#line default
#line hidden
#line 13 "..\..\Views\Job\Create.cshtml"
#line 14 "..\..\Views\Job\Create.cshtml"
@@ -118,28 +132,28 @@ WriteLiteral(">\r\n");
#line default
#line hidden
#line 15 "..\..\Views\Job\Create.cshtml"
#line 16 "..\..\Views\Job\Create.cshtml"
Write(Html.Partial(MVC.Job.Views._CreateSubject, Model));
#line default
#line hidden
#line 15 "..\..\Views\Job\Create.cshtml"
#line 16 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 16 "..\..\Views\Job\Create.cshtml"
#line 17 "..\..\Views\Job\Create.cshtml"
Write(Html.ValidationSummary(true));
#line default
#line hidden
#line 16 "..\..\Views\Job\Create.cshtml"
#line 17 "..\..\Views\Job\Create.cshtml"
@@ -148,6 +162,8 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"createJob_Types\"");
WriteLiteral(" class=\"createJob_Component\"");
WriteLiteral(">\r\n <div");
@@ -159,7 +175,7 @@ WriteLiteral(">\r\n <h3>Type</h3>\r\n");
WriteLiteral(" ");
#line 21 "..\..\Views\Job\Create.cshtml"
#line 22 "..\..\Views\Job\Create.cshtml"
Write(Html.ValidationMessageFor(m => m.Type));
@@ -170,7 +186,7 @@ WriteLiteral("\r\n");
WriteLiteral(" ");
#line 22 "..\..\Views\Job\Create.cshtml"
#line 23 "..\..\Views\Job\Create.cshtml"
Write(CommonHelpers.RadioButtonList("Type", Model.JobTypes.ToSelectListItems(Model.Type), 3));
@@ -181,7 +197,7 @@ WriteLiteral("\r\n");
WriteLiteral(" ");
#line 23 "..\..\Views\Job\Create.cshtml"
#line 24 "..\..\Views\Job\Create.cshtml"
Write(Html.ValidationMessageFor(m => m.SubTypes));
@@ -194,13 +210,13 @@ WriteLiteral(" id=\"createJob_SubTypes\"");
WriteLiteral(">\r\n");
#line 26 "..\..\Views\Job\Create.cshtml"
#line 27 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 26 "..\..\Views\Job\Create.cshtml"
#line 27 "..\..\Views\Job\Create.cshtml"
foreach (var jt in Model.JobTypes)
{
@@ -209,15 +225,15 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <div");
WriteAttribute("id", Tuple.Create(" id=\"", 1078), Tuple.Create("\"", 1109)
, Tuple.Create(Tuple.Create("", 1083), Tuple.Create("createJob_SubType_", 1083), true)
WriteAttribute("id", Tuple.Create(" id=\"", 1133), Tuple.Create("\"", 1164)
, Tuple.Create(Tuple.Create("", 1138), Tuple.Create("createJob_SubType_", 1138), true)
#line 28 "..\..\Views\Job\Create.cshtml"
, Tuple.Create(Tuple.Create("", 1101), Tuple.Create<System.Object, System.Int32>(jt.Id
#line 29 "..\..\Views\Job\Create.cshtml"
, Tuple.Create(Tuple.Create("", 1156), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 1101), false)
, 1156), false)
);
WriteLiteral(" class=\"createJob_SubType\"");
@@ -231,16 +247,16 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 30 "..\..\Views\Job\Create.cshtml"
#line 31 "..\..\Views\Job\Create.cshtml"
Write(CommonHelpers.CheckBoxList("SubTypes", jt.JobSubTypes.ToSelectListItems(Model.SubTypes, true), 3, true, null, false));
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n </div> \r\n");
WriteLiteral("\r\n </div>\r\n </div>\r\n");
#line 33 "..\..\Views\Job\Create.cshtml"
#line 34 "..\..\Views\Job\Create.cshtml"
}
@@ -249,7 +265,7 @@ WriteLiteral("\r\n </div>\r\n </div>
WriteLiteral(" </div>\r\n </div>\r\n");
#line 36 "..\..\Views\Job\Create.cshtml"
#line 37 "..\..\Views\Job\Create.cshtml"
if (Authorization.Has(Claims.Job.Properties.DeviceHeld)){
@@ -266,7 +282,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 38 "..\..\Views\Job\Create.cshtml"
#line 39 "..\..\Views\Job\Create.cshtml"
Write(Html.ValidationMessageFor(m => m.DeviceHeld));
@@ -277,7 +293,7 @@ WriteLiteral("\r\n");
WriteLiteral(" ");
#line 39 "..\..\Views\Job\Create.cshtml"
#line 40 "..\..\Views\Job\Create.cshtml"
Write(Html.HiddenFor(m => m.DeviceHeld));
@@ -318,21 +334,21 @@ WriteLiteral(">Not Held</label>\r\n </td>\r\n
"</table>\r\n </div>\r\n");
#line 54 "..\..\Views\Job\Create.cshtml"
#line 55 "..\..\Views\Job\Create.cshtml"
}else{
#line default
#line hidden
#line 55 "..\..\Views\Job\Create.cshtml"
#line 56 "..\..\Views\Job\Create.cshtml"
Write(Html.Hidden("DeviceHeld", false));
#line default
#line hidden
#line 55 "..\..\Views\Job\Create.cshtml"
#line 56 "..\..\Views\Job\Create.cshtml"
}
@@ -345,6 +361,17 @@ WriteLiteral(" id=\"createJob_CommentsContainer\"");
WriteLiteral(" class=\"createJob_Component\"");
WriteLiteral(" data-dynamic=\"");
#line 58 "..\..\Views\Job\Create.cshtml"
Write(Model.RegenerateCommentsOnTypeChange ? Url.Action(MVC.API.Job.InitialComments()) : null);
#line default
#line hidden
WriteLiteral("\"");
WriteLiteral(">\r\n <table>\r\n <tr>\r\n <td>\r\n " +
" <h3>Comments</h3>\r\n </td>\r\n " +
" <td>\r\n");
@@ -352,7 +379,7 @@ WriteLiteral(">\r\n <table>\r\n <tr>\r\n
WriteLiteral(" ");
#line 64 "..\..\Views\Job\Create.cshtml"
#line 65 "..\..\Views\Job\Create.cshtml"
Write(Html.EditorFor(m => m.Comments));
@@ -362,7 +389,7 @@ WriteLiteral("\r\n </td>\r\n </tr>\r\n
" </div>\r\n");
#line 69 "..\..\Views\Job\Create.cshtml"
#line 70 "..\..\Views\Job\Create.cshtml"
if (Authorization.Has(Claims.Job.Actions.Close)){
@@ -501,7 +528,7 @@ WriteLiteral(" />\r\n Minutes\r\n </span>\r\n"
WriteLiteral(" ");
#line 86 "..\..\Views\Job\Create.cshtml"
#line 87 "..\..\Views\Job\Create.cshtml"
Write(Html.ValidationMessageFor(m => m.QuickLogTaskTimeMinutes));
@@ -510,7 +537,7 @@ WriteLiteral(" ");
WriteLiteral("\r\n </div>\r\n </div>\r\n");
#line 89 "..\..\Views\Job\Create.cshtml"
#line 90 "..\..\Views\Job\Create.cshtml"
}
}
@@ -554,30 +581,44 @@ WriteLiteral(">\r\n $(function () {\r\n var discoDialogMethods
"eJob_SubType_\' + jobType).show();\r\n } else {\r\n " +
" $(\'#createJob_SubTypes\').find(\'.createJob_SubType:visible\').slideUp();\r\n " +
" var jobType = $checkedItem.val();\r\n $(\'#createJo" +
"b_SubType_\' + jobType).slideDown();\r\n }\r\n }\r\n\r\n\r\n " +
" var additionalValidation = function (form) {\r\n var isValid" +
" = true;\r\n\r\n // Validate Type\r\n var typeValue = $j" +
"obTypes.filter(\':checked\').val();\r\n if (typeValue) {\r\n " +
" $typeValidationMessage.removeClass(\'field-validation-error\').addClass(\'" +
"field-validation-valid\');\r\n // Validate SubTypes\r\n " +
" if ($(\'#createJob_SubType_\' + typeValue).find(\'input:checked\').length >" +
" 0) {\r\n $subTypesValidationMessage.removeClass(\'field-val" +
"idation-error\').addClass(\'field-validation-valid\');\r\n } else " +
"{\r\n $subTypesValidationMessage.text(\'At least one Job Sub" +
" Type is required\').removeClass(\'field-validation-valid\').addClass(\'field-valida" +
"tion-error\');\r\n isValid = false;\r\n }\r\n" +
" } else {\r\n $typeValidationMessage.text(\'A Job" +
" Type is required\').removeClass(\'field-validation-valid\').addClass(\'field-valida" +
"tion-error\');\r\n isValid = false;\r\n }\r\n\r\n");
"b_SubType_\' + jobType).slideDown();\r\n }\r\n }\r\n\r\n " +
" const initialCommentsUrl = $(\'#createJob_CommentsContainer\').attr(\'data-dyn" +
"amic\');\r\n if (!!initialCommentsUrl) {\r\n let commentsDi" +
"rty = false;\r\n $(\'#Comments\').on(\'change\', function () {\r\n " +
" commentsDirty = true;\r\n });\r\n $(\'#cre" +
"ateJob_Types\').on(\'change\', \'input\', async function () {\r\n if" +
" (commentsDirty) {\r\n return;\r\n }\r\n " +
" const body = new FormData(createJobForm.get(0));\r\n " +
" const response = await fetch(initialCommentsUrl, {\r\n " +
" method: \'POST\',\r\n body: body\r\n });\r\n" +
" if (response.ok) {\r\n const comments =" +
" await response.json();\r\n $(\'#Comments\').val(comments);\r\n" +
" } else {\r\n console.error(\'Failed to f" +
"etch updated initial comments\');\r\n }\r\n })\r\n " +
" }\r\n\r\n var additionalValidation = function (form) {\r\n " +
" var isValid = true;\r\n\r\n // Validate Type\r\n " +
" var typeValue = $jobTypes.filter(\':checked\').val();\r\n if (typeVa" +
"lue) {\r\n $typeValidationMessage.removeClass(\'field-validation" +
"-error\').addClass(\'field-validation-valid\');\r\n // Validate Su" +
"bTypes\r\n if ($(\'#createJob_SubType_\' + typeValue).find(\'input" +
":checked\').length > 0) {\r\n $subTypesValidationMessage.rem" +
"oveClass(\'field-validation-error\').addClass(\'field-validation-valid\');\r\n " +
" } else {\r\n $subTypesValidationMessage.text(\'A" +
"t least one Job Sub Type is required\').removeClass(\'field-validation-valid\').add" +
"Class(\'field-validation-error\');\r\n isValid = false;\r\n " +
" }\r\n } else {\r\n $typeValidation" +
"Message.text(\'A Job Type is required\').removeClass(\'field-validation-valid\').add" +
"Class(\'field-validation-error\');\r\n isValid = false;\r\n " +
" }\r\n\r\n");
#line 175 "..\..\Views\Job\Create.cshtml"
#line 199 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 175 "..\..\Views\Job\Create.cshtml"
#line 199 "..\..\Views\Job\Create.cshtml"
if (Authorization.Has(Claims.Job.Actions.Close)){
@@ -612,7 +653,7 @@ WriteLiteral(@"
WriteLiteral("\r\n");
#line 199 "..\..\Views\Job\Create.cshtml"
#line 223 "..\..\Views\Job\Create.cshtml"
}
@@ -636,13 +677,13 @@ WriteLiteral(@"
");
#line 215 "..\..\Views\Job\Create.cshtml"
#line 239 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 215 "..\..\Views\Job\Create.cshtml"
#line 239 "..\..\Views\Job\Create.cshtml"
if (Authorization.Has(Claims.Job.Properties.DeviceHeld)){
#line default
@@ -669,7 +710,7 @@ WriteLiteral("\r\n if ($(\'#DeviceSerialNumber\').val()) {\r\n
" }\r\n ");
#line 246 "..\..\Views\Job\Create.cshtml"
#line 270 "..\..\Views\Job\Create.cshtml"
}
@@ -678,13 +719,13 @@ WriteLiteral("\r\n if ($(\'#DeviceSerialNumber\').val()) {\r\n
WriteLiteral(" //#endregion\r\n\r\n");
#line 249 "..\..\Views\Job\Create.cshtml"
#line 273 "..\..\Views\Job\Create.cshtml"
#line default
#line hidden
#line 249 "..\..\Views\Job\Create.cshtml"
#line 273 "..\..\Views\Job\Create.cshtml"
if (Authorization.Has(Claims.Job.Actions.Close)){
@@ -733,7 +774,7 @@ WriteLiteral("\r\n //#region QuickLog\r\n var $quickLog =
WriteLiteral("\r\n");
#line 317 "..\..\Views\Job\Create.cshtml"
#line 341 "..\..\Views\Job\Create.cshtml"
}
+1 -3
View File
@@ -15,9 +15,7 @@
@RenderSection("head", false)
</head>
<body class="layoutDialog">
<section id="layout_Page">
@RenderBody()
</section>
@RenderBody()
@{ Disco.Services.Plugins.Features.UIExtension.UIExtensions.ExecuteExtensionResult(this); }
</body>
</html>
@@ -114,31 +114,27 @@ WriteLiteral("\r\n</head>\r\n<body");
WriteLiteral(" class=\"layoutDialog\"");
WriteLiteral(">\r\n <section");
WriteLiteral(" id=\"layout_Page\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
WriteLiteral(" ");
#line 19 "..\..\Views\Shared\_DialogLayout.cshtml"
Write(RenderBody());
#line 18 "..\..\Views\Shared\_DialogLayout.cshtml"
Write(RenderBody());
#line default
#line hidden
WriteLiteral("\r\n </section>\r\n");
WriteLiteral("\r\n");
#line 21 "..\..\Views\Shared\_DialogLayout.cshtml"
#line 19 "..\..\Views\Shared\_DialogLayout.cshtml"
#line default
#line hidden
#line 21 "..\..\Views\Shared\_DialogLayout.cshtml"
#line 19 "..\..\Views\Shared\_DialogLayout.cshtml"
Disco.Services.Plugins.Features.UIExtension.UIExtensions.ExecuteExtensionResult(this);
#line default