|
@@ -1,80 +0,0 @@
|
|
|
-using System;
|
|
|
-using System.Collections.Generic;
|
|
|
-using System.Data;
|
|
|
-using System.Linq;
|
|
|
-using Syncfusion.Data;
|
|
|
-
|
|
|
-namespace InABox.DynamicGrid;
|
|
|
-
|
|
|
-public static class IDynamicGridUIComponentExtensions
|
|
|
-{
|
|
|
- public static string CreateFilterExpression(this DynamicActionColumn column, string propertyName)
|
|
|
- {
|
|
|
- List<string> criteria = new();
|
|
|
-
|
|
|
- var sel = column.SelectedFilters ?? [];
|
|
|
- var exc = column.ExcludeFilters ?? [];
|
|
|
-
|
|
|
- if (sel.Any())
|
|
|
- {
|
|
|
- var sels = String.Join(", ",sel.Select(x => $"'{x}'"));
|
|
|
- criteria.Add($"{propertyName} IN ({sels})");
|
|
|
- }
|
|
|
-
|
|
|
- if (exc.Any())
|
|
|
- {
|
|
|
- var excs = String.Join(", ",exc.Select(x => $"'{x}'"));
|
|
|
- criteria.Add($"{propertyName} NOT IN ({excs})");
|
|
|
- }
|
|
|
-
|
|
|
- if (criteria.Any())
|
|
|
- return $"{string.Join(" AND ", criteria)}";
|
|
|
-
|
|
|
- return "true";
|
|
|
- }
|
|
|
-
|
|
|
- public static void SetFilters(this DynamicActionColumn column, IEnumerable<FilterPredicate>? predicates)
|
|
|
- {
|
|
|
- if (predicates != null)
|
|
|
- {
|
|
|
- var filter = predicates.Select(x => x.FilterValue.ToString()!).ToArray();
|
|
|
- var include = predicates.Any(x => x.FilterType == FilterType.Equals);
|
|
|
- if (include)
|
|
|
- {
|
|
|
- column.SelectedFilters = filter;
|
|
|
- column.ExcludeFilters = null;
|
|
|
- }
|
|
|
- else if(column.Filters is not null)
|
|
|
- {
|
|
|
- column.SelectedFilters = column.Filters.Except(filter).ToArray();
|
|
|
- column.ExcludeFilters = null;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- column.SelectedFilters = null;
|
|
|
- column.ExcludeFilters = filter;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- column.SelectedFilters = null;
|
|
|
- column.ExcludeFilters = null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public static void ApplyFilters(this DataView? view, IEnumerable<DynamicActionColumn> columns)
|
|
|
- {
|
|
|
- List<String> criteria = new();
|
|
|
- foreach (var column in columns)
|
|
|
- criteria.Add(column.GetFilterExpression?.Invoke(column) ?? "");
|
|
|
- var filter = string.Join(" AND ", criteria.Where(x => !string.IsNullOrWhiteSpace(x)));
|
|
|
- if (view != null)
|
|
|
- {
|
|
|
- view.RowStateFilter = DataViewRowState.CurrentRows;
|
|
|
- view.RowFilter = filter;
|
|
|
- if (view.Count == 0)
|
|
|
- view.RowStateFilter = DataViewRowState.None;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-}
|