Library Panels: Fix refresh when changing to angular library panel (#35048)

Closes #34874
pull/35128/head
kay delaney 4 years ago committed by GitHub
parent c4b4171d85
commit 7c0158cdff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx
  2. 4
      public/app/features/panel/panel_directive.ts
  3. 4
      public/app/types/events.ts

@ -7,7 +7,7 @@ import { Button, useStyles2, VerticalGroup } from '@grafana/ui';
import { PanelModel } from 'app/features/dashboard/state';
import { AddLibraryPanelModal } from '../AddLibraryPanelModal/AddLibraryPanelModal';
import { LibraryPanelsView } from '../LibraryPanelsView/LibraryPanelsView';
import { PanelOptionsChangedEvent, PanelQueriesChangedEvent } from 'app/types/events';
import { PanelDirectiveReadyEvent, PanelOptionsChangedEvent, PanelQueriesChangedEvent } from 'app/types/events';
import { LibraryElementDTO } from '../../types';
import { toPanelModelLibraryPanel } from '../../utils';
import { changePanelPlugin } from 'app/features/dashboard/state/actions';
@ -55,8 +55,12 @@ export const PanelLibraryOptionsGroup: FC<Props> = ({ panel, searchQuery }) => {
panel.configRev = 0;
panel.refresh();
panel.events.publish(new PanelQueriesChangedEvent());
panel.events.publish(new PanelOptionsChangedEvent());
const unsubscribeEvent = panel.events.subscribe(PanelDirectiveReadyEvent, () => {
panel.refresh();
unsubscribeEvent.unsubscribe();
});
panel.events.publish(PanelQueriesChangedEvent);
panel.events.publish(PanelOptionsChangedEvent);
};
const onAddToPanelLibrary = () => {

@ -4,7 +4,7 @@ import { PanelEvents } from '@grafana/data';
import { PanelModel } from '../dashboard/state';
import { PanelCtrl } from './panel_ctrl';
import { Subscription } from 'rxjs';
import { RefreshEvent, RenderEvent } from 'app/types/events';
import { PanelDirectiveReadyEvent, RefreshEvent, RenderEvent } from 'app/types/events';
import { coreModule } from 'app/core/core_module';
const panelTemplate = `
@ -113,6 +113,8 @@ coreModule.directive('grafanaPanel', ($rootScope, $document, $timeout) => {
panelScrollbar.dispose();
}
});
panel.events.publish(PanelDirectiveReadyEvent);
},
};
});

@ -148,6 +148,10 @@ export class RefreshEvent extends BusEventBase {
static type = 'refresh';
}
export class PanelDirectiveReadyEvent extends BusEventBase {
static type = 'panel-directive-ready';
}
export class RenderEvent extends BusEventBase {
static type = 'render';
}

Loading…
Cancel
Save