[v9.4.x] Dashboard: Fix library panels in collapsed rows not getting updated (#68535)

Dashboard: Fix library panels in collapsed rows not getting updated (#66643)

(cherry picked from commit f478504bc9)

Co-authored-by: Victor Colomb <51762123+VictorColomb@users.noreply.github.com>
This commit is contained in:
Grot (@grafanabot)
2023-06-01 11:56:20 +03:00
committed by GitHub
co-authored by Victor Colomb
parent caa6545292
commit 832e89dad0
2 changed files with 41 additions and 0 deletions
@@ -204,6 +204,27 @@ describe('PanelModel', () => {
expect(saveModel.events).toBe(undefined);
});
it('getSaveModel should clean libraryPanels from a collapsed row', () => {
const newmodelJson = {
type: 'row',
panels: [
{
...modelJson,
libraryPanel: {
uid: 'BVIBScisnl',
model: modelJson,
name: 'Library panel title',
},
},
modelJson,
],
};
const newmodel = new PanelModel(newmodelJson);
const saveModel = newmodel.getSaveModel();
expect(saveModel.panels[0].tagrets).toBe(undefined);
expect(saveModel.panels[1].targets).toBeTruthy();
});
describe('variables interpolation', () => {
beforeEach(() => {
model.scopedVars = {
@@ -315,6 +315,26 @@ export class PanelModel implements DataConfigSource, IPanelModel {
model[property] = cloneDeep(this[property]);
}
// clean libraryPanel from collapsed rows
if (this.type === 'row' && this.panels && this.panels.length > 0) {
model.panels = this.panels.map((panel) => {
if (panel.libraryPanel) {
const { id, title, libraryPanel, gridPos } = panel;
return {
id,
title,
gridPos,
libraryPanel: {
uid: libraryPanel.uid,
name: libraryPanel.name,
},
};
}
return panel;
});
}
return model;
}