|
public getData(state: DataStateChangeEventArgs): Observable<DataStateChangeEventArgs> {
let sortQuery: String = '';
const skipquery = state.skip ? `$skip=${state.skip}` : null;
let pageQuery = '';
const takeQuery = state.take ? `$top=${state.take}` : null;
if (skipquery) {
pageQuery = `${skipquery}&`;
}
if (takeQuery) {
pageQuery = `${pageQuery}${takeQuery}`;
}
let filterQuery: String = '';
if ((state.sorted || []).length) {
sortQuery = `&$orderby=` + state.sorted.map((obj: Sorts) => {
return obj.direction === 'descending' ? `${obj.name} desc` : obj.name;
}).reverse().join(',');
}
if (state.where) {
filterQuery = `&$filter=` + state.where.map((obj) => {
return (<Predicate>obj).predicates.map((predicate) => {
return predicate.operator === 'equal' ? `${predicate.field} eq ${predicate.value}` :
`${predicate.operator}(tolower(${predicate.field}),'${predicate.value}')`;
}).reverse().join(' and ');
});
}
return this.http
.get(`${this.BASE_URL}?${pageQuery}${sortQuery}${filterQuery}&$count=true`)
.pipe(map((response: any) => response.json()))
.pipe(map((response: any) => {
return state.dataSource === undefined ? (<DataResult>{
result: response['value'],
count: parseInt(response['@odata.count'], 10),
}) : response['value'];
}))
.pipe(map((data: any) => data));
}
} |