PanelHeader.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import React from 'react';
  2. import classNames from 'classnames';
  3. import { PanelModel } from '../panel_model';
  4. import { DashboardModel } from '../dashboard_model';
  5. import { store } from 'app/stores/store';
  6. interface PanelHeaderProps {
  7. panel: PanelModel;
  8. dashboard: DashboardModel;
  9. }
  10. export class PanelHeader extends React.Component<PanelHeaderProps, any> {
  11. onEditPanel = () => {
  12. store.view.updateQuery(
  13. {
  14. panelId: this.props.panel.id,
  15. edit: true,
  16. fullscreen: true,
  17. },
  18. false
  19. );
  20. };
  21. onViewPanel = () => {
  22. store.view.updateQuery(
  23. {
  24. panelId: this.props.panel.id,
  25. fullscreen: true,
  26. edit: false,
  27. },
  28. false
  29. );
  30. };
  31. render() {
  32. const isFullscreen = false;
  33. const isLoading = false;
  34. const panelHeaderClass = classNames({ 'panel-header': true, 'grid-drag-handle': !isFullscreen });
  35. return (
  36. <div className={panelHeaderClass}>
  37. <span className="panel-info-corner">
  38. <i className="fa" />
  39. <span className="panel-info-corner-inner" />
  40. </span>
  41. {isLoading && (
  42. <span className="panel-loading">
  43. <i className="fa fa-spinner fa-spin" />
  44. </span>
  45. )}
  46. <div className="panel-title-container">
  47. <span className="panel-title">
  48. <span className="icon-gf panel-alert-icon" />
  49. <span className="panel-title-text">{this.props.panel.title}</span>
  50. <span className="panel-menu-container dropdown">
  51. <span className="fa fa-caret-down panel-menu-toggle" data-toggle="dropdown" />
  52. <ul className="dropdown-menu dropdown-menu--menu panel-menu" role="menu">
  53. <li>
  54. <a onClick={this.onEditPanel}>
  55. <i className="fa fa-fw fa-edit" /> Edit
  56. </a>
  57. </li>
  58. <li>
  59. <a onClick={this.onViewPanel}>
  60. <i className="fa fa-fw fa-eye" /> View
  61. </a>
  62. </li>
  63. </ul>
  64. </span>
  65. <span className="panel-time-info">
  66. <i className="fa fa-clock-o" /> 4m
  67. </span>
  68. </span>
  69. </div>
  70. </div>
  71. );
  72. }
  73. }