This commit is contained in:
2018-12-19 23:35:38 +00:00
parent 7b06bf2dce
commit f289d82afb
3 changed files with 46 additions and 6 deletions

View File

@@ -81,7 +81,8 @@ TODO CLIENT STUFF
TODO SERVER STUFF
- Docs: pagingOptions, sort and filter need to be documented for API
- Owner ID: where does it vet the owner ID is a valid existing owner when it's set for various objects??
-----------------
TODO AFTER CLIENT block ABOVE:

View File

@@ -31,9 +31,19 @@ This parameter controls the paging offset and is expected to be an integer. If
This parameter controls the number of items returned starting at the offset provided. The maximum allowed value is 1000, the default value is 25 if no value is specified.
### Sort
### DataFilterId - Sorting and Filtering
This parameter controls the sort order of the data returned. It is expected to be a JSON array of objects that contain two fields a `fld` property that contains the string name of the field to be sorted by and a `dir` property that controls the direction of sorting and is one of two values "+" for Ascending or "-" for Descending. Multiple objects may be specified to sort by multiple columns in order from first to last specefied in the array.
Sorting and filtering are accomplished by providing an Id value in the DataFilterId parameter of a list for a pre-created and saved `DataFilter` object.
A DataFilter is created separately before it can be used with a list request via the DataFilter route (see the [API explorer console](api-console.md)).
A DataFilter object contains properties for filtering and sorting as well as a name as displayed for selection in the user interface and also properties that control who can select and use the filter (public or just a single User).
#### DataFilter.sort
This parameter controls the sort order of the data returned. It is expected to be a JSON array of objects that contain two fields a `fld` property that contains the string name of the field to be sorted by and a `dir` property that controls the direction of sorting and is one of two values "+" for Ascending or "-" for Descending. Multiple objects may be specified to sort by multiple columns in order from first to last specified in the array.
Note that this property of the DataFilter is expected to be a *string* representation of the JSON collection, not raw JSON.
For example the following Sort array will sort a list by Name first in ascending order and then by StartDate second in descending order:
@@ -43,4 +53,36 @@ To determine which field names are valid for a particular list you can make use
If no sort parameter is provided the default is to sort by Id Descending so the most recently created objects appear first in the list.
#### DataFilter.filter
This parameter filters the data returned. It is expected to be a *string* representation of a JSON array of objects that contain three fields a `fld` property that contains the string name of the field to be sorted by, a `op` property that specifies what type of filter operation is required and optionally a `value` property when a comparison value is required such as a "Starts with" type of filter.
The `fld` property must be a valid field for the list in question. To determine which field names are valid for a particular list you can make use of the `/FilterOptions` API route for that object which is available for any objects with sort and filterable lists.
The `op` property must be a valid filter operation type. The 10 possible values for `op` are:
| OP | MEANING |
| ----- | ------------------------------ |
| = | Equality, `fld` data must equal `value` specified to be included in list |
| > | Greater than, `fld` data must be greater than `value` specified to be included in list |
| >= | Greater than or equality, `fld` data must be greater than or equal to `value` specified to be included in list |
| < | Less than, `fld` data must be less than `value` specified to be included in list |
| <= | Less than or equality, `fld` data must be less than or equal to `value` specified to be included in list |
| != | Not equal, `fld` data must not equal `value` specified to be included in list |
| %- | Starts with, `fld` data must start with `value` specified to be included in list |
| -% | Ends with, `fld` data must end with `value` specified to be included in list |
| -%- | Contains, `fld` data must contain `value` specified to be included in list |
| !-%- | Not contains, `fld` data must not contain `value` specified to be included in list |
Note that not all op values are valid for all data types, for example a date doesn't support a Contains type operator.
The `value` property
For example the following filter array JSON (in string format) will return only items where the Name starts with "Bob" and the Notes field exactly equals "Aardvark":
`"filter": "[ {\"fld\": \"name\", \"op\": \"%-\", \"value\": \"Bob\" }, { \"fld\": \"notes\", \"op\": \"=\", \"value\": \"Aardvark\" }]"
}`
If no filter parameter is provided no filtering will be done on the list

View File

@@ -18,9 +18,6 @@ namespace AyaNova.Api.ControllerHelpers
[Range(1, MaxPageSize, ErrorMessage = "Limit must be greater than 0 and less than 1000.")]
public int? Limit { get; set; }
public string Sort { get; set; }
public bool? Asc { get; set; }
//Data filter id to use with this list query
//0 or less means no filter
public long DataFilterId { get; set; }