Sha256: 684be725e7ef5cc9c24ad4e492cfc826e069dac4f431d70ef24ec87046db08fc

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

/*jslint browser: true, indent: 2, nomen: true, plusplus: true, newcap: true, regexp: true, sloppy: true */
/*global $, SockJS, console, WebSocket*/
$(function () {
  var plot,
    NumPeriods = 300,
    UpdateInterval = 100,
    sock = new WebSocket("ws://" + window.location.host + "/ws"),
    time = 0,
    ticks = {
      bids: [],
      asks: [],
      lasts: []
    },
    level1 = 0.0;

  sock.onopen = function () {
    console.log("Connected to WS server.");
  };

  sock.onmessage = function (data) {
    data = JSON.parse(data.data);
    switch (data.action) {
    case "level1":
      level1 = data.level1;
      $(".bid").html(data.level1.bid.toFixed(2));
      $(".ask").html(data.level1.ask.toFixed(2));
      $(".last").html(data.level1.last.toFixed(2));
      break;
    }
  };

  sock.onclose = function () {
    console.log("Disconnected from WS server.");
  };

  function getData() {
    return [
      {
        data: ticks.bids,
        label: "Bid"
      },
      {
        data: ticks.asks,
        label: "Ask"
      },
      {
        data: ticks.lasts,
        label: "Last"
      }
    ];
  }

  plot = $.plot("#price-chart", getData(), {
    series: {
      shadowSize: 0
    },
    xaxis: {
      show: false
    }
  });

  // Push last, update graph
  setInterval(function () {
    time++;
    ticks.bids.push([time, level1.bid > 0 ? level1.bid : null]);
    ticks.asks.push([time, level1.ask > 0 ? level1.ask : null]);
    ticks.lasts.push([time, level1.last > 0 ? level1.last : null]);

    // strip off older ones
    while (ticks.bids.length > 0 && ticks.bids[0][0] < time - NumPeriods) {
      ticks.bids.shift();
    }
    while (ticks.asks.length > 0 && ticks.asks[0][0] < time - NumPeriods) {
      ticks.asks.shift();
    }
    while (ticks.lasts.length > 0 && ticks.lasts[0][0] < time - NumPeriods) {
      ticks.lasts.shift();
    }

    plot.setData(getData());
    plot.setupGrid();
    plot.draw();
  }, UpdateInterval);
});

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-trade-0.2 server/public/app.js