diff --git a/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.test.ts b/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.test.ts index 827f1268cf9..6efff14ffb6 100644 --- a/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.test.ts +++ b/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.test.ts @@ -379,8 +379,6 @@ describe('UPlotConfigBuilder', () => { max: 100, }); - expect(builder.getConfig().scales!['scale-y']!.auto).toEqual(false); - builder.addScale({ isTime: false, scaleKey: 'scale-y2', @@ -391,6 +389,7 @@ describe('UPlotConfigBuilder', () => { softMin: -50, }); + expect(builder.getConfig().scales!['scale-y']!.auto).toEqual(false); expect(builder.getConfig().scales!['scale-y2']!.auto).toEqual(true); }); diff --git a/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.ts b/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.ts index dd6d1da4770..7abf30d0907 100644 --- a/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.ts +++ b/packages/grafana-ui/src/components/uPlot/config/UPlotConfigBuilder.ts @@ -58,6 +58,8 @@ export class UPlotConfigBuilder { private tooltipInterpolator: PlotTooltipInterpolator | undefined = undefined; private padding?: Padding = undefined; + private cachedConfig?: PlotConfig; + prepData: PrepData | undefined = undefined; constructor(timeZone: TimeZone = DefaultTimeZone) { @@ -190,6 +192,10 @@ export class UPlotConfigBuilder { } getConfig() { + if (this.cachedConfig) { + return this.cachedConfig; + } + const config: PlotConfig = { ...DEFAULT_PLOT_CONFIG, mode: this.mode, @@ -244,18 +250,18 @@ export class UPlotConfigBuilder { config.padding = this.padding; } - if (this.stackingGroups.length) { - this.stackingGroups.forEach((group) => { - getStackingBands(group).forEach((band) => { - this.addBand(band); - }); + this.stackingGroups.forEach((group) => { + getStackingBands(group).forEach((band) => { + this.addBand(band); }); - } + }); if (this.bands.length) { config.bands = this.bands; } + this.cachedConfig = config; + return config; }