Commit 91bfa803 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

js-api: better initialization, single js file

parent 6cadcb8b
Loading
Loading
Loading
Loading
+29 −66
Original line number Diff line number Diff line
@@ -45,78 +45,41 @@ class FnordMetric::App < Sinatra::Base
    track_event((8**32).to_s(36), parse_params(params))
  end

  # FIXPAUL move to websockets
  get '/:namespace/dashboard/:dashboard' do
    dashboard = current_namespace.dashboards.fetch(params[:dashboard])
  get '/fnordmetric-ui.js' do
    files = [
      '/js/d3.fnordmetric.js',
      '/js/rickshaw.fnordmetric.js',
      '/js/fnordmetric.js',
      '/js/fnordmetric.util.js',
      '/js/fnordmetric.timeseries_widget.js',
      '/js/fnordmetric.js_api.js'
    ]

    unless ENV["FNORDMETRIC_ENV"] == "dev"
      merged_js = @merged_js_cached
    end

    dashboard.to_json
    unless merged_js
      merged_js = ""

      files.each do |file|
        file = ::File.expand_path("../../../../web#{file}", __FILE__)
        merged_js += IO.read(file)
      end

      @merged_js_cached = merged_js
    end

  # get '/favicon.ico' do
  #   ""
  # end

  # get '/:namespace/gauge/:name' do
  #   gauge = if params[:name].include?("++")
  #     parts = params[:name].split("++")
  #     current_namespace.gauges[parts.first.to_sym].fetch_gauge(parts.last, params[:tick].to_i)
  #   else
  #     current_namespace.gauges[params[:name].to_sym]
  #   end

  #   if !gauge
  #     status 404
  #     return ""
  #   end

  #   data = if gauge.three_dimensional?
  #     _t = (params[:at] || Time.now).to_i
  #     { :count => gauge.field_values_total(_t), :values => gauge.field_values_at(_t) }
  #   elsif params[:at] && params[:at] =~ /^[0-9]+$/
  #     { (_t = gauge.tick_at(params[:at].to_i)) => gauge.value_at(_t) }
  #   elsif params[:at] && params[:at] =~ /^([0-9]+)-([0-9]+)$/
  #     _range = params[:at].split("-").map(&:to_i)
  #     _values = gauge.values_in(_range.first.._range.last)
  #     params[:sum] ? { :sum => _values.values.compact.map(&:to_i).sum } : _values
  #   else
  #     { (_t = gauge.tick_at(Time.now.to_i-gauge.tick)) => gauge.value_at(_t) }
  #   end

  #   data.to_json
  # end

  # get '/:namespace/sessions' do
  #   sessions = current_namespace.sessions(:all, :limit => 100).map do |session|
  #     session.fetch_data!
  #     session.to_json
  #   end

  #   { :sessions => sessions }.to_json
  # end

  # get '/:namespace/events' do
  #   events = if params[:type]
  #     current_namespace.events(:by_type, :type => params[:type])
  #   elsif params[:session_key]
  #     current_namespace.events(:by_session_key, :session_key => params[:session_key])
  #   else 
  #     find_opts = { :limit => 100 }
  #     find_opts.merge!(:since => params[:since].to_i+1) if params[:since]
  #     current_namespace.events(:all, find_opts)
  #   end

  #   { :events => events.map(&:to_json) }.to_json
  # end

  # get '/:namespace/event_types' do
  #   types_key = current_namespace.key_prefix("type-")
  #   keys = @redis.keys("#{types_key}*").map{ |k| k.gsub(types_key,'') }

  #   { :types => keys }.to_json
  # end
    content_type "application/javascript"
    merged_js
  end

  # FIXPAUL move to websockets
  get '/:namespace/dashboard/:dashboard' do
    dashboard = current_namespace.dashboards.fetch(params[:dashboard])

    dashboard.to_json
  end

end
+0 −31
Original line number Diff line number Diff line
var FnordMetric = (function(){

  var require = [
    '/js/d3.fnordmetric.js',
    '/js/rickshaw.fnordmetric.js',
    '/js/fnordmetric.js',
    '/js/fnordmetric.util.js',
    '/js/fnordmetric.timeseries_widget.js',
    '/js/fnordmetric.js_api.js'
  ];

  var setup = function(opts){
    if (typeof $ == 'undefined') {
      console.log("error: FnordMetric requires jQuery 1.6.2+");
      return;
    }

    FnordMetric.currentNamespace = opts.namespace;
    FnordMetric.ws_addr = "ws://" + opts.address + "/stream";

    for (n=0; n < require.length; n++)
      document.write('<script type="text/javascript" src="' + (
        "http://" + opts.address + require[n]) + '"></script>');
  }


  return {
    setup: setup
  };

}());
+18 −11
Original line number Diff line number Diff line
var FnordMetric = (function(pre_init){
var FnordMetric = (function(){

  var canvasElem = false;
  var currentView = false;
@@ -10,15 +10,6 @@ var FnordMetric = (function(pre_init){

  var navigatedViaHash = false;

  if (typeof pre_init != 'undefined') {
    currentNamespace = pre_init.currentNamespace;
    ws_addr = pre_init.ws_addr;
    $(document).ready(function(){
      js_api = FnordMetric.js_api;
      connect();
    });
  }

  function renderDashboard(_dash){
    loadView(FnordMetric.views.dashboardView(_dash));
  }
@@ -251,6 +242,21 @@ var FnordMetric = (function(pre_init){
    }
  }

  var setup = function(opts){
    if (typeof $ == 'undefined') {
      console.log("error: FnordMetric requires jQuery 1.6.2+");
      return;
    }

    FnordMetric.currentNamespace = opts.namespace;
    FnordMetric.ws_addr = "ws://" + opts.address + "/stream";

    $(document).ready(function(){
      js_api = FnordMetric.js_api;
      connect();
    });
  }

  return {
    renderDashboard: renderDashboard,
    renderGauge: renderGauge,
@@ -259,6 +265,7 @@ var FnordMetric = (function(pre_init){
    resizeView: resizeView,
    init: init,
    publish: publish,
    setup: setup,
    p: '',
    socket: socket,
    currentNamespace: currentNamespace,
@@ -271,4 +278,4 @@ var FnordMetric = (function(pre_init){
    gauges: gauges
  };

})(FnordMetric);
})();