Commit ab17530e authored by Laura Schlimmer's avatar Laura Schlimmer
Browse files

Merge pull request #7 from paulasmuth/adminui_metricListView

Adminui metric list view
parents 4a04246b 79542a2b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ build:
	      fnordmetric-webui-sqleditorview.js \
	      fnordmetric-webui-visualeditorview.js \
	      fnordmetric-webui-queryresultview.js \
	      fnordmetric-webui-singlemetricview.js \
	      codemirror.js \
	) > fnordmetric-webui.js

+1 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ FnordMetric.WebUI = function() {
    FnordMetric.util.displayLoader(viewport);

    current_view = view;
    console.log(query_params);
    view.render(viewport, url, query_params);
  };

+52 −18
Original line number Diff line number Diff line
@@ -17,35 +17,63 @@ if (FnordMetric.views === undefined) {
}

FnordMetric.views.MetricList = function() {
  var actions = {
    "search" : {
      "render" : loadMetricList,
      "data" :FnordMetric.util.searchMetricList
    },
    "metric" : {
      "render" : FnordMetric.util.singleMetricView().render
    }
  }

  function openQueryEditor() {
    alert("click");
    /*
    var query = " DRAW LINECHART AXIS LEFT AXIS BOTTOM; \n" +
        "SELECT 'mymetric' AS series, time AS x, value AS y "+
        "FROM " + data["key"];
        var enc_query = encodeURIComponent(query);
        window.location = "/admin#query_playground!" + enc_query;
          //FIXME pushstate?
    */

  function render(viewport, url, query_params) {
    if (query_params != undefined) {
      actions[query_params.name].render(viewport, query_params);
      return;
    }
    loadMetricList(viewport, query_params);
  };

  function render(viewport, url) {
    loadMetricList(viewport);

  function onRowClick() {
    //FIXME
    var viewport = document.body.querySelector(".viewport");
    var params = {
      "name" : "metric",
      "value" : this.firstChild.id
    };
    FnordMetric.util.singleMetricView().render(
      viewport, params);
  };

  function renderMetricList(viewport, metrics) {


  function renderMetricList(viewport, metrics, search_item) {
    viewport.innerHTML = "";

    if (metrics.length == 0) {
      if (search_item != undefined) {
        console.log("render no search result");
      } else {
        renderEmptyMetricsList(viewport);
      }
      return;
    }

    var header_text = (search_item != undefined) ? 
      "Search " + search_item : "Metrics";
    FnordMetric.util.renderMetricHeader(header_text, viewport);

    var table_container = document.createElement("div");
    viewport.appendChild(table_container);

    var table_view = FnordMetric.util.TableView([
        "Metric",
        "Labels",
        "Last Insert",
        "Total stored bytes"], viewport, 25);
        "Total stored bytes"], table_container, 25);

    for (i in metrics) {
      table_view.addRow([
@@ -57,7 +85,7 @@ FnordMetric.views.MetricList = function() {
          metrics[i]["total_bytes"]]);
    }

    table_view.onRowClick(openQueryEditor);
    table_view.onRowClick(onRowClick);
    table_view.render();
  };

@@ -69,11 +97,17 @@ FnordMetric.views.MetricList = function() {
    elem.appendChild(msg_field);
  }

  function loadMetricList(viewport) {
  function loadMetricList(viewport, query_params) {
    FnordMetric.httpGet("/metrics", function(r) {
      if (r.status == 200) {
        var json = JSON.parse(r.response);
        renderMetricList(viewport, json.metrics);
        var search_item;
        if (query_params != undefined) {
          json.metrics =
              actions[query_params.name].data(json.metrics, query_params.value);
          search_item = query_params.value;
        }
        renderMetricList(viewport, json.metrics, search_item);
      } else {
        FnordMetric.util.displayErrorMessage(viewport, "Error connecting to server");
      }
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ FnordMetric.views.QueryPlayground = function() {
  function runQuery(result_pane, editor_pane, view, query_str) {
    if (query_str == undefined) {
      query_str = editorViews[view].getQuery();
      FnordMetric.util.setFragmentURL(urlName[view], query_str, true);
      FnordMetric.util.setURLQueryString(urlName[view], query_str, true);
    }

    FnordMetric.util.displayLoader(result_pane);
+49 −0
Original line number Diff line number Diff line
/**
 * This file is part of the "FnordMetric" project
 *   Copyright (c) 2014 Laura Schlimmer
 *   Copyright (c) 2014 Paul Asmuth, Google Inc.
 *
 * FnordMetric is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License v3.0. You should have received a
 * copy of the GNU General Public License along with this program. If not, see
 * <http://www.gnu.org/licenses/>.
 */
if (FnordMetric === undefined) {
  FnordMetric = {};
}

if (FnordMetric.views === undefined) {
  FnordMetric.views = {};
}


FnordMetric.util.singleMetricView = function() {
  function render(elem, query_params) {
    /* set url and push history state */
    FnordMetric.util.setURLQueryString(
      query_params.name, query_params.value, false, true);

    elem.innerHTML = "";

    FnordMetric.util.renderMetricHeader(
      query_params.value, elem);

    var button = FnordMetric.createButton(
      "#", undefined, "Open in Query Editor");
    elem.appendChild(button);

    button.onclick = function(e) {
      e.preventDefault();
      var query = 
        "SELECT * FROM " + query_params.value;
      FnordMetric.util.setFragmentURL(
        "query_playground", "sql_query", query, true);
      location.reload();
    }

  }

  return {
    "render" : render
  }
}
Loading