in src/parsers/odata-parser.ts [185:210]
public makeOrderByStatement(): string {
if (this.query.sortColumns != null) {
const sortColumns = this.query.queryType === QueryType.Flat ? this.query.sortColumns : this.query.sortColumns.slice(this.query.sortColumns.length / 2);
const sortStatements = sortColumns.map((column) => {
const odataProperty = this.metadata[column.field.referenceName];
if (odataProperty == null) {
NotesService.instance.newNote('warning', `Property ${column.field.referenceName} in the order by statement does not have an OData equivalent. Leaving it out of $orderby.`);
} else if (!odataProperty.type.startsWith('Edm')) {
// Case: Complex type that has a default property (not expanded in the list of specialProperties).
const defaultField = ODataMetadataParser.defaultFields[odataProperty.type];
if (defaultField == null) {
NotesService.instance.newNote('warning', `The datatype of property ${column.field.referenceName} is not supported. Leaving it out of $orderby.`);
} else {
return `${odataProperty.name}/${defaultField.defaultFieldName} ${column.descending === true ? 'desc' : 'asc'}`;
}
} else {
return `${odataProperty.name} ${column.descending === true ? 'desc' : 'asc'}`;
}
return null;
});
return sortStatements.filter((s) => s != null).length === 0 ? null : `$orderby=${sortStatements.filter((s) => s != null).join(', ')}`;
}
return null;
}