Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

matrix selection error on other visual

hi power bi community

 

i try create selection with my matrix custom visual, but that make error on other visual

this is my transform, using builder withMatrixNode

 

function visualTransform(options: VisualUpdateOptions, host: IVisualHost): DataViewModel {

    let dataViews = options.dataViews[0];
    var rows = dataViews.matrix.rows;
    let listSelectionId: DataListSelection[] = [];
    let selectionIdBuilder = host.createSelectionIdBuilder();

    rows.root.children.forEach(x => {
        listSelectionId.push({
            value: x.value,
            selectionId: selectionIdBuilder.withMatrixNode(x, rows.levels).createSelectionId()
        });

        if (x.children)
            x.children.forEach(z => {
                listSelectionId.push({
                    value: z.value,
                    selectionId: selectionIdBuilder.withMatrixNode(z, rows.levels).createSelectionId()
                });
                if (z.children)
                    z.children.forEach(a => {
                        listSelectionId.push({
                            value: a.value,
                            selectionId: selectionIdBuilder.withMatrixNode(a, rows.levels).createSelectionId()
                        });

                    })
            })
    });
    return {
        dataPoints: listSelectionId
    }
}

I'm already add click listener to get selection Id and make it selected in manager, and this is the console log

 

 

but but my page always got error in other visual:

 

what wrong with my selection code?

 

and one more question, I'm already declare selectcallback in my manager but never called when other visual make selection

        this.selectionManager = this.host.createSelectionManager();
        console.log('constructor allow interaction', this.host.allowInteractions);
        this.selectionManager.registerOnSelectCallback(() => {
            console.log('selection manager callback', this.selectionManager.getSelectionIds());
        });
        this.selectionIdBuilder = options.host.createSelectionIdBuilder();

please help, I'm already strugling with this for 3 days