protected converterStep()

in src/converter/data/columnBasedModel/columnBasedModelConverter.ts [83:237]


    protected converterStep(options: IConverterStepOptions): void {
        const {
            dataRepresentation,
            columnValues,
            identities,
            identityQueryName,
            columnMapping,
            rows,
            settings,
            settingsState,
            viewMode,
        } = options;

        let axisValue: DataRepresentationAxisValueType;

        if (columnValues[dateColumn.name]) {
            const dateColumnName: string = Object.keys(columnValues[dateColumn.name])[0];

            axisValue = (
                dateColumnName
                && columnValues[dateColumn.name][dateColumnName]
                && columnValues[dateColumn.name][dateColumnName].value) || undefined;
        }

        if (NumericValueUtils.isValueDefined(axisValue)) {
            if (columnValues[actualValueColumn.name]) {
                Object.keys(columnValues[actualValueColumn.name]).forEach((columnName: string, columnIndex: number) => {
                    if (columnMapping[columnName]) {
                        const series: IDataRepresentationSeries
                            = this.getSeriesByDisplayName(
                                dataRepresentation.series,
                                dataRepresentation.seriesArray,
                                [columnName],
                                columnName,
                                identities,
                                columnIndex,
                                identityQueryName,
                                rows,
                                settings,
                                settingsState,
                                dataRepresentation.type,
                                viewMode,
                                this.createSelectionIdBuilder,
                            );

                        const columnValue: IColumnValue = columnValues[actualValueColumn.name][columnName];

                        const currentValue: number = columnValue && columnValue.value;
                        const currentFormat: string = columnValue && columnValue.format;
                        const currentValueColumnName: string = columnName;

                        let comparisonValue: number = NaN;
                        let comparisonFormat: string;
                        let isComparisonValueSpecified: boolean = false;
                        let comparisonValueColumnName: string;

                        let kpiIndicatorIndex: number = NaN;
                        let isKPIIndicatorIndexSpecified: boolean = false;

                        let kpiIndicatorValue: number = NaN;
                        let kpiIndicatorValueFormat: string;
                        let isKPIIndicatorValueSpecified: boolean = false;

                        let secondComparisonValue: number = NaN;
                        let secondComparisonValueFormat: string;
                        let isSecondComparisonValueSpecified: boolean = false;
                        let secondComparisonValueColumnName: string;

                        let secondKPIIndicatorValue: number = NaN;
                        let secondKPIIndicatorValueFormat: string;
                        let isSecondKPIIndicatorValueSpecified: boolean = false;

                        Object.keys(columnMapping[columnName]).forEach((roleName: string) => {
                            const mappedColumnName: string = columnMapping[columnName][roleName];

                            if (mappedColumnName !== undefined && mappedColumnName !== null && columnValues[roleName]) {
                                const currentColumnValue: IColumnValue = columnValues[roleName][mappedColumnName];
                                const value: any = currentColumnValue && currentColumnValue.value;
                                const format: string = currentColumnValue && currentColumnValue.format;

                                switch (roleName) {
                                    case comparisonValueColumn.name: {
                                        comparisonValue = value;
                                        comparisonFormat = format;
                                        comparisonValueColumnName = mappedColumnName;

                                        isComparisonValueSpecified = true;

                                        break;
                                    }
                                    case kpiIndicatorIndexColumn.name: {
                                        kpiIndicatorIndex = value;

                                        isKPIIndicatorIndexSpecified = true;

                                        break;
                                    }
                                    case kpiIndicatorValueColumn.name: {
                                        kpiIndicatorValue = value;
                                        kpiIndicatorValueFormat = format;

                                        isKPIIndicatorValueSpecified = true;

                                        break;
                                    }
                                    case secondComparisonValueColumn.name: {
                                        secondComparisonValue = value;
                                        secondComparisonValueFormat = format;
                                        secondComparisonValueColumnName = mappedColumnName;

                                        isSecondComparisonValueSpecified = true;

                                        break;
                                    }
                                    case secondKPIIndicatorValueColumn.name: {
                                        secondKPIIndicatorValue = value;
                                        secondKPIIndicatorValueFormat = format;

                                        isSecondKPIIndicatorValueSpecified = true;

                                        break;
                                    }
                                }
                            }
                        });

                        this.applyDataToCurrentSeries({
                            axisValue,
                            comparisonFormat,
                            comparisonValue,
                            comparisonValueColumnName,
                            currentFormat,
                            currentValue,
                            currentValueColumnName,
                            dataRepresentation,
                            isComparisonValueSpecified,
                            isKPIIndicatorIndexSpecified,
                            isKPIIndicatorValueSpecified,
                            isSecondComparisonValueSpecified,
                            isSecondKPIIndicatorValueSpecified,
                            kpiIndicatorIndex,
                            kpiIndicatorValue,
                            kpiIndicatorValueFormat,
                            secondComparisonValue,
                            secondComparisonValueColumnName,
                            secondComparisonValueFormat,
                            secondKPIIndicatorValue,
                            secondKPIIndicatorValueFormat,
                            series,
                        });
                    }
                });
            }
        }
    }