date picker
[scannr.git] / js / script.js~
blob:a/js/script.js~ -> blob:b/js/script.js~
  $(function() {
   
  // Set the default dates
  var startDate = Date.create().addDays(-6), // 7 days ago
  endDate = Date.create(); // today
   
  var range = $('#range');
   
  // Show the dates in the range input
  range.val(startDate.format('{MM}/{dd}/{yyyy}') + ' - ' + endDate.format('{MM}/{dd}/{yyyy}'));
   
  // Load chart
  ajaxLoadChart(startDate,endDate);
   
  range.daterangepicker({
   
  startDate: startDate,
  endDate: endDate,
   
  ranges: {
  'Today': ['today', 'today'],
  'Yesterday': ['yesterday', 'yesterday'],
  'Last 7 Days': [Date.create().addDays(-6), 'today'],
  'Last 30 Days': [Date.create().addDays(-29), 'today']
  }
  },function(start, end){
   
  ajaxLoadChart(start, end);
   
  });
   
  // The tooltip shown over the chart
  var tt = $('<div class="ex-tooltip">').appendTo('body'),
  topOffset = -32;
   
  var data = {
  "xScale" : "time",
  "yScale" : "linear",
  "main" : [{
  className : ".stats",
  "data" : []
  }]
  };
   
  var opts = {
  paddingLeft : 50,
  paddingTop : 20,
  paddingRight : 10,
  axisPaddingLeft : 25,
  tickHintX: 9, // How many ticks to show horizontally
   
  dataFormatX : function(x) {
   
  // This turns converts the timestamps coming from
  // ajax.php into a proper JavaScript Date object
   
  return Date.create(x);
  },
   
  tickFormatX : function(x) {
   
  // Provide formatting for the x-axis tick labels.
  // This uses sugar's format method of the date object.
   
  return x.format('{MM}/{dd}');
  },
   
  "mouseover": function (d, i) {
  var pos = $(this).offset();
   
  tt.text(d.x.format('{Month} {ord}') + ': ' + d.y).css({
   
  top: topOffset + pos.top,
  left: pos.left
   
  }).show();
  },
   
  "mouseout": function (x) {
  tt.hide();
  }
  };
   
  // Create a new xChart instance, passing the type
  // of chart a data set and the options object
   
  var chart = new xChart('line-dotted', data, '#chart' , opts);
   
  // Function for loading data via AJAX and showing it on the chart
  function ajaxLoadChart(startDate,endDate) {
   
  // If no data is passed (the chart was cleared)
   
  if(!startDate || !endDate){
  chart.setData({
  "xScale" : "time",
  "yScale" : "linear",
  "main" : [{
  className : ".stats",
  data : []
  }]
  });
   
  return;
  }
   
  // Otherwise, issue an AJAX request
   
  $.getJSON('ajax.php', {
   
  start: startDate.format('{yyyy}-{MM}-{dd}'),
  end: endDate.format('{yyyy}-{MM}-{dd}')
   
  }, function(data) {
   
  var set = [];
  $.each(data, function() {
  set.push({
  x : this.label,
  y : parseInt(this.value, 10)
  });
  });
   
  chart.setData({
  "xScale" : "time",
  "yScale" : "linear",
  "main" : [{
  className : ".stats",
  data : set
  }]
  });
   
  });
  }
  });