Add date-based managed group filtering

This commit is contained in:
Gary Sharp
2016-10-10 19:21:01 +11:00
parent 062769a7e3
commit 23975f8fc3
18 changed files with 2025 additions and 1610 deletions
@@ -22,7 +22,7 @@
<div class="code" title="@group.Id">
<i class="fa fa-fw fa-lg fa-link success"></i>@group.Domain.FriendlyDistinguishedNamePath(group.DistinguishedName)
</div>
<button class="button small Config_LinkedGroup_LinkButton" data-linkedgroupid="@(Model.ManagedGroup.Configuration.GroupId)" data-linkedroupdescription="@(Model.CategoryDescription)" data-linkedroupupdateurl="@(Model.UpdateUrl)">Change Link</button>
<button class="button small Config_LinkedGroup_LinkButton" data-linkedgroupid="@(Model.ManagedGroup.Configuration.GroupId)" data-linkedgroupfilterdateoption="@(Model.ManagedGroup.IncludeFilterBeginDate)" data-linkedgroupfilterdate="@(Model.ManagedGroup.Configuration.FilterBeginDate)" data-linkedroupdescription="@(Model.CategoryDescription)" data-linkedroupupdateurl="@(Model.UpdateUrl)">Change Link</button>
<a href="@(Url.Action(MVC.API.System.SyncActiveDirectoryManagedGroup(Model.ManagedGroup.Key, Context.Request.Path)))" class="button small">Synchronize Now</a>
}
else
@@ -30,12 +30,12 @@
<div class="code error">
<i class="fa fa-fw fa-lg fa-unlink error"></i>Group Not Found: <strong class="code">@Model.ManagedGroup.Configuration.GroupId</strong>
</div>
<button class="button small Config_LinkedGroup_LinkButton" data-linkedgroupid="@(Model.ManagedGroup.Configuration.GroupId)" data-linkedroupdescription="@(Model.CategoryDescription)" data-linkedroupupdateurl="@(Model.UpdateUrl)">Change Link</button>
<button class="button small Config_LinkedGroup_LinkButton" data-linkedgroupid="@(Model.ManagedGroup.Configuration.GroupId)" data-linkedgroupfilterdateoption="@(Model.ManagedGroup.IncludeFilterBeginDate)" data-linkedgroupfilterdate="@(Model.ManagedGroup.Configuration.FilterBeginDate)" data-linkedroupdescription="@(Model.CategoryDescription)" data-linkedroupupdateurl="@(Model.UpdateUrl)">Change Link</button>
}
}
else
{
<button class="button small Config_LinkedGroup_LinkButton" data-linkedgroupid="" data-linkedroupdescription="@(Model.CategoryDescription)" data-linkedroupupdateurl="@(Model.UpdateUrl)">Link Group</button>
<button class="button small Config_LinkedGroup_LinkButton" data-linkedgroupid="" data-linkedgroupfilterdateoption="@(Model.IncludeFilterBeginDate)" data-linkedroupdescription="@(Model.CategoryDescription)" data-linkedroupupdateurl="@(Model.UpdateUrl)">Link Group</button>
}
}
else
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -27,7 +27,6 @@ namespace Disco.Web.Areas.Config.Views.Shared
using System.Web.UI;
using System.Web.WebPages;
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
@@ -154,11 +153,33 @@ WriteLiteral(" data-linkedgroupid=\"");
#line hidden
WriteLiteral("\"");
WriteLiteral(" data-linkedgroupfilterdateoption=\"");
#line 25 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.ManagedGroup.IncludeFilterBeginDate);
#line default
#line hidden
WriteLiteral("\"");
WriteLiteral(" data-linkedgroupfilterdate=\"");
#line 25 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.ManagedGroup.Configuration.FilterBeginDate);
#line default
#line hidden
WriteLiteral("\"");
WriteLiteral(" data-linkedroupdescription=\"");
#line 25 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.CategoryDescription);
Write(Model.CategoryDescription);
#line default
@@ -169,7 +190,7 @@ WriteLiteral(" data-linkedroupupdateurl=\"");
#line 25 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.UpdateUrl);
Write(Model.UpdateUrl);
#line default
@@ -180,14 +201,14 @@ WriteLiteral(">Change Link</button>\r\n");
WriteLiteral(" <a");
WriteAttribute("href", Tuple.Create(" href=\"", 1114), Tuple.Create("\"", 1228)
WriteAttribute("href", Tuple.Create(" href=\"", 1275), Tuple.Create("\"", 1389)
#line 26 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
, Tuple.Create(Tuple.Create("", 1121), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.System.SyncActiveDirectoryManagedGroup(Model.ManagedGroup.Key, Context.Request.Path))
, Tuple.Create(Tuple.Create("", 1282), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.System.SyncActiveDirectoryManagedGroup(Model.ManagedGroup.Key, Context.Request.Path))
#line default
#line hidden
, 1121), false)
, 1282), false)
);
WriteLiteral(" class=\"button small\"");
@@ -241,11 +262,33 @@ WriteLiteral(" data-linkedgroupid=\"");
#line hidden
WriteLiteral("\"");
WriteLiteral(" data-linkedgroupfilterdateoption=\"");
#line 33 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.ManagedGroup.IncludeFilterBeginDate);
#line default
#line hidden
WriteLiteral("\"");
WriteLiteral(" data-linkedgroupfilterdate=\"");
#line 33 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.ManagedGroup.Configuration.FilterBeginDate);
#line default
#line hidden
WriteLiteral("\"");
WriteLiteral(" data-linkedroupdescription=\"");
#line 33 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.CategoryDescription);
Write(Model.CategoryDescription);
#line default
@@ -256,7 +299,7 @@ WriteLiteral(" data-linkedroupupdateurl=\"");
#line 33 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.UpdateUrl);
Write(Model.UpdateUrl);
#line default
@@ -281,11 +324,22 @@ WriteLiteral(" class=\"button small Config_LinkedGroup_LinkButton\"");
WriteLiteral(" data-linkedgroupid=\"\"");
WriteLiteral(" data-linkedgroupfilterdateoption=\"");
#line 38 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.IncludeFilterBeginDate);
#line default
#line hidden
WriteLiteral("\"");
WriteLiteral(" data-linkedroupdescription=\"");
#line 38 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.CategoryDescription);
Write(Model.CategoryDescription);
#line default
@@ -296,7 +350,7 @@ WriteLiteral(" data-linkedroupupdateurl=\"");
#line 38 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
Write(Model.UpdateUrl);
Write(Model.UpdateUrl);
#line default
@@ -323,14 +377,14 @@ WriteLiteral(" <div");
WriteLiteral(" class=\"code\"");
WriteAttribute("title", Tuple.Create(" title=\"", 2272), Tuple.Create("\"", 2289)
WriteAttribute("title", Tuple.Create(" title=\"", 2661), Tuple.Create("\"", 2678)
#line 47 "..\..\Areas\Config\Views\Shared\LinkedGroupInstance.cshtml"
, Tuple.Create(Tuple.Create("", 2280), Tuple.Create<System.Object, System.Int32>(group.Id
, Tuple.Create(Tuple.Create("", 2669), Tuple.Create<System.Object, System.Int32>(group.Id
#line default
#line hidden
, 2280), false)
, 2669), false)
);
WriteLiteral(">\r\n <i");
@@ -1,25 +1,45 @@
<div id="Config_LinkedGroup_Dialog" title="Linked Group" class="dialog">
@{
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-TimePicker");
}
<div id="Config_LinkedGroup_Dialog" title="Linked Group" class="dialog">
<h3 id="Config_LinkedGroup_Title"></h3>
<form action="#" method="post">
<table class="input">
<tbody>
<tr>
<th>
<label for="Config_LinkedGroup_Id">Linked Group:</label>
</th>
<td>
<input id="Config_LinkedGroup_Id" type="text" name="GroupId" />
</td>
</tr>
<tr>
<th>
<label for="Config_LinkedGroup_FilterDate">Filter Date: </label>
</th>
<td>
<input id="Config_LinkedGroup_FilterDate" type="text" name="FilterBeginDate" placeholder="No Filter" autocomplete="off" />
</td>
</tr>
</tbody>
</table>
</form>
<div class="info-box error">
<p class="fa-p">
<i class="fa fa-exclamation-circle"></i><strong>Warning:</strong> This group will be managed by Disco ICT.<br />
Any <strong>existing members will be removed from the group</strong>, and it will be automatically synchronized with related members.
</p>
</div>
<form action="#" method="post">
<div class="input">
<label for="Config_LinkedGroup_Id">Linked Group: </label>
<input id="Config_LinkedGroup_Id" type="text" name="GroupId" />
</div>
</form>
</div>
<script>
$(function () {
var dialog;
var dialogGroupId;
var dialogFilterDate;
var dialogTitle;
function showDialog(groupId, updateUrl, title) {
function showDialog(groupId, filterDateOption, filterDateValue, updateUrl, title) {
if (dialog == null) {
dialog = $('#Config_LinkedGroup_Dialog').dialog({
width: 450,
@@ -28,6 +48,14 @@
autoOpen: false
});
dialogFilterDate = $('#Config_LinkedGroup_FilterDate');
dialogFilterDate.datetimepicker({
ampm: true,
changeYear: true,
changeMonth: true,
dateFormat: 'yy/mm/dd'
});
dialogGroupId = $('#Config_LinkedGroup_Id');
dialogGroupId.focus(function () { $(this).select(); });
dialogGroupId.autocomplete({
@@ -68,6 +96,18 @@
};
dialogGroupId.val(groupId);
if (!!filterDateOption) {
if (!!filterDateValue) {
dialogFilterDate.datetimepicker('setDate', moment(filterDateValue).toDate());
} else {
dialogFilterDate.val('');
}
dialogFilterDate.closest('tr').show();
} else {
dialogFilterDate.closest('tr').hide();
}
dialogTitle.text(title);
dialog.dialog('option', 'buttons', dialogButtons);
dialog.dialog('option', 'title', 'Linked Group: ' + title);
@@ -78,10 +118,12 @@
$this = $(this);
var configuredGroupId = $this.attr('data-linkedgroupid');
var configuredFilterBeginDate = $this.attr('data-linkedgroupfilterdate');
var filterDateOption = $this.attr('data-linkedgroupfilterdateoption') == 'True';
var description = $this.attr('data-linkedroupdescription');
var updateUrl = $this.attr('data-linkedroupupdateurl');
showDialog(configuredGroupId, updateUrl, description);
showDialog(configuredGroupId, filterDateOption, configuredFilterBeginDate, updateUrl, description);
return false;
});
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -27,7 +27,6 @@ namespace Disco.Web.Areas.Config.Views.Shared
using System.Web.UI;
using System.Web.WebPages;
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
@@ -44,7 +43,15 @@ namespace Disco.Web.Areas.Config.Views.Shared
}
public override void Execute()
{
WriteLiteral("<div");
#line 1 "..\..\Areas\Config\Views\Shared\LinkedGroupShared.cshtml"
Html.BundleDeferred("~/ClientScripts/Modules/jQueryUI-TimePicker");
#line default
#line hidden
WriteLiteral("\r\n<div");
WriteLiteral(" id=\"Config_LinkedGroup_Dialog\"");
@@ -56,7 +63,50 @@ WriteLiteral(">\r\n <h3");
WriteLiteral(" id=\"Config_LinkedGroup_Title\"");
WriteLiteral("></h3>\r\n <div");
WriteLiteral("></h3>\r\n <form");
WriteLiteral(" action=\"#\"");
WriteLiteral(" method=\"post\"");
WriteLiteral(">\r\n <table");
WriteLiteral(" class=\"input\"");
WriteLiteral(">\r\n <tbody>\r\n <tr>\r\n <th>\r\n " +
" <label");
WriteLiteral(" for=\"Config_LinkedGroup_Id\"");
WriteLiteral(">Linked Group:</label>\r\n </th>\r\n <td>\r\n " +
" <input");
WriteLiteral(" id=\"Config_LinkedGroup_Id\"");
WriteLiteral(" type=\"text\"");
WriteLiteral(" name=\"GroupId\"");
WriteLiteral(" />\r\n </td>\r\n </tr>\r\n <tr>\r\n " +
" <th>\r\n <label");
WriteLiteral(" for=\"Config_LinkedGroup_FilterDate\"");
WriteLiteral(">Filter Date: </label>\r\n </th>\r\n <td>\r\n " +
" <input");
WriteLiteral(" id=\"Config_LinkedGroup_FilterDate\"");
WriteLiteral(" type=\"text\"");
WriteLiteral(" name=\"FilterBeginDate\"");
WriteLiteral(" placeholder=\"No Filter\"");
WriteLiteral(" autocomplete=\"off\"");
WriteLiteral(" />\r\n </td>\r\n </tr>\r\n </tbody>\r\n " +
" </table>\r\n </form>\r\n <div");
WriteLiteral(" class=\"info-box error\"");
@@ -72,39 +122,15 @@ WriteLiteral(@"></i><strong>Warning:</strong> This group will be managed by Disc
Any <strong>existing members will be removed from the group</strong>, and it will be automatically synchronized with related members.
</p>
</div>
<form");
WriteLiteral(" action=\"#\"");
WriteLiteral(" method=\"post\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"input\"");
WriteLiteral(">\r\n <label");
WriteLiteral(" for=\"Config_LinkedGroup_Id\"");
WriteLiteral(">Linked Group: </label>\r\n <input");
WriteLiteral(" id=\"Config_LinkedGroup_Id\"");
WriteLiteral(" type=\"text\"");
WriteLiteral(" name=\"GroupId\"");
WriteLiteral(@" />
</div>
</form>
</div>
<script>
$(function () {
var dialog;
var dialogGroupId;
var dialogFilterDate;
var dialogTitle;
function showDialog(groupId, updateUrl, title) {
function showDialog(groupId, filterDateOption, filterDateValue, updateUrl, title) {
if (dialog == null) {
dialog = $('#Config_LinkedGroup_Dialog').dialog({
width: 450,
@@ -113,13 +139,21 @@ WriteLiteral(@" />
autoOpen: false
});
dialogFilterDate = $('#Config_LinkedGroup_FilterDate');
dialogFilterDate.datetimepicker({
ampm: true,
changeYear: true,
changeMonth: true,
dateFormat: 'yy/mm/dd'
});
dialogGroupId = $('#Config_LinkedGroup_Id');
dialogGroupId.focus(function () { $(this).select(); });
dialogGroupId.autocomplete({
source: '");
#line 34 "..\..\Areas\Config\Views\Shared\LinkedGroupShared.cshtml"
#line 62 "..\..\Areas\Config\Views\Shared\LinkedGroupShared.cshtml"
Write(Url.Action(MVC.API.System.SearchGroupSubjects()));
@@ -144,15 +178,23 @@ WriteLiteral("\',\r\n minLength: 2,\r\n se
" dialogGroupId.closest(\'form\').attr(\'action\', updateUrl).submit();\r\n " +
" }\r\n dialogButtons[\'Cancel\'] = function () {\r\n $(t" +
"his).dialog(\'close\');\r\n };\r\n\r\n dialogGroupId.val(groupId);" +
"\r\n dialogTitle.text(title);\r\n dialog.dialog(\'option\', \'but" +
"tons\', dialogButtons);\r\n dialog.dialog(\'option\', \'title\', \'Linked Gro" +
"up: \' + title);\r\n dialog.dialog(\'open\');\r\n }\r\n\r\n $(docu" +
"ment).on(\'click\', \'.Config_LinkedGroup_LinkButton\', function () {\r\n $" +
"this = $(this);\r\n\r\n var configuredGroupId = $this.attr(\'data-linkedgr" +
"oupid\');\r\n var description = $this.attr(\'data-linkedroupdescription\')" +
";\r\n var updateUrl = $this.attr(\'data-linkedroupupdateurl\');\r\n\r\n " +
" showDialog(configuredGroupId, updateUrl, description);\r\n\r\n retu" +
"rn false;\r\n });\r\n });\r\n</script>\r\n");
"\r\n\r\n if (!!filterDateOption) {\r\n if (!!filterDateValue" +
") {\r\n dialogFilterDate.datetimepicker(\'setDate\', moment(filte" +
"rDateValue).toDate());\r\n } else {\r\n dialogFilt" +
"erDate.val(\'\');\r\n }\r\n dialogFilterDate.closest(\'tr" +
"\').show();\r\n } else {\r\n dialogFilterDate.closest(\'tr\')" +
".hide();\r\n }\r\n\r\n dialogTitle.text(title);\r\n dia" +
"log.dialog(\'option\', \'buttons\', dialogButtons);\r\n dialog.dialog(\'opti" +
"on\', \'title\', \'Linked Group: \' + title);\r\n dialog.dialog(\'open\');\r\n " +
" }\r\n\r\n $(document).on(\'click\', \'.Config_LinkedGroup_LinkButton\', fun" +
"ction () {\r\n $this = $(this);\r\n\r\n var configuredGroupId = " +
"$this.attr(\'data-linkedgroupid\');\r\n var configuredFilterBeginDate = $" +
"this.attr(\'data-linkedgroupfilterdate\');\r\n var filterDateOption = $th" +
"is.attr(\'data-linkedgroupfilterdateoption\') == \'True\';\r\n var descript" +
"ion = $this.attr(\'data-linkedroupdescription\');\r\n var updateUrl = $th" +
"is.attr(\'data-linkedroupupdateurl\');\r\n\r\n showDialog(configuredGroupId" +
", filterDateOption, configuredFilterBeginDate, updateUrl, description);\r\n\r\n " +
" return false;\r\n });\r\n });\r\n</script>\r\n");
}
}