Forum Discussion
vkokorin
9 years agoRegular Visitor
How can I get the data?
Hello, guys. Help me, please. I have this default code in file visual.ts: module powerbi.extensibility.visual {
export class Visual implements IVisual {
private target: HTMLElement;
...
v-chuncz-msft
9 years agoCommunity Support
Based on my research, you will need to fill the update method by defining your own visualTransform function that will allow you to convert DataView into a view model your visual will use.
- vkokorin9 years agoRegular Visitor
You mean something like this?
function visualTransform(options: VisualUpdateOptions, host: IVisualHost): BarChartViewModel { let dataViews = options.dataViews; let defaultSettings: BarChartSettings = { enableAxis: { show: false, } }; let viewModel: BarChartViewModel = { dataPoints: [], dataMax: 0, settings: <BarChartSettings>{} }; if (!dataViews || !dataViews[0] || !dataViews[0].categorical || !dataViews[0].categorical.categories || !dataViews[0].categorical.categories[0].source || !dataViews[0].categorical.values) return viewModel; let categorical = dataViews[0].categorical; let category = categorical.categories[0]; let dataValue = categorical.values[0]; let barChartDataPoints: BarChartDataPoint[] = []; let dataMax: number; let colorPalette: IColorPalette = host.colorPalette; let objects = dataViews[0].metadata.objects; let barChartSettings: BarChartSettings = { enableAxis: { show: getValue<boolean>(objects, 'enableAxis', 'show', defaultSettings.enableAxis.show), } } for (let i = 0, len = Math.max(category.values.length, dataValue.values.length); i < len; i++) { let defaultColor: Fill = { solid: { color: colorPalette.getColor(category.values[i] + '').value } } barChartDataPoints.push({ category: category.values[i] + '', value: dataValue.values[i], color: getCategoricalObjectValue<Fill>(category, i, 'colorSelector', 'fill', defaultColor).solid.color, selectionId: host.createSelectionIdBuilder() .withCategory(category, i) .createSelectionId() }); } dataMax = <number>dataValue.maxLocal; return { dataPoints: barChartDataPoints, dataMax: dataMax, settings: barChartSettings, }; }- v-chuncz-msft9 years agoCommunity Support
Well that's it! You can see the function is invoked.
public update(options: VisualUpdateOptions) { let viewModel: BarChartViewModel = visualTransform(options, this.host);