public convert()

in src/converter/data/dataConverter.ts [192:305]


    public convert(options: IConverterOptions): IDataRepresentation {
        const {
            dataView,
            columnMapping,
            settings,
            settingsState,
            viewMode,
        } = options;

        this.amountOfFilledSeries = 0;

        const dataRepresentation: IDataRepresentation = this.getDefaultData();

        if (!this.isDataViewValid(dataView)) {
            return dataRepresentation;
        }

        const xAxisMetadataColumn: powerbi.DataViewMetadataColumn = this.getColumnByRoleName(
            dataView.table.columns,
            dateColumn.name,
        );

        dataRepresentation.columns = this.getColumns(
            dataView.table.columns,
            [
                actualValueColumn,
                comparisonValueColumn,
                kpiIndicatorValueColumn,
                secondComparisonValueColumn,
            ]);

        dataRepresentation.type = this.getTypeOfColumn(xAxisMetadataColumn, settings.powerKPISettings.xAxis.type);
        dataRepresentation.metadata = xAxisMetadataColumn;

        settings.asOfDate.parseByType(dataRepresentation.type);

        if (!this.isDataColumnBasedModel) {
            settings.table.forceToUseDefaultSortOrderByName();
        }

        settings.asOfDate.columnFormat = xAxisMetadataColumn
            && xAxisMetadataColumn.format;

        settings.currentValue.columnFormat = dataRepresentation.columns[actualValueColumn.name]
            && dataRepresentation.columns[actualValueColumn.name].format;

        settings.comparisonValue.columnFormat = dataRepresentation.columns[comparisonValueColumn.name]
            && dataRepresentation.columns[comparisonValueColumn.name].format;

        settings.kpiIndicatorValue.columnFormat = dataRepresentation.columns[kpiIndicatorValueColumn.name]
            && dataRepresentation.columns[kpiIndicatorValueColumn.name].format;

        settings.secondComparisonValue.columnFormat = dataRepresentation.columns[secondComparisonValueColumn.name]
            && dataRepresentation.columns[secondComparisonValueColumn.name].format;

        if (!dataRepresentation.columns[secondComparisonValueColumn.name]) {
            settings.secondComparisonValue.show = false;
            settings.secondKPIIndicatorValue.show = false;
        }

        const defaultUnmappedCategoryName: string = settings.table.getDefaultUnmappedCategoryName();

        dataView.table.rows.forEach((row: powerbi.DataViewTableRow, rowIndex: number) => {
            const columnValues: IColumnValues = this.getColumnValues(dataView.table.columns, row);

            const categorySet: ICategoryHyperlink[] = this.parseCategorySet(columnValues, defaultUnmappedCategoryName);

            dataRepresentation.seriesDeep = Math.max(
                dataRepresentation.seriesDeep,
                categorySet.length,
            );

            this.applyCategorySet(
                categorySet,
                dataRepresentation.series,
                dataRepresentation.seriesArray,
                undefined,
                !settings.table.isDefaultSortOrderByName(),
            );

            const levels: string[] = categorySet.map((categoryHyperlink: ICategoryHyperlink) => {
                return categoryHyperlink.name;
            });

            this.converterStep({
                columnMapping,
                columnValues,
                dataRepresentation,
                identities: dataView.table.identity || [],
                identityQueryName: dataView.table.columns[0].queryName,
                levels,
                rowIndex,
                rows: dataView.table.rows,
                settings,
                settingsState,
                viewMode,
            });
        });

        this.replaceTheFilledSeriesAtFirstLevel(dataRepresentation, defaultUnmappedCategoryName);

        dataRepresentation.seriesArray = this.postProcess(
            dataRepresentation.seriesArray,
            settings.subtotal,
            settings.table.style,
            settings,
            dataRepresentation.type,
            dataRepresentation.y,
        );

        settings.hideDescriptors(dataRepresentation.seriesDeep);

        return dataRepresentation;
    }