aboutsummaryrefslogtreecommitdiff
var block_outliers, composite_mapping_fields, do_ajax_post, get_progress, mapping_method_fields, open_mapping_results, outlier_text, showalert, submit_special, toggle_enable_disable, update_time_remaining;

update_time_remaining = function(percent_complete) {
  var minutes_remaining, now, period, total_seconds_remaining;
  now = new Date();
  period = now.getTime() - root.start_time;
  console.log("period is:", period);
  if (period > 8000) {
    total_seconds_remaining = (period / percent_complete * (100 - percent_complete)) / 1000;
    minutes_remaining = Math.round(total_seconds_remaining / 60);
    if (minutes_remaining < 3) {
      return $('#time_remaining').text(Math.round(total_seconds_remaining) + " seconds remaining");
    } else {
      return $('#time_remaining').text(minutes_remaining + " minutes remaining");
    }
  }
};

get_progress = function() {
  var params, params_str, temp_uuid, url;
  console.log("temp_uuid:", $("#temp_uuid").val());
  temp_uuid = $("#temp_uuid").val();
  params = {
    key: temp_uuid
  };
  params_str = $.param(params);
  url = "/get_temp_data?" + params_str;
  console.log("url:", url);
  $.ajax({
    type: "GET",
    url: url,
    success: (function(_this) {
      return function(progress_data) {
        var percent_complete;
        percent_complete = progress_data['percent_complete'];
        console.log("in get_progress data:", progress_data);
        $('#marker_regression_progress').css("width", percent_complete + "%");
        if (root.start_time) {
          if (!isNaN(percent_complete)) {
            return update_time_remaining(percent_complete);
          }
        } else {
          return root.start_time = new Date().getTime();
        }
      };
    })(this)
  });
  return false;
};

block_outliers = function() {
  return $('.outlier').each((function(_this) {
    return function(_index, element) {
      return $(element).find('.trait_value_input').val('x');
    };
  })(this));
};

do_ajax_post = function(url, form_data) {
  $.ajax({
    type: "POST",
    url: url,
    data: form_data,
    error: (function(_this) {
      return function(xhr, ajaxOptions, thrownError) {
        alert("Sorry, an error occurred");
        console.log(xhr);
        clearInterval(_this.my_timer);
        $('#progress_bar_container').modal('hide');
        $('#static_progress_bar_container').modal('hide');
        return $("body").html("We got an error.");
      };
    })(this),
    success: (function(_this) {
      return function(data) {
        clearInterval(_this.my_timer);
        $('#progress_bar_container').modal('hide');
        $('#static_progress_bar_container').modal('hide');
        return open_mapping_results(data);
      };
    })(this)
  });
  console.log("settingInterval");
  this.my_timer = setInterval(get_progress, 1000);
  return false;
};

open_mapping_results = function(data) {
  return $.colorbox({
    html: data,
    href: "#mapping_results_holder",
    height: "90%",
    width: "90%",
    onComplete: (function(_this) {
      return function() {
        var filename, getSvgXml;
        root.create_lod_chart();
        filename = "lod_chart_" + js_data.this_trait;
        getSvgXml = function() {
          var svg;
          svg = $("#topchart").find("svg")[0];
          return (new XMLSerializer).serializeToString(svg);
        };
        $("#exportform > #export").click(function() {
          var form, svg_xml;
          svg_xml = getSvgXml();
          form = $("#exportform");
          form.find("#data").val(svg_xml);
          form.find("#filename").val(filename);
          return form.submit();
        });
        return $("#exportpdfform > #export_pdf").click(function() {
          var form, svg_xml;
          svg_xml = getSvgXml();
          form = $("#exportpdfform");
          form.find("#data").val(svg_xml);
          form.find("#filename").val(filename);
          return form.submit();
        });
      };
    })(this)
  });
};

outlier_text = "One or more outliers exist in this data set. Please review values before mapping. Including outliers when mapping may lead to misleading results.";
showalert = function(message, alerttype) {
  return $('#outlier_alert_placeholder').append('<div id="mapping_alert" class="alert ' + alerttype + '"><a class="close" data-dismiss="alert">�</a><span>' + message + '</span></div>');
};

$('#suggestive').hide();

$('input[name=display_all]').change((function(_this) {
  return function() {
    if ($('input[name=display_all]:checked').val() === "False") {
      return $('#suggestive').show();
    } else {
      return $('#suggestive').hide();
    }
  };
})(this));

// This is a list of inputs to be passed to the loading page, since not all inputs on the trait page are relevant to mapping
var mapping_input_list = ['temp_uuid', 'trait_id', 'dataset', 'tool_used', 'form_url', 'method',
                          'transform', 'trimmed_markers', 'selected_chr', 'chromosomes', 'mapping_scale',
                          'sample_vals', 'vals_hash', 'score_type', 'suggestive', 'significant',
                          'num_perm', 'permCheck', 'perm_output', 'perm_strata', 'categorical_vars',
                          'num_bootstrap', 'bootCheck', 'bootstrap_results', 'LRSCheck', 'covariates',
                          'maf', 'use_loco', 'manhattan_plot', 'control_marker', 'do_control',
                          'genofile', 'pair_scan', 'startMb', 'endMb', 'graphWidth', 'lrsMax',
                          'additiveCheck', 'showSNP', 'showGenes', 'viewLegend', 'haplotypeAnalystCheck', 
                          'mapmethod_rqtl', 'mapmodel_rqtl', 'temp_trait', 'group', 'species',
                          'reaper_version', 'primary_samples']

$(".rqtl-geno-tab, #rqtl_geno_compute").on("click", (function(_this) {
  return function() {
    if ($(this).hasClass('active') || $(this).attr('id') == "rqtl_geno_compute"){
      var form_data, url;
      url = "/loading";
      $('input[name=method]').val("rqtl_geno");
      $('input[name=pair_scan]').val("false");
      $('input[name=selected_chr]').val($('#chr_rqtl_geno').val());
      $('input[name=mapping_scale]').val($('#scale_rqtl_geno').val());
      $('input[name=genofile]').val($('#genofile_rqtl_geno').val());
      $('input[name=mapmodel_rqtl]').val($('#mapmodel_rqtl_geno').val());
      $('input[name=mapmethod_rqtl]').val($('#mapmethod_rqtl_geno').val());
      $('input[name=num_perm]').val($('input[name=num_perm_rqtl_geno]').val());
      $('input[name=categorical_vars]').val(js_data.categorical_vars)
      $('input[name=manhattan_plot]').val($('input[name=manhattan_plot_rqtl]:checked').val());
      $('input[name=control_marker]').val($('input[name=control_rqtl_geno]').val());
      $('input[name=do_control]').val($('input[name=do_control_rqtl]:checked').val());
      $('input[name=tool_used]').val("Mapping");
      $('input[name=form_url]').val("/run_mapping");
      $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
      return submit_special(url);
    } else {
      return true
    }
  };
})(this));

$(".rqtl-pair-tab, #rqtl_pair_compute").on("click", (function(_this) {
  return function() {
    if ($(this).hasClass('active') || $(this).attr('id') == "rqtl_pair_compute"){
      var form_data, url;
      url = "/loading";
      $('input[name=method]').val("rqtl_geno");
      $('input[name=pair_scan]').val("true");
      $('input[name=genofile]').val($('#genofile_rqtl_pair').val());
      $('input[name=mapmodel_rqtl]').val($('#mapmodel_rqtl_pair').val());
      $('input[name=mapmethod_rqtl]').val($('#mapmethod_rqtl_pair').val());
      $('input[name=num_perm]').val($('input[name=num_perm_rqtl_pair]').val());
      $('input[name=categorical_vars]').val(js_data.categorical_vars)
      $('input[name=control_marker]').val($('input[name=control_rqtl_pair]').val());
      $('input[name=do_control]').val($('input[name=do_control_rqtl_pair]:checked').val());
      $('input[name=tool_used]').val("Mapping");
      $('input[name=form_url]').val("/run_mapping");
      $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
      return submit_special(url);
    } else {
      return true
    }
  };
})(this));

$(".gemma-tab, #gemma_compute").on("click", (function(_this) {
  return function() {
    if ($(this).hasClass('active') || $(this).attr('id') == "gemma_compute"){
      var form_data, url;
      url = "/loading";
      $('input[name=method]').val("gemma");
      $('input[name=mapping_scale]').val('physic');
      $('input[name=selected_chr]').val($('#chr_gemma').val());
      $('input[name=num_perm]').val(0);
      $('input[name=genofile]').val($('#genofile_gemma').val());
      $('input[name=maf]').val($('input[name=maf_gemma]').val());
      $('input[name=tool_used]').val("Mapping");
      $('input[name=form_url]').val("/run_mapping");
      $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
      return submit_special(url);
    } else {
      return true
    }
  };
})(this));

$(".reaper-tab, #interval_mapping_compute").on("click", (function(_this) {
  return function() {
    if ($(this).hasClass('active') || $(this).attr('id') == "interval_mapping_compute"){
      var form_data, url;
      console.log("In interval mapping");
      url = "/loading";
      $('input[name=method]').val("reaper");
      $('input[name=selected_chr]').val($('#chr_reaper').val());
      $('input[name=mapping_scale]').val($('#scale_reaper').val());
      $('input[name=genofile]').val($('#genofile_reaper').val());
      $('input[name=num_perm]').val($('input[name=num_perm_reaper]').val());
      $('input[name=control_marker]').val($('input[name=control_reaper]').val());
      $('input[name=do_control]').val($('input[name=do_control_reaper]:checked').val());
      $('input[name=manhattan_plot]').val($('input[name=manhattan_plot_reaper]:checked').val());
      $('input[name=mapping_display_all]').val($('input[name=display_all_reaper]'));
      $('input[name=suggestive]').val($('input[name=suggestive_reaper]'));
      $('input[name=tool_used]').val("Mapping");
      $('input[name=form_url]').val("/run_mapping");
      $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
      return submit_special(url);
    } else {
      return true
    }
  };
})(this));

$("#interval_mapping_compute, #gemma_compute, rqtl_geno_compute").on("mouseover", (function(_this) {
  return function() {
    if ($(".outlier").length && $(".outlier-alert").length < 1) {
      return showalert(outlier_text, "alert-success outlier-alert");
    }
  };
})(this));

composite_mapping_fields = function() {
  return $(".composite_fields").toggle();
};

mapping_method_fields = function() {
  return $(".mapping_method_fields").toggle();
};

$("#use_composite_choice").change(composite_mapping_fields);

$("#mapping_method_choice").change(mapping_method_fields);

$("#mapmodel_rqtl_geno,#mapmodel_rqtl_pair").change(function() {
  if ($(this).val() == "np"){
    $("#mapmethod_rqtl_geno").attr('disabled', 'disabled');
    $("#mapmethod_rqtl_geno").css('background-color', '#CCC');
    $("#missing_geno,#missing_geno_pair").attr('disabled', 'disabled');
    $("#missing_geno,#missing_geno_pair").css('background-color', '#CCC');
  } else {
    $("#mapmethod_rqtl_geno").removeAttr('disabled');
    $("#mapmethod_rqtl_geno").css('background-color', '#FFF');
    $("#missing_geno,#missing_geno_pair").removeAttr('disabled');
    $("#missing_geno,#missing_geno_pair").css('background-color', '#FFF');
  }
});

$("#mapmethod_rqtl_geno,#mapmethod_rqtl_pair").change(function() {
  if ($(this).val() == "mr"){
    $("#missing_geno_div,#missing_geno_pair_div").css('display', 'block');
  } else {
    $("#missing_geno_div,#missing_geno_pair_div").css('display', 'none');
  }
});

$("li.mapping-tab").click(function() {
  if ($(this).hasClass("rqtl")){
    $(".rqtl_description").css("display", "block");
  } else {
    $(".rqtl_description").css("display", "none");
  }
});

toggle_enable_disable = function(elem) {
  return $(elem).prop("disabled", !$(elem).prop("disabled"));
};

$("#choose_closet_control").change(function() {
  return toggle_enable_disable("#control_locus");
});

$("#display_all_lrs").change(function() {
  return toggle_enable_disable("#suggestive_lrs");
});

$('#genofile_rqtl_geno').change(function() {
  geno_location = $(this).children("option:selected").val().split(":")[0]
  $('#scale_rqtl_geno').empty()
  the_scales = js_data.scales_in_geno[geno_location]
  for (var i = 0; i < the_scales.length; i++){
    $('#scale_rqtl_geno').append($("<option></option>").attr("value", the_scales[i][0]).text(the_scales[i][1]));
  }
});
$('#genofile_reaper').change(function() {
  geno_location = $(this).children("option:selected").val().split(":")[0]
  $('#scale_reaper').empty()
  the_scales = js_data.scales_in_geno[geno_location]
  for (var i = 0; i < the_scales.length; i++){
    $('#scale_reaper').append($("<option></option>").attr("value", the_scales[i][0]).text(the_scales[i][1]));
  }
});