PanelHeaderMenu.tsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import React, { PureComponent } from 'react';
  2. // import { store } from 'app/store/configureStore';
  3. import { PanelHeaderMenuItem, PanelHeaderMenuItemTypes } from './PanelHeaderMenuItem';
  4. import appEvents from 'app/core/app_events';
  5. import { store } from 'app/store/configureStore';
  6. import { updateLocation } from 'app/core/actions';
  7. export interface PanelHeaderMenuProps {
  8. panelId: number;
  9. }
  10. export class PanelHeaderMenu extends PureComponent<PanelHeaderMenuProps, any> {
  11. onEditPanel = () => {
  12. store.dispatch(
  13. updateLocation({
  14. query: {
  15. panelId: this.props.panelId,
  16. edit: true,
  17. fullscreen: true,
  18. },
  19. })
  20. );
  21. };
  22. onViewPanel = () => {
  23. store.dispatch(
  24. updateLocation({
  25. query: {
  26. panelId: this.props.panelId,
  27. edit: false,
  28. fullscreen: true,
  29. },
  30. })
  31. );
  32. };
  33. onRemovePanel = () => {
  34. appEvents.emit('panel-remove', {
  35. panelId: this.props.panelId,
  36. });
  37. };
  38. render() {
  39. return (
  40. <div className="panel-menu-container dropdown">
  41. <ul className="dropdown-menu dropdown-menu--menu panel-menu" role="menu">
  42. <PanelHeaderMenuItem
  43. type={PanelHeaderMenuItemTypes.Link}
  44. text="View"
  45. iconClassName="fa fa-fw fa-eye"
  46. handleClick={this.onViewPanel}
  47. shortcut="v"
  48. />
  49. <PanelHeaderMenuItem
  50. type={PanelHeaderMenuItemTypes.Link}
  51. text="Edit"
  52. iconClassName="fa fa-fw fa-edit"
  53. handleClick={this.onEditPanel}
  54. shortcut="e"
  55. />
  56. <PanelHeaderMenuItem
  57. type={PanelHeaderMenuItemTypes.Link}
  58. text="Share"
  59. iconClassName="fa fa-fw fa-share"
  60. handleClick={() => {}}
  61. shortcut="p s"
  62. />
  63. <PanelHeaderMenuItem
  64. type={PanelHeaderMenuItemTypes.SubMenu}
  65. text="More ..."
  66. iconClassName="fa fa-fw fa-cube"
  67. handleClick={() => {}}
  68. >
  69. <ul className="dropdown-menu dropdown-menu--menu panel-menu">
  70. <PanelHeaderMenuItem
  71. type={PanelHeaderMenuItemTypes.Link}
  72. text="Duplicate"
  73. iconClassName=""
  74. handleClick={() => {}}
  75. shortcut="p d"
  76. />
  77. <PanelHeaderMenuItem type={PanelHeaderMenuItemTypes.Link} text="Copy" handleClick={() => {}} />
  78. <PanelHeaderMenuItem type={PanelHeaderMenuItemTypes.Link} text="Panel JSON" handleClick={() => {}} />
  79. <PanelHeaderMenuItem type={PanelHeaderMenuItemTypes.Link} text="Export CSV" handleClick={() => {}} />
  80. <PanelHeaderMenuItem
  81. type={PanelHeaderMenuItemTypes.Link}
  82. text="Toggle legend"
  83. handleClick={() => {}}
  84. shortcut="p l"
  85. />
  86. </ul>
  87. </PanelHeaderMenuItem>
  88. <PanelHeaderMenuItem type={PanelHeaderMenuItemTypes.Divider} />
  89. <PanelHeaderMenuItem
  90. type={PanelHeaderMenuItemTypes.Link}
  91. text="Remove"
  92. iconClassName="fa fa-fw fa-trash"
  93. handleClick={this.onRemovePanel}
  94. shortcut="p r"
  95. />
  96. </ul>
  97. </div>
  98. );
  99. }
  100. }