diff --git a/public/app/features/panel/panel_ctrl.ts b/public/app/features/panel/panel_ctrl.ts index b6b6e07ed86..0fb94e660d5 100644 --- a/public/app/features/panel/panel_ctrl.ts +++ b/public/app/features/panel/panel_ctrl.ts @@ -25,6 +25,12 @@ export class PanelCtrl { this.icon = plugin.info.icon; this.editorTabIndex = 0; this.publishAppEvent('panel-instantiated', {scope: $scope}); + + $scope.$on("refresh", () => this.refresh()); + } + + refresh() { + return; } publishAppEvent(evtName, evt) { @@ -43,6 +49,8 @@ export class PanelCtrl { editPanel() { if (!this.editorTabs) { + this.editorTabs = []; + this.editorTabs.push({title: 'General', directiveFn: generalOptionsTabEditorTab}); this.initEditorTabs(); } @@ -54,8 +62,11 @@ export class PanelCtrl { } initEditorTabs() { - this.editorTabs = []; - this.editorTabs.push({title: 'General', directiveFn: generalOptionsTabEditorTab}); + return; + } + + addEditorTab(title, directiveFn) { + this.editorTabs.push({title: title, directiveFn: directiveFn}); } getMenu() { diff --git a/public/app/plugins/panel/text/module.ts b/public/app/plugins/panel/text/module.ts index 3697533c1c2..837ccfe713f 100644 --- a/public/app/plugins/panel/text/module.ts +++ b/public/app/plugins/panel/text/module.ts @@ -3,10 +3,6 @@ import _ from 'lodash'; import {PanelDirective, PanelCtrl} from '../../../features/panel/panel'; -function optionsEditorTab() { - return {templateUrl: 'public/app/plugins/panel/text/editor.html'}; -} - // Set and populate defaults var panelDefaults = { mode : "markdown", // 'html', 'markdown', 'text' @@ -26,8 +22,9 @@ export class TextPanelCtrl extends PanelCtrl { } initEditorTabs() { - super.initEditorTabs(); - this.editorTabs.push({title: 'Options', directiveFn: optionsEditorTab}); + this.addEditorTab('Options', () => { + return { templateUrl: 'public/app/plugins/panel/text/editor.html' }; + }); } render() { @@ -41,7 +38,7 @@ export class TextPanelCtrl extends PanelCtrl { // this.panelRenderingComplete(); } - refreshData() { + refresh() { this.render(); } @@ -65,7 +62,9 @@ export class TextPanelCtrl extends PanelCtrl { } else { System.import('vendor/showdown').then(Showdown => { this.converter = new Showdown.converter(); - this.updateContent(this.converter.makeHtml(text)); + this.$scope.$apply(() => { + this.updateContent(this.converter.makeHtml(text)); + }); }); } } @@ -77,10 +76,6 @@ export class TextPanelCtrl extends PanelCtrl { console.log('Text panel error: ', e); this.content = this.$sce.trustAsHtml(html); } - - if (!this.$scope.$$phase) { - this.$scope.$digest(); - } } }