jquery.flot.resize.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. Flot plugin for automatically redrawing plots when the placeholder
  3. size changes, e.g. on window resizes.
  4. It works by listening for changes on the placeholder div (through the
  5. jQuery resize event plugin) - if the size changes, it will redraw the
  6. plot.
  7. There are no options. If you need to disable the plugin for some
  8. plots, you can just fix the size of their placeholders.
  9. */
  10. /* Inline dependency:
  11. * jQuery resize event - v1.1 - 3/14/2010
  12. * http://benalman.com/projects/jquery-resize-plugin/
  13. *
  14. * Copyright (c) 2010 "Cowboy" Ben Alman
  15. * Dual licensed under the MIT and GPL licenses.
  16. * http://benalman.com/about/license/
  17. */
  18. (function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
  19. (function ($) {
  20. var options = { }; // no options
  21. function init(plot) {
  22. function onResize() {
  23. var placeholder = plot.getPlaceholder();
  24. // somebody might have hidden us and we can't plot
  25. // when we don't have the dimensions
  26. if (placeholder.width() == 0 || placeholder.height() == 0)
  27. return;
  28. plot.resize();
  29. plot.setupGrid();
  30. plot.draw();
  31. }
  32. function bindEvents(plot, eventHolder) {
  33. plot.getPlaceholder().resize(onResize);
  34. }
  35. function shutdown(plot, eventHolder) {
  36. plot.getPlaceholder().unbind("resize", onResize);
  37. }
  38. plot.hooks.bindEvents.push(bindEvents);
  39. plot.hooks.shutdown.push(shutdown);
  40. }
  41. $.plot.plugins.push({
  42. init: init,
  43. options: options,
  44. name: 'resize',
  45. version: '1.0'
  46. });
  47. })(jQuery);