jquery.flot.animator.min.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /* jQuery Flot Animator version 1.0.
  2. Flot Animator is a free jQuery Plugin that will add fluid animations to Flot charts.
  3. Copyright (c) 2012-2013 Chtiwi Malek
  4. http://www.codicode.com/art/jquery_flot_animator.aspx
  5. Licensed under Creative Commons Attribution 3.0 Unported License.
  6. */
  7. $.extend({
  8. plotAnimator: function (e, t, n) {
  9. function h() {
  10. var e = o[0][0];
  11. var t = o[o.length - 1][0];
  12. var n = (t - e) / a;
  13. var r = [];
  14. r.push(o[0]);
  15. var i = 1;
  16. lPoint = o[0];
  17. nPoint = o[i];
  18. for (var s = e + n; s < t + n; s += n) {
  19. if (s > t) {
  20. s = t
  21. }
  22. $("#m2").html(s);
  23. while (s > nPoint[0]) {
  24. lPoint = nPoint;
  25. nPoint = o[i++]
  26. }
  27. if (s == nPoint[0]) {
  28. r.push([s, nPoint[1]]);
  29. lPoint = nPoint;
  30. nPoint = o[i++]
  31. } else {
  32. var u = (nPoint[1] - lPoint[1]) / (nPoint[0] - lPoint[0]);
  33. curV = u * s + (lPoint[1] - u * lPoint[0]);
  34. r.push([s, curV])
  35. }
  36. }
  37. return r
  38. }
  39. function v() {
  40. var n = [];
  41. p++;
  42. switch (c) {
  43. case "left":
  44. n = d.slice(-1 * p);
  45. break;
  46. case "center":
  47. n = d.slice(d.length / 2 - p / 2, d.length / 2 + p / 2);
  48. break;
  49. default:
  50. n = d.slice(0, p);
  51. break
  52. }
  53. if (!u) {
  54. inV = n[0][0];
  55. laV = n[n.length - 1][0];
  56. n = [];
  57. for (var i = 0; i < o.length; i++) {
  58. if (o[i][0] >= inV && o[i][0] <= laV) {
  59. n.push(o[i])
  60. }
  61. }
  62. }
  63. t[r].data = p < a ? n : o;
  64. g.setData(t);
  65. g.draw();
  66. if (p < a) {
  67. setTimeout(v, f / a)
  68. } else {
  69. e.trigger("animatorComplete")
  70. }
  71. }
  72. function m(i) {
  73. var s = [];
  74. s.push([i[0][0], Math.max.apply(Math, i.map(function (e) {
  75. return e[1]
  76. }))]);
  77. s.push([i[0][0], null]);
  78. s.push([i[0][0], Math.min.apply(Math, i.map(function (e) {
  79. return e[1]
  80. }))]);
  81. for (var o = 0; o < i.length; o++) {
  82. s.push([i[o][0], null])
  83. }
  84. t[r].data = s;
  85. return $.plot(e, t, n)
  86. }
  87. var r = 0;
  88. for (var i = 0; i < t.length; i++) {
  89. if (t[i].animator) {
  90. r = i
  91. }
  92. }
  93. var s = t[r];
  94. var o = s.data;
  95. var u = t[r].lines ? true : false;
  96. var a = t[r].animator && t[r].animator.steps || 135;
  97. var f = t[r].animator && t[r].animator.duration || 1e3;
  98. var l = t[r].animator && t[r].animator.start || 0;
  99. var c = t[r].animator && t[r].animator.direction || "right";
  100. var p = 0;
  101. var d = h();
  102. var g = m(o);
  103. setTimeout(v, l);
  104. return g
  105. }
  106. })