PanelHeader.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React, { PureComponent } from 'react';
  2. import classNames from 'classnames';
  3. import { PanelHeaderMenu } from './PanelHeaderMenu';
  4. import { DashboardModel } from 'app/features/dashboard/dashboard_model';
  5. import { PanelModel } from 'app/features/dashboard/panel_model';
  6. export interface Props {
  7. panel: PanelModel;
  8. dashboard: DashboardModel;
  9. timeInfo: string;
  10. }
  11. export class PanelHeader extends PureComponent<Props> {
  12. render() {
  13. const isFullscreen = false;
  14. const isLoading = false;
  15. const panelHeaderClass = classNames({ 'panel-header': true, 'grid-drag-handle': !isFullscreen });
  16. const { panel, dashboard, timeInfo } = this.props;
  17. return (
  18. <div className={panelHeaderClass}>
  19. <span className="panel-info-corner">
  20. <i className="fa" />
  21. <span className="panel-info-corner-inner" />
  22. </span>
  23. {isLoading && (
  24. <span className="panel-loading">
  25. <i className="fa fa-spinner fa-spin" />
  26. </span>
  27. )}
  28. <div className="panel-title-container">
  29. <div className="panel-title">
  30. <span className="icon-gf panel-alert-icon" />
  31. <span className="panel-title-text" data-toggle="dropdown">
  32. {panel.title} <span className="fa fa-caret-down panel-menu-toggle" />
  33. </span>
  34. <PanelHeaderMenu panel={panel} dashboard={dashboard} />
  35. {timeInfo ? (
  36. <span className="panel-time-info">
  37. <i className="fa fa-clock-o" /> {timeInfo}
  38. </span>
  39. ) : null}
  40. </div>
  41. </div>
  42. </div>
  43. );
  44. }
  45. }