module.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { ReactPanelPlugin, getStatsCalculators } from '@grafana/ui';
  2. import { SingleStatOptions, defaults, SingleStatBaseOptions } from './types';
  3. import { SingleStatPanel } from './SingleStatPanel';
  4. import cloneDeep from 'lodash/cloneDeep';
  5. import { SingleStatEditor } from './SingleStatEditor';
  6. export const reactPanel = new ReactPanelPlugin<SingleStatOptions>(SingleStatPanel);
  7. const optionsToKeep = ['valueOptions', 'stat', 'maxValue', 'maxValue', 'thresholds', 'valueMappings'];
  8. export const singleStatBaseOptionsCheck = (
  9. options: Partial<SingleStatBaseOptions>,
  10. prevPluginId?: string,
  11. prevOptions?: any
  12. ) => {
  13. if (prevOptions) {
  14. optionsToKeep.forEach(v => {
  15. if (prevOptions.hasOwnProperty(v)) {
  16. options[v] = cloneDeep(prevOptions.display);
  17. }
  18. });
  19. }
  20. // 6.1 renamed some stats, This makes sure they are up to date
  21. // avg -> mean, current -> last, total -> sum
  22. const { valueOptions } = options;
  23. if (valueOptions && valueOptions.stat) {
  24. valueOptions.stat = getStatsCalculators([valueOptions.stat]).map(s => s.id)[0];
  25. console.log('CHANGED', valueOptions);
  26. }
  27. return options;
  28. };
  29. reactPanel.setEditor(SingleStatEditor);
  30. reactPanel.setDefaults(defaults);
  31. reactPanel.setPanelTypeChangedHook(singleStatBaseOptionsCheck);