viz_tab.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import coreModule from 'app/core/core_module';
  2. import { DashboardModel } from '../dashboard/dashboard_model';
  3. import { VizTypePicker } from '../dashboard/dashgrid/VizTypePicker';
  4. import { react2AngularDirective } from 'app/core/utils/react2angular';
  5. import { PanelPlugin } from 'app/types/plugins';
  6. export class VizTabCtrl {
  7. panelCtrl: any;
  8. dashboard: DashboardModel;
  9. /** @ngInject */
  10. constructor($scope) {
  11. this.panelCtrl = $scope.ctrl;
  12. this.dashboard = this.panelCtrl.dashboard;
  13. $scope.ctrl = this;
  14. }
  15. onTypeChanged = (plugin: PanelPlugin) => {
  16. this.dashboard.changePanelType(this.panelCtrl.panel, plugin.id);
  17. };
  18. }
  19. const template = `
  20. <div class="gf-form-group ">
  21. <div class="gf-form-query">
  22. <div class="gf-form">
  23. <label class="gf-form-label">
  24. <img src="public/app/plugins/panel/graph/img/icn-graph-panel.svg" style="width: 16px; height: 16px" />
  25. Graph
  26. <i class="fa fa-caret-down" />
  27. </label>
  28. </div>
  29. <div class="gf-form gf-form--grow">
  30. <label class="gf-form-label gf-form-label--grow"></label>
  31. </div>
  32. </div>
  33. <br />
  34. <br />
  35. <div class="query-editor-rows gf-form-group">
  36. <div ng-repeat="tab in ctrl.panelCtrl.optionTabs">
  37. <div class="gf-form-query">
  38. <div class="gf-form gf-form-query-letter-cell">
  39. <label class="gf-form-label">
  40. <span class="gf-form-query-letter-cell-carret">
  41. <i class="fa fa-caret-down"></i>
  42. </span>
  43. <span class="gf-form-query-letter-cell-letter">{{tab.title}}</span>
  44. </label>
  45. </div>
  46. <div class="gf-form gf-form--grow">
  47. <label class="gf-form-label gf-form-label--grow"></label>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </div>`;
  53. /** @ngInject */
  54. export function vizTabDirective() {
  55. 'use strict';
  56. return {
  57. restrict: 'E',
  58. template: template,
  59. controller: VizTabCtrl,
  60. };
  61. }
  62. react2AngularDirective('vizTypePicker', VizTypePicker, ['currentType', ['onTypeChanged', { watchDepth: 'reference' }]]);
  63. coreModule.directive('vizTab', vizTabDirective);