define([ 'angular', 'jquery', 'config', ], function (angular, $, config) { 'use strict'; angular .module('grafana.directives') .directive('panelLoader', function($compile, $parse) { return { restrict: 'E', link: function(scope, elem, attr) { var getter = $parse(attr.type), panelType = getter(scope); var panelPath = config.panels[panelType].path; scope.require([panelPath + "/module"], function () { var panelEl = angular.element(document.createElement('grafana-panel-' + panelType)); elem.append(panelEl); $compile(panelEl)(scope); }); } }; }).directive('grafanaPanel', function() { return { restrict: 'E', templateUrl: 'app/features/panel/partials/panel.html', transclude: true, link: function(scope, elem) { var panelContainer = elem.find('.panel-container'); scope.$watchGroup(['fullscreen', 'height', 'panel.height', 'row.height'], function() { panelContainer.css({ minHeight: scope.height || scope.panel.height || scope.row.height, display: 'block' }); elem.toggleClass('panel-fullscreen', scope.fullscreen ? true : false); }); } }; }); });