From b79c98cc9dfb7d63552234b5aeb4e040705d11b4 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 13 Feb 2020 23:41:44 +0000 Subject: [PATCH] --- server/AyaNova/DataList/AyaDataList.cs | 74 ++++++++++++-------------- 1 file changed, 33 insertions(+), 41 deletions(-) diff --git a/server/AyaNova/DataList/AyaDataList.cs b/server/AyaNova/DataList/AyaDataList.cs index 62171ace..ea3bc798 100644 --- a/server/AyaNova/DataList/AyaDataList.cs +++ b/server/AyaNova/DataList/AyaDataList.cs @@ -33,10 +33,7 @@ namespace AyaNova.DataList List ret = new List(); for (int i = 0; i < listViewArray.Count; i++) { - var cm = listViewArray[i]; - - //Get some info about this column / field ret.Append(cm["fld"].Value()); } return ret; @@ -45,55 +42,50 @@ namespace AyaNova.DataList public Newtonsoft.Json.Linq.JArray GenerateListColumnsJSONFromListView(JArray listViewArray) { - throw new System.NotImplementedException("AyaDataList:GenerateListColumnsJSONFromListView not coded yet "); - // //parse the template - // var jtemplate = JObject.Parse(listView); + var ListViewFieldKeys = GetFieldListFromListView(listViewArray); - // //convert to strings (https://stackoverflow.com/a/33836599/8939) - // var fullFields = ((JArray)jtemplate["full"]).ToObject(); + //Generate JSON fragment to return with column definitions + StringBuilder sb = new StringBuilder(); - // //Generate JSON fragment to return with column definitions - // StringBuilder sb = new StringBuilder(); + sb.Append("["); + //df First column is always the df column + sb.Append($"{{\"cm\":\"df\",\"dt\":0,\"ay\":{(int)DefaultListObjectType}}}"); - // sb.Append("["); - // //df First column is always the df column - // sb.Append($"{{\"cm\":\"df\",\"dt\":0,\"ay\":{(int)DefaultListObjectType}}}"); + foreach (string s in ListViewFieldKeys) + { + AyaDataListFieldDefinition o = FieldDefinitions.FirstOrDefault(x => x.FieldKey == s); +#if (DEBUG) + //Developers little helper + if (o == null) + { + throw new System.ArgumentNullException($"DEV ERROR in AyaDataList::GenerateListColumnsJSONFromListView - field {s} specified in ListView was NOT found in ObjectFields list"); + } +#endif - // foreach (string s in fullFields) - // { - // AyaDataListFieldDefinition o = FieldDefinitions.FirstOrDefault(x => x.FieldKey == s); - // #if (DEBUG) - // //Developers little helper - // if (o == null) - // { - // throw new System.ArgumentNullException($"DEV ERROR in AyaDataList::GenerateListColumnsJSONFromTemplate - field {s} specified in template was NOT found in ObjectFields list"); - // } - // #endif + if (o != null) + {//Here is where we can vet the field name, if it doesn't exist. For production we'll just ignore those ones - // if (o != null) - // {//Here is where we can vet the field name, if it doesn't exist. For production we'll just ignore those ones + sb.Append(","); + sb.Append("{"); + //Build required part of column definition + sb.Append($"\"cm\":\"{o.LtKey}\",\"dt\":{(int)o.UiFieldDataType}"); - // sb.Append(","); - // sb.Append("{"); - // //Build required part of column definition - // sb.Append($"\"cm\":\"{o.LtKey}\",\"dt\":{(int)o.UiFieldDataType}"); + //Has a AyObjectType? (linkable / openable) + if (o.AyaObjectType != 0) + sb.Append($",\"ay\":{(int)o.AyaObjectType}"); - // //Has a AyObjectType? (linkable / openable) - // if (o.AyaObjectType != 0) - // sb.Append($",\"ay\":{(int)o.AyaObjectType}"); + //Has a Enumtype? + if (!string.IsNullOrEmpty(o.EnumType)) + sb.Append($",\"et\":\"{AyaNova.Util.StringUtil.TrimTypeName(o.EnumType)}\""); - // //Has a Enumtype? - // if (!string.IsNullOrEmpty(o.EnumType)) - // sb.Append($",\"et\":\"{AyaNova.Util.StringUtil.TrimTypeName(o.EnumType)}\""); + sb.Append("}"); - // sb.Append("}"); + } + } + sb.Append("]"); - // } - // } - // sb.Append("]"); - - // return JArray.Parse(sb.ToString()); + return JArray.Parse(sb.ToString()); }