Forum Discussion
Tung
1 year agoFrequent Visitor
How to optimize selectionManager.select(). Lags the system when selecting
My code has performance problem when selecting. It searches and returns index very fast. I return index to create "createSelectionIdBuilder" by index. but when it comes to the part of code that passe...
Anonymous
1 year agoNot applicable
Hi Tung ,
Please change the codes as below and check if it can work better...
const handleClickSelectionVisual = useCallback((groupList: string[], parentRowList: { [key: string]: string | string[] }[]) => {
if (_.isEmpty(groupList) && _.isEmpty(parentRowList)) {
selectionManager.clear();
return;
}
const rows = dataTableOrigin.rows || [];
const dataParent = parentRowList.map(item => item.rows) || [];
const indices = filterDataGetIndices(dataParent as string[][], rows, groupList);
// Using map instead of forEach for potential performance improvement
const selectionList = indices.map((index: number) =>
selectionIdBuilder.createSelectionIdBuilder()
.withTable(dataTableOrigin, index)
.createSelectionId()
);
// Debouncing the select call to avoid frequent execution
debounce(() => {
selectionManager.select(selectionList, false);
}, 100);
}, [selectionFilter, dataTableOrigin.rows]);
// Debounce function implementation
function debounce(func, wait) {
let timeout;
return function() {
clearTimeout(timeout);
timeout = setTimeout(() => {
func.apply(this, arguments);
}, wait);
};
}
Or you can raise the ticket in Custom Visuals Development Discussion forum for a dedicated and professional support.
Custom Visuals Development Discussion - Microsoft Fabric Community
Best Regards
- Tung1 year agoFrequent Visitor
thanks, but that code doesn't solve the problem