xcharts-demo-2.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. $(function() {
  2. var tt = document.createElement('div'),
  3. leftOffset = -(~~$('html').css('padding-left').replace('px', '') + ~~$('body').css('margin-left').replace('px', '')),
  4. topOffset = 0;
  5. tt.className = 'tooltip top fade in';
  6. document.body.appendChild(tt);
  7. var data = [{
  8. "xScale": "ordinal",
  9. "comp": [],
  10. "main": [{
  11. "className": ".main.l1",
  12. "data": [{
  13. "y": 15,
  14. "x": "2012-11-19T00:00:00"
  15. }, {
  16. "y": 11,
  17. "x": "2012-11-20T00:00:00"
  18. }, {
  19. "y": 8,
  20. "x": "2012-11-21T00:00:00"
  21. }, {
  22. "y": 10,
  23. "x": "2012-11-22T00:00:00"
  24. }, {
  25. "y": 1,
  26. "x": "2012-11-23T00:00:00"
  27. }, {
  28. "y": 6,
  29. "x": "2012-11-24T00:00:00"
  30. }, {
  31. "y": 8,
  32. "x": "2012-11-25T00:00:00"
  33. }]
  34. }, {
  35. "className": ".main.l2",
  36. "data": [{
  37. "y": 29,
  38. "x": "2012-11-19T00:00:00"
  39. }, {
  40. "y": 33,
  41. "x": "2012-11-20T00:00:00"
  42. }, {
  43. "y": 13,
  44. "x": "2012-11-21T00:00:00"
  45. }, {
  46. "y": 16,
  47. "x": "2012-11-22T00:00:00"
  48. }, {
  49. "y": 7,
  50. "x": "2012-11-23T00:00:00"
  51. }, {
  52. "y": 18,
  53. "x": "2012-11-24T00:00:00"
  54. }, {
  55. "y": 8,
  56. "x": "2012-11-25T00:00:00"
  57. }]
  58. }],
  59. "type": "line-dotted",
  60. "yScale": "linear"
  61. }, {
  62. "xScale": "ordinal",
  63. "comp": [],
  64. "main": [{
  65. "className": ".main.l1",
  66. "data": [{
  67. "y": 12,
  68. "x": "2012-11-19T00:00:00"
  69. }, {
  70. "y": 18,
  71. "x": "2012-11-20T00:00:00"
  72. }, {
  73. "y": 8,
  74. "x": "2012-11-21T00:00:00"
  75. }, {
  76. "y": 7,
  77. "x": "2012-11-22T00:00:00"
  78. }, {
  79. "y": 6,
  80. "x": "2012-11-23T00:00:00"
  81. }, {
  82. "y": 12,
  83. "x": "2012-11-24T00:00:00"
  84. }, {
  85. "y": 8,
  86. "x": "2012-11-25T00:00:00"
  87. }]
  88. }, {
  89. "className": ".main.l2",
  90. "data": [{
  91. "y": 29,
  92. "x": "2012-11-19T00:00:00"
  93. }, {
  94. "y": 33,
  95. "x": "2012-11-20T00:00:00"
  96. }, {
  97. "y": 13,
  98. "x": "2012-11-21T00:00:00"
  99. }, {
  100. "y": 16,
  101. "x": "2012-11-22T00:00:00"
  102. }, {
  103. "y": 7,
  104. "x": "2012-11-23T00:00:00"
  105. }, {
  106. "y": 18,
  107. "x": "2012-11-24T00:00:00"
  108. }, {
  109. "y": 8,
  110. "x": "2012-11-25T00:00:00"
  111. }]
  112. }],
  113. "type": "cumulative",
  114. "yScale": "linear"
  115. }, {
  116. "xScale": "ordinal",
  117. "comp": [],
  118. "main": [{
  119. "className": ".main.l1",
  120. "data": [{
  121. "y": 12,
  122. "x": "2012-11-19T00:00:00"
  123. }, {
  124. "y": 18,
  125. "x": "2012-11-20T00:00:00"
  126. }, {
  127. "y": 8,
  128. "x": "2012-11-21T00:00:00"
  129. }, {
  130. "y": 7,
  131. "x": "2012-11-22T00:00:00"
  132. }, {
  133. "y": 6,
  134. "x": "2012-11-23T00:00:00"
  135. }, {
  136. "y": 12,
  137. "x": "2012-11-24T00:00:00"
  138. }, {
  139. "y": 8,
  140. "x": "2012-11-25T00:00:00"
  141. }]
  142. }, {
  143. "className": ".main.l2",
  144. "data": [{
  145. "y": 29,
  146. "x": "2012-11-19T00:00:00"
  147. }, {
  148. "y": 33,
  149. "x": "2012-11-20T00:00:00"
  150. }, {
  151. "y": 13,
  152. "x": "2012-11-21T00:00:00"
  153. }, {
  154. "y": 16,
  155. "x": "2012-11-22T00:00:00"
  156. }, {
  157. "y": 7,
  158. "x": "2012-11-23T00:00:00"
  159. }, {
  160. "y": 18,
  161. "x": "2012-11-24T00:00:00"
  162. }, {
  163. "y": 8,
  164. "x": "2012-11-25T00:00:00"
  165. }]
  166. }],
  167. "type": "bar",
  168. "yScale": "linear"
  169. }];
  170. var order = [0, 1, 0, 2],
  171. i = 0,
  172. xFormat = d3.time.format('%A'),
  173. chart = new xChart('line-dotted', data[order[i]], '#example-vis', {
  174. axisPaddingTop: 5,
  175. dataFormatX: function(x) {
  176. return new Date(x);
  177. },
  178. tickFormatX: function(x) {
  179. return xFormat(x);
  180. },
  181. mouseover: function(d, i) {
  182. var pos = $(this).offset();
  183. $(tt).html('<div class="arrow"></div><div class="tooltip-inner">' + d3.time.format('%A')(d.x) + ': ' + d.y + '</div>')
  184. .css({
  185. top: topOffset + pos.top,
  186. left: pos.left + leftOffset
  187. })
  188. .show();
  189. },
  190. mouseout: function(x) {
  191. $(tt).hide();
  192. },
  193. timing: 1250
  194. }),
  195. rotateTimer,
  196. toggles = d3.selectAll('#upd-chart a'),
  197. t = 3500;
  198. function updateChart(i) {
  199. var d = data[i];
  200. chart.setData(d);
  201. toggles.classed('active', function() {
  202. return (d3.select(this).attr('data-type') === d.type);
  203. });
  204. return d;
  205. }
  206. toggles.on('click', function(d, i) {
  207. clearTimeout(rotateTimer);
  208. updateChart(i);
  209. });
  210. function rotateChart() {
  211. i += 1;
  212. i = (i >= order.length) ? 0 : i;
  213. var d = updateChart(order[i]);
  214. rotateTimer = setTimeout(rotateChart, t);
  215. }
  216. rotateTimer = setTimeout(rotateChart, t);
  217. }());