From e592e06926fd3bcac67a17873b259b8fab250611 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 15 Mar 2021 21:45:24 +0000 Subject: [PATCH] --- server/AyaNova/DataList/DataListFetcher.cs | 7 +++- server/AyaNova/DataList/DataListReturnData.cs | 4 +- .../models/DataListTableProcessingOptions.cs | 41 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/server/AyaNova/DataList/DataListFetcher.cs b/server/AyaNova/DataList/DataListFetcher.cs index f8a0ed50..42d7e0c4 100644 --- a/server/AyaNova/DataList/DataListFetcher.cs +++ b/server/AyaNova/DataList/DataListFetcher.cs @@ -177,7 +177,12 @@ namespace AyaNova.DataList //BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT Newtonsoft.Json.Linq.JArray ColumnsJSON = null; ColumnsJSON = DataList.GenerateReturnListColumns(dataListTableProcessingOptions.Columns); - return new DataListReturnData(rows, totalRecordCount, ColumnsJSON, dataListTableProcessingOptions.SortBy, dataListTableProcessingOptions.Filter.Where(z => z.Column.StartsWith("meta") == false).ToList()); + return new DataListReturnData(rows, + totalRecordCount, + ColumnsJSON, + dataListTableProcessingOptions.SortBy, + dataListTableProcessingOptions.Filter.Where(z => z.Column.StartsWith("meta") == false).ToList(), + dataListTableProcessingOptions.HiddenAffectiveColumns); } diff --git a/server/AyaNova/DataList/DataListReturnData.cs b/server/AyaNova/DataList/DataListReturnData.cs index 8e1ca6f9..b58aab33 100644 --- a/server/AyaNova/DataList/DataListReturnData.cs +++ b/server/AyaNova/DataList/DataListReturnData.cs @@ -9,14 +9,16 @@ namespace AyaNova.DataList public object Columns { get; } public Dictionary SortBy { get; set; } public List Filter { get; set; } + public List HiddenAffectiveColumns {get;set;} - public DataListReturnData(object returnItems, long totalRecordCount, Newtonsoft.Json.Linq.JArray columns, Dictionary sortBy, List filter) + public DataListReturnData(object returnItems, long totalRecordCount, Newtonsoft.Json.Linq.JArray columns, Dictionary sortBy, List filter, List hiddenAffectiveColumns) { Data = returnItems; TotalRecordCount = totalRecordCount; Columns = columns; SortBy = sortBy; Filter = filter; + HiddenAffectiveColumns=hiddenAffectiveColumns; } }//eoc diff --git a/server/AyaNova/models/DataListTableProcessingOptions.cs b/server/AyaNova/models/DataListTableProcessingOptions.cs index b5b4060f..c5bcb5b7 100644 --- a/server/AyaNova/models/DataListTableProcessingOptions.cs +++ b/server/AyaNova/models/DataListTableProcessingOptions.cs @@ -15,6 +15,7 @@ namespace AyaNova.Models internal const int DefaultLimit = 25; internal int? Offset { get; set; } internal int? Limit { get; set; } + internal List HiddenAffectiveColumns { get; set; } internal DataListTableProcessingOptions( DataListTableRequest request, @@ -51,6 +52,8 @@ namespace AyaNova.Models foreach (DataListFilterOption dfo in StaticServerFilterOptions) base.Filter.Add(dfo); + SetHiddenAffectiveColumns(dataList); + } internal List AllUniqueColumnKeysReferenced @@ -62,5 +65,43 @@ namespace AyaNova.Models } } + //All columns that are hidden but are affecting the query (sorting, filtering) + //so in UI can show that there are hidden columns affecting the result set + internal void SetHiddenAffectiveColumns(IDataListProcessing dataList) + { + + List tempKeys = new List(); + foreach (string s in base.Filter.Select(z => z.Column).ToList()) + { + if (!Columns.Contains(s)) + { + if (!tempKeys.Contains(s)) + { + tempKeys.Add(s); + } + } + } + + + foreach (string s in base.SortBy.Select(z => z.Key).ToList()) + { + if (!Columns.Contains(s)) + { + if (!tempKeys.Contains(s)) + { + tempKeys.Add(s); + } + } + } + + foreach (string s in tempKeys) + { + var fd = dataList.FieldDefinitions.Where(z => z.FieldKey == s).FirstOrDefault(); + if (fd != null) + HiddenAffectiveColumns.Add(fd.TKey); + } + } } + + } \ No newline at end of file