panelmeta.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. define([
  2. ],
  3. function () {
  4. "use strict";
  5. function PanelMeta(options) {
  6. this.description = options.description;
  7. this.fullscreen = options.fullscreen;
  8. this.editIcon = options.editIcon;
  9. this.panelName = options.panelName;
  10. this.menu = [];
  11. this.editorTabs = [];
  12. this.extendedMenu = [];
  13. if (options.fullscreen) {
  14. this.addMenuItem('view', 'icon-eye-open', 'toggleFullscreen(false); dismiss();');
  15. }
  16. this.addMenuItem('edit', 'icon-cog', 'editPanel(); dismiss();');
  17. this.addMenuItem('duplicate', 'icon-copy', 'duplicatePanel()');
  18. this.addMenuItem('share', 'icon-share', 'sharePanel(); dismiss();');
  19. this.addEditorTab('General', 'app/partials/panelgeneral.html');
  20. if (options.metricsEditor) {
  21. this.addEditorTab('Metrics', 'app/partials/metrics.html');
  22. }
  23. this.addExtendedMenuItem('Panel JSON', '', 'editPanelJson(); dismiss();');
  24. }
  25. PanelMeta.prototype.addMenuItem = function(text, icon, click) {
  26. this.menu.push({text: text, icon: icon, click: click});
  27. };
  28. PanelMeta.prototype.addExtendedMenuItem = function(text, icon, click) {
  29. this.extendedMenu.push({text: text, icon: icon, click: click});
  30. };
  31. PanelMeta.prototype.addEditorTab = function(title, src) {
  32. this.editorTabs.push({title: title, src: src});
  33. };
  34. return PanelMeta;
  35. });