private applySelection()

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