From 3d9c978a1b32b519ce5d371833af21ba35cf145e Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Sun, 1 Mar 2015 11:20:04 +0200 Subject: client/graph_view: fix scaling --- src/client/view/graph_view.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/client/view/graph_view.js b/src/client/view/graph_view.js index 750e3386..7356a23d 100644 --- a/src/client/view/graph_view.js +++ b/src/client/view/graph_view.js @@ -571,7 +571,7 @@ function GraphView(spec) { new_scale; if (segment_in_segment(scaled_low, scaled_high, screen_low, screen_high)) { - return [current_scale, current_translate]; + return [current_scale, function () { return current_translate; }]; } new_scale = (rect_high == rect_low ? current_scale : (screen_high - screen_low) / (rect_high - rect_low) * percent); @@ -580,8 +580,8 @@ function GraphView(spec) { // scale to percent of screen new_scale , - // translate middle to middle - ((screen_low + screen_high) / 2 - (rect_high + rect_low) / 2 * new_scale) + // translate middle to middle - function because scale not determined yet + function (scale) { return ((screen_low + screen_high) / 2 - (rect_high + rect_low) / 2 * scale); } ]; } @@ -604,17 +604,22 @@ function GraphView(spec) { y_scale_move = scale_and_move(0, screen_height, y_min, y_max, 0.8, current_scale, current_translate[1]), min_scale = Math.min(x_scale_move[0], y_scale_move[0]), - x_translate = x_scale_move[1], - y_translate = y_scale_move[1]; + x_translate = x_scale_move[1](min_scale), + y_translate = y_scale_move[1](min_scale); if (min_scale !== current_scale || x_translate !== current_translate[0] || y_translate !== current_translate[1]) { - zoom_obj.translate([x_translate, y_translate]); - zoom_obj.scale(min_scale); - zoom_obj.event(zoom_obj_element.transition().duration(200)); + set_scale_translate(min_scale, [x_translate, y_translate]); } } + var set_scale_translate = function(scale, translate) { + zoom_obj.translate([translate[0], translate[1]]); + zoom_obj.scale(scale); + zoom_obj.event(zoom_obj_element.transition().duration(200)); + } + gv.set_scale_translate = set_scale_translate; + gv.update_view = update_view; function start_layout_animation() { on_interval = function() { -- cgit v1.3.1