export function converter()

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,
		));
	}
}