|
@@ -85,8 +85,7 @@ namespace PRSDesktop
|
|
|
)
|
|
|
{
|
|
|
HeaderText = "Default",
|
|
|
- Filters = ALL_FILTERS,
|
|
|
- FilterRecord = (r,f) => GlobalFilter(r,f)
|
|
|
+ GetFilter = () => new FuncCheckBoxDynamicGridColumnFilter(GlobalFilter, AllFilterData)
|
|
|
});
|
|
|
|
|
|
foreach (var groupid in GroupNames.Keys)
|
|
@@ -99,8 +98,7 @@ namespace PRSDesktop
|
|
|
)
|
|
|
{
|
|
|
HeaderText = GroupNames[groupid],
|
|
|
- Filters = ALL_FILTERS,
|
|
|
- FilterRecord = (r,f) => GroupFilter(r,f,groupid)
|
|
|
+ GetFilter = () => new FuncCheckBoxDynamicGridColumnFilter((row, pred) => GroupFilter(row, pred, groupid), AllFilterData)
|
|
|
}
|
|
|
);
|
|
|
}
|
|
@@ -115,8 +113,7 @@ namespace PRSDesktop
|
|
|
)
|
|
|
{
|
|
|
HeaderText = GroupNames[GroupID],
|
|
|
- Filters = ALL_FILTERS,
|
|
|
- FilterRecord = (r,f) => GroupFilter(r,f, GroupID)
|
|
|
+ GetFilter = () => new FuncCheckBoxDynamicGridColumnFilter((row, pred) => GroupFilter(row, pred, GroupID), AllFilterData)
|
|
|
}
|
|
|
);
|
|
|
|
|
@@ -131,8 +128,7 @@ namespace PRSDesktop
|
|
|
)
|
|
|
{
|
|
|
HeaderText = UserNames[userid],
|
|
|
- Filters = ALL_FILTERS,
|
|
|
- FilterRecord = (r,f) => UserFilter(r,f, GroupID, userid)
|
|
|
+ GetFilter = () => new FuncCheckBoxDynamicGridColumnFilter((row, pred) => UserFilter(row, pred, GroupID, userid), AllFilterData)
|
|
|
}
|
|
|
);
|
|
|
}
|
|
@@ -140,22 +136,17 @@ namespace PRSDesktop
|
|
|
return columns;
|
|
|
}
|
|
|
|
|
|
- private static bool MatchFilter(string[] filter, string[] test)
|
|
|
+ private static bool MatchFilter(Predicate<object?> filter, string[] test)
|
|
|
{
|
|
|
- if ((filter == null) && (test == null))
|
|
|
- return true;
|
|
|
- if ((filter == null) || (test == null))
|
|
|
- return false;
|
|
|
- if (filter.Length != test.Length)
|
|
|
- return false;
|
|
|
- if (filter.Except(test).Any())
|
|
|
- return false;
|
|
|
- if (test.Except(filter).Any())
|
|
|
- return false;
|
|
|
- return true;
|
|
|
+ return test.All(x => filter(x));
|
|
|
+ }
|
|
|
+
|
|
|
+ private IEnumerable<Tuple<string, object?>> AllFilterData()
|
|
|
+ {
|
|
|
+ return ALL_FILTERS.Select(x => new Tuple<string, object?>(x, x));
|
|
|
}
|
|
|
|
|
|
- private bool GlobalFilter(CoreRow row, string[] filter)
|
|
|
+ private bool GlobalFilter(CoreRow row, Predicate<object?> filter)
|
|
|
{
|
|
|
if (MatchFilter(filter, ALL_FILTERS))
|
|
|
return true;
|
|
@@ -166,7 +157,7 @@ namespace PRSDesktop
|
|
|
if (!MatchFilter(filter, ENABLED_FILTERS))
|
|
|
{
|
|
|
bool isenabled = GetGlobalOrDefault(descriptor, globaldefault);
|
|
|
- var check = (filter.Contains(ENABLED_TOKENS) && isenabled) || (filter.Contains(DISABLED_TOKENS) && !isenabled);
|
|
|
+ var check = (filter(ENABLED_TOKENS) && isenabled) || (filter(DISABLED_TOKENS) && !isenabled);
|
|
|
if (!check)
|
|
|
return false;
|
|
|
}
|
|
@@ -174,7 +165,7 @@ namespace PRSDesktop
|
|
|
if (!MatchFilter(filter, OVERRIDDEN_FILTERS))
|
|
|
{
|
|
|
bool isoverridden = Items.Any(x => String.Equals(x.Descriptor, descriptor) && (x.Type == SecurityTokenType.Global));
|
|
|
- var check = (filter.Contains(OVERRIDDEN_TOKENS) && isoverridden) || (filter.Contains(DEFAULT_TOKENS) && !isoverridden);
|
|
|
+ var check = (filter(OVERRIDDEN_TOKENS) && isoverridden) || (filter(DEFAULT_TOKENS) && !isoverridden);
|
|
|
if (!check)
|
|
|
return false;
|
|
|
}
|
|
@@ -182,7 +173,7 @@ namespace PRSDesktop
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- private bool GroupFilter(CoreRow row, string[] filter, Guid groupid)
|
|
|
+ private bool GroupFilter(CoreRow row, Predicate<object?> filter, Guid groupid)
|
|
|
{
|
|
|
if (MatchFilter(filter, ALL_FILTERS))
|
|
|
return true;
|
|
@@ -193,7 +184,7 @@ namespace PRSDesktop
|
|
|
if (!MatchFilter(filter, ENABLED_FILTERS))
|
|
|
{
|
|
|
bool isenabled = GetGroupOrDefault(descriptor, groupid, globaldefault);
|
|
|
- var check = (filter.Contains(ENABLED_TOKENS) && isenabled) || (filter.Contains(DISABLED_TOKENS) && !isenabled);
|
|
|
+ var check = (filter(ENABLED_TOKENS) && isenabled) || (filter(DISABLED_TOKENS) && !isenabled);
|
|
|
if (!check)
|
|
|
return false;
|
|
|
}
|
|
@@ -201,7 +192,7 @@ namespace PRSDesktop
|
|
|
if (!MatchFilter(filter, OVERRIDDEN_FILTERS))
|
|
|
{
|
|
|
bool isoverridden = Items.Any(x => String.Equals(x.Descriptor, descriptor) && (x.Type == SecurityTokenType.Group));
|
|
|
- var check = (filter.Contains(OVERRIDDEN_TOKENS) && isoverridden) || (filter.Contains(DEFAULT_TOKENS) && !isoverridden);
|
|
|
+ var check = (filter(OVERRIDDEN_TOKENS) && isoverridden) || (filter(DEFAULT_TOKENS) && !isoverridden);
|
|
|
if (!check)
|
|
|
return false;
|
|
|
}
|
|
@@ -209,7 +200,7 @@ namespace PRSDesktop
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- private bool UserFilter(CoreRow row, string[] filter, Guid groupid, Guid userid)
|
|
|
+ private bool UserFilter(CoreRow row, Predicate<object?> filter, Guid groupid, Guid userid)
|
|
|
{
|
|
|
if (MatchFilter(filter, ALL_FILTERS))
|
|
|
return true;
|
|
@@ -220,7 +211,7 @@ namespace PRSDesktop
|
|
|
if (!MatchFilter(filter, ENABLED_FILTERS))
|
|
|
{
|
|
|
bool isenabled = GetUserOrDefault(descriptor, userid, groupid, globaldefault);
|
|
|
- var check = (filter.Contains(ENABLED_TOKENS) && isenabled) || (filter.Contains(DISABLED_TOKENS) && !isenabled);
|
|
|
+ var check = (filter(ENABLED_TOKENS) && isenabled) || (filter(DISABLED_TOKENS) && !isenabled);
|
|
|
if (!check)
|
|
|
return false;
|
|
|
}
|
|
@@ -228,7 +219,7 @@ namespace PRSDesktop
|
|
|
if (!MatchFilter(filter, OVERRIDDEN_FILTERS))
|
|
|
{
|
|
|
bool isoverridden = Items.Any(x => string.Equals(x.Descriptor, descriptor) && (x.Type == SecurityTokenType.User));
|
|
|
- var check = (filter.Contains(OVERRIDDEN_TOKENS) && isoverridden) || (filter.Contains(DEFAULT_TOKENS) && !isoverridden);
|
|
|
+ var check = (filter(OVERRIDDEN_TOKENS) && isoverridden) || (filter(DEFAULT_TOKENS) && !isoverridden);
|
|
|
if (!check)
|
|
|
return false;
|
|
|
}
|