From 9ac815b8f6977743dacfe767aabdf4523895fe7c Mon Sep 17 00:00:00 2001 From: Zachary Sloan Date: Fri, 14 Sep 2012 16:18:47 -0500 Subject: Got the dynamic javascript stats table working --- wqflask/base/webqtlFormData.py | 1 + wqflask/wqflask/show_trait/DataEditingPage.py | 1 + .../new/javascript/trait_data_and_analysis.coffee | 51 ++++++++++--------- .../new/javascript/trait_data_and_analysis.js | 58 +++++++++++----------- wqflask/wqflask/templates/search_result_page.html | 10 ++-- .../wqflask/templates/trait_data_and_analysis.html | 4 +- wqflask/wqflask/views.py | 19 +++++-- 7 files changed, 78 insertions(+), 66 deletions(-) (limited to 'wqflask') diff --git a/wqflask/base/webqtlFormData.py b/wqflask/base/webqtlFormData.py index 9f58d437..a8aef2a5 100755 --- a/wqflask/base/webqtlFormData.py +++ b/wqflask/base/webqtlFormData.py @@ -45,6 +45,7 @@ from utility import webqtlUtil class webqtlFormData: 'Represents data from a WebQTL form page, needed to generate the next page' + attrs = ('formID','RISet','genotype','strainlist','allstrainlist', 'suggestive','significance','submitID','identification', 'enablevariance', 'nperm','nboot','email','incparentsf1','genotype_1','genotype_2','traitInfo') diff --git a/wqflask/wqflask/show_trait/DataEditingPage.py b/wqflask/wqflask/show_trait/DataEditingPage.py index 643db81d..8ee1d9c8 100755 --- a/wqflask/wqflask/show_trait/DataEditingPage.py +++ b/wqflask/wqflask/show_trait/DataEditingPage.py @@ -244,6 +244,7 @@ class DataEditingPage(templatePage): self.sample_groups['primary_only'] = fd.RISet + " Only" self.sample_groups['other_only'] = "Non-" + fd.RISet self.sample_groups['all_cases'] = "All Cases" + self.js_data = dict(sample_groups = self.sample_groups) #self.basic_table['columns'] = yaml.load(""" diff --git a/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.coffee b/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.coffee index 5c153ccb..16dd2571 100644 --- a/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.coffee +++ b/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.coffee @@ -20,7 +20,7 @@ $ -> $(".stats_mdp").change(stats_mdp_change) update_stat_values = (the_values)-> - for category in ['primary', 'other', 'all'] + for category in ['primary_only', 'other_only', 'all_cases'] id = "#" + process_id(category, "mean") console.log("id:", id) total = 0 @@ -52,9 +52,9 @@ $ -> edit_data_change = -> the_values = - primary: [] - other: [] - all: [] + primary_only: [] + other_only: [] + all_cases: [] console.log("at beginning:", the_values) values = $('#value_table').find(".edit_strain_value") #console.log("values are:", values) @@ -73,20 +73,23 @@ $ -> if is_number(real_value) and real_value != "" real_value = parseFloat(real_value) if _(category).startsWith("Primary") - the_values.primary.push(real_value) + the_values.primary_only.push(real_value) else if _(category).startsWith("Other") - the_values.other.push(real_value) - the_values.all.push(real_value) - console.log("torwads end:", the_values) + the_values.other_only.push(real_value) + the_values.all_cases.push(real_value) + console.log("towards end:", the_values) update_stat_values(the_values) make_table = -> header = " " - for column in basic_table['columns'] - console.log("column:", column) - the_id = process_id("column", column.t) - header += """#{ column.n }""" + console.log("js_data.sample_groups:", js_data.sample_groups) + for key, value of js_data.sample_groups + console.log("aa key:", key) + console.log("aa value:", value) + the_id = process_id("column", key) + header += """#{ value }""" header += "" + console.log("windex header is:", header) rows = [ { @@ -114,9 +117,10 @@ $ -> console.log("rowing") row_line = """""" row_line += """#{ row.pretty }""" - for column in basic_table['columns'] - console.log("apple:", column) - the_id = process_id(column.t, row.vn) + console.log("box - js_data.sample_groups:", js_data.sample_groups) + for key, value of js_data.sample_groups + console.log("apple key:", key) + the_id = process_id(key, row.vn) console.log("the_id:", the_id) row_line += """foo""" row_line += """""" @@ -152,10 +156,9 @@ $ -> $('#show_hide_outliers').val("Hide Outliers") console.log("Should be now Hide Outliers") - - ### - Calculate Correlations Code - ### + + #Calculate Correlations Code + on_corr_method_change = -> console.log("in beginning of on_corr_method_change") @@ -181,9 +184,9 @@ $ -> # #$('#corr_compute').click(on_corr_submit) - ### - End Calculate Correlations Code - ### + + #End Calculate Correlations Code + console.log("before registering show_hide_outliers") @@ -195,7 +198,7 @@ $ -> console.log("loaded") #console.log("basic_table is:", basic_table) # Add back following two lines later - #make_table() - #edit_data_change() # Set the values at the beginning + make_table() + edit_data_change() # Set the values at the beginning #$("#all-mean").html('foobar8') console.log("end") diff --git a/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.js b/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.js index 55acbada..0b49dde3 100644 --- a/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.js +++ b/wqflask/wqflask/static/new/javascript/trait_data_and_analysis.js @@ -29,7 +29,7 @@ $(".stats_mdp").change(stats_mdp_change); update_stat_values = function(the_values) { var category, current_mean, current_n_of_samples, id, in_box, n_of_samples, the_mean, total, value, _i, _j, _len, _len1, _ref, _ref1, _results; - _ref = ['primary', 'other', 'all']; + _ref = ['primary_only', 'other_only', 'all_cases']; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { category = _ref[_i]; @@ -72,9 +72,9 @@ edit_data_change = function() { var category, checkbox, checked, real_value, row, the_values, value, values, _i, _len; the_values = { - primary: [], - other: [], - all: [] + primary_only: [], + other_only: [], + all_cases: [] }; console.log("at beginning:", the_values); values = $('#value_table').find(".edit_strain_value"); @@ -94,27 +94,30 @@ if (is_number(real_value) && real_value !== "") { real_value = parseFloat(real_value); if (_(category).startsWith("Primary")) { - the_values.primary.push(real_value); + the_values.primary_only.push(real_value); } else if (_(category).startsWith("Other")) { - the_values.other.push(real_value); + the_values.other_only.push(real_value); } - the_values.all.push(real_value); + the_values.all_cases.push(real_value); } } - console.log("torwads end:", the_values); + console.log("towards end:", the_values); return update_stat_values(the_values); }; make_table = function() { - var column, header, row, row_line, rows, table, the_id, the_rows, _i, _j, _k, _len, _len1, _len2, _ref, _ref1; + var header, key, row, row_line, rows, table, the_id, the_rows, value, _i, _len, _ref, _ref1; header = " "; - _ref = basic_table['columns']; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - column = _ref[_i]; - console.log("column:", column); - the_id = process_id("column", column.t); - header += "" + column.n + ""; + console.log("js_data.sample_groups:", js_data.sample_groups); + _ref = js_data.sample_groups; + for (key in _ref) { + value = _ref[key]; + console.log("aa key:", key); + console.log("aa value:", value); + the_id = process_id("column", key); + header += "" + value + ""; } header += ""; + console.log("windex header is:", header); rows = [ { vn: "n_of_samples", @@ -133,16 +136,17 @@ console.log("rows are:", rows); the_rows = ""; console.log("length of rows:", rows.length); - for (_j = 0, _len1 = rows.length; _j < _len1; _j++) { - row = rows[_j]; + for (_i = 0, _len = rows.length; _i < _len; _i++) { + row = rows[_i]; console.log("rowing"); row_line = ""; row_line += "" + row.pretty + ""; - _ref1 = basic_table['columns']; - for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) { - column = _ref1[_k]; - console.log("apple:", column); - the_id = process_id(column.t, row.vn); + console.log("box - js_data.sample_groups:", js_data.sample_groups); + _ref1 = js_data.sample_groups; + for (key in _ref1) { + value = _ref1[key]; + console.log("apple key:", key); + the_id = process_id(key, row.vn); console.log("the_id:", the_id); row_line += "foo"; } @@ -186,10 +190,6 @@ return console.log("Should be now Hide Outliers"); } }; - /* - Calculate Correlations Code - */ - on_corr_method_change = function() { var corr_method; console.log("in beginning of on_corr_method_change"); @@ -199,16 +199,14 @@ return $('#' + corr_method + "_r_desc").show().effect("highlight"); }; $('select[name=corr_method]').change(on_corr_method_change); - /* - End Calculate Correlations Code - */ - console.log("before registering show_hide_outliers"); $('#show_hide_outliers').click(show_hide_outliers); console.log("after registering show_hide_outliers"); _.mixin(_.str.exports()); $('#value_table').change(edit_data_change); console.log("loaded"); + make_table(); + edit_data_change(); return console.log("end"); }); diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html index 09094fc6..afcd06d0 100644 --- a/wqflask/wqflask/templates/search_result_page.html +++ b/wqflask/wqflask/templates/search_result_page.html @@ -39,7 +39,7 @@

To add one or more records to your Selection window, use the checkbox and then click the Add to Collection button.

-
+ @@ -54,16 +54,16 @@ @@ -173,7 +173,7 @@ diff --git a/wqflask/wqflask/templates/trait_data_and_analysis.html b/wqflask/wqflask/templates/trait_data_and_analysis.html index c25db7c4..59dfedb3 100644 --- a/wqflask/wqflask/templates/trait_data_and_analysis.html +++ b/wqflask/wqflask/templates/trait_data_and_analysis.html @@ -1305,8 +1305,8 @@ ---> diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py index 677c7f43..1b60f255 100644 --- a/wqflask/wqflask/views.py +++ b/wqflask/wqflask/views.py @@ -1,5 +1,8 @@ from __future__ import absolute_import, division, print_function +import json +import yaml + import flask from wqflask import app @@ -16,10 +19,9 @@ from base import webqtlFormData from pprint import pformat as pf -import yaml - print("latest blue") + @app.route("/") def index_page(): print("Sending index_page") @@ -41,6 +43,7 @@ def data_sharing(): info=info, htmlfilelist=htmlfilelist) + @app.route("/search") def search(): if 'info_database' in request.args: @@ -67,14 +70,19 @@ def whats_new(): print("\nnews_item is: %s\n" % (news_item)) return render_template("whats_new.html", news_items=news_items) -@app.route("/showDatabaseBXD") -def showDatabaseBXD(): + +@app.route("/show_trait") +def show_trait(): # Here it's currently too complicated not to use an fd that is a webqtlFormData fd = webqtlFormData.webqtlFormData(request.args) template_vars = show_trait_page.ShowTraitPage(fd) - print("showDatabaseBXD template_vars:", pf(template_vars.__dict__)) + + template_vars.js_data = json.dumps(template_vars.js_data) + + print("show_trait template_vars:", pf(template_vars.__dict__)) return render_template("trait_data_and_analysis.html", **template_vars.__dict__) + @app.route("/corr_compute", methods=('POST',)) def corr_compute(): #print("In corr_compute, request.args is:", pf(request.form)) @@ -84,6 +92,7 @@ def corr_compute(): print("Made it to rendering") return render_template("corr_compute.html", **template_vars.__dict__) + # Todo: Can we simplify this? -Sam def sharing_info_page(): print("In sharing_info_page") -- cgit v1.2.3
- + Select All - + Select None - + Invert Selection {# - #} - + {{ thisTrait.name.upper() }}