function setup()

in server/src/main/resources/twitter-server/js/histogram-dom.js [44:129]


function setup() {

  // Extracts query parameters from url
  function extractParameters(parameters) {
    var pairs = window.location.search.split("?")[1].split("&");
    for (var i = 0; i < pairs.length; i++) {
      var kv = pairs[i].split("=");
      var key = kv[0];
      var value = kv[1];
      parameters[key] = value;
    }
    if (parameters.log_scale == undefined)
      parameters.log_scale = "false";
    if (parameters.fmt == undefined)
      parameters.fmt = "plot_cdf";
  }

  /** Provide on/off button functionality
   * @param {Object} controller Active field controls on/off
   * @param {string} mod Id of element which functions as the on button
   * @param {string} mod norm of element which functions as the off button
   * @param {function} onModify callback after clicking the on button
   * @param {function} onNormalize callback after clicking the off button
   */
  function colorSwap(controller, mod, norm, onModify, onNormalize) {

    function getBackgroundColor(element) {
      return document.defaultView.getComputedStyle(element, null).getPropertyValue('background-color');
    }

    var modifier = document.getElementById(mod);
    var normal = document.getElementById(norm);
    var onColor = getBackgroundColor(normal);
    var offColor = getBackgroundColor(modifier);

    modifier.onclick = function() {
      if (controller.active === false) {
        modifier.style.background = onColor;
        normal.style.background = offColor;
        controller.active = true;
        if (onModify != undefined) onModify();
      }
    }

    normal.onclick = function() {
      if (controller.active === true) {
        modifier.style.background = offColor;
        normal.style.background = onColor;
        controller.active = false;
        if (onNormalize != undefined) onNormalize();
      }
    }
    if (controller.active === true) {
      modifier.style.background = onColor;
      normal.style.background = offColor;
    } 
  }
  // Fill the params object
  extractParameters(params);

  // Initialize controllers
  shouldRefresh = {active: false};
  colorSwap(shouldRefresh, "refreshOn", "refreshOff", loopWhileRefresh, stopRefresh);

  scaleColorSwitch = {active: params.log_scale == "true"};
  colorSwap(scaleColorSwitch, "log", "reg", 
    function() {params.log_scale = "true"; refresh();},
    function() {params.log_scale = "false"; refresh();}
  )

  formatColorSwitch = {active: params.fmt === "plot_pdf"}
  colorSwap(formatColorSwitch, "PDF", "CDF",
    function() {params.fmt = "plot_pdf"; refresh();},
    function() {params.fmt = "plot_cdf"; refresh();}
  )

  // Add download functionality 
  var downloadLink = document.getElementById("download-link");
  downloadLink.setAttribute("href", generateUrl(extractFormat(params.fmt), "false"));
  downloadLink.download = name + "_" + extractFormat(params.fmt) + 
    "_" + (new Date()).getTime().toString() + ".json";

  // Load google charts library
  google.charts.load('current', {'packages':['corechart']});
  google.charts.setOnLoadCallback(refresh);
}