in packages/attribute-slicer-powerbi/src/dataConversion.ts [53:100]
export function converter(
dataView: DataView,
valFormat?: IValueFormatter,
catFormat?: IValueFormatter,
settings?: IColorSettings,
createIdBuilder?: () => powerbiVisualsApi.visuals.ISelectionIdBuilder,
): IAttributeSlicerVisualData {
if (dataView && dataView.categorical) {
if (!valFormat) {
valFormat = createValueFormatter();
}
if (!catFormat) {
catFormat = createCategoryFormatter(dataView);
}
const segmentColors: {
[key: string]: string;
} = calculateSegmentColorsFromData(dataView);
return <IAttributeSlicerVisualData>(<unknown>convertItemsWithSegments(
dataView,
(
dvCats: DataViewCategoryColumn[],
catIdx: number,
total: number,
selectionid: powerbiVisualsApi.visuals.ISelectionId,
valueSegments: IValueSegment[],
) => {
const item: ISlicerItem = createItem(
buildCategoryDisplay(dvCats, catIdx, catFormat),
total,
`${dvCats[0].values[catIdx]}`,
undefined,
"#ccc",
);
(valueSegments || []).forEach((segment: IValueSegment, i: number) => {
// Update the segments color to the ones pulled from the data, if it exists
segment.color = segmentColors[i] || segment.color;
segment.displayValue = valFormat.format(segment.value);
});
return <ItemWithValueSegments>(<unknown>item);
},
dataSupportsColorizedInstances(dataView) ? settings : undefined,
createIdBuilder,
));
}
}