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

proper query_params ds

parent b4a03ce1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ FnordMetric.WebUI = function() {

  function openUrl(raw_url, push_state) {
    var url = FnordMetric.util.parseQueryString(raw_url);
    console.log(url);
    var query_params = url["query_params"];

    view = routes[url["path"]];
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ FnordMetric.views.MetricList = function() {

  function render(viewport, url, query_params) {
    if (query_params != undefined) {
      actions[query_params.name].render(viewport, query_params);
      actions[query_params.innerView].render(viewport, query_params);
      return;
    }
    loadMetricList(viewport, query_params);
+19 −16
Original line number Diff line number Diff line
@@ -16,26 +16,35 @@ if (FnordMetric.views === undefined) {
  FnordMetric.views = {};
}

FnordMetric.util.MetricPreviewWidget = function(viewport, metric) {
FnordMetric.util.MetricPreviewWidget = function(viewport, query_params) {
  var elem = viewport;
  var metric = metric;
  var metric = query_params.innerViewValue;
  var table_container = document.createElement("div");
  var chart_container = document.createElement("div");

  var inputs = {
    "show" : "Value",
    "aggregation" : {
      "time" : null,
      "step" : null
      "time" : 1000,
      "step" : 1000
      },
    "time" : {
      "mseconds_to_end" : null,
      "end" : null
      "end" : 300000
    },
    "group_by" : [],
    "columns" : null
  }

  function setInitialInputs() {
    if (query_params.length > 1) {
      //FnordMetric.util.setSingleMetricInputs(inputs, query_params);
    }
  };

  setInitialInputs();


  var elems = {};

  function renderChart(chart) {
@@ -75,18 +84,11 @@ FnordMetric.util.MetricPreviewWidget = function(viewport, metric) {
    });
  }

  function setInitialInputs(aggr_time, columns, timespan, end_time) {
    inputs.aggregation.time = 
      FnordMetric.util.toMilliSeconds(aggr_time);
    inputs.aggregation.step = aggr_time;
    inputs.time.mseconds_to_end = timespan;
    inputs.columns = columns;
    inputs.time.end = end_time;
  }
  

  function handleAggrAvailability(show, tw_select, step_select, group_btns) {
    /* show = "value" */
    var group_btns = (group_btns == undefined)? [] : group_btns;
    if (show == "Value" || show == "Rollup") {
      tw_select.className = "disabled";
      tw_select.disabled = true;
@@ -210,6 +212,7 @@ FnordMetric.util.MetricPreviewWidget = function(viewport, metric) {


  function initElems(columns) {
    console.log("init elems");
    var now = Date.now();
    var initial_timespan;

@@ -379,8 +382,8 @@ FnordMetric.util.MetricPreviewWidget = function(viewport, metric) {

    updateEventHandler();

    setInitialInputs(
      aggregate_options[0], columns, initial_timespan, datepicker.getAttribute("id"));
    /*setInitialInputs(
      aggregate_options[0], columns, initial_timespan, datepicker.getAttribute("id"));*/


    handleAggrAvailability("Value", aggr_win, aggr_step, group_buttons);
+4 −3
Original line number Diff line number Diff line
@@ -21,16 +21,17 @@ 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);
      "metric_list", query_params, false, true);
    elem.innerHTML = "";


    FnordMetric.util.renderPageHeader(
      "Metric &rsaquo; <em>" + 
      FnordMetric.util.htmlEscape(query_params.value) + 
      FnordMetric.util.htmlEscape(query_params.innerViewValue) + 
      "</em>", elem);

    var preview_widget = FnordMetric.util.MetricPreviewWidget(
      elem, query_params.value);
      elem, query_params);
    preview_widget.render();

  }
+68 −32
Original line number Diff line number Diff line
@@ -40,29 +40,89 @@ if (FnordMetric.util === undefined) {

FnordMetric.util.parseQueryString = function(qstr) {
  var path;
  var query_params;
  var query_params = {};

  if (qstr.indexOf("?") >= 0) {
    path = qstr.substr(0, qstr.indexOf("?"))

    var params_str = qstr.substr(qstr.indexOf("?") + 1);
    var raw_params = params_str.split('&');
    for (var i in raw_params) {

    /* set first param which defines view's view (metric, search ...) */
    var param = raw_params[0].split('=');
    query_params.innerView = decodeURIComponent(param[0]);
    query_params.innerViewValue = decodeURIComponent(param[1]);

    for (var i = 1; i < raw_params.length; i++) {
      var param = raw_params[i].split('=');
      query_params = {};
      query_params.name = decodeURIComponent(param[0]);
      query_params.value = decodeURIComponent(param[1]);
       query_params[decodeURIComponent(param[0])] =
          decodeURIComponent(param[1]);
    }

  } else {
    path = qstr;
  }

  console.log(query_params);
  return {
    "path": path,
    "query_params": query_params
  };
}

FnordMetric.util.setURLQueryString = function(hash, query_params, encode, push_state) {
  var path = "#"+hash+"?";

  path += query_params.innerView + "=";
  path += (encode)?
    encodeURIComponent(query_params.innerViewValue) :
    query_params.innerViewValue;

  delete query_params.innerView;
  delete query_params.innerViewValue;

  for (var param in query_params) {
    path += 
      "&" + param +
      "=" + query_params[param];
    console.log(param);
    console.log(query_params[param]);
  }

  console.log("path " + path);

  /*for (var i in query_params) {
    path += 
      query_params[i].name + "=";
    path += (encode) ? 
      encodeURIComponent(query_params[i].value) :
      query_params[i].value;
    path += (i == query_params.length -1) ? "" : "&";
  }*/

  if (push_state) {
    window.history.pushState({url:path}, "#", path);
  }

  window.location.hash = path;
}

//REMOVE??
FnordMetric.util.setFragmentURL = function(hash, name, value, encode, push_state) {
  var path = window.location.pathname;
  var value = value;
  if (encode == true) {
    value = encodeURIComponent(value);
  }
  var hash = 
    path + "#" + hash + "?" + name + "=" + value;
  window.location = hash;
  console.log("push state: " + push_state);
  if (push_state == true) {
    window.history.pushState({url: hash}, "#", hash);
  }
}


FnordMetric.util.convertArrayToString = function(array) {
  var string = "";
  if (array.length > 0) {
@@ -114,31 +174,6 @@ FnordMetric.util.displayErrorMessage = function(elem, msg) {
  elem.innerHTML = "<div>" + msg + "</div>"; // XSS!
}

FnordMetric.util.setURLQueryString = function(name, value, encode) {
  var fragment = window.location.hash.substr(1).split("?");
  fragment = fragment.length > 0 ? fragment[0] : "";
  var value = value;
  if (encode) {
    value = encodeURIComponent(value);
  }
  var hash = fragment + "?" + name + "=" + value;
  window.location.hash = hash;
}

FnordMetric.util.setFragmentURL = function(hash, name, value, encode, push_state) {
  var path = window.location.pathname;
  var value = value;
  if (encode == true) {
    value = encodeURIComponent(value);
  }
  var hash = 
    path + "#" + hash + "?" + name + "=" + value;
  window.location = hash;
  console.log("push state: " + push_state);
  if (push_state == true) {
    window.history.pushState({url: hash}, "#", hash);
  }
}

FnordMetric.util.openPopup = function(elem, text) {
  function closePopup() {
@@ -442,7 +477,7 @@ FnordMetric.util.createQuery = function(inputs, metric) {
      " and time < FROM_TIMESTAMP(" + Math.round(inputs.time.end / 1000) +")";
    //console.log(where);
  }
  query += where;
  //query += where;

  if (hasAggr) {
    var columns = (inputs.group_by.length > 0) ?
@@ -536,3 +571,4 @@ FnordMetric.util.getDateTimeString = function(timestamp) {
    ":" + minutes);
}