protected getSeriesByDisplayName()

in src/converter/data/dataConverter.ts [683:789]


    protected getSeriesByDisplayName(
        seriesSet: IDataRepresentationSeriesSet,
        seriesArray: IDataRepresentationSeries[],
        levels: string[],
        displayName: string,
        identities: powerbi.visuals.CustomVisualOpaqueIdentity[],
        identityIndex: number,
        identityQueryName: string,
        rows: powerbi.DataViewTableRow[],
        defaultSettings: Settings,
        settingsState: SettingsState,
        type: DataRepresentationTypeEnum,
        viewMode: powerbi.ViewMode,
        createSelectionIdBuilder: () => powerbi.visuals.ISelectionIdBuilder,
    ): IDataRepresentationSeries {
        let series: IDataRepresentationSeries = this.deepSearchSeries(
            seriesSet,
            levels,
        );

        if (!series) {
            series = this.createOrGetExistingSeries(
                displayName,
                seriesSet,
                seriesArray,
                undefined,
                undefined,
                undefined,
                undefined,
                !defaultSettings.table.isDefaultSortOrderByName(),
            );
        }

        if (series && !series.hasBeenFilled) {
            const selectionId: powerbi.visuals.ISelectionId = createSelectionIdBuilder()
                .withCategory(
                    {
                        identity: identities || [],
                        source: {
                            displayName: series.name || identityQueryName,
                            queryName: identityQueryName,
                        },
                        values: [],
                    },
                    identityIndex,
                )
                .withMeasure(identityQueryName)
                .createSelectionId();

            const settings: SeriesSettings = SeriesSettings.getDefault() as SeriesSettings;

            for (const propertyName in settings) {
                const descriptor: SettingsPropertyBase = settings[propertyName];
                const defaultDescriptor: SettingsPropertyBase = defaultSettings[propertyName];

                if (descriptor && descriptor.applyDefault && defaultDescriptor) {
                    descriptor.applyDefault(defaultDescriptor);
                }
            }

            const parsedObjects: powerbi.DataViewObjects = (rows
                && rows[identityIndex]
                && rows[identityIndex].objects
                && rows[identityIndex].objects[0])
                || {};

            const serializedObjects: powerbi.DataViewObjects = settingsState.getSeriesSettings(series.name)
                || parsedObjects
                || {};

            const shouldUseSerializedSeriesSettings: boolean = viewMode === powerbi.ViewMode.View
                || defaultSettings.table.keepSeriesSettingOnFilteringInEditMode;

            const mergedObjects: powerbi.DataViewObjects = shouldUseSerializedSeriesSettings
                ? { ...serializedObjects }
                : { ...parsedObjects };

            settings.parseObjects(mergedObjects);

            settings.asOfDate.parseByType(type);

            settingsState.setSeriesSettings(
                series.name,
                settings,
            );

            series.settings = settings;
            series.selectionId = selectionId;
            series.axisValue = undefined;
            series.name = displayName;
            series.points = [];
            series.varianceSet = [];
            series.kpiIndicatorIndex = NaN;
            series.kpiIndicatorValue = NaN;
            series.currentValue = NaN;
            series.comparisonValue = NaN;
            series.secondComparisonValue = NaN;
            series.secondKPIIndicatorValue = NaN;

            series.x = this.getDefaultAxis();
            series.y = this.getDefaultAxis();

            series.hasBeenFilled = true;
        }

        return series;
    }