Gauge Panel: fix the default value of thresholds cannot be modified (#20190)

* Panel: fix the default value of thresholds cannot be modified in Gauge panel

* Panel: fix the default value of thresholds cannot be modified in Gauge panel
pull/20266/head
lzd 6 years ago committed by Dominik Prokop
parent be2bf1a297
commit f2415a319e
  1. 6
      public/app/features/dashboard/state/PanelModel.test.ts
  2. 11
      public/app/features/dashboard/state/PanelModel.ts

@ -24,6 +24,7 @@ describe('PanelModel', () => {
},
],
},
arrayWith2Values: [{ value: 'name' }, { value: 'name2' }],
showThresholds: true,
};
@ -43,6 +44,7 @@ describe('PanelModel', () => {
},
],
},
arrayWith2Values: [{ name: 'changed to only one value' }],
};
modelJson = {
@ -72,6 +74,10 @@ describe('PanelModel', () => {
expect(model.getOptions().showThresholds).toBeTruthy();
});
it('should apply option defaults but not override if array is changed', () => {
expect(model.getOptions().arrayWith2Values.length).toBe(1);
});
it('should set model props on instance', () => {
expect(model.showColumns).toBe(true);
});

@ -255,7 +255,16 @@ export class PanelModel {
if (plugin.angularConfigCtrl) {
return;
}
this.options = _.defaultsDeep({}, this.options || {}, plugin.defaults);
this.options = _.mergeWith(
{},
plugin.defaults,
this.options || {},
(objValue: any, srcValue: any): any => {
if (_.isArray(srcValue)) {
return srcValue;
}
}
);
}
pluginLoaded(plugin: PanelPlugin) {

Loading…
Cancel
Save