PanelHeader.tsx 1.7 KB

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