/// import $ from 'jquery'; import angular from 'angular'; import {coreModule} from 'app/core/core'; var template = ` {{ctrl.panel.title | interpolateTemplateVars:this}} {{ctrl.timeInfo}} `; function renderMenuItem(item, ctrl) { let html = ''; let listItemClass = ''; if (item.divider) { return '
  • '; } if (item.submenu) { listItemClass = 'dropdown-submenu'; } html += `
  • `; html += `${item.text}`; if (item.shortcut) { html += `${item.shortcut}`; } html += ``; if (item.submenu) { html += ''; } html += `
  • `; return html; } function createMenuTemplate(ctrl) { let html = ''; for (let item of ctrl.getMenu()) { html += renderMenuItem(item, ctrl); } return html; } /** @ngInject **/ function panelHeader($compile) { return { restrict: 'E', template: template, link: function(scope, elem, attrs) { let menuElem = elem.find('.panel-menu'); let menuScope; elem.click(function(evt) { const targetClass = evt.target.className; // remove existing scope if (menuScope) { menuScope.$destroy(); } menuScope = scope.$new(); let menuHtml = createMenuTemplate(scope.ctrl); console.log(menuHtml); menuElem.html(menuHtml); $compile(menuElem)(menuScope); if (targetClass === 'panel-title-text drag-handle' || targetClass === 'panel-title drag-handle') { evt.stopPropagation(); elem.find('[data-toggle=dropdown]').dropdown('toggle'); } }); } }; } coreModule.directive('panelHeader', panelHeader);