export function createTooltipInfo()

in src/tooltip.ts [54:135]


export function createTooltipInfo(
    dataViewCat: DataViewCategorical,
    categoryValue: any,
    localizationManager: ILocalizationManager,
    value?: any,
    categories?: DataViewCategoryColumn[],
    seriesData?: TooltipSeriesDataItem[],
    seriesIndex?: number,
    categoryIndex?: number,
    highlightedValue?: any): VisualTooltipDataItem[] {

    let categorySource: TooltipCategoryDataItem,
        seriesSource: TooltipSeriesDataItem[] = [],
        valuesSource: DataViewMetadataColumn = undefined;

    seriesIndex = seriesIndex | 0;

    let categoriesData: DataViewCategoryColumn[] = dataViewCat
        ? dataViewCat.categories
        : categories;

    if (categoriesData && categoriesData.length > 0) {
        if (categoriesData.length > 1) {
            const compositeCategoriesData: DataViewMetadataColumn[] = [];

            for (let i: number = 0; i < categoriesData.length; i++) {
                compositeCategoriesData.push(categoriesData[i].source);
            }

            categorySource = {
                value: categoryValue,
                metadata: compositeCategoriesData
            };
        }
        else {
            categorySource = {
                value: categoryValue,
                metadata: [categoriesData[0].source]
            };
        }
    }

    if (dataViewCat && dataViewCat.values) {
        if (!categorySource
            || !(categorySource.metadata[0] === dataViewCat.values.source)) {
            valuesSource = dataViewCat.values.source;
        }

        if (dataViewCat.values.length > 0) {
            const valueColumn: DataViewValueColumn = dataViewCat.values[seriesIndex],
                isAutoGeneratedColumn: boolean = !!(valueColumn
                    && valueColumn.source
                    && (valueColumn.source as any).isAutoGeneratedColumn);

            if (!isAutoGeneratedColumn) {
                seriesSource.push({
                    value,
                    highlightedValue,
                    metadata: valueColumn
                });
            }
        }
    }

    if (seriesData) {
        for (let i: number = 0; i < seriesData.length; i++) {
            const singleSeriesData: TooltipSeriesDataItem = seriesData[i];

            if (categorySource
                && categorySource.metadata[0] === singleSeriesData.metadata.source) {
                continue;
            }

            seriesSource.push({
                value: singleSeriesData.value,
                metadata: singleSeriesData.metadata
            });
        }
    }

    return createTooltipData(categorySource, valuesSource, seriesSource, localizationManager);
}