in src/FacetsVisual.ts [606:633]
private applySelection(selectedInstances: DataPoint[]) {
const facetColumn = findColumn(this.dataView, 'facet');
const instanceColumn = findColumn(this.dataView, 'facetInstance');
let sqExpr = selectedInstances.reduce((prevExpr: any, selected: any) => {
if (!selected.rows[0]) { return prevExpr; }
const { facet, facetInstance } = selected.rows[0];
let expr: any = instanceColumn
? SQExprBuilder.equal(instanceColumn.expr, SQExprBuilder.typedConstant(facetInstance, instanceColumn.type))
: undefined;
expr = facetColumn
? SQExprBuilder.and(expr, SQExprBuilder.equal(facetColumn.expr, SQExprBuilder.typedConstant(facet, facetColumn.type)))
: expr;
return prevExpr ? SQExprBuilder.or(prevExpr, expr) : expr;
}, undefined);
if (this.hasRangeFilter()) {
const rangeExpr = this.createSQExprFromRangeFilter(this.filter.range);
sqExpr = sqExpr ? SQExprBuilder.and(sqExpr, rangeExpr) : rangeExpr;
}
this.bookmarkSelection = powerbi.data.createDataViewScopeIdentity(sqExpr);
if (sqExpr) {
this.sendSelectionToHost([this.bookmarkSelection]);
} else {
this.selectionManager.clear();
}
}