GeneralTabCtrl.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import coreModule from 'app/core/core_module';
  2. const obj2string = obj => {
  3. return Object.keys(obj)
  4. .reduce((acc, curr) => acc.concat(curr + '=' + obj[curr]), [])
  5. .join();
  6. };
  7. export class GeneralTabCtrl {
  8. panelCtrl: any;
  9. /** @ngInject */
  10. constructor($scope) {
  11. this.panelCtrl = $scope.ctrl;
  12. const updatePanel = () => {
  13. console.log('panel.render()');
  14. this.panelCtrl.panel.render();
  15. };
  16. const generateValueFromPanel = scope => {
  17. const { panel } = scope.ctrl;
  18. const panelPropsToTrack = ['title', 'description', 'transparent', 'repeat', 'repeatDirection', 'minSpan'];
  19. const panelPropsString = panelPropsToTrack
  20. .map(prop => prop + '=' + (panel[prop] && panel[prop].toString ? panel[prop].toString() : panel[prop]))
  21. .join();
  22. const panelLinks = panel.links;
  23. const panelLinksString = panelLinks.map(obj2string).join();
  24. return panelPropsString + panelLinksString;
  25. };
  26. $scope.$watch(generateValueFromPanel, updatePanel, true);
  27. }
  28. }
  29. /** @ngInject */
  30. export function generalTab() {
  31. 'use strict';
  32. return {
  33. restrict: 'E',
  34. templateUrl: 'public/app/features/panel/partials/general_tab.html',
  35. controller: GeneralTabCtrl,
  36. };
  37. }
  38. coreModule.directive('panelGeneralTab', generalTab);