|
|
@@ -22,7 +22,8 @@ function (angular, $, config) {
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
- }).directive('grafanaPanel', function() {
|
|
|
+ })
|
|
|
+ .directive('grafanaPanel', function() {
|
|
|
return {
|
|
|
restrict: 'E',
|
|
|
templateUrl: 'app/features/panel/partials/panel.html',
|
|
|
@@ -36,5 +37,64 @@ function (angular, $, config) {
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
+ })
|
|
|
+ .directive('panelResizer', function($rootScope) {
|
|
|
+ return {
|
|
|
+ restrict: 'E',
|
|
|
+ template: '<span class="resize-panel-handle"></span>',
|
|
|
+ link: function(scope, elem) {
|
|
|
+ var resizing = false;
|
|
|
+ var handleOffset;
|
|
|
+ var originalHeight;
|
|
|
+ var originalWidth;
|
|
|
+ var maxWidth;
|
|
|
+
|
|
|
+ function dragStartHandler(e) {
|
|
|
+ e.preventDefault();
|
|
|
+ console.log('start');
|
|
|
+ resizing = true;
|
|
|
+
|
|
|
+ handleOffset = $(e.target).offset();
|
|
|
+ originalHeight = parseInt(scope.row.height);
|
|
|
+ originalWidth = scope.panel.span;
|
|
|
+ maxWidth = $(document).width();
|
|
|
+
|
|
|
+ $('body').on('mousemove', moveHandler);
|
|
|
+ $('body').on('mouseup', dragEndHandler);
|
|
|
+ }
|
|
|
+
|
|
|
+ function moveHandler(e) {
|
|
|
+ scope.row.height = originalHeight + (e.pageY - handleOffset.top);
|
|
|
+ scope.panel.span = originalWidth + (((e.pageX - handleOffset.left) / maxWidth) * 12);
|
|
|
+
|
|
|
+ var rowSpan = scope.dashboard.rowSpan(scope.row);
|
|
|
+
|
|
|
+ if (Math.floor(rowSpan) < 14) {
|
|
|
+ scope.row.panels[scope.row.panels.length - 1].span = scope.row.panels[scope.row.panels.length - 1].span - (rowSpan - 12);
|
|
|
+ }
|
|
|
+
|
|
|
+ scope.$apply(function() {
|
|
|
+ scope.$broadcast('render');
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function dragEndHandler() {
|
|
|
+ console.log('end');
|
|
|
+ scope.$apply(function() {
|
|
|
+ $rootScope.$broadcast('render');
|
|
|
+ });
|
|
|
+
|
|
|
+ $('body').off('mousemove', moveHandler);
|
|
|
+ $('body').off('mouseup', dragEndHandler);
|
|
|
+ }
|
|
|
+
|
|
|
+ elem.on('mousedown', dragStartHandler);
|
|
|
+
|
|
|
+ scope.$on("$destroy", function() {
|
|
|
+ elem.off('mousedown', dragStartHandler);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
});
|
|
|
+
|
|
|
});
|