Feature #4: Pre-defined/Restricted Locations

Configurable list and location suggestions. Ability to restrict
locations. Shows 'occupied' locations.
This commit is contained in:
Gary Sharp
2014-02-17 21:44:34 +11:00
parent ed7caf8b4a
commit 5be747afbc
35 changed files with 2136 additions and 729 deletions
@@ -405,6 +405,7 @@
} else {
if ($this.is('[data-subjectstatus="removed"]')) {
$this.show();
$this.attr('data-status', '')
}
}
});
@@ -432,7 +433,7 @@
data: { Id: id }
}).done(function (response) {
if (response) {
if (list.find('li[data-subjectid="' + response.Id + '"]').length == 0) {
if (list.find('li[data-subjectid="' + response.Id + '"]').filter('[data-status!="removed"]').length == 0) {
var liIcon = $('<i>').addClass('fa fa-lg');
if (response.Type === 'user')
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -1352,21 +1352,22 @@ WriteLiteral("\',\r\n minLength:
" $this.remove();\r\n " +
" } else {\r\n if ($this.is(\'[" +
"data-subjectstatus=\"removed\"]\')) {\r\n " +
" $this.show();\r\n }\r\n " +
" }\r\n });\r\n " +
" }\r\n\r\n function remove() {\r\n" +
" $this = $(this).closest(\'li\');\r\n\r\n " +
" if ($this.is(\'[data-subjectstatus=\"new\"]\')) {\r\n " +
" $this.remove();\r\n " +
" } else {\r\n $this.attr(\'data-subject" +
"status\', \'removed\').hide();\r\n }\r\n\r\n " +
" updateNoSubjects();\r\n }" +
"\r\n\r\n function add() {\r\n\r\n " +
" var id = textAdd.val();\r\n\r\n $.aja" +
"x({\r\n url: \'");
" $this.show();\r\n $this.attr(\'d" +
"ata-status\', \'\')\r\n }\r\n " +
" }\r\n });\r\n " +
" }\r\n\r\n function remove() {\r\n " +
" $this = $(this).closest(\'li\');\r\n\r\n " +
" if ($this.is(\'[data-subjectstatus=\"new\"]\')) {\r\n " +
" $this.remove();\r\n " +
" } else {\r\n $this.attr(\'data-subjects" +
"tatus\', \'removed\').hide();\r\n }\r\n\r\n " +
" updateNoSubjects();\r\n }\r" +
"\n\r\n function add() {\r\n\r\n " +
" var id = textAdd.val();\r\n\r\n $.ajax" +
"({\r\n url: \'");
#line 430 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 431 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(Url.Action(MVC.API.JobQueue.Subject()));
@@ -1376,52 +1377,52 @@ WriteLiteral("\',\r\n method: \'get\',\r\
" data: { Id: id }\r\n }).done" +
"(function (response) {\r\n if (response) {\r" +
"\n if (list.find(\'li[data-subjectid=\"\'" +
" + response.Id + \'\"]\').length == 0) {\r\n\r\n " +
" var liIcon = $(\'<i>\').addClass(\'fa fa-lg\');\r\n " +
" if (response.Type === \'user\')\r\n " +
" liIcon.addClass(\'fa-user\');\r\n " +
" else\r\n " +
"liIcon.addClass(\'fa-users\');\r\n\r\n " +
"var li = $(\'<li>\')\r\n .append(" +
"liIcon)\r\n .append($(\'<span>\')" +
".text(response.Id == response.Name ? response.Id : response.Name + \' [\' + respon" +
"se.Id + \']\'))\r\n .append($(\'<i" +
">\').addClass(\'fa fa-times-circle remove\'))\r\n " +
" .addClass(response.Type)\r\n " +
" .attr(\'data-subjectid\', response.Id)\r\n " +
" .attr(\'data-subjectstatus\', \'new\');\r\n\r\n " +
" list.append(li);\r\n\r\n " +
" updateNoSubjects();\r\n " +
" } else {\r\n alert(\'That subjec" +
"t has already been added\');\r\n }\r\n " +
" } else {\r\n " +
" alert(\'Unknown Id\');\r\n }\r\n " +
" }).fail(function (jqXHR, textStatus, errorThrown)" +
" {\r\n alert(\'Error: \' + errorThrown);\r\n " +
" });\r\n }\r\n\r\n " +
" function updateNoSubjects() {\r\n " +
" if (list.find(\'li:visible\').length > 0)\r\n " +
" noSubjects.hide();\r\n else\r" +
"\n noSubjects.show();\r\n " +
" }\r\n\r\n function saveChanges() {\r\n " +
" var form = $(\'#Config_JobQueues_Subjects_Update_" +
"Dialog_Form\').empty();\r\n\r\n list.find(\'li[data" +
"-subjectstatus!=\"removed\"]\').each(function () {\r\n " +
" var subjectId = $(this).attr(\'data-subjectid\');\r\n\r\n " +
" form.append($(\'<input>\').attr({\r\n " +
" \'name\': \'Subjects\',\r\n " +
" \'type\': \'hidden\'\r\n }).val(subjectId));\r" +
"\n\r\n }).get();\r\n\r\n " +
" form.submit();\r\n\r\n dialog.dialog(\"dis" +
"able\");\r\n dialog.dialog(\"option\", \"buttons\", " +
"null);\r\n }\r\n\r\n $(f" +
"unction () {\r\n $(\'#Config_JobQueues_Subjects_" +
"Update\').click(showDialog);\r\n });\r\n\r\n " +
" })();\r\n </script>\r\n </" +
"div>\r\n");
" + response.Id + \'\"]\').filter(\'[data-status!=\"removed\"]\').length == 0) {\r\n\r\n " +
" var liIcon = $(\'<i>\').addClass(\'fa f" +
"a-lg\');\r\n if (response.Type === \'" +
"user\')\r\n liIcon.addClass(\'fa-" +
"user\');\r\n else\r\n " +
" liIcon.addClass(\'fa-users\');\r\n\r\n " +
" var li = $(\'<li>\')\r\n " +
" .append(liIcon)\r\n " +
" .append($(\'<span>\').text(response.Id == response.Name ? response" +
".Id : response.Name + \' [\' + response.Id + \']\'))\r\n " +
" .append($(\'<i>\').addClass(\'fa fa-times-circle remove\'))\r\n " +
" .addClass(response.Type)\r\n " +
" .attr(\'data-subjectid\', respons" +
"e.Id)\r\n .attr(\'data-subjectst" +
"atus\', \'new\');\r\n\r\n list.append(li" +
");\r\n\r\n updateNoSubjects();\r\n " +
" } else {\r\n " +
" alert(\'That subject has already been added\');\r\n " +
" }\r\n } else {\r" +
"\n alert(\'Unknown Id\');\r\n " +
" }\r\n }).fail(functi" +
"on (jqXHR, textStatus, errorThrown) {\r\n a" +
"lert(\'Error: \' + errorThrown);\r\n });\r\n " +
" }\r\n\r\n function updat" +
"eNoSubjects() {\r\n if (list.find(\'li:visible\')" +
".length > 0)\r\n noSubjects.hide();\r\n " +
" else\r\n noSu" +
"bjects.show();\r\n }\r\n\r\n " +
" function saveChanges() {\r\n var form = $(" +
"\'#Config_JobQueues_Subjects_Update_Dialog_Form\').empty();\r\n\r\n " +
" list.find(\'li[data-subjectstatus!=\"removed\"]\').each(function ()" +
" {\r\n var subjectId = $(this).attr(\'data-s" +
"ubjectid\');\r\n\r\n form.append($(\'<input>\')." +
"attr({\r\n \'name\': \'Subjects\',\r\n " +
" \'type\': \'hidden\'\r\n " +
" }).val(subjectId));\r\n\r\n }).get" +
"();\r\n\r\n form.submit();\r\n\r\n " +
" dialog.dialog(\"disable\");\r\n " +
"dialog.dialog(\"option\", \"buttons\", null);\r\n }\r\n\r\n" +
" $(function () {\r\n " +
" $(\'#Config_JobQueues_Subjects_Update\').click(showDialog);\r\n " +
" });\r\n\r\n })();\r\n " +
" </script>\r\n </div>\r\n");
#line 498 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 499 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
@@ -1431,13 +1432,13 @@ WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n
" Jobs:</th>\r\n <td>\r\n <div>\r\n");
#line 505 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 506 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line default
#line hidden
#line 505 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 506 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
if (Model.Token.JobQueue.JobSubTypes.Count > 0)
{
@@ -1447,13 +1448,13 @@ WriteLiteral(" </td>\r\n </tr>\r\n <tr>\r\n
WriteLiteral(" <ul>\r\n");
#line 508 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 509 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line default
#line hidden
#line 508 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 509 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
foreach (var jobType in Model.Token.JobQueue.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description))
{
@@ -1465,7 +1466,7 @@ WriteLiteral(" <li>\r\n");
WriteLiteral(" ");
#line 511 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 512 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(jobType.Key.Description);
@@ -1474,13 +1475,13 @@ WriteLiteral(" ");
WriteLiteral("\r\n <ul>\r\n");
#line 513 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 514 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line default
#line hidden
#line 513 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 514 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count)
{
@@ -1494,7 +1495,7 @@ WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">[All Sub Types]</span></li>\r\n");
#line 516 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 517 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
else
{
@@ -1507,7 +1508,7 @@ WriteLiteral(">[All Sub Types]</span></li>\r\n");
WriteLiteral(" <li>");
#line 521 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 522 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(jobSubType.Description);
@@ -1516,7 +1517,7 @@ WriteLiteral(" <li>");
WriteLiteral("</li>\r\n");
#line 522 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 523 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
}
@@ -1527,7 +1528,7 @@ WriteLiteral(" </ul>\r\n
"\n");
#line 526 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 527 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
@@ -1536,7 +1537,7 @@ WriteLiteral(" </ul>\r\n
WriteLiteral(" </ul>\r\n");
#line 528 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 529 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
else
{
@@ -1551,7 +1552,7 @@ WriteLiteral("&lt;None&gt;");
WriteLiteral("\r\n");
#line 532 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 533 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
@@ -1560,13 +1561,13 @@ WriteLiteral("\r\n");
WriteLiteral(" </div>\r\n");
#line 534 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 535 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line default
#line hidden
#line 534 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 535 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
if (canConfig)
{
@@ -1594,13 +1595,13 @@ WriteLiteral(" title=\"Job Queue Automatic Types\"");
WriteLiteral(">\r\n");
#line 538 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 539 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line default
#line hidden
#line 538 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 539 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
using (Html.BeginForm(MVC.API.JobQueue.UpdateJobSubTypes(Model.Token.JobQueue.Id, null, true)))
{
var selectedTypes = Model.Token.JobQueue.JobSubTypes.Select(jst => jst.JobType).Distinct().ToList();
@@ -1612,15 +1613,15 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <div");
WriteAttribute("id", Tuple.Create(" id=\"", 28412), Tuple.Create("\"", 28434)
, Tuple.Create(Tuple.Create("", 28417), Tuple.Create("trJobType", 28417), true)
WriteAttribute("id", Tuple.Create(" id=\"", 28526), Tuple.Create("\"", 28548)
, Tuple.Create(Tuple.Create("", 28531), Tuple.Create("trJobType", 28531), true)
#line 543 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28426), Tuple.Create<System.Object, System.Int32>(jt.Id
#line 544 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28540), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 28426), false)
, 28540), false)
);
WriteLiteral(" class=\"jobTypes\"");
@@ -1628,35 +1629,35 @@ WriteLiteral(" class=\"jobTypes\"");
WriteLiteral(">\r\n <h4>\r\n <inp" +
"ut");
WriteAttribute("id", Tuple.Create(" id=\"", 28535), Tuple.Create("\"", 28554)
, Tuple.Create(Tuple.Create("", 28540), Tuple.Create("Types_", 28540), true)
WriteAttribute("id", Tuple.Create(" id=\"", 28649), Tuple.Create("\"", 28668)
, Tuple.Create(Tuple.Create("", 28654), Tuple.Create("Types_", 28654), true)
#line 545 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28546), Tuple.Create<System.Object, System.Int32>(jt.Id
#line 546 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28660), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 28546), false)
, 28660), false)
);
WriteLiteral(" class=\"jobType\"");
WriteLiteral(" type=\"checkbox\"");
WriteAttribute("value", Tuple.Create(" value=\"", 28587), Tuple.Create("\"", 28603)
WriteAttribute("value", Tuple.Create(" value=\"", 28701), Tuple.Create("\"", 28717)
#line 545 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28595), Tuple.Create<System.Object, System.Int32>(jt.Id
#line 546 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28709), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 28595), false)
, 28709), false)
);
WriteLiteral(" ");
#line 545 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 546 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(selectedTypes.Contains(jt) ? "checked=\"checked\"" : null);
@@ -1664,21 +1665,21 @@ WriteLiteral(" ");
#line hidden
WriteLiteral(" /><label");
WriteAttribute("for", Tuple.Create(" for=\"", 28674), Tuple.Create("\"", 28694)
, Tuple.Create(Tuple.Create("", 28680), Tuple.Create("Types_", 28680), true)
WriteAttribute("for", Tuple.Create(" for=\"", 28788), Tuple.Create("\"", 28808)
, Tuple.Create(Tuple.Create("", 28794), Tuple.Create("Types_", 28794), true)
#line 545 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28686), Tuple.Create<System.Object, System.Int32>(jt.Id
#line 546 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28800), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 28686), false)
, 28800), false)
);
WriteLiteral(">");
#line 545 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 546 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(jt.Description);
@@ -1686,15 +1687,15 @@ WriteLiteral(">");
#line hidden
WriteLiteral("</label></h4>\r\n <div");
WriteAttribute("id", Tuple.Create(" id=\"", 28762), Tuple.Create("\"", 28784)
, Tuple.Create(Tuple.Create("", 28767), Tuple.Create("SubTypes_", 28767), true)
WriteAttribute("id", Tuple.Create(" id=\"", 28876), Tuple.Create("\"", 28898)
, Tuple.Create(Tuple.Create("", 28881), Tuple.Create("SubTypes_", 28881), true)
#line 546 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28776), Tuple.Create<System.Object, System.Int32>(jt.Id
#line 547 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
, Tuple.Create(Tuple.Create("", 28890), Tuple.Create<System.Object, System.Int32>(jt.Id
#line default
#line hidden
, 28776), false)
, 28890), false)
);
WriteLiteral(" class=\"jobSubTypes\"");
@@ -1704,7 +1705,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 547 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 548 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div"));
@@ -1715,7 +1716,7 @@ WriteLiteral("\r\n");
WriteLiteral(" ");
#line 548 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 549 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Token.JobQueue.JobSubTypes), 2));
@@ -1725,7 +1726,7 @@ WriteLiteral("\r\n </div>\r\n
"");
#line 551 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 552 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
}
@@ -1773,7 +1774,7 @@ WriteLiteral(" <script>\r\n (function
" })();\r\n </script>\r\n");
#line 616 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 617 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
@@ -1794,7 +1795,7 @@ WriteLiteral("></i>&nbsp;When jobs of these types are created, they will automat
" </table>\r\n</div>\r\n");
#line 624 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 625 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
if (canDelete || canShowJobs)
{
@@ -1810,7 +1811,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 627 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 628 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(Html.ActionLinkButton("Delete", MVC.API.JobQueue.Delete(Model.Token.JobQueue.Id, true), "Config_JobQueues_Actions_Delete_Button"));
@@ -1865,7 +1866,7 @@ WriteLiteral(@">
WriteLiteral(" ");
#line 664 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 665 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
Write(Html.ActionLinkButton(string.Format("Show {0} job{1}", Model.OpenJobCount, (Model.OpenJobCount == 1 ? null : "s")), MVC.Job.Queue(Model.Token.JobQueue.Id), "Config_JobQueues_Actions_ShowJobs_Button"));
@@ -1874,7 +1875,7 @@ WriteLiteral(" ");
WriteLiteral("\r\n </div>\r\n");
#line 666 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
#line 667 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
}
#line default