wip: panel-header: Remove panel

pull/13984/head
Johannes Schill 7 years ago
parent 212c086162
commit 820e47b4c0
  1. 3
      public/app/features/dashboard/dashgrid/PanelHeader/PanelHeader.tsx
  2. 30
      public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenu.tsx

@ -14,6 +14,7 @@ interface PanelHeaderProps {
export class PanelHeader extends React.Component<PanelHeaderProps, any> { export class PanelHeader extends React.Component<PanelHeaderProps, any> {
render() { render() {
const { dashboard } = this.props;
const isFullscreen = false; const isFullscreen = false;
const isLoading = false; const isLoading = false;
const panelHeaderClass = classNames({ 'panel-header': true, 'grid-drag-handle': !isFullscreen }); const panelHeaderClass = classNames({ 'panel-header': true, 'grid-drag-handle': !isFullscreen });
@ -38,7 +39,7 @@ export class PanelHeader extends React.Component<PanelHeaderProps, any> {
{this.props.panel.title} <span className="fa fa-caret-down panel-menu-toggle" /> {this.props.panel.title} <span className="fa fa-caret-down panel-menu-toggle" />
</span> </span>
<PanelHeaderMenu panelId={this.props.panel.id} /> <PanelHeaderMenu panelId={this.props.panel.id} dashboard={dashboard} />
<span className="panel-time-info"> <span className="panel-time-info">
<i className="fa fa-clock-o" /> 4m <i className="fa fa-clock-o" /> 4m
</span> </span>

@ -1,5 +1,7 @@
import React, { PureComponent } from 'react'; import React, { PureComponent } from 'react';
// import { store } from 'app/store/configureStore'; // import { store } from 'app/store/configureStore';
import { DashboardModel } from 'app/features/dashboard/dashboard_model';
import { PanelModel } from 'app/features/dashboard/panel_model';
import { PanelHeaderMenuItem, PanelHeaderMenuItemTypes } from './PanelHeaderMenuItem'; import { PanelHeaderMenuItem, PanelHeaderMenuItemTypes } from './PanelHeaderMenuItem';
import appEvents from 'app/core/app_events'; import appEvents from 'app/core/app_events';
import { store } from 'app/store/configureStore'; import { store } from 'app/store/configureStore';
@ -7,6 +9,7 @@ import { updateLocation } from 'app/core/actions';
export interface PanelHeaderMenuProps { export interface PanelHeaderMenuProps {
panelId: number; panelId: number;
dashboard: DashboardModel;
} }
export class PanelHeaderMenu extends PureComponent<PanelHeaderMenuProps, any> { export class PanelHeaderMenu extends PureComponent<PanelHeaderMenuProps, any> {
@ -35,9 +38,32 @@ export class PanelHeaderMenu extends PureComponent<PanelHeaderMenuProps, any> {
}; };
onRemovePanel = () => { onRemovePanel = () => {
appEvents.emit('panel-remove', { const { panelId, dashboard } = this.props;
panelId: this.props.panelId, const panelInfo = dashboard.getPanelInfoById(panelId);
this.removePanel(panelInfo.panel, true);
};
removePanel = (panel: PanelModel, ask: boolean) => {
const { dashboard } = this.props;
// confirm deletion
if (ask !== false) {
const text2 = panel.alert ? 'Panel includes an alert rule, removing panel will also remove alert rule' : null;
const confirmText = panel.alert ? 'YES' : null;
appEvents.emit('confirm-modal', {
title: 'Remove Panel',
text: 'Are you sure you want to remove this panel?',
text2: text2,
icon: 'fa-trash',
confirmText: confirmText,
yesText: 'Remove',
onConfirm: () => this.removePanel(panel, false),
}); });
return;
}
dashboard.removePanel(panel);
}; };
render() { render() {

Loading…
Cancel
Save