diff --git a/server/AyaNova/DataList/AyaDataList.cs b/server/AyaNova/DataList/AyaDataList.cs index f016cdff..338070c5 100644 --- a/server/AyaNova/DataList/AyaDataList.cs +++ b/server/AyaNova/DataList/AyaDataList.cs @@ -30,7 +30,7 @@ namespace AyaNova.DataList public long CurrentUserId { get; set; } public List DefaultColumns { get; set; } - public List DefaultSortBy { get; set; } + public Dictionary DefaultSortBy { get; set; } //set defaults if not provided in listOptions public void SetListOptionDefaultsIfNecessary(DataListOptions listOptions) @@ -42,18 +42,18 @@ namespace AyaNova.DataList } - //return array of field keys in list view - public List GetFieldListFromListView(JArray listViewArray) - { - // [{key:"COLUMN UNIQUE KEY ID",sort:"-" or "+",filter:{any:true/false,items:[{FILTER OBJECT SEE BELOW}]} }, {key:"second column unique key"},{...etc...}] - List ret = new List(); - for (int i = 0; i < listViewArray.Count; i++) - { - var cm = listViewArray[i]; - ret.Add(cm["fld"].Value()); - } - return ret; - } + // //return array of field keys in list view + // public List GetFieldListFromListView(JArray listViewArray) + // { + // // [{key:"COLUMN UNIQUE KEY ID",sort:"-" or "+",filter:{any:true/false,items:[{FILTER OBJECT SEE BELOW}]} }, {key:"second column unique key"},{...etc...}] + // List ret = new List(); + // for (int i = 0; i < listViewArray.Count; i++) + // { + // var cm = listViewArray[i]; + // ret.Add(cm["fld"].Value()); + // } + // return ret; + // } diff --git a/server/AyaNova/DataList/DataListFetcher.cs b/server/AyaNova/DataList/DataListFetcher.cs index c957f5ac..5111877b 100644 --- a/server/AyaNova/DataList/DataListFetcher.cs +++ b/server/AyaNova/DataList/DataListFetcher.cs @@ -230,7 +230,7 @@ namespace AyaNova.DataList //BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT Newtonsoft.Json.Linq.JArray ColumnsJSON = null; - ColumnsJSON = DataList.GenerateListColumnsJSONFromListView(listOptions.Columns); + ColumnsJSON = DataList.GenerateListColumnsJSONFromListView(listOptions.Columns);//<<<-----this next return new ApiDataListResponse(rows, totalRecordCount, ColumnsJSON); diff --git a/server/AyaNova/DataList/DataListOptions.cs b/server/AyaNova/DataList/DataListOptions.cs index 70fe5a10..1ba4f655 100644 --- a/server/AyaNova/DataList/DataListOptions.cs +++ b/server/AyaNova/DataList/DataListOptions.cs @@ -33,7 +33,7 @@ namespace AyaNova.DataList NEW: columns:["PartInventoryTransactionEntryDate","PartPartNumber","PartWarehouseName","PartInventoryTransactionQuantity","PartInventoryTransactionDescription","PartInventoryTransactionSource","PartInventoryBalance"] - sortBy:[{"PartInventoryTransactionEntryDate":"-"}],//All sorted columns here as keyvalue pairs value is a string of "+" for ascending "-" for descending + sortBy:[{"PartInventoryTransactionEntryDate":"-"}],//All sorted columns here as keyvalue pairs value is a string of "+" for ascending "-" for descending and are IN ORDER of how to be sorted filter:[{column:"PartPartNumber",any:true/false,items:[{op: "=",value: "400735"}]}], clientCriteria:"2" //could be anything here that makes sense to the list, in this case an example customer id for customernotedatalist */ diff --git a/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs index f20f0deb..e62307e8 100644 --- a/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs @@ -17,18 +17,20 @@ namespace AyaNova.DataList //iterate the datafilter and concatenate a sql query from it // [{key:"COLUMN UNIQUE KEY ID",sort:"-" or "+",filter:{any:true/false,items:[{FILTER OBJECT SEE BELOW}]} }, {key:"second column unique key"},{...etc...}] bool SortItemAdded = false; - for (int i = 0; i < listViewArray.Count; i++) + // for (int i = 0; i < listViewArray.Count; i++) + foreach(KeyValuePair kvSort in listOptions.SortBy) { - var cm = listViewArray[i]; - //skip it if sort is not defined - if (cm["sort"] == null) - { - continue; - } - var fld = cm["fld"].Value(); - var dir = cm["sort"].Value(); + // var cm = listViewArray[i]; + // //skip it if sort is not defined + // if (cm["sort"] == null) + // { + // continue; + // } + // var fld = cm["fld"].Value(); + // var dir = cm["sort"].Value(); + //Get the correct sql column name - AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(z => z.FieldKey == fld); + AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(z => z.FieldKey == kvSort.Key); //No sorting on custom fields! if (DataListField.IsCustomField) { @@ -38,7 +40,7 @@ namespace AyaNova.DataList //Developers little helper if (DataListField == null) { - throw new System.ArgumentNullException($"DEV ERROR in DataListSqlFilterOrderByBuilder.cs: field {fld} specified in template was NOT found in ObjectFields list"); + throw new System.ArgumentNullException($"DEV ERROR in DataListSqlFilterOrderByBuilder.cs: field {kvSort.Key} specified in template was NOT found in ObjectFields list"); } #endif var SQLValueColumnName = DataListField.GetSqlValueColumnName(); @@ -49,7 +51,8 @@ namespace AyaNova.DataList sb.Append(" "); sb.Append(SQLValueColumnName); sb.Append(" "); - sb.Append(dir == "+" ? "ASC" : "DESC"); + //sb.Append(dir == "+" ? "ASC" : "DESC"); + sb.Append(kvSort.Value == "+" ? "ASC" : "DESC"); SortItemAdded = true; } diff --git a/server/AyaNova/DataList/IAyaDataList.cs b/server/AyaNova/DataList/IAyaDataList.cs index acd6dd71..e8ea210c 100644 --- a/server/AyaNova/DataList/IAyaDataList.cs +++ b/server/AyaNova/DataList/IAyaDataList.cs @@ -20,12 +20,12 @@ namespace AyaNova.DataList //Defaults when none is specified (see DataListOptions for formats and notes) List DefaultColumns { get; set; } - List DefaultSortBy { get; set; } + Dictionary DefaultSortBy { get; set; } void SetListOptionDefaultsIfNecessary(DataListOptions listOptions); Newtonsoft.Json.Linq.JArray GenerateListColumnsJSONFromListView(JArray listViewArray); - List GetFieldListFromListView(JArray listViewArray); + // List GetFieldListFromListView(JArray listViewArray);