public runQuery()

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;
                    }
                });
            });
        });
    }