/// <summary> /// For internal use only. /// Parse column collection. /// </summary> /// <param name="values">Request parameters.</param> /// <param name="names">Name convention for request parameters.</param> /// <returns></returns> private static IEnumerable <IColumn> ParseColumns(IValueProvider values, IRequestNameConvention names) { var columns = new List <IColumn>(); int counter = 0; while (true) { // Parses Field value. var columnField = values.GetValue(String.Format(names.ColumnField, counter)); string _columnField = null; if (!Parse <string>(columnField, out _columnField)) { break; } // Parses Name value. var columnName = values.GetValue(String.Format(names.ColumnName, counter)); string _columnName = null; if (!Parse <string>(columnName, out _columnName)) { break; } // Parses Orderable value. var columnSortable = values.GetValue(String.Format(names.IsColumnSortable, counter)); bool _columnSortable = true; Parse <bool>(columnSortable, out _columnSortable); // Parses Searchable value. var columnSearchable = values.GetValue(String.Format(names.IsColumnSearchable, counter)); bool _columnSearchable = true; Parse <bool>(columnSearchable, out _columnSearchable); // Parsed Search value. var columnSearchValue = values.GetValue(String.Format(names.ColumnSearchValue, counter)); string _columnSearchValue = null; Parse <string>(columnSearchValue, out _columnSearchValue); // Parses IsRegex value. var columnSearchRegex = values.GetValue(String.Format(names.IsColumnSearchRegex, counter)); bool _columnSearchRegex = false; Parse <bool>(columnSearchRegex, out _columnSearchRegex); var search = new Search(_columnSearchValue, _columnSearchRegex, _columnField); // Instantiates a new column with parsed elements. var column = new Column(_columnName, _columnField, _columnSearchable, _columnSortable, search); // Adds the column to the return collection. columns.Add(column); // Increments counter to keep processing columns. counter++; } return(columns); }
/// <summary> /// Creates a new 'Option' instance. /// </summary> /// <param name="defaultPageLength">Default page length to be used.</param> /// <param name="enableDrawValidation">Indicates if draw validation will be enabled by default or not.</param> /// <param name="enableRequestAdditionalParameters">Indicates if additional parameters resolution will be enabled for for request by default.</param> /// <param name="enableResponseAdditionalParameters">Indicates if additional parameters will be sent to the response by default.</param> /// <param name="requestNameConvention">Request naming convention to be used.</param> /// <param name="responseNameConvention">Response naming convention to be used.</param> public DataTablesOptions(int defaultPageLength, bool enableDrawValidation, bool enableRequestAdditionalParameters, bool enableResponseAdditionalParameters, IRequestNameConvention requestNameConvention, IResponseNameConvention responseNameConvention) { DefaultPageLength = defaultPageLength; IsDrawValidationEnabled = enableDrawValidation; IsRequestAdditionalParametersEnabled = enableRequestAdditionalParameters; IsResponseAdditionalParametersEnabled = enableResponseAdditionalParameters; RequestNameConvention = requestNameConvention; ResponseNameConvention = responseNameConvention; }
/// <summary> /// For internal use only. /// Parse sort collection. /// </summary> /// <param name="columns">Column collection to use when parsing sort.</param> /// <param name="values">Request parameters.</param> /// <param name="names">Name convention for request parameters.</param> /// <returns></returns> private static IEnumerable <ISort> ParseSorting(IEnumerable <IColumn> columns, IValueProvider values, IRequestNameConvention names) { var sorting = new List <ISort>(); for (int i = 0; i < columns.Count(); i++) { var sortField = values.GetValue(String.Format(names.SortField, i)); int _sortField = 0; if (!Parse <int>(sortField, out _sortField)) { break; } var column = columns.ElementAt(_sortField); var sortDirection = values.GetValue(String.Format(names.SortDirection, i)); string _sortDirection = null; Parse <string>(sortDirection, out _sortDirection); if (column.SetSort(i, _sortDirection)) { sorting.Add(column.Sort); } } return(sorting); }