export default function converter()

in packages/timebrush-powerbi/src/dataConversion.ts [46:86]


export default function converter(
    dataView: DataView,
    selectionIdBuilderFactory: () => powerbi.visuals.ISelectionIdBuilder,
    settings?: IConversionSettings): TimeBrushVisualDataItem[] {
    "use strict";
    let items: TimeBrushVisualDataItem[];
    const dataViewCategorical = dataView && dataView.categorical;

    // Must be two columns: times and values
    if (dataViewCategorical && dataViewCategorical.categories && dataViewCategorical.values && dataViewCategorical.values.length) {
        if (dataViewCategorical.categories.length === 1) {
            const { defaultBarColor, seriesColors, reverseBars } = (settings || {}) as IConversionSettings;
            const values = dataViewCategorical.values;
            const gradient = getGradientFromSettings(settings || {});

            // We should only add gradients if the data supports gradients, and the user has gradients enabled
            const shouldAddGradients = dataSupportsGradients(dataView) && settings.useGradient;

            // We should only colorize instances if the data supports colorized instances and the user isn't
            // trying to use gradients
            const shouldAddInstanceColors = dataSupportsColorizedInstances(dataView) && !settings.useGradient;
            const segmentInfo = calculateSegments(
                values,
                dataSupportsDefaultColor(dataView) ? defaultBarColor : undefined,
                shouldAddGradients ? gradient : undefined,
                shouldAddInstanceColors ? seriesColors : undefined);
            const dates = dataViewCategorical.categories[0].values;
            items = dates.map((date, i) => {
                return convertItem(
                    date,
                    segmentInfo,
                    i,
                    dataViewCategorical.categories[0],
                    values,
                    reverseBars !== false,
                    selectionIdBuilderFactory());
            }).filter(n => !!n);
        }
    }
    return items;
}