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;
}