in src/converter/data/dataConverter.ts [1046:1123]
private applyCategorySet(
categorySet: ICategoryHyperlink[],
seriesSet: IDataRepresentationSeriesSet,
seriesArray: IDataRepresentationSeries[],
misplacedCategory?: IDataRepresentationSeries,
shouldUseSeriesIndexAsDefaultSortOrder: boolean = false,
level: number = 0,
): void {
const category: ICategoryHyperlink = categorySet && categorySet[0];
if (!category) {
return;
}
let currentMisplacedCategory: IDataRepresentationSeries = misplacedCategory;
if (level === 0) {
const metricName: ICategoryHyperlink = categorySet
&& categorySet.length
&& categorySet[categorySet.length - 1];
if (metricName
&& metricName.name !== null
&& metricName.name !== undefined
&& seriesSet[metricName.name]
&& seriesSet[metricName.name].hasBeenFilled
&& category
&& category.name !== null
&& category.name !== undefined
) {
if (category.name !== metricName.name) {
currentMisplacedCategory = seriesSet[metricName.name];
delete seriesSet[metricName.name];
const seriesIndex: number = seriesArray.indexOf(currentMisplacedCategory);
if (seriesIndex > -1) {
seriesArray.splice(seriesIndex, 1);
}
} else {
const existingSeries: IDataRepresentationSeries = seriesSet[metricName.name];
existingSeries.hyperlink = existingSeries.hyperlink || category.hyperlink;
}
}
}
const series: IDataRepresentationSeries = misplacedCategory && misplacedCategory.name === category.name
? this.applyExistingSeries(
category.name,
seriesSet,
seriesArray,
currentMisplacedCategory,
level,
category.hyperlink,
category.sortOrder,
category.image,
)
: this.createOrGetExistingSeries(
category.name,
seriesSet,
seriesArray,
level,
category.hyperlink,
category.sortOrder,
category.image,
shouldUseSeriesIndexAsDefaultSortOrder,
);
this.applyCategorySet(
categorySet.slice(1),
series.childrenSet,
series.children,
currentMisplacedCategory,
shouldUseSeriesIndexAsDefaultSortOrder,
level + 1);
}