diff --git a/src/app/controllers/annotationsEditorCtrl.js b/src/app/controllers/annotationsEditorCtrl.js
index 13cf4d29087..99acea2c18c 100644
--- a/src/app/controllers/annotationsEditorCtrl.js
+++ b/src/app/controllers/annotationsEditorCtrl.js
@@ -63,7 +63,7 @@ function (angular, app, _) {
});
module.controller('EditViewCtrl', function($scope) {
- $scope.editPanelSrc = 'app/partials/dasheditor.html';
+ $scope.editPanelSrc = null;
$scope.onAppEvent('show-edit-panel', function(evt, payload) {
if (payload.src === $scope.editPanelSrc) {
diff --git a/src/app/controllers/dashboardNavCtrl.js b/src/app/controllers/dashboardNavCtrl.js
index a58a2647945..ce5b9934efd 100644
--- a/src/app/controllers/dashboardNavCtrl.js
+++ b/src/app/controllers/dashboardNavCtrl.js
@@ -23,7 +23,6 @@ function (angular, _, moment, config, store) {
$scope.onAppEvent('zoom-out', function() {
$scope.zoom(2);
});
-
};
$scope.set_default = function() {
diff --git a/src/app/directives/all.js b/src/app/directives/all.js
index 5236a1a619d..8e3996f03be 100644
--- a/src/app/directives/all.js
+++ b/src/app/directives/all.js
@@ -4,6 +4,7 @@ define([
'./grafanaPanel',
'./grafanaSimplePanel',
'./ngBlur',
+ './dashEditLink',
'./ngModelOnBlur',
'./tip',
'./confirmClick',
diff --git a/src/app/directives/configModal.js b/src/app/directives/configModal.js
index 9e65f6cb07c..b7e579e7026 100644
--- a/src/app/directives/configModal.js
+++ b/src/app/directives/configModal.js
@@ -16,12 +16,6 @@ function (angular, _, $) {
var id = '#' + partial.replace('.html', '').replace(/[\/|\.|:]/g, '-') + '-' + scope.$id;
elem.bind('click',function() {
- $timeout(function() {
- scope.exitFullscreen();
- scope.emitAppEvent('show-edit-panel', {src: partial});
- });
- //return;
-
if ($(id).length) {
elem.attr('data-target', id).attr('data-toggle', 'modal');
scope.$apply(function() { scope.$broadcast('modal-opened'); });
diff --git a/src/app/directives/dashEditLink.js b/src/app/directives/dashEditLink.js
new file mode 100644
index 00000000000..c2e781ba3ae
--- /dev/null
+++ b/src/app/directives/dashEditLink.js
@@ -0,0 +1,60 @@
+define([
+ 'angular',
+ 'jquery'
+],
+function (angular, $) {
+ 'use strict';
+
+ angular
+ .module('grafana.directives')
+ .directive('dashEditorLink', function($timeout) {
+ return {
+ restrict: 'A',
+ link: function(scope, elem, attrs) {
+ var partial = attrs.dashEditorLink;
+
+ elem.bind('click',function() {
+ $timeout(function() {
+ scope.exitFullscreen();
+ scope.emitAppEvent('show-dash-editor', { src: partial, scope: scope });
+ });
+ });
+ }
+ };
+ });
+
+ angular
+ .module('grafana.directives')
+ .directive('dashEditorView', function($compile) {
+ return {
+ restrict: 'A',
+ link: function(scope, elem) {
+ var editorScope;
+ var lastEditor;
+
+
+ scope.onAppEvent('show-dash-editor', function(evt, payload) {
+ if (lastEditor === payload.src) {
+ editorScope.dismiss();
+ return;
+ }
+
+ lastEditor = payload.src;
+ editorScope = payload.scope.$new();
+ editorScope.dismiss = function() {
+ editorScope.$destroy();
+ elem.empty();
+ lastEditor = null;
+ };
+
+ var src = "'" + payload.src + "'";
+ var view = $('
');
+ elem.append(view);
+ $compile(elem.contents())(editorScope);
+ });
+
+ }
+ };
+ });
+
+});
diff --git a/src/app/partials/dashboard.html b/src/app/partials/dashboard.html
index b528c1e1016..e11d5cd85a8 100644
--- a/src/app/partials/dashboard.html
+++ b/src/app/partials/dashboard.html
@@ -8,9 +8,7 @@
-