AJAX RFID Tester Old

by casebash

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/1.4.3/jquery.scrollTo.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/ICanHaz.js/0.10/ICanHaz.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.3/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.9/backbone-min.js"></script>
<html>
  
  <body>Last status: <span id="status">Idle</span>

    <div id="content" style="overflow : auto; height: 250px; resize: vertical;"></div>
    <div id="controls">
      <label>Time</label>
      <input name="timestamp" type="text" value="" />
      <label>Delay</label>
      <input name="delay" type="text" value="" />
      <br />
      <label>Tag Id</label>
      <input name="tagid" type="text" value="" />
      <br />
      <button class="b index">Index</button>
      <button class="b alldetails">All details</button>
      <button class="b single">Single</button>
      <button class="b since">Since</button>
      <button class="replace">Replace</button>
      <input type="checkbox" name="loop" value="Loop">Loop
      <br>
    </div>
  </body>
</html>

CSS

label {
  font-family: sans-serif;
}
kbd {
  border: 1px solid grey;
  border-radius: 3px;
  background: -webkit-linear-gradient(top, #eeeeee 0%, #cccccc 100%);
}
#content {
  font-family:'courier new', 'courier';
  min-height: 3em;
  background: -webkit-linear-gradient(top, #ffffee 0%, #ddddcc 100%);
}

JavaScript

var DELAY_TIME = 2000;
var BASE_URL = "http://localhost:8888/";
var DEBUG = false;

//Prevent crashes from console.log
if(!DEBUG){
  if (!("console" in window)) {
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
     window.console = {};
     for (var i = 0, len = names.length; i < len; ++i) {
     window.console[names[i]] = function(){};
    }
  }
}

function ajax(title, url, param, keepdisabled, f) { //Still strings        
  var container=$("<div><div><b>" + title + " " + JSON.stringify(param) + "</b></div><br /></div>").appendTo('#content');
  $('#content').scrollTo(container);
  $('#status').text('Waiting for response...');
  $.getJSON(url, param)
    .done(function (data, status, jqXHR) {
    console.log('ajax.success');
    html = "<div>";
    if ("error_msg" in data) {
      $('#status').text('Internal error: ' + data.error_msg);
      html += data.error_msg;
    } else {
      html += "Time: " + data.time + "<br />";
      $("#replace").data("time", data.time);
      var d = data.data;
      if ($.isArray(d)) {
        if (d.length === 0) {
          html += "None";
        }
        $.each(data.data, function (i, item) {
          //Need to escape any html
          html += JSON.stringify(item) + '<br />';
        });
      } else {
        //Dictionary
        for (var key in d) {
          html += key + ": " + JSON.stringify(d[key]) + "<br />";
        }
      }
      $('#input').val(data[0]);
      $('#status').text('AJAX Success');
    }
    html += "</div><br />";
    $(html).appendTo(container);
    $('#content').scrollTo(container);  
    if (!keepdisabled) opDone();
    if (f) f(data);
  }).fail(function (jqXHR, error, exception) {
    console.log('ajax.fail'); 
    var next=$("<div>AJAX FAIL</div><br/>").appendTo(container);
    $('#content').scrollTo(container);
    $('#status').text('AJAX Fail');
    opDone();
    //TODO:...