PanelHeader.tsx 2.3 KB

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