/static/js/jquery.flot.init.js

https://bitbucket.org/haloweb/halogy-1.0/ · JavaScript · 79 lines · 68 code · 7 blank · 4 comment · 7 complexity · cde91cb0395af4e0e176bc6da99b72ad MD5 · raw file

  1. $(function(){
  2. $.getJSON('/admin/stats/'+days, function(data){
  3. // helper for returning the weekends in a period
  4. function weekendAreas(axes) {
  5. var markings = [];
  6. var d = new Date(axes.xaxis.min);
  7. // go to the first Saturday
  8. d.setUTCDate(d.getUTCDate() - ((d.getUTCDay() + 1) % 7))
  9. d.setUTCSeconds(0);
  10. d.setUTCMinutes(0);
  11. d.setUTCHours(0);
  12. var i = d.getTime();
  13. do {
  14. // when we don't set yaxis the rectangle automatically
  15. // extends to infinity upwards and downwards
  16. markings.push({ xaxis: { from: i, to: i + 2 * 24 * 60 * 60 * 1000 } });
  17. i += 7 * 24 * 60 * 60 * 1000;
  18. } while (i < axes.xaxis.max);
  19. return markings;
  20. }
  21. var d = [];
  22. var s = [];
  23. $.each(data.visits, function(i,item){
  24. d.push([item[0],item[1]]);
  25. });
  26. $.each(data.signups, function(i,item){
  27. s.push([item[0],item[1]]);
  28. });
  29. for (var i = 0; i < d.length; ++i)
  30. d[i][0] += 60 * 60 * 1000;
  31. for (var i = 0; i < s.length; ++i)
  32. s[i][0] += 60 * 60 * 1000;
  33. var plot = $.plot($("#placeholder"),
  34. [ { data: d, label: "Visitations"} , { data: s, label: "Signups" } ],
  35. { lines: { show: true, fill: true },
  36. points: { show: true },
  37. grid: { hoverable: true, clickable: false, markings: weekendAreas },
  38. yaxis: { min: 0, tickDecimals: 0 },
  39. xaxis: { mode: 'time' }
  40. });
  41. function showTooltip(x, y, contents) {
  42. $('<div id="tooltip">' + contents + '</div>').css( {
  43. position: 'absolute',
  44. display: 'none',
  45. top: y + 5,
  46. left: x + 5,
  47. border: '1px solid #fdd',
  48. padding: '2px',
  49. 'background-color': '#fee',
  50. opacity: 0.80
  51. }).appendTo("body").fadeIn(200);
  52. }
  53. var previousPoint = null;
  54. $("#placeholder").bind("plothover", function (event, pos, item) {
  55. $("#x").text(pos.x.toFixed(2));
  56. $("#y").text(pos.y.toFixed(2));
  57. if (item) {
  58. if (previousPoint != item.datapoint) {
  59. previousPoint = item.datapoint;
  60. $("#tooltip").remove();
  61. var x = item.datapoint[0],
  62. y = item.datapoint[1];
  63. showTooltip(item.pageX, item.pageY,
  64. y + " " + item.series.label);
  65. }
  66. } else {
  67. $("#tooltip").remove();
  68. previousPoint = null;
  69. }
  70. });
  71. });
  72. });