Commit 1c318500 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

fnordmetric ui: prepare fnordmetric enterprise integration

parent 92ca3384
Loading
Loading
Loading
Loading
+60 −2
Original line number Diff line number Diff line
var FnordMetric = (function(pre){

  var wsAddress, socket, currentNamespace,
     continuations = {},
     widgets = {},
     enterprise = false;

@@ -69,7 +70,10 @@ var FnordMetric = (function(pre){
    if (evt.error)
      return console.log("[FnordMetric] error: " + evt.error);

    if (evt.widget_key && widgets[evt.widget_key])
    if (evt.widget_key && continuations[evt.widget_key])
      continuations[evt.widget_key].apply(evt);

    else if (evt.widget_key && widgets[evt.widget_key])
      widgets[evt.widget_key].send(evt);
  }

@@ -93,11 +97,65 @@ var FnordMetric = (function(pre){
    }
  }

  function values_in(gauges, since, until, callback) {
    if (enterprise) {

    }

    else {
      var txid = FnordMetric.util.generateUUID();

      continuations[txid] = function(){
        var result = {};

        for (ind in this.gauges)
          result[this.gauges[ind].key] = this.gauges[ind].vals;

        callback.apply(result);
      }

      FnordMetric.publish({
        "type": "widget_request",
        "klass": "generic",
        "gauges": gauges,
        "cmd": "values_at",
        "since": since,
        "until": until,
        "widget_key": txid
      });
    }
  }

  function value_at(gauge, at, callback) {
    if (enterprise) {

    }

    else {
      var txid = FnordMetric.util.generateUUID();

      continuations[txid] = function(){
        callback.apply({ "value": this.value });
      }

      FnordMetric.publish({
        "type": "widget_request",
        "klass": "generic",
        "cmd": "values_for",
        "gauge": gauge,
        "at": at,
        "widget_key": txid
      })
    }
  }

  return {
    setup: setup,
    publish: publish,
    refresh: refresh,
    resize: resize
    resize: resize,
    value_at: value_at,
    values_in: values_in
  };

})(FnordMetric);
+4 −8
Original line number Diff line number Diff line
@@ -38,14 +38,10 @@ FnordMetric.widgets.counter = function(elem){
  }

  function requestDataAsync() {
    FnordMetric.publish({
      "type": "widget_request",
      "klass": "generic",
      "cmd": "values_for",
      "gauge": gauge,
      "at": at,
      "widget_key": widget_key
    })
    FnordMetric.value_at(gauge, at, function(){
      elem.attr('data-value', this.value);
      updateDisplay();
    });
  }

  function destroy() {
+25 −9
Original line number Diff line number Diff line
@@ -185,15 +185,31 @@ FnordMetric.widgets.timeseries = function(elem){
  }

  function requestDataAsync() {
    FnordMetric.publish({
      "type": "widget_request",
      "klass": "generic",
      "gauges": gauges,
      "cmd": "values_at",
      "tick": 30,
      "since": elem.attr("data-since"),
      "until": elem.attr("data-until"),
      "widget_key": widget_key
    var since = elem.attr("data-since"),
        until = elem.attr("data-until");

    FnordMetric.values_in(gauges, since, until, function(){

      var gauges = Object.keys(this)
      gconfig.series = [];

      for (ind in gauges) {
        var gauge = gauges[ind];

        gconfig.series.push({
          name: gauge,
          color: colors[ind],
          data: []
        });

        for(_time in this[gauge]){
          gconfig.series[ind].data.push(
            { x: parseInt(_time), y: parseInt(this[gauge][_time] || 0) }
          );
        }
      }

      renderChart();
    });
  }