From 3ba7f28e31842cea387833bb1cc3cb7f27385278 Mon Sep 17 00:00:00 2001 From: "olau@iola.dk" Date: Thu, 17 Mar 2011 14:22:13 +0000 Subject: [PATCH] Revamp resize plugin to reuse the plot object and disconnect its resize event properly git-svn-id: https://flot.googlecode.com/svn/trunk@318 1e0a6537-2640-0410-bfb7-f154510ff394 --- NEWS.txt | 1 + jquery.flot.resize.js | 35 +++++++++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/NEWS.txt b/NEWS.txt index b616a765..66ea8342 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -81,6 +81,7 @@ Changes: types (sponsored by Utility Data Corporation). - Resize plugin for automatically redrawing when the placeholder changes size, e.g. on window resizes (sponsored by Novus Partners). + A resize() method has been added to plot object facilitate this. - Support Infinity/-Infinity for plotting asymptotes by hacking it into +/-Number.MAX_VALUE (reported by rabaea.mircea). - Support for restricting navigate plugin to not pan/zoom an axis (based diff --git a/jquery.flot.resize.js b/jquery.flot.resize.js index c50a8d2f..69dfb24f 100644 --- a/jquery.flot.resize.js +++ b/jquery.flot.resize.js @@ -23,29 +23,32 @@ plots, you can just fix the size of their placeholders. (function ($) { - var redrawing = 0; var options = { }; // no options function init(plot) { + function onResize() { + var placeholder = plot.getPlaceholder(); + + // somebody might have hidden us and we can't plot + // when we don't have the dimensions + if (placeholder.width() == 0 || placeholder.height() == 0) + return; + + plot.resize(); + plot.setupGrid(); + plot.draw(); + } + function bindEvents(plot, eventHolder) { - if (!redrawing) - plot.getPlaceholder().resize(onResize); - - function onResize() { - var placeholder = plot.getPlaceholder(); - - // somebody might have hidden us and we can't plot - // when we don't have the dimensions - if (placeholder.width() == 0 || placeholder.height() == 0) - return; - - ++redrawing; - $.plot(placeholder, plot.getData(), plot.getOptions()); - --redrawing; - } + plot.getPlaceholder().resize(onResize); + } + + function shutdown(plot, eventHolder) { + plot.getPlaceholder().unbind("resize", onResize); } plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); } $.plot.plugins.push({