Forum Discussion
satishr
8 years agoHelper III
Field order change issue when using options.dataViews[0].table.rows in my custom visual
Hi guys, I have created a simple custom visual widget where I'm using options.dataViews[0].table.rows to get data. The visual takes 3 fields as input - Actual, Target and Category. It works fine whe...
- 8 years ago
Please use this code snippet to parse values from table mapping:
export interface ColumnGroup { [columnName: string]: number | Date | string; } function getColumnGroupByRole( columns: DataViewMetadataColumn[], row: DataViewTableRow ): ColumnGroup { const columnGroup: ColumnGroup = {}; row.forEach((value: any, valueIndex: number) => { const column: DataViewMetadataColumn = columns[valueIndex]; Object.keys(columns[valueIndex].roles) .forEach((roleName: string) => { columnGroup[roleName] = value; }); }); return columnGroup; } function parseData(dataView: DataView) { const data: any[] = []; dataView.table.rows.forEach((row: DataViewTableRow) => { const columns = getColumnGroupByRole(dataView.metadata.columns, row); data.push({ Indicator: +columns["Indicator"], Target: +columns["Target"], Date: columns["Date"] ? columns["Date"].toString() : null }); }); return data; }Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
satishr
8 years agoHelper III
Hi v-viig, I'm using the below code to fetch data. Can you let me know how to use roles object here? Sorry, I'm new to JSON structures.
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
resultData.push({
Indicator: +row[0],
Target: +row[1],
Date: row[2].toString(),
});
}
var row = rows[i];
resultData.push({
Indicator: +row[0],
Target: +row[1],
Date: row[2].toString(),
});
}
v-viig
8 years agoCommunity Champion
Please use this code snippet to parse values from table mapping:
export interface ColumnGroup {
[columnName: string]: number | Date | string;
}
function getColumnGroupByRole(
columns: DataViewMetadataColumn[],
row: DataViewTableRow
): ColumnGroup {
const columnGroup: ColumnGroup = {};
row.forEach((value: any, valueIndex: number) => {
const column: DataViewMetadataColumn = columns[valueIndex];
Object.keys(columns[valueIndex].roles)
.forEach((roleName: string) => {
columnGroup[roleName] = value;
});
});
return columnGroup;
}
function parseData(dataView: DataView) {
const data: any[] = [];
dataView.table.rows.forEach((row: DataViewTableRow) => {
const columns = getColumnGroupByRole(dataView.metadata.columns, row);
data.push({
Indicator: +columns["Indicator"],
Target: +columns["Target"],
Date: columns["Date"]
? columns["Date"].toString()
: null
});
});
return data;
}
Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals