Commit 2dbb3709 by Torkel Ödegaard

Working on resize handle, drag to resize panels & rows

parent 906e70e5
...@@ -98,7 +98,7 @@ function (angular, app, _, config) { ...@@ -98,7 +98,7 @@ function (angular, app, _, config) {
}; };
$scope.updatePanelSpan = function(panel, span) { $scope.updatePanelSpan = function(panel, span) {
panel.span = Math.min(Math.max(panel.span + span, 1), 12); panel.span = Math.min(Math.max(Math.floor(panel.span + span), 1), 12);
}; };
$scope.replacePanel = function(newPanel, oldPanel) { $scope.replacePanel = function(newPanel, oldPanel) {
...@@ -121,7 +121,7 @@ function (angular, app, _, config) { ...@@ -121,7 +121,7 @@ function (angular, app, _, config) {
module.directive('rowHeight', function() { module.directive('rowHeight', function() {
return function(scope, element) { return function(scope, element) {
scope.$watchGroup(['row.collapse', 'row.height'], function() { scope.$watchGroup(['row.collapse', 'row.height'], function() {
element[0].style.minHeight = scope.row.collapse ? '5px' : scope.row.height; element.css({ minHeight: scope.row.collapse ? '5px' : scope.row.height });
}); });
}; };
}); });
......
...@@ -22,7 +22,8 @@ function (angular, $, config) { ...@@ -22,7 +22,8 @@ function (angular, $, config) {
}); });
} }
}; };
}).directive('grafanaPanel', function() { })
.directive('grafanaPanel', function() {
return { return {
restrict: 'E', restrict: 'E',
templateUrl: 'app/features/panel/partials/panel.html', templateUrl: 'app/features/panel/partials/panel.html',
...@@ -36,5 +37,64 @@ function (angular, $, config) { ...@@ -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);
});
}
};
});
}); });
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<div class="panel-content"> <div class="panel-content">
<ng-transclude></ng-transclude> <ng-transclude></ng-transclude>
</div> </div>
<panel-resizer></panel-resizer>
</div> </div>
<div class="panel-full-edit" ng-if="editMode"> <div class="panel-full-edit" ng-if="editMode">
......
...@@ -203,3 +203,13 @@ ...@@ -203,3 +203,13 @@
top: 0; top: 0;
right: 0; right: 0;
} }
.resize-panel-handle {
cursor: se-resize;
position: absolute;
bottom: 0;
right: 0;
width: 15px;
height: 15px;
display: block;
}
...@@ -75,6 +75,10 @@ ...@@ -75,6 +75,10 @@
function dragstartHandler(e) { function dragstartHandler(e) {
var isDragAllowed = !isDragHandleUsed || dragTarget.classList.contains(dragHandleClass); var isDragAllowed = !isDragHandleUsed || dragTarget.classList.contains(dragHandleClass);
if (dragTarget.classList.contains("resize-panel-handle")) {
return;
}
if (isDragAllowed) { if (isDragAllowed) {
var sendChannel = attrs.dragChannel || 'defaultchannel'; var sendChannel = attrs.dragChannel || 'defaultchannel';
var dragData = ''; var dragData = '';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment