in analytics-example-widget/scripts/data/PopularValueQuery.ts [38:68]
public runQuery(): IPromise<PopularValueQueryResults[]> {
return getService(CacheableQueryService).getCacheableQueryResult(new MetadataQuery(this.popularValueQueryOptions.projectId, MetadataQuery.WorkItemSnapshot)).then(result => {
return ODataClient.getInstance().then((client) => {
let entity = "WorkItemSnapshot";
let teamFilter = `Teams/any(t:t/TeamSK eq ${this.popularValueQueryOptions.teamId})`;
let typeFilter = `(WorkItemType eq '${this.popularValueQueryOptions.workItemType}')`;
let filter = `${teamFilter} and ${typeFilter}`;
let fieldQueryingname = mapReferenceNameForQuery(this.popularValueQueryOptions.fieldName, result);
let groupFields = `${fieldQueryingname}`;
let aggregation = `$count as Frequency`;
let aggregationQuery = `${entity}?$apply=filter(${filter})/groupby((${groupFields}),aggregate(${aggregation}))`;
let fullQueryUrl = client.generateProjectLink(this.popularValueQueryOptions.projectId, aggregationQuery);
return client.runGetQuery(fullQueryUrl).then((results: any) => {
let resultSet = results["value"];
if (resultSet === undefined) {
return [];
} else {
resultSet.forEach(element => {
//Re-map the field name to be "Value" for strong type consistency
let temp = element[fieldQueryingname];
element.Value = temp;
});
return resultSet;
}
});
});
});
}