From 204a308be0f741726b9a620d88fbc22b22124c81 Mon Sep 17 00:00:00 2001
From: Arun Isaac
Date: Fri, 29 Dec 2023 18:55:37 +0000
Subject: Namespace all modules under gn2.
We move all modules under a gn2 directory. This is important for
"correct" packaging and deployment as a Guix service.
---
gn2/wqflask/static/Congenic.png | Bin 0 -> 56578 bytes
gn2/wqflask/static/fonts/README | 1 +
gn2/wqflask/static/fonts/arial.ttf | Bin 0 -> 151232 bytes
gn2/wqflask/static/fonts/courbd.ttf | Bin 0 -> 181388 bytes
gn2/wqflask/static/fonts/fnt_bs.ttf | Bin 0 -> 20988 bytes
gn2/wqflask/static/fonts/tahoma.ttf | Bin 0 -> 249012 bytes
gn2/wqflask/static/fonts/trebucbd.ttf | Bin 0 -> 123828 bytes
gn2/wqflask/static/fonts/verdana.ttf | Bin 0 -> 139640 bytes
gn2/wqflask/static/fonts/verdanab.ttf | Bin 0 -> 156340 bytes
gn2/wqflask/static/gif/89.gif | Bin 0 -> 27183 bytes
gn2/wqflask/static/gif/error/Wild-Type-Mouse.gif | Bin 0 -> 37328 bytes
.../static/gif/error/animated-gifs-aliens-29.gif | Bin 0 -> 14088 bytes
.../static/gif/error/animated-gifs-angels-04.gif | Bin 0 -> 12155 bytes
.../static/gif/error/animated-gifs-cats-016.gif | Bin 0 -> 10388 bytes
.../static/gif/error/animated-gifs-cats-031.gif | Bin 0 -> 6937 bytes
.../gif/error/animated-gifs-cell-phones-03.gif | Bin 0 -> 14902 bytes
.../gif/error/animated-gifs-cell-phones-16.gif | Bin 0 -> 7307 bytes
.../gif/error/animated-gifs-computers-13.gif | Bin 0 -> 7616 bytes
.../gif/error/animated-gifs-computers-28.gif | Bin 0 -> 7566 bytes
.../gif/error/animated-gifs-computers-32.gif | Bin 0 -> 2970 bytes
.../gif/error/animated-gifs-computers-42.gif | Bin 0 -> 9391 bytes
.../gif/error/animated-gifs-computers-60.gif | Bin 0 -> 35873 bytes
.../gif/error/animated-gifs-computers-64.gif | Bin 0 -> 20728 bytes
.../gif/error/animated-gifs-computers-65.gif | Bin 0 -> 26358 bytes
.../gif/error/animated-gifs-computers-72.gif | Bin 0 -> 16361 bytes
.../gif/error/animated-gifs-computers-74.gif | Bin 0 -> 21087 bytes
.../gif/error/animated-gifs-computers-75.gif | Bin 0 -> 98317 bytes
.../error/animated-gifs-construction-sites-038.gif | Bin 0 -> 949 bytes
.../static/gif/error/animated-gifs-dogs-04.gif | Bin 0 -> 9450 bytes
.../static/gif/error/animated-gifs-dogs-14.gif | Bin 0 -> 2532 bytes
.../static/gif/error/animated-gifs-dogs-18.gif | Bin 0 -> 3596 bytes
.../static/gif/error/animated-gifs-dogs-47.gif | Bin 0 -> 13920 bytes
.../static/gif/error/animated-gifs-dogs-50.gif | Bin 0 -> 7297 bytes
.../gif/error/animated-gifs-lava-lamps-01.gif | Bin 0 -> 27122 bytes
.../static/gif/error/animated-gifs-mice-02.gif | Bin 0 -> 73345 bytes
.../static/gif/error/animated-gifs-mice-09.gif | Bin 0 -> 27822 bytes
.../static/gif/error/animated-gifs-mice-24.gif | Bin 0 -> 10566 bytes
.../static/gif/error/animated-gifs-smileys-063.gif | Bin 0 -> 2230 bytes
.../static/gif/error/animated-gifs-smileys-068.gif | Bin 0 -> 11751 bytes
.../static/gif/error/animated-gifs-smileys-134.gif | Bin 0 -> 21431 bytes
.../static/gif/error/animated-gifs-smileys-211.gif | Bin 0 -> 11209 bytes
.../static/gif/error/animated-gifs-smileys-234.gif | Bin 0 -> 8677 bytes
.../gif/error/animated-gifs-stickmen-001.gif | Bin 0 -> 6897 bytes
.../gif/error/animated-gifs-stickmen-002.gif | Bin 0 -> 14098 bytes
.../gif/error/animated-gifs-stickmen-005.gif | Bin 0 -> 13264 bytes
.../gif/error/animated-gifs-stickmen-012.gif | Bin 0 -> 12141 bytes
.../gif/error/animated-gifs-stickmen-056.gif | Bin 0 -> 5946 bytes
.../gif/error/animated-gifs-stickmen-059.gif | Bin 0 -> 16427 bytes
.../gif/error/animated-gifs-stickmen-060.gif | Bin 0 -> 14434 bytes
.../gif/error/animated-gifs-stickmen-069.gif | Bin 0 -> 7668 bytes
gn2/wqflask/static/gif/error/m001.gif | Bin 0 -> 273531 bytes
gn2/wqflask/static/gif/error/m002.gif | Bin 0 -> 1799777 bytes
gn2/wqflask/static/gif/error/m003.gif | Bin 0 -> 2238947 bytes
gn2/wqflask/static/gif/error/m004.gif | Bin 0 -> 2090274 bytes
gn2/wqflask/static/gif/error/m005.gif | Bin 0 -> 947565 bytes
gn2/wqflask/static/gif/error/m006.gif | Bin 0 -> 121116 bytes
gn2/wqflask/static/gif/error/m007.gif | Bin 0 -> 41670 bytes
gn2/wqflask/static/gif/error/m008.gif | Bin 0 -> 732023 bytes
gn2/wqflask/static/gif/error/mouse-wheel.gif | Bin 0 -> 2001764 bytes
gn2/wqflask/static/gif/waitAnima2.gif | Bin 0 -> 54013 bytes
gn2/wqflask/static/images/Belknap_Fig1_1998.png | Bin 0 -> 117246 bytes
gn2/wqflask/static/images/Chrna1vsMyf6.gif | Bin 0 -> 59529 bytes
gn2/wqflask/static/images/Congenic.png | Bin 0 -> 56578 bytes
gn2/wqflask/static/images/Normal_Plot.gif | Bin 0 -> 47289 bytes
gn2/wqflask/static/images/SilverFig3_2.png | Bin 0 -> 61570 bytes
gn2/wqflask/static/images/SilverFig3_6.png | Bin 0 -> 22017 bytes
gn2/wqflask/static/images/Winsorize1.png | Bin 0 -> 15117 bytes
gn2/wqflask/static/images/Winsorize3.png | Bin 0 -> 17317 bytes
gn2/wqflask/static/images/edit.png | Bin 0 -> 2452 bytes
gn2/wqflask/static/new/css/autocomplete.css | 85 +
gn2/wqflask/static/new/css/bar_chart.css | 23 +
gn2/wqflask/static/new/css/bootstrap-custom.css | 7560 ++++++++++++++++++++
gn2/wqflask/static/new/css/box_plot.css | 20 +
gn2/wqflask/static/new/css/broken_links.css | 5 +
gn2/wqflask/static/new/css/colorbox.css | 238 +
gn2/wqflask/static/new/css/corr_matrix.css | 30 +
gn2/wqflask/static/new/css/corr_scatter_plot.css | 41 +
gn2/wqflask/static/new/css/corr_scatter_plot2.css | 41 +
gn2/wqflask/static/new/css/d3-tip.min.css | 1 +
gn2/wqflask/static/new/css/d3panels.min.css | 1 +
gn2/wqflask/static/new/css/docs.css | 1080 +++
gn2/wqflask/static/new/css/index_page.css | 4 +
gn2/wqflask/static/new/css/jupyter_notebooks.css | 16 +
gn2/wqflask/static/new/css/main.css | 40 +
gn2/wqflask/static/new/css/markdown.css | 108 +
gn2/wqflask/static/new/css/marker_regression.css | 76 +
gn2/wqflask/static/new/css/mytooltip.css | 16 +
gn2/wqflask/static/new/css/network_graph.css | 37 +
gn2/wqflask/static/new/css/non-responsive.css | 114 +
gn2/wqflask/static/new/css/pair_scan.css | 6 +
gn2/wqflask/static/new/css/panelutil.css | 91 +
gn2/wqflask/static/new/css/parsley.css | 20 +
.../static/new/css/partial_correlations.css | 109 +
gn2/wqflask/static/new/css/prob_plot.css | 3 +
gn2/wqflask/static/new/css/scatter-matrix.css | 40 +
gn2/wqflask/static/new/css/show_trait.css | 311 +
gn2/wqflask/static/new/css/snp_browser.css | 58 +
gn2/wqflask/static/new/css/trait_list.css | 53 +
gn2/wqflask/static/new/css/typeahead-bootstrap.css | 94 +
gn2/wqflask/static/new/images/CITGLogo.png | Bin 0 -> 11962 bytes
gn2/wqflask/static/new/images/Nif.png | Bin 0 -> 4444 bytes
gn2/wqflask/static/new/images/PythonLogo.png | Bin 0 -> 7685 bytes
gn2/wqflask/static/new/images/a1.gif | Bin 0 -> 430 bytes
gn2/wqflask/static/new/images/arrowdown.gif | Bin 0 -> 844 bytes
gn2/wqflask/static/new/images/edit.gif | Bin 0 -> 157 bytes
gn2/wqflask/static/new/images/ipad_icon3.png | Bin 0 -> 6728 bytes
gn2/wqflask/static/new/images/question_mark.jpg | Bin 0 -> 47158 bytes
gn2/wqflask/static/new/images/step1.gif | Bin 0 -> 758 bytes
gn2/wqflask/static/new/images/step2.gif | Bin 0 -> 826 bytes
gn2/wqflask/static/new/images/step3.gif | Bin 0 -> 818 bytes
gn2/wqflask/static/new/javascript/auth/search.js | 172 +
.../static/new/javascript/auth/search_genotypes.js | 95 +
.../static/new/javascript/auth/search_mrna.js | 97 +
.../new/javascript/auth/search_phenotypes.js | 188 +
.../static/new/javascript/auto_hide_column.js | 21 +
gn2/wqflask/static/new/javascript/bar_chart.js | 498 ++
gn2/wqflask/static/new/javascript/box.js | 307 +
gn2/wqflask/static/new/javascript/box_plot.js | 80 +
gn2/wqflask/static/new/javascript/chr_lod_chart.js | 297 +
.../static/new/javascript/chr_manhattan_plot.js | 273 +
gn2/wqflask/static/new/javascript/colorbrewer.js | 302 +
.../new/javascript/compare_traits_scatterplot.js | 121 +
.../static/new/javascript/comparison_bar_chart.js | 25 +
gn2/wqflask/static/new/javascript/corr_matrix.js | 159 +
.../static/new/javascript/corr_scatter_plot.js | 73 +
.../static/new/javascript/create_corr_matrix.js | 94 +
.../static/new/javascript/create_datatable.js | 117 +
.../static/new/javascript/create_heatmap.js | 14 +
.../static/new/javascript/create_lodchart.js | 50 +
.../static/new/javascript/create_manhattan_plot.js | 68 +
gn2/wqflask/static/new/javascript/ctl_graph.js | 193 +
gn2/wqflask/static/new/javascript/curvechart.js | 353 +
gn2/wqflask/static/new/javascript/d3panels.min.js | 1 +
.../new/javascript/dataset_select_menu_orig.js | 330 +
.../static/new/javascript/draw_corr_scatterplot.js | 913 +++
.../static/new/javascript/draw_probability_plot.js | 136 +
.../javascript/get_covariates_from_collection.js | 248 +
.../new/javascript/get_traits_from_collection.js | 414 ++
gn2/wqflask/static/new/javascript/group_manager.js | 37 +
gn2/wqflask/static/new/javascript/histogram.js | 134 +
.../static/new/javascript/init_genome_browser.js | 82 +
.../new/javascript/initialize_show_trait_tables.js | 246 +
.../static/new/javascript/iplotMScanone_noeff.js | 114 +
gn2/wqflask/static/new/javascript/loadings_plot.js | 109 +
gn2/wqflask/static/new/javascript/lod_chart.js | 473 ++
gn2/wqflask/static/new/javascript/lodheatmap.js | 277 +
gn2/wqflask/static/new/javascript/login.js | 41 +
gn2/wqflask/static/new/javascript/network_graph.js | 259 +
gn2/wqflask/static/new/javascript/panelutil.js | 462 ++
.../static/new/javascript/partial_correlations.js | 26 +
.../static/new/javascript/password_strength.js | 57 +
.../new/javascript/plotly_probability_plot.js | 308 +
.../static/new/javascript/scatter-matrix.js | 551 ++
gn2/wqflask/static/new/javascript/scatterplot.js | 414 ++
.../static/new/javascript/search_autocomplete.js | 173 +
.../static/new/javascript/search_results.js | 386 +
gn2/wqflask/static/new/javascript/show_trait.js | 1677 +++++
.../new/javascript/show_trait_mapping_tools.js | 329 +
gn2/wqflask/static/new/javascript/stats.js | 176 +
.../static/new/javascript/table_functions.js | 90 +
gn2/wqflask/static/new/javascript/thank_you.js | 6 +
.../static/new/javascript/typeahead_rn6.json | 1 +
gn2/wqflask/static/new/javascript/validation.js | 42 +
163 files changed, 22431 insertions(+)
create mode 100644 gn2/wqflask/static/Congenic.png
create mode 100644 gn2/wqflask/static/fonts/README
create mode 100644 gn2/wqflask/static/fonts/arial.ttf
create mode 100644 gn2/wqflask/static/fonts/courbd.ttf
create mode 100644 gn2/wqflask/static/fonts/fnt_bs.ttf
create mode 100644 gn2/wqflask/static/fonts/tahoma.ttf
create mode 100644 gn2/wqflask/static/fonts/trebucbd.ttf
create mode 100644 gn2/wqflask/static/fonts/verdana.ttf
create mode 100644 gn2/wqflask/static/fonts/verdanab.ttf
create mode 100644 gn2/wqflask/static/gif/89.gif
create mode 100644 gn2/wqflask/static/gif/error/Wild-Type-Mouse.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-aliens-29.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-angels-04.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-cats-016.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-cats-031.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-13.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-28.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-32.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-42.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-60.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-64.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-65.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-72.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-74.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-computers-75.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-dogs-04.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-dogs-14.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-dogs-18.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-dogs-47.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-dogs-50.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-mice-02.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-mice-09.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-mice-24.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-smileys-063.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-smileys-068.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-smileys-134.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-smileys-211.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-smileys-234.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-001.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-002.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-005.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-012.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-056.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-059.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-060.gif
create mode 100644 gn2/wqflask/static/gif/error/animated-gifs-stickmen-069.gif
create mode 100644 gn2/wqflask/static/gif/error/m001.gif
create mode 100644 gn2/wqflask/static/gif/error/m002.gif
create mode 100644 gn2/wqflask/static/gif/error/m003.gif
create mode 100644 gn2/wqflask/static/gif/error/m004.gif
create mode 100644 gn2/wqflask/static/gif/error/m005.gif
create mode 100644 gn2/wqflask/static/gif/error/m006.gif
create mode 100644 gn2/wqflask/static/gif/error/m007.gif
create mode 100644 gn2/wqflask/static/gif/error/m008.gif
create mode 100644 gn2/wqflask/static/gif/error/mouse-wheel.gif
create mode 100644 gn2/wqflask/static/gif/waitAnima2.gif
create mode 100644 gn2/wqflask/static/images/Belknap_Fig1_1998.png
create mode 100644 gn2/wqflask/static/images/Chrna1vsMyf6.gif
create mode 100644 gn2/wqflask/static/images/Congenic.png
create mode 100644 gn2/wqflask/static/images/Normal_Plot.gif
create mode 100644 gn2/wqflask/static/images/SilverFig3_2.png
create mode 100644 gn2/wqflask/static/images/SilverFig3_6.png
create mode 100644 gn2/wqflask/static/images/Winsorize1.png
create mode 100644 gn2/wqflask/static/images/Winsorize3.png
create mode 100644 gn2/wqflask/static/images/edit.png
create mode 100644 gn2/wqflask/static/new/css/autocomplete.css
create mode 100644 gn2/wqflask/static/new/css/bar_chart.css
create mode 100644 gn2/wqflask/static/new/css/bootstrap-custom.css
create mode 100644 gn2/wqflask/static/new/css/box_plot.css
create mode 100644 gn2/wqflask/static/new/css/broken_links.css
create mode 100644 gn2/wqflask/static/new/css/colorbox.css
create mode 100644 gn2/wqflask/static/new/css/corr_matrix.css
create mode 100644 gn2/wqflask/static/new/css/corr_scatter_plot.css
create mode 100644 gn2/wqflask/static/new/css/corr_scatter_plot2.css
create mode 100644 gn2/wqflask/static/new/css/d3-tip.min.css
create mode 100644 gn2/wqflask/static/new/css/d3panels.min.css
create mode 100644 gn2/wqflask/static/new/css/docs.css
create mode 100644 gn2/wqflask/static/new/css/index_page.css
create mode 100644 gn2/wqflask/static/new/css/jupyter_notebooks.css
create mode 100644 gn2/wqflask/static/new/css/main.css
create mode 100644 gn2/wqflask/static/new/css/markdown.css
create mode 100644 gn2/wqflask/static/new/css/marker_regression.css
create mode 100644 gn2/wqflask/static/new/css/mytooltip.css
create mode 100644 gn2/wqflask/static/new/css/network_graph.css
create mode 100644 gn2/wqflask/static/new/css/non-responsive.css
create mode 100644 gn2/wqflask/static/new/css/pair_scan.css
create mode 100644 gn2/wqflask/static/new/css/panelutil.css
create mode 100644 gn2/wqflask/static/new/css/parsley.css
create mode 100644 gn2/wqflask/static/new/css/partial_correlations.css
create mode 100644 gn2/wqflask/static/new/css/prob_plot.css
create mode 100644 gn2/wqflask/static/new/css/scatter-matrix.css
create mode 100644 gn2/wqflask/static/new/css/show_trait.css
create mode 100644 gn2/wqflask/static/new/css/snp_browser.css
create mode 100644 gn2/wqflask/static/new/css/trait_list.css
create mode 100644 gn2/wqflask/static/new/css/typeahead-bootstrap.css
create mode 100644 gn2/wqflask/static/new/images/CITGLogo.png
create mode 100644 gn2/wqflask/static/new/images/Nif.png
create mode 100644 gn2/wqflask/static/new/images/PythonLogo.png
create mode 100644 gn2/wqflask/static/new/images/a1.gif
create mode 100644 gn2/wqflask/static/new/images/arrowdown.gif
create mode 100644 gn2/wqflask/static/new/images/edit.gif
create mode 100644 gn2/wqflask/static/new/images/ipad_icon3.png
create mode 100644 gn2/wqflask/static/new/images/question_mark.jpg
create mode 100644 gn2/wqflask/static/new/images/step1.gif
create mode 100644 gn2/wqflask/static/new/images/step2.gif
create mode 100644 gn2/wqflask/static/new/images/step3.gif
create mode 100644 gn2/wqflask/static/new/javascript/auth/search.js
create mode 100644 gn2/wqflask/static/new/javascript/auth/search_genotypes.js
create mode 100644 gn2/wqflask/static/new/javascript/auth/search_mrna.js
create mode 100644 gn2/wqflask/static/new/javascript/auth/search_phenotypes.js
create mode 100644 gn2/wqflask/static/new/javascript/auto_hide_column.js
create mode 100644 gn2/wqflask/static/new/javascript/bar_chart.js
create mode 100644 gn2/wqflask/static/new/javascript/box.js
create mode 100644 gn2/wqflask/static/new/javascript/box_plot.js
create mode 100644 gn2/wqflask/static/new/javascript/chr_lod_chart.js
create mode 100644 gn2/wqflask/static/new/javascript/chr_manhattan_plot.js
create mode 100644 gn2/wqflask/static/new/javascript/colorbrewer.js
create mode 100644 gn2/wqflask/static/new/javascript/compare_traits_scatterplot.js
create mode 100644 gn2/wqflask/static/new/javascript/comparison_bar_chart.js
create mode 100644 gn2/wqflask/static/new/javascript/corr_matrix.js
create mode 100644 gn2/wqflask/static/new/javascript/corr_scatter_plot.js
create mode 100644 gn2/wqflask/static/new/javascript/create_corr_matrix.js
create mode 100644 gn2/wqflask/static/new/javascript/create_datatable.js
create mode 100644 gn2/wqflask/static/new/javascript/create_heatmap.js
create mode 100644 gn2/wqflask/static/new/javascript/create_lodchart.js
create mode 100644 gn2/wqflask/static/new/javascript/create_manhattan_plot.js
create mode 100644 gn2/wqflask/static/new/javascript/ctl_graph.js
create mode 100644 gn2/wqflask/static/new/javascript/curvechart.js
create mode 100644 gn2/wqflask/static/new/javascript/d3panels.min.js
create mode 100644 gn2/wqflask/static/new/javascript/dataset_select_menu_orig.js
create mode 100644 gn2/wqflask/static/new/javascript/draw_corr_scatterplot.js
create mode 100644 gn2/wqflask/static/new/javascript/draw_probability_plot.js
create mode 100644 gn2/wqflask/static/new/javascript/get_covariates_from_collection.js
create mode 100644 gn2/wqflask/static/new/javascript/get_traits_from_collection.js
create mode 100644 gn2/wqflask/static/new/javascript/group_manager.js
create mode 100644 gn2/wqflask/static/new/javascript/histogram.js
create mode 100644 gn2/wqflask/static/new/javascript/init_genome_browser.js
create mode 100644 gn2/wqflask/static/new/javascript/initialize_show_trait_tables.js
create mode 100644 gn2/wqflask/static/new/javascript/iplotMScanone_noeff.js
create mode 100644 gn2/wqflask/static/new/javascript/loadings_plot.js
create mode 100644 gn2/wqflask/static/new/javascript/lod_chart.js
create mode 100644 gn2/wqflask/static/new/javascript/lodheatmap.js
create mode 100644 gn2/wqflask/static/new/javascript/login.js
create mode 100644 gn2/wqflask/static/new/javascript/network_graph.js
create mode 100644 gn2/wqflask/static/new/javascript/panelutil.js
create mode 100644 gn2/wqflask/static/new/javascript/partial_correlations.js
create mode 100644 gn2/wqflask/static/new/javascript/password_strength.js
create mode 100644 gn2/wqflask/static/new/javascript/plotly_probability_plot.js
create mode 100644 gn2/wqflask/static/new/javascript/scatter-matrix.js
create mode 100644 gn2/wqflask/static/new/javascript/scatterplot.js
create mode 100644 gn2/wqflask/static/new/javascript/search_autocomplete.js
create mode 100644 gn2/wqflask/static/new/javascript/search_results.js
create mode 100644 gn2/wqflask/static/new/javascript/show_trait.js
create mode 100644 gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js
create mode 100644 gn2/wqflask/static/new/javascript/stats.js
create mode 100644 gn2/wqflask/static/new/javascript/table_functions.js
create mode 100644 gn2/wqflask/static/new/javascript/thank_you.js
create mode 100644 gn2/wqflask/static/new/javascript/typeahead_rn6.json
create mode 100644 gn2/wqflask/static/new/javascript/validation.js
(limited to 'gn2/wqflask/static')
diff --git a/gn2/wqflask/static/Congenic.png b/gn2/wqflask/static/Congenic.png
new file mode 100644
index 00000000..8cd489a4
Binary files /dev/null and b/gn2/wqflask/static/Congenic.png differ
diff --git a/gn2/wqflask/static/fonts/README b/gn2/wqflask/static/fonts/README
new file mode 100644
index 00000000..75a3e444
--- /dev/null
+++ b/gn2/wqflask/static/fonts/README
@@ -0,0 +1 @@
+These fonts are used by pillow for 'interval mapping'
diff --git a/gn2/wqflask/static/fonts/arial.ttf b/gn2/wqflask/static/fonts/arial.ttf
new file mode 100644
index 00000000..bf0d4a95
Binary files /dev/null and b/gn2/wqflask/static/fonts/arial.ttf differ
diff --git a/gn2/wqflask/static/fonts/courbd.ttf b/gn2/wqflask/static/fonts/courbd.ttf
new file mode 100644
index 00000000..c8081467
Binary files /dev/null and b/gn2/wqflask/static/fonts/courbd.ttf differ
diff --git a/gn2/wqflask/static/fonts/fnt_bs.ttf b/gn2/wqflask/static/fonts/fnt_bs.ttf
new file mode 100644
index 00000000..712c38cf
Binary files /dev/null and b/gn2/wqflask/static/fonts/fnt_bs.ttf differ
diff --git a/gn2/wqflask/static/fonts/tahoma.ttf b/gn2/wqflask/static/fonts/tahoma.ttf
new file mode 100644
index 00000000..bb314be3
Binary files /dev/null and b/gn2/wqflask/static/fonts/tahoma.ttf differ
diff --git a/gn2/wqflask/static/fonts/trebucbd.ttf b/gn2/wqflask/static/fonts/trebucbd.ttf
new file mode 100644
index 00000000..1ab1ae0a
Binary files /dev/null and b/gn2/wqflask/static/fonts/trebucbd.ttf differ
diff --git a/gn2/wqflask/static/fonts/verdana.ttf b/gn2/wqflask/static/fonts/verdana.ttf
new file mode 100644
index 00000000..754a9b7b
Binary files /dev/null and b/gn2/wqflask/static/fonts/verdana.ttf differ
diff --git a/gn2/wqflask/static/fonts/verdanab.ttf b/gn2/wqflask/static/fonts/verdanab.ttf
new file mode 100644
index 00000000..1a99258f
Binary files /dev/null and b/gn2/wqflask/static/fonts/verdanab.ttf differ
diff --git a/gn2/wqflask/static/gif/89.gif b/gn2/wqflask/static/gif/89.gif
new file mode 100644
index 00000000..e9b3279d
Binary files /dev/null and b/gn2/wqflask/static/gif/89.gif differ
diff --git a/gn2/wqflask/static/gif/error/Wild-Type-Mouse.gif b/gn2/wqflask/static/gif/error/Wild-Type-Mouse.gif
new file mode 100644
index 00000000..2c68b5ee
Binary files /dev/null and b/gn2/wqflask/static/gif/error/Wild-Type-Mouse.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-aliens-29.gif b/gn2/wqflask/static/gif/error/animated-gifs-aliens-29.gif
new file mode 100644
index 00000000..e9d38277
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-aliens-29.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-angels-04.gif b/gn2/wqflask/static/gif/error/animated-gifs-angels-04.gif
new file mode 100644
index 00000000..94e11847
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-angels-04.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-cats-016.gif b/gn2/wqflask/static/gif/error/animated-gifs-cats-016.gif
new file mode 100644
index 00000000..7e6ec9a3
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-cats-016.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-cats-031.gif b/gn2/wqflask/static/gif/error/animated-gifs-cats-031.gif
new file mode 100644
index 00000000..af7ef655
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-cats-031.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif b/gn2/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif
new file mode 100644
index 00000000..89c79ddf
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-cell-phones-03.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif b/gn2/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif
new file mode 100644
index 00000000..7530d180
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-cell-phones-16.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-13.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-13.gif
new file mode 100644
index 00000000..afb05c62
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-13.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-28.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-28.gif
new file mode 100644
index 00000000..f5b4a563
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-28.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-32.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-32.gif
new file mode 100644
index 00000000..7258e594
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-32.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-42.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-42.gif
new file mode 100644
index 00000000..ed1f8722
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-42.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-60.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-60.gif
new file mode 100644
index 00000000..f58d69f1
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-60.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-64.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-64.gif
new file mode 100644
index 00000000..5d5b4fdf
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-64.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-65.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-65.gif
new file mode 100644
index 00000000..b4b10845
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-65.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-72.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-72.gif
new file mode 100644
index 00000000..e60cb4fe
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-72.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-74.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-74.gif
new file mode 100644
index 00000000..bd7b72f3
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-74.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-computers-75.gif b/gn2/wqflask/static/gif/error/animated-gifs-computers-75.gif
new file mode 100644
index 00000000..916d6b33
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-computers-75.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif b/gn2/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif
new file mode 100644
index 00000000..0ec782c4
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-construction-sites-038.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-dogs-04.gif b/gn2/wqflask/static/gif/error/animated-gifs-dogs-04.gif
new file mode 100644
index 00000000..9515c18a
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-dogs-04.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-dogs-14.gif b/gn2/wqflask/static/gif/error/animated-gifs-dogs-14.gif
new file mode 100644
index 00000000..f1e2e1f5
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-dogs-14.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-dogs-18.gif b/gn2/wqflask/static/gif/error/animated-gifs-dogs-18.gif
new file mode 100644
index 00000000..572849d5
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-dogs-18.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-dogs-47.gif b/gn2/wqflask/static/gif/error/animated-gifs-dogs-47.gif
new file mode 100644
index 00000000..d808c9ee
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-dogs-47.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-dogs-50.gif b/gn2/wqflask/static/gif/error/animated-gifs-dogs-50.gif
new file mode 100644
index 00000000..9865ee45
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-dogs-50.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif b/gn2/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif
new file mode 100644
index 00000000..ee9c113d
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-lava-lamps-01.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-mice-02.gif b/gn2/wqflask/static/gif/error/animated-gifs-mice-02.gif
new file mode 100644
index 00000000..5ca2ee5c
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-mice-02.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-mice-09.gif b/gn2/wqflask/static/gif/error/animated-gifs-mice-09.gif
new file mode 100644
index 00000000..7cb361e4
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-mice-09.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-mice-24.gif b/gn2/wqflask/static/gif/error/animated-gifs-mice-24.gif
new file mode 100644
index 00000000..96a26450
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-mice-24.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-smileys-063.gif b/gn2/wqflask/static/gif/error/animated-gifs-smileys-063.gif
new file mode 100644
index 00000000..62de166c
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-smileys-063.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-smileys-068.gif b/gn2/wqflask/static/gif/error/animated-gifs-smileys-068.gif
new file mode 100644
index 00000000..3550e978
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-smileys-068.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-smileys-134.gif b/gn2/wqflask/static/gif/error/animated-gifs-smileys-134.gif
new file mode 100644
index 00000000..954ab614
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-smileys-134.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-smileys-211.gif b/gn2/wqflask/static/gif/error/animated-gifs-smileys-211.gif
new file mode 100644
index 00000000..596174d7
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-smileys-211.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-smileys-234.gif b/gn2/wqflask/static/gif/error/animated-gifs-smileys-234.gif
new file mode 100644
index 00000000..5aba636b
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-smileys-234.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-001.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-001.gif
new file mode 100644
index 00000000..7896ff1f
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-001.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-002.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-002.gif
new file mode 100644
index 00000000..89da6441
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-002.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-005.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-005.gif
new file mode 100644
index 00000000..b7887630
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-005.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-012.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-012.gif
new file mode 100644
index 00000000..f6697d02
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-012.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-056.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-056.gif
new file mode 100644
index 00000000..2b2496a4
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-056.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-059.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-059.gif
new file mode 100644
index 00000000..f2188656
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-059.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-060.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-060.gif
new file mode 100644
index 00000000..aa8f7bd3
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-060.gif differ
diff --git a/gn2/wqflask/static/gif/error/animated-gifs-stickmen-069.gif b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-069.gif
new file mode 100644
index 00000000..473212e4
Binary files /dev/null and b/gn2/wqflask/static/gif/error/animated-gifs-stickmen-069.gif differ
diff --git a/gn2/wqflask/static/gif/error/m001.gif b/gn2/wqflask/static/gif/error/m001.gif
new file mode 100644
index 00000000..81c8ba26
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m001.gif differ
diff --git a/gn2/wqflask/static/gif/error/m002.gif b/gn2/wqflask/static/gif/error/m002.gif
new file mode 100644
index 00000000..7232c58b
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m002.gif differ
diff --git a/gn2/wqflask/static/gif/error/m003.gif b/gn2/wqflask/static/gif/error/m003.gif
new file mode 100644
index 00000000..2384ceb6
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m003.gif differ
diff --git a/gn2/wqflask/static/gif/error/m004.gif b/gn2/wqflask/static/gif/error/m004.gif
new file mode 100644
index 00000000..d77c708d
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m004.gif differ
diff --git a/gn2/wqflask/static/gif/error/m005.gif b/gn2/wqflask/static/gif/error/m005.gif
new file mode 100644
index 00000000..1b2de7ec
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m005.gif differ
diff --git a/gn2/wqflask/static/gif/error/m006.gif b/gn2/wqflask/static/gif/error/m006.gif
new file mode 100644
index 00000000..f354a4cc
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m006.gif differ
diff --git a/gn2/wqflask/static/gif/error/m007.gif b/gn2/wqflask/static/gif/error/m007.gif
new file mode 100644
index 00000000..ba2eeb37
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m007.gif differ
diff --git a/gn2/wqflask/static/gif/error/m008.gif b/gn2/wqflask/static/gif/error/m008.gif
new file mode 100644
index 00000000..4cdec5cb
Binary files /dev/null and b/gn2/wqflask/static/gif/error/m008.gif differ
diff --git a/gn2/wqflask/static/gif/error/mouse-wheel.gif b/gn2/wqflask/static/gif/error/mouse-wheel.gif
new file mode 100644
index 00000000..164220e7
Binary files /dev/null and b/gn2/wqflask/static/gif/error/mouse-wheel.gif differ
diff --git a/gn2/wqflask/static/gif/waitAnima2.gif b/gn2/wqflask/static/gif/waitAnima2.gif
new file mode 100644
index 00000000..50aff7f2
Binary files /dev/null and b/gn2/wqflask/static/gif/waitAnima2.gif differ
diff --git a/gn2/wqflask/static/images/Belknap_Fig1_1998.png b/gn2/wqflask/static/images/Belknap_Fig1_1998.png
new file mode 100644
index 00000000..46305fa1
Binary files /dev/null and b/gn2/wqflask/static/images/Belknap_Fig1_1998.png differ
diff --git a/gn2/wqflask/static/images/Chrna1vsMyf6.gif b/gn2/wqflask/static/images/Chrna1vsMyf6.gif
new file mode 100644
index 00000000..881a08e8
Binary files /dev/null and b/gn2/wqflask/static/images/Chrna1vsMyf6.gif differ
diff --git a/gn2/wqflask/static/images/Congenic.png b/gn2/wqflask/static/images/Congenic.png
new file mode 100644
index 00000000..8cd489a4
Binary files /dev/null and b/gn2/wqflask/static/images/Congenic.png differ
diff --git a/gn2/wqflask/static/images/Normal_Plot.gif b/gn2/wqflask/static/images/Normal_Plot.gif
new file mode 100644
index 00000000..dc239f8e
Binary files /dev/null and b/gn2/wqflask/static/images/Normal_Plot.gif differ
diff --git a/gn2/wqflask/static/images/SilverFig3_2.png b/gn2/wqflask/static/images/SilverFig3_2.png
new file mode 100644
index 00000000..5b4b2c70
Binary files /dev/null and b/gn2/wqflask/static/images/SilverFig3_2.png differ
diff --git a/gn2/wqflask/static/images/SilverFig3_6.png b/gn2/wqflask/static/images/SilverFig3_6.png
new file mode 100644
index 00000000..5b91d991
Binary files /dev/null and b/gn2/wqflask/static/images/SilverFig3_6.png differ
diff --git a/gn2/wqflask/static/images/Winsorize1.png b/gn2/wqflask/static/images/Winsorize1.png
new file mode 100644
index 00000000..f3a65f29
Binary files /dev/null and b/gn2/wqflask/static/images/Winsorize1.png differ
diff --git a/gn2/wqflask/static/images/Winsorize3.png b/gn2/wqflask/static/images/Winsorize3.png
new file mode 100644
index 00000000..a9ed95d6
Binary files /dev/null and b/gn2/wqflask/static/images/Winsorize3.png differ
diff --git a/gn2/wqflask/static/images/edit.png b/gn2/wqflask/static/images/edit.png
new file mode 100644
index 00000000..571b08cd
Binary files /dev/null and b/gn2/wqflask/static/images/edit.png differ
diff --git a/gn2/wqflask/static/new/css/autocomplete.css b/gn2/wqflask/static/new/css/autocomplete.css
new file mode 100644
index 00000000..1501e280
--- /dev/null
+++ b/gn2/wqflask/static/new/css/autocomplete.css
@@ -0,0 +1,85 @@
+.autocomplete {
+ /*the container must be positioned relative:*/
+ position: relative;
+ display: inline-block;
+
+
+}
+
+input.autocomplete {
+ border: 1px solid transparent;
+ background-color: #f1f1f1;
+ padding: 10px;
+ font-size: 16px;
+}
+
+input[type=text].autocomplete {
+ background-color: #f1f1f1;
+ width: 100%;
+}
+
+input[type=submit].autocomplete {
+ background-color: DodgerBlue;
+ color: #fff;
+}
+
+.autocomplete-items {
+ position: absolute;
+ border: 1px solid #d4d4d4;
+ border-bottom: none;
+ border-top: none;
+ z-index: 99;
+ /*position the autocomplete items to be the same width as the container:*/
+ top: 100%;
+ left: 0;
+ right: 0;
+ border:1px solid black;
+ border-top:none;
+ box-shadow: rgba(0, 0, 0, 0.25) 0px 54px 55px, rgba(0, 0, 0, 0.12) 0px -12px 30px, rgba(0, 0, 0, 0.12) 0px 4px 6px, rgba(0, 0, 0, 0.17) 0px 12px 13px, rgba(0, 0, 0, 0.09) 0px -3px 5px;
+
+}
+
+.autocomplete-items div {
+ padding: 10px;
+ cursor: pointer;
+ background-color: #fff;
+ border-bottom: 1px dotted #d4d4d4;
+}
+
+.autocomplete-items div:hover {
+ /*when hovering an item:*/
+ background-color: #e9e9e9;
+}
+
+.autocomplete-active {
+ /*when navigating through the items using the arrow keys:*/
+ background-color: DodgerBlue !important;
+ color: #ffffff;
+}
+
+.recent-search-title {
+ display: -webkit-box;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: -webkit-flex;
+ display: flex;
+}
+
+.recent-search-title * {
+ -webkit-box-flex: 1 1 auto;
+ -moz-box-flex: 1 1 auto;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+
+.recent-search-title input[type="button"] {
+ border: none;
+ background: none;
+ cursor: pointer;
+ margin: 0;
+ padding: 0;
+ color: blue;
+
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/bar_chart.css b/gn2/wqflask/static/new/css/bar_chart.css
new file mode 100644
index 00000000..20730c2f
--- /dev/null
+++ b/gn2/wqflask/static/new/css/bar_chart.css
@@ -0,0 +1,23 @@
+.barchart .axis path,
+.barchart .axis line {
+ fill: none;
+ stroke: #000;
+ shape-rendering: crispEdges;
+}
+
+.bar {
+ fill: steelblue;
+ shape-rendering: crispEdges;
+}
+
+#legend-left, #legend-right {
+ font-size: 20px;
+}
+
+.nvd3 .nv-group {
+ fill-opacity: .9 !important;
+}
+
+.nvtooltip table td.legend-color-guide div {
+ display: none;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/bootstrap-custom.css b/gn2/wqflask/static/new/css/bootstrap-custom.css
new file mode 100644
index 00000000..007dcc44
--- /dev/null
+++ b/gn2/wqflask/static/new/css/bootstrap-custom.css
@@ -0,0 +1,7560 @@
+/*!
+ * Bootstrap v3.3.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+html {
+ font-family: sans-serif;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+body {
+ margin: 0;
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline;
+}
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+[hidden],
+template {
+ display: none;
+}
+
+a {
+ background-color: transparent;
+}
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+b,
+strong {
+ font-weight: bold;
+}
+
+dfn {
+ font-style: italic;
+}
+
+h1 {
+ margin: .67em 0;
+ font-size: 2em;
+}
+
+mark {
+ color: #000;
+ background: #ff0;
+}
+
+small {
+ font-size: 80%;
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -.5em;
+}
+
+sub {
+ bottom: -.25em;
+}
+
+img {
+ border: 0;
+}
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+figure {
+ margin: 1em 40px;
+}
+
+hr {
+ height: 0;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+pre {
+ overflow: auto;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+ font: inherit;
+ color: inherit;
+}
+
+button {
+ overflow: visible;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+input {
+ line-height: normal;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0;
+}
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+fieldset {
+ padding: .35em .625em .75em;
+ margin: 0 2px;
+ border: 1px solid #c0c0c0;
+}
+
+legend {
+ padding: 0;
+ border: 0;
+}
+
+textarea {
+ overflow: auto;
+}
+
+optgroup {
+ font-weight: bold;
+}
+
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+
+td,
+th {
+ padding: 0;
+}
+
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+
+ *,
+ *:before,
+ *:after {
+ color: #000 !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+ }
+
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+
+ a[href]:after {
+ content: " ("attr(href) ")";
+ }
+
+ abbr[title]:after {
+ content: " ("attr(title) ")";
+ }
+
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+
+ pre,
+ blockquote {
+ border: 1px solid #999;
+
+ page-break-inside: avoid;
+ }
+
+ thead {
+ display: table-header-group;
+ }
+
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+
+ img {
+ max-width: 100% !important;
+ }
+
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+
+ select {
+ background: #fff !important;
+ }
+
+ .navbar {
+ display: none;
+ }
+
+ .btn>.caret,
+ .dropup>.btn>.caret {
+ border-top-color: #000 !important;
+ }
+
+ .label {
+ border: 1px solid #000;
+ }
+
+ .table {
+ border-collapse: collapse !important;
+ }
+
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #000 !important;
+ }
+}
+
+@font-face {
+ font-family: 'Glyphicons Halflings';
+
+ src: url('../fonts/glyphicons-halflings-regular.eot');
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+
+.glyphicon-plus:before {
+ content: "\2b";
+}
+
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+
+.glyphicon-minus:before {
+ content: "\2212";
+}
+
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+
+.glyphicon-glass:before {
+ content: "\e001";
+}
+
+.glyphicon-music:before {
+ content: "\e002";
+}
+
+.glyphicon-search:before {
+ content: "\e003";
+}
+
+.glyphicon-heart:before {
+ content: "\e005";
+}
+
+.glyphicon-star:before {
+ content: "\e006";
+}
+
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+
+.glyphicon-user:before {
+ content: "\e008";
+}
+
+.glyphicon-film:before {
+ content: "\e009";
+}
+
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+
+.glyphicon-th:before {
+ content: "\e011";
+}
+
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+
+.glyphicon-ok:before {
+ content: "\e013";
+}
+
+.glyphicon-remove:before {
+ content: "\e014";
+}
+
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+
+.glyphicon-off:before {
+ content: "\e017";
+}
+
+.glyphicon-signal:before {
+ content: "\e018";
+}
+
+.glyphicon-cog:before {
+ content: "\e019";
+}
+
+.glyphicon-trash:before {
+ content: "\e020";
+}
+
+.glyphicon-home:before {
+ content: "\e021";
+}
+
+.glyphicon-file:before {
+ content: "\e022";
+}
+
+.glyphicon-time:before {
+ content: "\e023";
+}
+
+.glyphicon-road:before {
+ content: "\e024";
+}
+
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+
+.glyphicon-download:before {
+ content: "\e026";
+}
+
+.glyphicon-upload:before {
+ content: "\e027";
+}
+
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+
+.glyphicon-lock:before {
+ content: "\e033";
+}
+
+.glyphicon-flag:before {
+ content: "\e034";
+}
+
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+
+.glyphicon-tag:before {
+ content: "\e041";
+}
+
+.glyphicon-tags:before {
+ content: "\e042";
+}
+
+.glyphicon-book:before {
+ content: "\e043";
+}
+
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+
+.glyphicon-print:before {
+ content: "\e045";
+}
+
+.glyphicon-camera:before {
+ content: "\e046";
+}
+
+.glyphicon-font:before {
+ content: "\e047";
+}
+
+.glyphicon-bold:before {
+ content: "\e048";
+}
+
+.glyphicon-italic:before {
+ content: "\e049";
+}
+
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+
+.glyphicon-list:before {
+ content: "\e056";
+}
+
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+
+.glyphicon-picture:before {
+ content: "\e060";
+}
+
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+
+.glyphicon-tint:before {
+ content: "\e064";
+}
+
+.glyphicon-edit:before {
+ content: "\e065";
+}
+
+.glyphicon-share:before {
+ content: "\e066";
+}
+
+.glyphicon-check:before {
+ content: "\e067";
+}
+
+.glyphicon-move:before {
+ content: "\e068";
+}
+
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+
+.glyphicon-backward:before {
+ content: "\e071";
+}
+
+.glyphicon-play:before {
+ content: "\e072";
+}
+
+.glyphicon-pause:before {
+ content: "\e073";
+}
+
+.glyphicon-stop:before {
+ content: "\e074";
+}
+
+.glyphicon-forward:before {
+ content: "\e075";
+}
+
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+
+.glyphicon-eject:before {
+ content: "\e078";
+}
+
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+
+.glyphicon-gift:before {
+ content: "\e102";
+}
+
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+
+.glyphicon-fire:before {
+ content: "\e104";
+}
+
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+
+.glyphicon-plane:before {
+ content: "\e108";
+}
+
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+
+.glyphicon-random:before {
+ content: "\e110";
+}
+
+.glyphicon-comment:before {
+ content: "\e111";
+}
+
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+
+.glyphicon-bell:before {
+ content: "\e123";
+}
+
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+
+.glyphicon-globe:before {
+ content: "\e135";
+}
+
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+
+.glyphicon-filter:before {
+ content: "\e138";
+}
+
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+
+.glyphicon-link:before {
+ content: "\e144";
+}
+
+.glyphicon-phone:before {
+ content: "\e145";
+}
+
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+
+.glyphicon-usd:before {
+ content: "\e148";
+}
+
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+
+.glyphicon-sort:before {
+ content: "\e150";
+}
+
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+
+.glyphicon-expand:before {
+ content: "\e158";
+}
+
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+
+.glyphicon-flash:before {
+ content: "\e162";
+}
+
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+
+.glyphicon-record:before {
+ content: "\e165";
+}
+
+.glyphicon-save:before {
+ content: "\e166";
+}
+
+.glyphicon-open:before {
+ content: "\e167";
+}
+
+.glyphicon-saved:before {
+ content: "\e168";
+}
+
+.glyphicon-import:before {
+ content: "\e169";
+}
+
+.glyphicon-export:before {
+ content: "\e170";
+}
+
+.glyphicon-send:before {
+ content: "\e171";
+}
+
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+
+.glyphicon-header:before {
+ content: "\e180";
+}
+
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+
+.glyphicon-tower:before {
+ content: "\e184";
+}
+
+.glyphicon-stats:before {
+ content: "\e185";
+}
+
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+html {
+ font-size: 10px;
+
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+body {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #000;
+ background-color: #fff;
+}
+
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+a {
+ color: #3071a9;
+ text-decoration: none;
+}
+
+a:hover,
+a:focus {
+ color: #2a6496;
+ text-decoration: underline;
+}
+
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+figure {
+ margin: 0;
+}
+
+img {
+ vertical-align: middle;
+}
+
+.img-responsive,
+.thumbnail>img,
+.thumbnail a>img,
+.carousel-inner>.item>img,
+.carousel-inner>.item>a>img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+
+.img-rounded {
+ border-radius: 6px;
+}
+
+.img-thumbnail {
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+ padding: 4px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ -webkit-transition: all .2s ease-in-out;
+ -o-transition: all .2s ease-in-out;
+ transition: all .2s ease-in-out;
+}
+
+.img-circle {
+ border-radius: 50%;
+}
+
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eee;
+}
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #777;
+}
+
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
+}
+
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
+}
+
+h1,
+.h1 {
+ font-size: 30px;
+}
+
+h2,
+.h2 {
+ font-size: 24px;
+}
+
+h3,
+.h3 {
+ font-size: 18px;
+}
+
+h4,
+.h4 {
+ font-size: 14px;
+}
+
+h5,
+.h5 {
+ font-size: 12px;
+}
+
+h6,
+.h6 {
+ font-size: 10px;
+}
+
+p {
+ margin: 0 0 10px;
+}
+
+.lead {
+ margin-bottom: 20px;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+
+@media (min-width: 768px) {
+ .lead {
+ font-size: 21px;
+ }
+}
+
+small,
+.small {
+ font-size: 85%;
+}
+
+mark,
+.mark {
+ padding: .2em;
+ background-color: #fcf8e3;
+}
+
+.text-left {
+ text-align: left;
+}
+
+.text-right {
+ text-align: right;
+}
+
+.text-center {
+ text-align: center;
+}
+
+.text-justify {
+ text-align: justify;
+}
+
+.text-nowrap {
+ white-space: nowrap;
+}
+
+.text-lowercase {
+ text-transform: lowercase;
+}
+
+.text-uppercase {
+ text-transform: uppercase;
+}
+
+.text-capitalize {
+ text-transform: capitalize;
+}
+
+.text-muted {
+ color: #777;
+}
+
+.text-primary {
+ color: #428bca;
+}
+
+a.text-primary:hover {
+ color: #3071a9;
+}
+
+.text-success {
+ color: #3c763d;
+}
+
+a.text-success:hover {
+ color: #2b542c;
+}
+
+.text-info {
+ color: #31708f;
+}
+
+a.text-info:hover {
+ color: #245269;
+}
+
+.text-warning {
+ color: #8a6d3b;
+}
+
+a.text-warning:hover {
+ color: #66512c;
+}
+
+.text-danger {
+ color: #a94442;
+}
+
+a.text-danger:hover {
+ color: #843534;
+}
+
+.bg-primary {
+ color: #fff;
+ background-color: #428bca;
+}
+
+a.bg-primary:hover {
+ background-color: #3071a9;
+}
+
+.bg-success {
+ background-color: #dff0d8;
+}
+
+a.bg-success:hover {
+ background-color: #c1e2b3;
+}
+
+.bg-info {
+ background-color: #d9edf7;
+}
+
+a.bg-info:hover {
+ background-color: #afd9ee;
+}
+
+.bg-warning {
+ background-color: #fcf8e3;
+}
+
+a.bg-warning:hover {
+ background-color: #f7ecb5;
+}
+
+.bg-danger {
+ background-color: #f2dede;
+}
+
+a.bg-danger:hover {
+ background-color: #e4b9b9;
+}
+
+.page-header {
+ padding-bottom: 9px;
+ margin: 10px 0 10px;
+ border-bottom: 1px solid #eee;
+}
+
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline {
+ padding-left: 0;
+ margin-left: -5px;
+ list-style: none;
+}
+
+.list-inline>li {
+ display: inline-block;
+ padding-right: 5px;
+ padding-left: 5px;
+}
+
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+
+dt,
+dd {
+ line-height: 1.42857143;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd {
+ margin-left: 0;
+}
+
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #777;
+}
+
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 17.5px;
+ border-left: 5px solid #eee;
+}
+
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
+}
+
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.42857143;
+ color: #777;
+}
+
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ text-align: right;
+ border-right: 5px solid #eee;
+ border-left: 0;
+}
+
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.42857143;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 4px;
+}
+
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #fff;
+ background-color: #333;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 1.42857143;
+ color: #333;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+
+.container {
+ padding-right: 15px;
+ padding-left: 15px;
+}
+
+/*
+@media (min-width: 768px) {
+ .container {
+ width: 750px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 970px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1170px;
+ }
+}*/
+
+.container-fluid {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.row {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+.col-xs-1,
+.col-sm-1,
+.col-md-1,
+.col-lg-1,
+.col-xs-2,
+.col-sm-2,
+.col-md-2,
+.col-lg-2,
+.col-xs-3,
+.col-sm-3,
+.col-md-3,
+.col-lg-3,
+.col-xs-4,
+.col-sm-4,
+.col-md-4,
+.col-lg-4,
+.col-xs-5,
+.col-sm-5,
+.col-md-5,
+.col-lg-5,
+.col-xs-6,
+.col-sm-6,
+.col-md-6,
+.col-lg-6,
+.col-xs-7,
+.col-sm-7,
+.col-md-7,
+.col-lg-7,
+.col-xs-8,
+.col-sm-8,
+.col-md-8,
+.col-lg-8,
+.col-xs-9,
+.col-sm-9,
+.col-md-9,
+.col-lg-9,
+.col-xs-10,
+.col-sm-10,
+.col-md-10,
+.col-lg-10,
+.col-xs-11,
+.col-sm-11,
+.col-md-11,
+.col-lg-11,
+.col-xs-12,
+.col-sm-12,
+.col-md-12,
+.col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11,
+.col-xs-12 {
+ float: left;
+}
+
+.col-xs-12 {
+ width: 100%;
+}
+
+.col-xs-11 {
+ width: 91.66666667%;
+}
+
+.col-xs-10 {
+ width: 83.33333333%;
+}
+
+.col-xs-9 {
+ width: 75%;
+}
+
+.col-xs-8 {
+ width: 66.66666667%;
+}
+
+.col-xs-7 {
+ width: 58.33333333%;
+}
+
+.col-xs-6 {
+ width: 50%;
+}
+
+.col-xs-5 {
+ width: 41.66666667%;
+}
+
+.col-xs-4 {
+ width: 33.33333333%;
+}
+
+.col-xs-3 {
+ width: 25%;
+}
+
+.col-xs-2 {
+ width: 16.66666667%;
+}
+
+.col-xs-1 {
+ width: 8.33333333%;
+}
+
+.col-xs-pull-12 {
+ right: 100%;
+}
+
+.col-xs-pull-11 {
+ right: 91.66666667%;
+}
+
+.col-xs-pull-10 {
+ right: 83.33333333%;
+}
+
+.col-xs-pull-9 {
+ right: 75%;
+}
+
+.col-xs-pull-8 {
+ right: 66.66666667%;
+}
+
+.col-xs-pull-7 {
+ right: 58.33333333%;
+}
+
+.col-xs-pull-6 {
+ right: 50%;
+}
+
+.col-xs-pull-5 {
+ right: 41.66666667%;
+}
+
+.col-xs-pull-4 {
+ right: 33.33333333%;
+}
+
+.col-xs-pull-3 {
+ right: 25%;
+}
+
+.col-xs-pull-2 {
+ right: 16.66666667%;
+}
+
+.col-xs-pull-1 {
+ right: 8.33333333%;
+}
+
+.col-xs-pull-0 {
+ right: auto;
+}
+
+.col-xs-push-12 {
+ left: 100%;
+}
+
+.col-xs-push-11 {
+ left: 91.66666667%;
+}
+
+.col-xs-push-10 {
+ left: 83.33333333%;
+}
+
+.col-xs-push-9 {
+ left: 75%;
+}
+
+.col-xs-push-8 {
+ left: 66.66666667%;
+}
+
+.col-xs-push-7 {
+ left: 58.33333333%;
+}
+
+.col-xs-push-6 {
+ left: 50%;
+}
+
+.col-xs-push-5 {
+ left: 41.66666667%;
+}
+
+.col-xs-push-4 {
+ left: 33.33333333%;
+}
+
+.col-xs-push-3 {
+ left: 25%;
+}
+
+.col-xs-push-2 {
+ left: 16.66666667%;
+}
+
+.col-xs-push-1 {
+ left: 8.33333333%;
+}
+
+.col-xs-push-0 {
+ left: auto;
+}
+
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+
+.col-xs-offset-11 {
+ margin-left: 91.66666667%;
+}
+
+.col-xs-offset-10 {
+ margin-left: 83.33333333%;
+}
+
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+
+.col-xs-offset-8 {
+ margin-left: 66.66666667%;
+}
+
+.col-xs-offset-7 {
+ margin-left: 58.33333333%;
+}
+
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+
+.col-xs-offset-5 {
+ margin-left: 41.66666667%;
+}
+
+.col-xs-offset-4 {
+ margin-left: 33.33333333%;
+}
+
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+
+.col-xs-offset-2 {
+ margin-left: 16.66666667%;
+}
+
+.col-xs-offset-1 {
+ margin-left: 8.33333333%;
+}
+
+.col-xs-offset-0 {
+ margin-left: 0;
+}
+
+/*
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-sm-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-sm-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666667%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666667%;
+ }
+ .col-sm-push-7 {
+ left: 58.33333333%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.66666667%;
+ }
+ .col-sm-push-1 {
+ left: 8.33333333%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-md-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-md-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666667%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666667%;
+ }
+ .col-md-push-7 {
+ left: 58.33333333%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.66666667%;
+ }
+ .col-md-push-1 {
+ left: 8.33333333%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-lg-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-lg-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666667%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666667%;
+ }
+ .col-lg-push-7 {
+ left: 58.33333333%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.66666667%;
+ }
+ .col-lg-push-1 {
+ left: 8.33333333%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0;
+ }
+}
+*/
+
+table {
+ background-color: transparent;
+}
+
+caption {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ color: #777;
+ text-align: left;
+}
+
+th {
+ text-align: left;
+}
+
+.table {
+ //width: 100%;
+ //max-width: 100%;
+ margin-bottom: 20px;
+}
+
+.table>thead>tr>th,
+.table>tbody>tr>th,
+.table>tfoot>tr>th,
+.table>thead>tr>td,
+.table>tbody>tr>td,
+.table>tfoot>tr>td {
+ padding: 8px;
+ line-height: 1.42857143;
+ vertical-align: top;
+ border-top: 1px solid #ddd;
+}
+
+.table>thead>tr>th {
+ vertical-align: middle;
+ border-bottom: 2px solid #ddd;
+}
+
+.table>caption+thead>tr:first-child>th,
+.table>colgroup+thead>tr:first-child>th,
+.table>thead:first-child>tr:first-child>th,
+.table>caption+thead>tr:first-child>td,
+.table>colgroup+thead>tr:first-child>td,
+.table>thead:first-child>tr:first-child>td {
+ border-top: 0;
+}
+
+.table>tbody+tbody {
+ border-top: 2px solid #ddd;
+}
+
+.table .table {
+ background-color: #fff;
+}
+
+.table-condensed>thead>tr>th,
+.table-condensed>tbody>tr>th,
+.table-condensed>tfoot>tr>th,
+.table-condensed>thead>tr>td,
+.table-condensed>tbody>tr>td,
+.table-condensed>tfoot>tr>td {
+ padding: 5px;
+}
+
+.table-bordered {
+ border: 1px solid #000;
+}
+
+.table-bordered>thead>tr>th,
+.table-bordered>tbody>tr>th,
+.table-bordered>tfoot>tr>th,
+.table-bordered>thead>tr>td,
+.table-bordered>tbody>tr>td,
+.table-bordered>tfoot>tr>td {
+ border: 1px solid #000;
+}
+
+.table-bordered>thead>tr>th,
+.table-bordered>thead>tr>td {
+ border-bottom-width: 2px;
+}
+
+.table-striped>tbody>tr:nth-child(odd) {
+ background-color: #f9f9f9;
+}
+
+.table-hover>tbody>tr:hover {
+ background-color: #f5f5f5;
+}
+
+table col[class*="col-"] {
+ position: static;
+ display: table-column;
+ float: none;
+}
+
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ display: table-cell;
+ float: none;
+}
+
+.table>thead>tr>td.active,
+.table>tbody>tr>td.active,
+.table>tfoot>tr>td.active,
+.table>thead>tr>th.active,
+.table>tbody>tr>th.active,
+.table>tfoot>tr>th.active,
+.table>thead>tr.active>td,
+.table>tbody>tr.active>td,
+.table>tfoot>tr.active>td,
+.table>thead>tr.active>th,
+.table>tbody>tr.active>th,
+.table>tfoot>tr.active>th {
+ background-color: #f5f5f5;
+}
+
+.table-hover>tbody>tr>td.active:hover,
+.table-hover>tbody>tr>th.active:hover,
+.table-hover>tbody>tr.active:hover>td,
+.table-hover>tbody>tr:hover>.active,
+.table-hover>tbody>tr.active:hover>th {
+ background-color: #e8e8e8;
+}
+
+.table>thead>tr>td.success,
+.table>tbody>tr>td.success,
+.table>tfoot>tr>td.success,
+.table>thead>tr>th.success,
+.table>tbody>tr>th.success,
+.table>tfoot>tr>th.success,
+.table>thead>tr.success>td,
+.table>tbody>tr.success>td,
+.table>tfoot>tr.success>td,
+.table>thead>tr.success>th,
+.table>tbody>tr.success>th,
+.table>tfoot>tr.success>th {
+ background-color: #dff0d8;
+}
+
+.table-hover>tbody>tr>td.success:hover,
+.table-hover>tbody>tr>th.success:hover,
+.table-hover>tbody>tr.success:hover>td,
+.table-hover>tbody>tr:hover>.success,
+.table-hover>tbody>tr.success:hover>th {
+ background-color: #d0e9c6;
+}
+
+.table>thead>tr>td.info,
+.table>tbody>tr>td.info,
+.table>tfoot>tr>td.info,
+.table>thead>tr>th.info,
+.table>tbody>tr>th.info,
+.table>tfoot>tr>th.info,
+.table>thead>tr.info>td,
+.table>tbody>tr.info>td,
+.table>tfoot>tr.info>td,
+.table>thead>tr.info>th,
+.table>tbody>tr.info>th,
+.table>tfoot>tr.info>th {
+ background-color: #d9edf7;
+}
+
+.table-hover>tbody>tr>td.info:hover,
+.table-hover>tbody>tr>th.info:hover,
+.table-hover>tbody>tr.info:hover>td,
+.table-hover>tbody>tr:hover>.info,
+.table-hover>tbody>tr.info:hover>th {
+ background-color: #c4e3f3;
+}
+
+.table>thead>tr>td.warning,
+.table>tbody>tr>td.warning,
+.table>tfoot>tr>td.warning,
+.table>thead>tr>th.warning,
+.table>tbody>tr>th.warning,
+.table>tfoot>tr>th.warning,
+.table>thead>tr.warning>td,
+.table>tbody>tr.warning>td,
+.table>tfoot>tr.warning>td,
+.table>thead>tr.warning>th,
+.table>tbody>tr.warning>th,
+.table>tfoot>tr.warning>th {
+ background-color: #fcf8e3;
+}
+
+.table-hover>tbody>tr>td.warning:hover,
+.table-hover>tbody>tr>th.warning:hover,
+.table-hover>tbody>tr.warning:hover>td,
+.table-hover>tbody>tr:hover>.warning,
+.table-hover>tbody>tr.warning:hover>th {
+ background-color: #faf2cc;
+}
+
+.table>thead>tr>td.danger,
+.table>tbody>tr>td.danger,
+.table>tfoot>tr>td.danger,
+.table>thead>tr>th.danger,
+.table>tbody>tr>th.danger,
+.table>tfoot>tr>th.danger,
+.table>thead>tr.danger>td,
+.table>tbody>tr.danger>td,
+.table>tfoot>tr.danger>td,
+.table>thead>tr.danger>th,
+.table>tbody>tr.danger>th,
+.table>tfoot>tr.danger>th {
+ background-color: #f2dede;
+}
+
+.table-hover>tbody>tr>td.danger:hover,
+.table-hover>tbody>tr>th.danger:hover,
+.table-hover>tbody>tr.danger:hover>td,
+.table-hover>tbody>tr:hover>.danger,
+.table-hover>tbody>tr.danger:hover>th {
+ background-color: #ebcccc;
+}
+
+.table-responsive {
+ min-height: .01%;
+ overflow-x: auto;
+}
+
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #ddd;
+ }
+
+ .table-responsive>.table {
+ margin-bottom: 0;
+ }
+
+ .table-responsive>.table>thead>tr>th,
+ .table-responsive>.table>tbody>tr>th,
+ .table-responsive>.table>tfoot>tr>th,
+ .table-responsive>.table>thead>tr>td,
+ .table-responsive>.table>tbody>tr>td,
+ .table-responsive>.table>tfoot>tr>td {
+ white-space: nowrap;
+ }
+
+ .table-responsive>.table-bordered {
+ border: 0;
+ }
+
+ .table-responsive>.table-bordered>thead>tr>th:first-child,
+ .table-responsive>.table-bordered>tbody>tr>th:first-child,
+ .table-responsive>.table-bordered>tfoot>tr>th:first-child,
+ .table-responsive>.table-bordered>thead>tr>td:first-child,
+ .table-responsive>.table-bordered>tbody>tr>td:first-child,
+ .table-responsive>.table-bordered>tfoot>tr>td:first-child {
+ border-left: 0;
+ }
+
+ .table-responsive>.table-bordered>thead>tr>th:last-child,
+ .table-responsive>.table-bordered>tbody>tr>th:last-child,
+ .table-responsive>.table-bordered>tfoot>tr>th:last-child,
+ .table-responsive>.table-bordered>thead>tr>td:last-child,
+ .table-responsive>.table-bordered>tbody>tr>td:last-child,
+ .table-responsive>.table-bordered>tfoot>tr>td:last-child {
+ border-right: 0;
+ }
+
+ .table-responsive>.table-bordered>tbody>tr:last-child>th,
+ .table-responsive>.table-bordered>tfoot>tr:last-child>th,
+ .table-responsive>.table-bordered>tbody>tr:last-child>td,
+ .table-responsive>.table-bordered>tfoot>tr:last-child>td {
+ border-bottom: 0;
+ }
+}
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: inherit;
+ color: #333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
+}
+
+input[type="file"] {
+ display: block;
+}
+
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+
+select[multiple],
+select[size] {
+ height: auto;
+}
+
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+output {
+ display: block;
+ padding-top: 7px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #000;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
+}
+
+.form-control::-moz-placeholder {
+ color: #999;
+ opacity: 1;
+}
+
+.form-control:-ms-input-placeholder {
+ color: #999;
+}
+
+.form-control::-webkit-input-placeholder {
+ color: #999;
+}
+
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+ background-color: #eee;
+ opacity: 1;
+}
+
+textarea.form-control {
+ height: auto;
+}
+
+input[type="search"] {
+ -webkit-appearance: none;
+}
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+ line-height: 34px;
+ line-height: 1.42857143 \0;
+}
+
+input[type="date"].input-sm,
+input[type="time"].input-sm,
+input[type="datetime-local"].input-sm,
+input[type="month"].input-sm {
+ line-height: 30px;
+ line-height: 1.5 \0;
+}
+
+input[type="date"].input-lg,
+input[type="time"].input-lg,
+input[type="datetime-local"].input-lg,
+input[type="month"].input-lg {
+ line-height: 46px;
+ line-height: 1.33 \0;
+}
+
+_:-ms-fullscreen,
+:root input[type="date"],
+_:-ms-fullscreen,
+:root input[type="time"],
+_:-ms-fullscreen,
+:root input[type="datetime-local"],
+_:-ms-fullscreen,
+:root input[type="month"] {
+ line-height: 1.42857143;
+}
+
+_:-ms-fullscreen.input-sm,
+:root input[type="date"].input-sm,
+_:-ms-fullscreen.input-sm,
+:root input[type="time"].input-sm,
+_:-ms-fullscreen.input-sm,
+:root input[type="datetime-local"].input-sm,
+_:-ms-fullscreen.input-sm,
+:root input[type="month"].input-sm {
+ line-height: 1.5;
+}
+
+_:-ms-fullscreen.input-lg,
+:root input[type="date"].input-lg,
+_:-ms-fullscreen.input-lg,
+:root input[type="time"].input-lg,
+_:-ms-fullscreen.input-lg,
+:root input[type="datetime-local"].input-lg,
+_:-ms-fullscreen.input-lg,
+:root input[type="month"].input-lg {
+ line-height: 1.33;
+}
+
+.form-group {
+ margin-bottom: 15px;
+}
+
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-top: 4px \9;
+ margin-left: -20px;
+}
+
+.radio+.radio,
+.checkbox+.checkbox {
+ margin-top: -5px;
+}
+
+.radio-inline,
+.checkbox-inline {
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ vertical-align: middle;
+ cursor: pointer;
+}
+
+.radio-inline+.radio-inline,
+.checkbox-inline+.checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+
+.form-control-static {
+ padding-top: 7px;
+ padding-bottom: 7px;
+ margin-bottom: 0;
+}
+
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.input-sm,
+.form-group-sm .form-control {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+select.input-sm,
+select.form-group-sm .form-control {
+ height: 30px;
+ line-height: 30px;
+}
+
+textarea.input-sm,
+textarea.form-group-sm .form-control,
+select[multiple].input-sm,
+select[multiple].form-group-sm .form-control {
+ height: auto;
+}
+
+.input-lg,
+.form-group-lg .form-control {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
+}
+
+select.input-lg,
+select.form-group-lg .form-control {
+ height: 46px;
+ line-height: 46px;
+}
+
+textarea.input-lg,
+textarea.form-group-lg .form-control,
+select[multiple].input-lg,
+select[multiple].form-group-lg .form-control {
+ height: auto;
+}
+
+.has-feedback {
+ position: relative;
+}
+
+.has-feedback .form-control {
+ padding-right: 42.5px;
+}
+
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 34px;
+ height: 34px;
+ line-height: 34px;
+ text-align: center;
+ pointer-events: none;
+}
+
+.input-lg+.form-control-feedback {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+
+.input-sm+.form-control-feedback {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+}
+
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
+}
+
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+
+.has-success .input-group-addon {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #3c763d;
+}
+
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #8a6d3b;
+}
+
+.has-warning .form-control {
+ border-color: #8a6d3b;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+
+.has-warning .form-control:focus {
+ border-color: #66512c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+
+.has-warning .input-group-addon {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #8a6d3b;
+}
+
+.has-warning .form-control-feedback {
+ color: #8a6d3b;
+}
+
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
+}
+
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+
+.has-error .input-group-addon {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #a94442;
+}
+
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+
+.has-feedback label~.form-control-feedback {
+ top: 25px;
+}
+
+.has-feedback label.sr-only~.form-control-feedback {
+ top: 0;
+}
+
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+
+ .form-inline .input-group>.form-control {
+ width: 100%;
+ }
+
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ padding-top: 7px;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 27px;
+}
+
+.form-horizontal .form-group {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+.form-horizontal .control-label {
+ padding-top: 7px;
+ margin-bottom: 0;
+ text-align: right;
+}
+
+.form-horizontal .control-label.text-left{
+ text-align: left;
+}
+
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 15px;
+}
+
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 14.3px;
+ }
+}
+
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+ }
+}
+
+.btn {
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #333;
+ text-decoration: none;
+}
+
+.btn:active,
+.btn.active {
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ pointer-events: none;
+ cursor: not-allowed;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ opacity: .65;
+}
+
+.btn-default {
+ color: #333;
+ background-color: #fff;
+ border-color: #ccc;
+}
+
+.btn-default:hover,
+.btn-default:focus,
+.btn-default.focus,
+.btn-default:active,
+.btn-default.active,
+.open>.dropdown-toggle.btn-default {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+
+.btn-default:active,
+.btn-default.active,
+.open>.dropdown-toggle.btn-default {
+ background-image: none;
+}
+
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #fff;
+ border-color: #ccc;
+}
+
+.btn-default .badge {
+ color: #fff;
+ background-color: #333;
+}
+
+.btn-primary {
+ color: #fff;
+ background-color: #369;
+ border-color: #357ebd;
+}
+
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary.focus,
+.btn-primary:active,
+.btn-primary.active,
+.open>.dropdown-toggle.btn-primary {
+ color: #fff;
+ background-color: #3071a9;
+ border-color: #285e8e;
+}
+
+.btn-primary:active,
+.btn-primary.active,
+.open>.dropdown-toggle.btn-primary {
+ background-image: none;
+}
+
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #428bca;
+ border-color: #357ebd;
+}
+
+.btn-primary .badge {
+ color: #428bca;
+ background-color: #fff;
+}
+
+.btn-success {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+
+.btn-success:hover,
+.btn-success:focus,
+.btn-success.focus,
+.btn-success:active,
+.btn-success.active,
+.open>.dropdown-toggle.btn-success {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+
+.btn-success:active,
+.btn-success.active,
+.open>.dropdown-toggle.btn-success {
+ background-image: none;
+}
+
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+
+.btn-success .badge {
+ color: #5cb85c;
+ background-color: #fff;
+}
+
+.btn-info {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+
+.btn-info:hover,
+.btn-info:focus,
+.btn-info.focus,
+.btn-info:active,
+.btn-info.active,
+.open>.dropdown-toggle.btn-info {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #269abc;
+}
+
+.btn-info:active,
+.btn-info.active,
+.open>.dropdown-toggle.btn-info {
+ background-image: none;
+}
+
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+
+.btn-info .badge {
+ color: #5bc0de;
+ background-color: #fff;
+}
+
+.btn-warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning.focus,
+.btn-warning:active,
+.btn-warning.active,
+.open>.dropdown-toggle.btn-warning {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #d58512;
+}
+
+.btn-warning:active,
+.btn-warning.active,
+.open>.dropdown-toggle.btn-warning {
+ background-image: none;
+}
+
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+
+.btn-warning .badge {
+ color: #f0ad4e;
+ background-color: #fff;
+}
+
+.btn-danger {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger.focus,
+.btn-danger:active,
+.btn-danger.active,
+.open>.dropdown-toggle.btn-danger {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #ac2925;
+}
+
+.btn-danger:active,
+.btn-danger.active,
+.open>.dropdown-toggle.btn-danger {
+ background-image: none;
+}
+
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+
+.btn-danger .badge {
+ color: #d9534f;
+ background-color: #fff;
+}
+
+.btn-link {
+ font-weight: normal;
+ color: #428bca;
+ border-radius: 0;
+}
+
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+
+.btn-link:hover,
+.btn-link:focus {
+ color: #2a6496;
+ text-decoration: underline;
+ background-color: transparent;
+}
+
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #777;
+ text-decoration: none;
+}
+
+.btn-lg,
+.btn-group-lg>.btn {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
+}
+
+.btn-sm,
+.btn-group-sm>.btn {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+.btn-xs,
+.btn-group-xs>.btn {
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+.btn-block {
+ display: block;
+ width: 100%;
+}
+
+.btn-block+.btn-block {
+ margin-top: 5px;
+}
+
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity .15s linear;
+ -o-transition: opacity .15s linear;
+ transition: opacity .15s linear;
+}
+
+.fade.in {
+ opacity: 1;
+}
+
+.collapse {
+ display: none;
+ visibility: hidden;
+}
+
+.collapse.in {
+ display: block;
+ visibility: visible;
+}
+
+tr.collapse.in {
+ display: table-row;
+}
+
+tbody.collapse.in {
+ display: table-row-group;
+}
+
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-timing-function: ease;
+ -o-transition-timing-function: ease;
+ transition-timing-function: ease;
+ -webkit-transition-duration: .35s;
+ -o-transition-duration: .35s;
+ transition-duration: .35s;
+ -webkit-transition-property: height, visibility;
+ -o-transition-property: height, visibility;
+ transition-property: height, visibility;
+}
+
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px solid;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+}
+
+.dropdown {
+ position: relative;
+}
+
+.dropdown-toggle:focus {
+ outline: 0;
+}
+
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ font-size: 14px;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+
+.dropdown-menu>li>a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.42857143;
+ color: #333;
+ white-space: nowrap;
+}
+
+.dropdown-menu>li>a:hover,
+.dropdown-menu>li>a:focus {
+ color: #262626;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.dropdown-menu>.active>a,
+.dropdown-menu>.active>a:hover,
+.dropdown-menu>.active>a:focus {
+ color: #fff;
+ text-decoration: none;
+ background-color: #428bca;
+ outline: 0;
+}
+
+.dropdown-menu>.disabled>a,
+.dropdown-menu>.disabled>a:hover,
+.dropdown-menu>.disabled>a:focus {
+ color: #777;
+}
+
+.dropdown-menu>.disabled>a:hover,
+.dropdown-menu>.disabled>a:focus {
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.open>.dropdown-menu {
+ display: block;
+}
+
+.open>a {
+ outline: 0;
+}
+
+.dropdown-menu-right {
+ right: 0;
+ left: auto;
+}
+
+.dropdown-menu-left {
+ right: auto;
+ left: 0;
+}
+
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 12px;
+ line-height: 1.42857143;
+ color: #777;
+ white-space: nowrap;
+}
+
+.dropdown-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 990;
+}
+
+.pull-right>.dropdown-menu {
+ right: 0;
+ left: auto;
+}
+
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ content: "";
+ border-top: 0;
+ border-bottom: 4px solid;
+}
+
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ right: 0;
+ left: auto;
+ }
+
+ .navbar-right .dropdown-menu-left {
+ right: auto;
+ left: 0;
+ }
+}
+
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.btn-group>.btn,
+.btn-group-vertical>.btn {
+ position: relative;
+ float: left;
+}
+
+.btn-group>.btn:hover,
+.btn-group-vertical>.btn:hover,
+.btn-group>.btn:focus,
+.btn-group-vertical>.btn:focus,
+.btn-group>.btn:active,
+.btn-group-vertical>.btn:active,
+.btn-group>.btn.active,
+.btn-group-vertical>.btn.active {
+ z-index: 2;
+}
+
+.btn-group>.btn:focus,
+.btn-group-vertical>.btn:focus {
+ outline: 0;
+}
+
+.btn-group .btn+.btn,
+.btn-group .btn+.btn-group,
+.btn-group .btn-group+.btn,
+.btn-group .btn-group+.btn-group {
+ margin-left: -1px;
+}
+
+.btn-toolbar {
+ margin-left: -5px;
+}
+
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+
+.btn-toolbar>.btn,
+.btn-toolbar>.btn-group,
+.btn-toolbar>.input-group {
+ margin-left: 5px;
+}
+
+.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+
+.btn-group>.btn:first-child {
+ margin-left: 0;
+}
+
+.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.btn-group>.btn:last-child:not(:first-child),
+.btn-group>.dropdown-toggle:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group>.btn-group {
+ float: left;
+}
+
+.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn {
+ border-radius: 0;
+}
+
+.btn-group>.btn-group:first-child>.btn:last-child,
+.btn-group>.btn-group:first-child>.dropdown-toggle {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.btn-group>.btn-group:last-child>.btn:first-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+
+.btn-group>.btn+.dropdown-toggle {
+ padding-right: 8px;
+ padding-left: 8px;
+}
+
+.btn-group>.btn-lg+.dropdown-toggle {
+ padding-right: 12px;
+ padding-left: 12px;
+}
+
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn .caret {
+ margin-left: 0;
+}
+
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+ border-bottom-width: 0;
+}
+
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+
+.btn-group-vertical>.btn,
+.btn-group-vertical>.btn-group,
+.btn-group-vertical>.btn-group>.btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+
+.btn-group-vertical>.btn-group>.btn {
+ float: none;
+}
+
+.btn-group-vertical>.btn+.btn,
+.btn-group-vertical>.btn+.btn-group,
+.btn-group-vertical>.btn-group+.btn,
+.btn-group-vertical>.btn-group+.btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+
+.btn-group-vertical>.btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+
+.btn-group-vertical>.btn:first-child:not(:last-child) {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group-vertical>.btn:last-child:not(:first-child) {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-left-radius: 4px;
+}
+
+.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn {
+ border-radius: 0;
+}
+
+.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,
+.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+
+.btn-group-justified>.btn,
+.btn-group-justified>.btn-group {
+ display: table-cell;
+ float: none;
+ width: 1%;
+}
+
+.btn-group-justified>.btn-group .btn {
+ width: 100%;
+}
+
+.btn-group-justified>.btn-group .dropdown-menu {
+ left: auto;
+}
+
+[data-toggle="buttons"]>.btn input[type="radio"],
+[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],
+[data-toggle="buttons"]>.btn input[type="checkbox"],
+[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+
+.input-group[class*="col-"] {
+ float: none;
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+
+.input-group-lg>.form-control,
+.input-group-lg>.input-group-addon,
+.input-group-lg>.input-group-btn>.btn {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
+}
+
+select.input-group-lg>.form-control,
+select.input-group-lg>.input-group-addon,
+select.input-group-lg>.input-group-btn>.btn {
+ height: 46px;
+ line-height: 46px;
+}
+
+textarea.input-group-lg>.form-control,
+textarea.input-group-lg>.input-group-addon,
+textarea.input-group-lg>.input-group-btn>.btn,
+select[multiple].input-group-lg>.form-control,
+select[multiple].input-group-lg>.input-group-addon,
+select[multiple].input-group-lg>.input-group-btn>.btn {
+ height: auto;
+}
+
+.input-group-sm>.form-control,
+.input-group-sm>.input-group-addon,
+.input-group-sm>.input-group-btn>.btn {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+select.input-group-sm>.form-control,
+select.input-group-sm>.input-group-addon,
+select.input-group-sm>.input-group-btn>.btn {
+ height: 30px;
+ line-height: 30px;
+}
+
+textarea.input-group-sm>.form-control,
+textarea.input-group-sm>.input-group-addon,
+textarea.input-group-sm>.input-group-btn>.btn,
+select[multiple].input-group-sm>.form-control,
+select[multiple].input-group-sm>.input-group-addon,
+select[multiple].input-group-sm>.input-group-btn>.btn {
+ height: auto;
+}
+
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.input-group-addon {
+ padding: 6px 12px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1;
+ color: #555;
+ text-align: center;
+ background-color: #eee;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+
+.input-group-addon.input-sm {
+ padding: 5px 10px;
+ font-size: 12px;
+ border-radius: 3px;
+}
+
+.input-group-addon.input-lg {
+ padding: 10px 16px;
+ font-size: 18px;
+ border-radius: 6px;
+}
+
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child>.btn,
+.input-group-btn:first-child>.btn-group>.btn,
+.input-group-btn:first-child>.dropdown-toggle,
+.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child>.btn-group:not(:last-child)>.btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.input-group-addon:first-child {
+ border-right: 0;
+}
+
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child>.btn,
+.input-group-btn:last-child>.btn-group>.btn,
+.input-group-btn:last-child>.dropdown-toggle,
+.input-group-btn:first-child>.btn:not(:first-child),
+.input-group-btn:first-child>.btn-group:not(:first-child)>.btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.input-group-addon:last-child {
+ border-left: 0;
+}
+
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+
+.input-group-btn>.btn {
+ position: relative;
+}
+
+.input-group-btn>.btn+.btn {
+ margin-left: -1px;
+}
+
+.input-group-btn>.btn:hover,
+.input-group-btn>.btn:focus,
+.input-group-btn>.btn:active {
+ z-index: 2;
+}
+
+.input-group-btn:first-child>.btn,
+.input-group-btn:first-child>.btn-group {
+ margin-right: -1px;
+}
+
+.input-group-btn:last-child>.btn,
+.input-group-btn:last-child>.btn-group {
+ margin-left: -1px;
+}
+
+.nav {
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.nav>li {
+ margin-right: 10px;
+ position: relative;
+ display: block;
+}
+
+.nav>li>a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+
+.nav>li>a:hover,
+.nav>li>a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+
+.nav>li.disabled>a {
+ color: #777;
+}
+
+.nav>li.disabled>a:hover,
+.nav>li.disabled>a:focus {
+ color: #777;
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+}
+
+.nav .open>a,
+.nav .open>a:hover,
+.nav .open>a:focus {
+ background-color: #eee;
+ border-color: #428bca;
+}
+
+.nav .nav-divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+
+.nav>li>a>img {
+ max-width: none;
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+
+.nav-tabs>li {
+ float: left;
+ margin-bottom: -1px;
+}
+
+.nav-tabs>li>a {
+ margin-right: 2px;
+ line-height: 1.42857143;
+ border: 1px solid transparent;
+ border-radius: 4px 4px 0 0;
+}
+
+.nav-tabs>li>a:hover {
+ border-color: #eee #eee #ddd;
+}
+
+.nav-tabs>li.active>a,
+.nav-tabs>li.active>a:hover,
+.nav-tabs>li.active>a:focus {
+ color: #555;
+ cursor: default;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+}
+
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+
+.nav-tabs.nav-justified>li {
+ float: none;
+}
+
+.nav-tabs.nav-justified>li>a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+
+.nav-tabs.nav-justified>.dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+
+.nav-tabs.nav-justified>li {
+ display: table-cell;
+ width: 1%;
+}
+
+.nav-tabs.nav-justified>li>a {
+ margin-bottom: 0;
+}
+
+.nav-tabs.nav-justified>li>a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+
+.nav-tabs.nav-justified>.active>a,
+.nav-tabs.nav-justified>.active>a:hover,
+.nav-tabs.nav-justified>.active>a:focus {
+ border: 1px solid #ddd;
+}
+
+.nav-tabs.nav-justified>li>a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+}
+
+.nav-tabs.nav-justified>.active>a,
+.nav-tabs.nav-justified>.active>a:hover,
+.nav-tabs.nav-justified>.active>a:focus {
+ border-bottom-color: #fff;
+}
+
+.nav-pills>li {
+ float: left;
+}
+
+.nav-pills>li>a {
+ border-radius: 4px;
+}
+
+.nav-pills>li+li {
+ margin-left: 2px;
+}
+
+.nav-pills>li.active>a,
+.nav-pills>li.active>a:hover,
+.nav-pills>li.active>a:focus {
+ color: #fff;
+ background-color: #3071a9;
+ /* Tab cell background color */
+}
+
+.nav-stacked>li {
+ float: none;
+}
+
+.nav-stacked>li+li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+
+.nav-justified {
+ width: 100%;
+}
+
+.nav-justified>li {
+ float: none;
+}
+
+.nav-justified>li>a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+
+.nav-justified>.dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+
+.nav-justified>li {
+ display: table-cell;
+ width: 1%;
+}
+
+.nav-justified>li>a {
+ margin-bottom: 0;
+}
+
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+
+.nav-tabs-justified>li>a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+
+.nav-tabs-justified>.active>a,
+.nav-tabs-justified>.active>a:hover,
+.nav-tabs-justified>.active>a:focus {
+ border: 1px solid #ddd;
+}
+
+.nav-tabs-justified>li>a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+}
+
+.nav-tabs-justified>.active>a,
+.nav-tabs-justified>.active>a:hover,
+.nav-tabs-justified>.active>a:focus {
+ border-bottom-color: #fff;
+}
+
+.tab-content>.tab-pane {
+ display: none;
+ visibility: hidden;
+}
+
+.tab-content>.active {
+ display: block;
+ visibility: visible;
+}
+
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.navbar {
+ position: relative;
+ min-height: 30px;
+ border: 1px solid transparent;
+}
+
+/*
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 4px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+*/
+
+.navbar-collapse {
+ padding-right: 15px;
+ padding-left: 15px;
+ overflow-x: visible;
+ -webkit-overflow-scrolling: touch;
+ border-top: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+
+/*
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ visibility: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+*/
+
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+
+@media (max-device-width: 480px) and (orientation: landscape) {
+
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+
+.container>.navbar-header,
+.container-fluid>.navbar-header,
+.container>.navbar-collapse,
+.container-fluid>.navbar-collapse {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+@media (min-width: 768px) {
+
+ .container>.navbar-header,
+ .container-fluid>.navbar-header,
+ .container>.navbar-collapse,
+ .container-fluid>.navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+@media (min-width: 768px) {
+
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+
+.navbar-brand {
+ float: left;
+ height: 30px;
+ padding: 6px 15px;
+ font-size: 15px;
+ line-height: 18px;
+}
+
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+
+.navbar-brand>img {
+ display: block;
+}
+
+@media (min-width: 768px) {
+
+ .navbar>.container .navbar-brand,
+ .navbar>.container-fluid .navbar-brand {
+ margin-left: -15px;
+ }
+}
+
+.navbar-toggle {
+ position: relative;
+ float: right;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-right: 15px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.navbar-toggle:focus {
+ outline: 0;
+}
+
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+
+.navbar-toggle .icon-bar+.icon-bar {
+ margin-top: 4px;
+}
+
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+
+.navbar-nav {
+ margin: 7.5px -15px;
+}
+
+.navbar-nav>li>a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+
+.navbar-nav>li,
+.navbar-nav {
+ float: left !important;
+}
+
+.navbar-nav.navbar-right:last-child {
+ margin-right: -15px !important;
+}
+
+.navbar-right {
+ float: right !important;
+}
+
+/*
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+
+.navbar-form {
+ padding: 10px 15px;
+ margin-top: 8px;
+ margin-right: -15px;
+ margin-bottom: 8px;
+ margin-left: -15px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-right: 0;
+ margin-left: 0;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+*/
+
+.navbar-nav>li>.dropdown-menu {
+ margin-top: 0;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.navbar-btn {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+.navbar-btn.btn-sm {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+
+.navbar-text {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+
+.navbar-text {
+ float: left;
+ margin-right: 15px;
+ margin-left: 15px;
+}
+
+
+.navbar-left {
+ float: left !important;
+}
+
+.navbar-right {
+ float: right !important;
+ margin-right: -15px;
+}
+
+.navbar-right~.navbar-right {
+ margin-right: 0;
+}
+
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+
+.navbar-default .navbar-brand {
+ color: #777;
+}
+
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+
+.navbar-default .navbar-text {
+ color: #777;
+}
+
+.navbar-default .navbar-nav>li>a {
+ color: #777;
+}
+
+.navbar-default .navbar-nav>li>a:hover,
+.navbar-default .navbar-nav>li>a:focus {
+ color: #333;
+ background-color: transparent;
+}
+
+.navbar-default .navbar-nav>.active>a,
+.navbar-default .navbar-nav>.active>a:hover,
+.navbar-default .navbar-nav>.active>a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+
+.navbar-default .navbar-nav>.disabled>a,
+.navbar-default .navbar-nav>.disabled>a:hover,
+.navbar-default .navbar-nav>.disabled>a:focus {
+ color: #ccc;
+ background-color: transparent;
+}
+
+.navbar-default .navbar-toggle {
+ border-color: #ddd;
+}
+
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #ddd;
+}
+
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888;
+}
+
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+
+.navbar-default .navbar-nav>.open>a,
+.navbar-default .navbar-nav>.open>a:hover,
+.navbar-default .navbar-nav>.open>a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu>li>a {
+ color: #777;
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus {
+ color: #333;
+ background-color: transparent;
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu>.active>a,
+ .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,
+ .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus {
+ color: #ccc;
+ background-color: transparent;
+ }
+}
+
+.navbar-default .navbar-link {
+ color: #777;
+}
+
+.navbar-default .navbar-link:hover {
+ color: #333;
+}
+
+.navbar-default .btn-link {
+ color: #777;
+}
+
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333;
+}
+
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #ccc;
+}
+
+.navbar-inverse {
+ background-color: #336699;
+ border-color: #080808;
+}
+
+.navbar-inverse .navbar-brand {
+ color: #ffffff;
+}
+
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+
+.navbar-inverse .navbar-text {
+ color: #ffffff;
+}
+
+.navbar-inverse .navbar-nav>li>a {
+ color: #ffffff;
+}
+
+.navbar-inverse .navbar-nav>li>a:hover,
+.navbar-inverse .navbar-nav>li>a:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+
+.navbar-inverse .navbar-nav>.active>a,
+.navbar-inverse .navbar-nav>.active>a:hover,
+.navbar-inverse .navbar-nav>.active>a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+
+.navbar-inverse .navbar-nav>.disabled>a,
+.navbar-inverse .navbar-nav>.disabled>a:hover,
+.navbar-inverse .navbar-nav>.disabled>a:focus {
+ color: #444;
+ background-color: transparent;
+}
+
+.navbar-inverse .navbar-toggle {
+ border-color: #333;
+}
+
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333;
+}
+
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #fff;
+}
+
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+
+.navbar-inverse .navbar-nav>.open>a,
+.navbar-inverse .navbar-nav>.open>a:hover,
+.navbar-inverse .navbar-nav>.open>a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header {
+ border-color: #080808;
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>li>a {
+ color: #9d9d9d;
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus {
+ color: #fff;
+ background-color: transparent;
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus {
+ color: #fff;
+ background-color: #080808;
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus {
+ color: #444;
+ background-color: transparent;
+ }
+}
+
+.navbar-inverse .navbar-link {
+ color: #9d9d9d;
+}
+
+.navbar-inverse .navbar-link:hover {
+ color: #fff;
+}
+
+.navbar-inverse .btn-link {
+ color: #9d9d9d;
+}
+
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #fff;
+}
+
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444;
+}
+
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+}
+
+.breadcrumb>li {
+ display: inline-block;
+}
+
+.breadcrumb>li+li:before {
+ padding: 0 5px;
+ color: #ccc;
+ content: "/\00a0";
+}
+
+.breadcrumb>.active {
+ color: #777;
+}
+
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 4px;
+}
+
+.pagination>li {
+ display: inline;
+}
+
+.pagination>li>a,
+.pagination>li>span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ margin-left: -1px;
+ line-height: 1.42857143;
+ color: #428bca;
+ text-decoration: none;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+
+.pagination>li:first-child>a,
+.pagination>li:first-child>span {
+ margin-left: 0;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+
+.pagination>li:last-child>a,
+.pagination>li:last-child>span {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+.pagination>li>a:hover,
+.pagination>li>span:hover,
+.pagination>li>a:focus,
+.pagination>li>span:focus {
+ color: #2a6496;
+ background-color: #eee;
+ border-color: #ddd;
+}
+
+.pagination>.active>a,
+.pagination>.active>span,
+.pagination>.active>a:hover,
+.pagination>.active>span:hover,
+.pagination>.active>a:focus,
+.pagination>.active>span:focus {
+ z-index: 2;
+ color: #fff;
+ cursor: default;
+ background-color: #3071a9;
+ border-color: #428bca;
+}
+
+.pagination>.disabled>span,
+.pagination>.disabled>span:hover,
+.pagination>.disabled>span:focus,
+.pagination>.disabled>a,
+.pagination>.disabled>a:hover,
+.pagination>.disabled>a:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+ border-color: #ddd;
+}
+
+.pagination-lg>li>a,
+.pagination-lg>li>span {
+ padding: 10px 16px;
+ font-size: 18px;
+}
+
+.pagination-lg>li:first-child>a,
+.pagination-lg>li:first-child>span {
+ border-top-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+}
+
+.pagination-lg>li:last-child>a,
+.pagination-lg>li:last-child>span {
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+}
+
+.pagination-sm>li>a,
+.pagination-sm>li>span {
+ padding: 5px 10px;
+ font-size: 12px;
+}
+
+.pagination-sm>li:first-child>a,
+.pagination-sm>li:first-child>span {
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.pagination-sm>li:last-child>a,
+.pagination-sm>li:last-child>span {
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ text-align: center;
+ list-style: none;
+}
+
+.pager li {
+ display: inline;
+}
+
+.pager li>a,
+.pager li>span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 15px;
+}
+
+.pager li>a:hover,
+.pager li>a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+
+.pager .next>a,
+.pager .next>span {
+ float: right;
+}
+
+.pager .previous>a,
+.pager .previous>span {
+ float: left;
+}
+
+.pager .disabled>a,
+.pager .disabled>a:hover,
+.pager .disabled>a:focus,
+.pager .disabled>span {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+}
+
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+
+a.label:hover,
+a.label:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.label:empty {
+ display: none;
+}
+
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+
+.label-default {
+ background-color: #777;
+}
+
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #5e5e5e;
+}
+
+.label-primary {
+ background-color: #428bca;
+}
+
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #3071a9;
+}
+
+.label-success {
+ background-color: #5cb85c;
+}
+
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #449d44;
+}
+
+.label-info {
+ background-color: #5bc0de;
+}
+
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #31b0d5;
+}
+
+.label-warning {
+ background-color: #f0ad4e;
+}
+
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #ec971f;
+}
+
+.label-danger {
+ background-color: #d9534f;
+}
+
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #c9302c;
+}
+
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 12px;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ background-color: #777;
+ border-radius: 10px;
+}
+
+.badge:empty {
+ display: none;
+}
+
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+
+.btn-xs .badge {
+ top: 0;
+ padding: 1px 5px;
+}
+
+a.badge:hover,
+a.badge:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+a.list-group-item.active>.badge,
+.nav-pills>.active>a>.badge {
+ color: #3071a9;
+ background-color: #fff;
+}
+
+.nav-pills>li>a>.badge {
+ margin-left: 3px;
+}
+
+.jumbotron {
+ margin-bottom: 10px;
+ color: inherit;
+ background-color: #eee;
+}
+
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 21px;
+ font-weight: 200;
+}
+
+.jumbotron>hr {
+ border-top-color: #d5d5d5;
+}
+
+.container .jumbotron,
+.container-fluid .jumbotron {
+ border-radius: 6px;
+}
+
+.jumbotron .container {
+ max-width: 100%;
+}
+
+/*@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding: 48px 0;
+ }
+ .container .jumbotron {
+ padding-right: 60px;
+ padding-left: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 63px;
+ }
+}*/
+
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 20px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ -webkit-transition: border .2s ease-in-out;
+ -o-transition: border .2s ease-in-out;
+ transition: border .2s ease-in-out;
+}
+
+.thumbnail>img,
+.thumbnail a>img {
+ margin-right: auto;
+ margin-left: auto;
+}
+
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #428bca;
+}
+
+.thumbnail .caption {
+ padding: 9px;
+ color: #333;
+}
+
+.alert {
+ padding: 10px;
+ margin-bottom: 5px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+
+.alert .alert-link {
+ font-weight: bold;
+}
+
+.alert>p,
+.alert>ul {
+ margin-bottom: 0;
+}
+
+.alert>p+p {
+ margin-top: 5px;
+}
+
+.alert-dismissable,
+.alert-dismissible {
+ padding-right: 35px;
+}
+
+.alert-dismissable .close,
+.alert-dismissible .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+
+.alert-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.alert-success hr {
+ border-top-color: #c9e2b3;
+}
+
+.alert-success .alert-link {
+ color: #2b542c;
+}
+
+.alert-info {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
+.alert-info hr {
+ border-top-color: #a6e1ec;
+}
+
+.alert-info .alert-link {
+ color: #245269;
+}
+
+.alert-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+
+.alert-warning hr {
+ border-top-color: #f7e1b5;
+}
+
+.alert-warning .alert-link {
+ color: #66512c;
+}
+
+.alert-danger {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+
+.alert-danger hr {
+ border-top-color: #e4b9c0;
+}
+
+.alert-danger .alert-link {
+ color: #843534;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+
+ to {
+ background-position: 0 0;
+ }
+}
+
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+
+ to {
+ background-position: 0 0;
+ }
+}
+
+.progress {
+ height: 20px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+
+.progress-bar {
+ float: left;
+ width: 0;
+ height: 100%;
+ font-size: 12px;
+ line-height: 20px;
+ color: #fff;
+ text-align: center;
+ background-color: #428bca;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+ -webkit-transition: width .6s ease;
+ -o-transition: width .6s ease;
+ transition: width .6s ease;
+}
+
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+
+.progress.active .progress-bar,
+.progress-bar.active {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+
+.progress-bar-success {
+ background-color: #5cb85c;
+}
+
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+
+.media {
+ margin-top: 15px;
+}
+
+.media:first-child {
+ margin-top: 0;
+}
+
+.media-right,
+.media>.pull-right {
+ padding-left: 10px;
+}
+
+.media-left,
+.media>.pull-left {
+ padding-right: 10px;
+}
+
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.media-middle {
+ vertical-align: middle;
+}
+
+.media-bottom {
+ vertical-align: bottom;
+}
+
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-group {
+ padding-left: 0;
+ margin-bottom: 20px;
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+
+.list-group-item:first-child {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+
+.list-group-item>.badge {
+ float: right;
+}
+
+.list-group-item>.badge+.badge {
+ margin-right: 5px;
+}
+
+a.list-group-item {
+ color: #555;
+}
+
+a.list-group-item .list-group-item-heading {
+ color: #333;
+}
+
+a.list-group-item:hover,
+a.list-group-item:focus {
+ color: #555;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #eee;
+}
+
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #777;
+}
+
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #fff;
+ background-color: #428bca;
+ border-color: #428bca;
+}
+
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading>small,
+.list-group-item.active:hover .list-group-item-heading>small,
+.list-group-item.active:focus .list-group-item-heading>small,
+.list-group-item.active .list-group-item-heading>.small,
+.list-group-item.active:hover .list-group-item-heading>.small,
+.list-group-item.active:focus .list-group-item-heading>.small {
+ color: inherit;
+}
+
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #e1edf7;
+}
+
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+}
+
+a.list-group-item-success {
+ color: #3c763d;
+}
+
+a.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-success:hover,
+a.list-group-item-success:focus {
+ color: #3c763d;
+ background-color: #d0e9c6;
+}
+
+a.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
+}
+
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
+}
+
+a.list-group-item-info {
+ color: #31708f;
+}
+
+a.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-info:hover,
+a.list-group-item-info:focus {
+ color: #31708f;
+ background-color: #c4e3f3;
+}
+
+a.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
+}
+
+.list-group-item-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+}
+
+a.list-group-item-warning {
+ color: #8a6d3b;
+}
+
+a.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-warning:hover,
+a.list-group-item-warning:focus {
+ color: #8a6d3b;
+ background-color: #faf2cc;
+}
+
+a.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus {
+ color: #fff;
+ background-color: #8a6d3b;
+ border-color: #8a6d3b;
+}
+
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+
+a.list-group-item-danger {
+ color: #a94442;
+}
+
+a.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-danger:hover,
+a.list-group-item-danger:focus {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+
+a.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus {
+ color: #fff;
+ background-color: #a94442;
+ border-color: #a94442;
+}
+
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+
+.panel {
+ margin-bottom: 20px;
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+
+.panel-body {
+ padding: 15px;
+}
+
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+ cursor: pointer;
+}
+
+.panel-heading>.dropdown .dropdown-toggle {
+ color: inherit;
+}
+
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 16px;
+ color: inherit;
+}
+
+.panel-title>a {
+ color: inherit;
+}
+
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.panel>.list-group,
+.panel>.panel-collapse>.list-group {
+ margin-bottom: 0;
+}
+
+.panel>.list-group .list-group-item,
+.panel>.panel-collapse>.list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+}
+
+.panel>.list-group:first-child .list-group-item:first-child,
+.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+
+.panel>.list-group:last-child .list-group-item:last-child,
+.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.panel-heading+.list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+
+.list-group+.panel-footer {
+ border-top-width: 0;
+}
+
+.panel>.table,
+.panel>.table-responsive>.table,
+.panel>.panel-collapse>.table {
+ margin-bottom: 0;
+}
+
+.panel>.table caption,
+.panel>.table-responsive>.table caption,
+.panel>.panel-collapse>.table caption {
+ padding-right: 15px;
+ padding-left: 15px;
+}
+
+.panel>.table:first-child,
+.panel>.table-responsive:first-child>.table:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+
+.panel>.table:first-child>thead:first-child>tr:first-child,
+.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,
+.panel>.table:first-child>tbody:first-child>tr:first-child,
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+
+.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,
+.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,
+.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,
+.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,
+.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,
+.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child {
+ border-top-left-radius: 3px;
+}
+
+.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,
+.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,
+.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,
+.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,
+.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,
+.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child {
+ border-top-right-radius: 3px;
+}
+
+.panel>.table:last-child,
+.panel>.table-responsive:last-child>.table:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.panel>.table:last-child>tbody:last-child>tr:last-child,
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,
+.panel>.table:last-child>tfoot:last-child>tr:last-child,
+.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,
+.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,
+.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,
+.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,
+.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,
+.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child {
+ border-bottom-left-radius: 3px;
+}
+
+.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,
+.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,
+.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,
+.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,
+.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,
+.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child {
+ border-bottom-right-radius: 3px;
+}
+
+.panel>.panel-body+.table,
+.panel>.panel-body+.table-responsive,
+.panel>.table+.panel-body,
+.panel>.table-responsive+.panel-body {
+ border-top: 1px solid #ddd;
+}
+
+.panel>.table>tbody:first-child>tr:first-child th,
+.panel>.table>tbody:first-child>tr:first-child td {
+ border-top: 0;
+}
+
+.panel>.table-bordered,
+.panel>.table-responsive>.table-bordered {
+ border: 0;
+}
+
+.panel>.table-bordered>thead>tr>th:first-child,
+.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,
+.panel>.table-bordered>tbody>tr>th:first-child,
+.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,
+.panel>.table-bordered>tfoot>tr>th:first-child,
+.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,
+.panel>.table-bordered>thead>tr>td:first-child,
+.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,
+.panel>.table-bordered>tbody>tr>td:first-child,
+.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,
+.panel>.table-bordered>tfoot>tr>td:first-child,
+.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child {
+ border-left: 0;
+}
+
+.panel>.table-bordered>thead>tr>th:last-child,
+.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,
+.panel>.table-bordered>tbody>tr>th:last-child,
+.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,
+.panel>.table-bordered>tfoot>tr>th:last-child,
+.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,
+.panel>.table-bordered>thead>tr>td:last-child,
+.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,
+.panel>.table-bordered>tbody>tr>td:last-child,
+.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,
+.panel>.table-bordered>tfoot>tr>td:last-child,
+.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child {
+ border-right: 0;
+}
+
+.panel>.table-bordered>thead>tr:first-child>td,
+.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,
+.panel>.table-bordered>tbody>tr:first-child>td,
+.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,
+.panel>.table-bordered>thead>tr:first-child>th,
+.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,
+.panel>.table-bordered>tbody>tr:first-child>th,
+.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th {
+ border-bottom: 0;
+}
+
+.panel>.table-bordered>tbody>tr:last-child>td,
+.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,
+.panel>.table-bordered>tfoot>tr:last-child>td,
+.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,
+.panel>.table-bordered>tbody>tr:last-child>th,
+.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,
+.panel>.table-bordered>tfoot>tr:last-child>th,
+.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th {
+ border-bottom: 0;
+}
+
+.panel>.table-responsive {
+ margin-bottom: 0;
+ border: 0;
+}
+
+.panel-group {
+ margin-bottom: 20px;
+}
+
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 4px;
+}
+
+.panel-group .panel+.panel {
+ margin-top: 5px;
+}
+
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+
+.panel-group .panel-heading+.panel-collapse>.panel-body,
+.panel-group .panel-heading+.panel-collapse>.list-group {
+ border-top: 1px solid #ddd;
+}
+
+.panel-group .panel-footer {
+ border-top: 0;
+}
+
+.panel-group .panel-footer+.panel-collapse .panel-body {
+ border-bottom: 1px solid #ddd;
+}
+
+.panel-default {
+ border-color: #ddd;
+}
+
+.panel-default>.panel-heading {
+ color: #333;
+ background-color: #f5f5f5;
+ border-color: #ddd;
+}
+
+.panel-default>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #ddd;
+}
+
+.panel-default>.panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333;
+}
+
+.panel-default>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #ddd;
+}
+
+.panel-primary {
+ border-color: #428bca;
+}
+
+.panel-primary>.panel-heading {
+ color: #fff;
+ background-color: #428bca;
+ border-color: #428bca;
+}
+
+.panel-primary>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #428bca;
+}
+
+.panel-primary>.panel-heading .badge {
+ color: #428bca;
+ background-color: #fff;
+}
+
+.panel-primary>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #428bca;
+}
+
+.panel-success {
+ border-color: #d6e9c6;
+}
+
+.panel-success>.panel-heading {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.panel-success>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #d6e9c6;
+}
+
+.panel-success>.panel-heading .badge {
+ color: #dff0d8;
+ background-color: #3c763d;
+}
+
+.panel-success>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #d6e9c6;
+}
+
+.panel-info {
+ border-color: #bce8f1;
+}
+
+.panel-info>.panel-heading {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
+.panel-info>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #bce8f1;
+}
+
+.panel-info>.panel-heading .badge {
+ color: #d9edf7;
+ background-color: #31708f;
+}
+
+.panel-info>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #bce8f1;
+}
+
+.panel-warning {
+ border-color: #faebcc;
+}
+
+.panel-warning>.panel-heading {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+
+.panel-warning>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #faebcc;
+}
+
+.panel-warning>.panel-heading .badge {
+ color: #fcf8e3;
+ background-color: #8a6d3b;
+}
+
+.panel-warning>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #faebcc;
+}
+
+.panel-danger {
+ border-color: #ebccd1;
+}
+
+.panel-danger>.panel-heading {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+
+.panel-danger>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #ebccd1;
+}
+
+.panel-danger>.panel-heading .badge {
+ color: #f2dede;
+ background-color: #a94442;
+}
+
+.panel-danger>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #ebccd1;
+}
+
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+}
+
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 0;
+}
+
+.embed-responsive.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+
+.embed-responsive.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, .15);
+}
+
+.well-lg {
+ padding: 24px;
+ border-radius: 6px;
+}
+
+.well-sm {
+ padding: 9px;
+ border-radius: 3px;
+}
+
+.close {
+ float: right;
+ font-size: 21px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ filter: alpha(opacity=20);
+ opacity: .2;
+}
+
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+
+button.close {
+ -webkit-appearance: none;
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+}
+
+.modal-open {
+ overflow: hidden;
+}
+
+.modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ display: none;
+ overflow: hidden;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
+}
+
+.modal.fade .modal-dialog {
+ -webkit-transition: -webkit-transform .3s ease-out;
+ -o-transition: -o-transform .3s ease-out;
+ transition: transform .3s ease-out;
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+}
+
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+}
+
+.modal-content {
+ position: relative;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ outline: 0;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background-color: #000;
+}
+
+.modal-backdrop.fade {
+ filter: alpha(opacity=0);
+ opacity: 0;
+}
+
+.modal-backdrop.in {
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+
+.modal-header {
+ min-height: 16.42857143px;
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+.modal-header .close {
+ margin-top: -2px;
+}
+
+.modal-title {
+ margin: 0;
+ line-height: 1.42857143;
+}
+
+.modal-body {
+ position: relative;
+ padding: 15px;
+}
+
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+
+.modal-footer .btn+.btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+
+.modal-footer .btn-group .btn+.btn {
+ margin-left: -1px;
+}
+
+.modal-footer .btn-block+.btn-block {
+ margin-left: 0;
+}
+
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+
+@media (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ }
+
+ .modal-sm {
+ width: 300px;
+ }
+}
+
+@media (min-width: 992px) {
+ .modal-lg {
+ width: 900px;
+ }
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-size: 12px;
+ line-height: 1.4;
+ visibility: visible;
+ filter: alpha(opacity=0);
+ opacity: 0;
+}
+
+.tooltip.in {
+ filter: alpha(opacity=90);
+ opacity: .9;
+}
+
+.tooltip.top {
+ padding: 5px 0;
+ margin-top: -3px;
+}
+
+.tooltip.right {
+ padding: 0 5px;
+ margin-left: 3px;
+}
+
+.tooltip.bottom {
+ padding: 5px 0;
+ margin-top: 3px;
+}
+
+.tooltip.left {
+ padding: 0 5px;
+ margin-left: -3px;
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #fff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000;
+ border-radius: 4px;
+}
+
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+
+.tooltip.top-left .tooltip-arrow {
+ bottom: 0;
+ left: 5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+
+.tooltip.top-right .tooltip-arrow {
+ right: 5px;
+ bottom: 0;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000;
+}
+
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000;
+}
+
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ left: 5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ right: 5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: left;
+ white-space: normal;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+}
+
+.popover.top {
+ margin-top: -10px;
+}
+
+.popover.right {
+ margin-left: 10px;
+}
+
+.popover.bottom {
+ margin-top: 10px;
+}
+
+.popover.left {
+ margin-left: -10px;
+}
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
+}
+
+.popover-content {
+ padding: 9px 14px;
+}
+
+.popover>.arrow,
+.popover>.arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.popover>.arrow {
+ border-width: 11px;
+}
+
+.popover>.arrow:after {
+ content: "";
+ border-width: 10px;
+}
+
+.popover.top>.arrow {
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-color: #999;
+ border-top-color: rgba(0, 0, 0, .25);
+ border-bottom-width: 0;
+}
+
+.popover.top>.arrow:after {
+ bottom: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-color: #fff;
+ border-bottom-width: 0;
+}
+
+.popover.right>.arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-right-color: #999;
+ border-right-color: rgba(0, 0, 0, .25);
+ border-left-width: 0;
+}
+
+.popover.right>.arrow:after {
+ bottom: -10px;
+ left: 1px;
+ content: " ";
+ border-right-color: #fff;
+ border-left-width: 0;
+}
+
+.popover.bottom>.arrow {
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999;
+ border-bottom-color: rgba(0, 0, 0, .25);
+}
+
+.popover.bottom>.arrow:after {
+ top: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-width: 0;
+ border-bottom-color: #fff;
+}
+
+.popover.left>.arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999;
+ border-left-color: rgba(0, 0, 0, .25);
+}
+
+.popover.left>.arrow:after {
+ right: 1px;
+ bottom: -10px;
+ content: " ";
+ border-right-width: 0;
+ border-left-color: #fff;
+}
+
+.carousel {
+ position: relative;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+
+.carousel-inner>.item {
+ position: relative;
+ display: none;
+ -webkit-transition: .6s ease-in-out left;
+ -o-transition: .6s ease-in-out left;
+ transition: .6s ease-in-out left;
+}
+
+.carousel-inner>.item>img,
+.carousel-inner>.item>a>img {
+ line-height: 1;
+}
+
+@media all and (transform-3d),
+(-webkit-transform-3d) {
+ .carousel-inner>.item {
+ -webkit-transition: -webkit-transform .6s ease-in-out;
+ -o-transition: -o-transform .6s ease-in-out;
+ transition: transform .6s ease-in-out;
+
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000;
+ perspective: 1000;
+ }
+
+ .carousel-inner>.item.next,
+ .carousel-inner>.item.active.right {
+ left: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+
+ .carousel-inner>.item.prev,
+ .carousel-inner>.item.active.left {
+ left: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+
+ .carousel-inner>.item.next.left,
+ .carousel-inner>.item.prev.right,
+ .carousel-inner>.item.active {
+ left: 0;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+
+.carousel-inner>.active,
+.carousel-inner>.next,
+.carousel-inner>.prev {
+ display: block;
+}
+
+.carousel-inner>.active {
+ left: 0;
+}
+
+.carousel-inner>.next,
+.carousel-inner>.prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+
+.carousel-inner>.next {
+ left: 100%;
+}
+
+.carousel-inner>.prev {
+ left: -100%;
+}
+
+.carousel-inner>.next.left,
+.carousel-inner>.prev.right {
+ left: 0;
+}
+
+.carousel-inner>.active.left {
+ left: -100%;
+}
+
+.carousel-inner>.active.right {
+ left: 100%;
+}
+
+.carousel-control {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 15%;
+ font-size: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+ background-repeat: repeat-x;
+}
+
+.carousel-control.right {
+ right: 0;
+ left: auto;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+ background-repeat: repeat-x;
+}
+
+.carousel-control:hover,
+.carousel-control:focus {
+ color: #fff;
+ text-decoration: none;
+ filter: alpha(opacity=90);
+ outline: 0;
+ opacity: .9;
+}
+
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+}
+
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+}
+
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
+}
+
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ font-family: serif;
+}
+
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ padding-left: 0;
+ margin-left: -30%;
+ text-align: center;
+ list-style: none;
+}
+
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+ border: 1px solid #fff;
+ border-radius: 10px;
+}
+
+.carousel-indicators .active {
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ background-color: #fff;
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 20px;
+ left: 15%;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+
+.carousel-caption .btn {
+ text-shadow: none;
+}
+
+/*
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
+ .carousel-caption {
+ right: 20%;
+ left: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+*/
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical>.btn-group:before,
+.btn-group-vertical>.btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ content: " ";
+}
+
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical>.btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+ clear: both;
+}
+
+.center-block {
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.pull-right {
+ float: right !important;
+}
+
+.pull-left {
+ float: left !important;
+}
+
+.hide {
+ display: none !important;
+}
+
+.show {
+ display: block !important;
+}
+
+.invisible {
+ visibility: hidden;
+}
+
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.hidden {
+ display: none !important;
+ visibility: hidden !important;
+}
+
+.affix {
+ position: fixed;
+}
+
+@-ms-viewport {
+ width: device-width;
+}
+
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
+}
+
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+
+/*
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+}
+*/
+.visible-print-block {
+ display: none !important;
+}
+
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
+}
+
+.visible-print-inline {
+ display: none !important;
+}
+
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
+}
+
+.visible-print-inline-block {
+ display: none !important;
+}
+
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
+}
+
+@media print {
+ .hidden-print {
+ display: none !important;
+ }
+}
diff --git a/gn2/wqflask/static/new/css/box_plot.css b/gn2/wqflask/static/new/css/box_plot.css
new file mode 100644
index 00000000..4c743b33
--- /dev/null
+++ b/gn2/wqflask/static/new/css/box_plot.css
@@ -0,0 +1,20 @@
+.box {
+ font: 10px sans-serif;
+}
+
+.box line,
+.box rect,
+.box circle {
+ fill: #fff;
+ stroke: #000;
+ stroke-width: 1.5px;
+}
+
+.box .center {
+ stroke-dasharray: 3,3;
+}
+
+.box .outlier {
+ fill: none;
+ stroke: #ccc;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/broken_links.css b/gn2/wqflask/static/new/css/broken_links.css
new file mode 100644
index 00000000..676f32d9
--- /dev/null
+++ b/gn2/wqflask/static/new/css/broken_links.css
@@ -0,0 +1,5 @@
+
+.broken_link{
+ color:red;
+ text-decoration: underline;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/colorbox.css b/gn2/wqflask/static/new/css/colorbox.css
new file mode 100644
index 00000000..8b9fb388
--- /dev/null
+++ b/gn2/wqflask/static/new/css/colorbox.css
@@ -0,0 +1,238 @@
+/*
+ Colorbox Core Style:
+ The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox,
+#cboxOverlay,
+#cboxWrapper {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 9999;
+ overflow: hidden;
+}
+
+#cboxOverlay {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+
+#cboxMiddleLeft,
+#cboxBottomLeft {
+ clear: left;
+}
+
+#cboxContent {
+ position: relative;
+}
+
+#cboxLoadedContent {
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+#cboxTitle {
+ margin: 0;
+}
+
+#cboxLoadingOverlay,
+#cboxLoadingGraphic {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+#cboxPrevious,
+#cboxNext,
+#cboxClose,
+#cboxSlideshow {
+ cursor: pointer;
+}
+
+.cboxPhoto {
+ float: left;
+ margin: auto;
+ border: 0;
+ display: block;
+ max-width: none;
+ -ms-interpolation-mode: bicubic;
+}
+
+.cboxIframe {
+ width: 100%;
+ height: 100%;
+ display: block;
+ border: 0;
+}
+
+#colorbox,
+#cboxContent,
+#cboxLoadedContent {
+ box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+}
+
+/*
+ User Style:
+ Change the following styles to modify the appearance of Colorbox. They are
+ ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay {
+ background: #fff;
+}
+
+#colorbox {
+ outline: 0;
+}
+
+#cboxTopLeft {
+ width: 25px;
+ height: 25px;
+ background: url(images/border1.png) no-repeat 0 0;
+}
+
+#cboxTopCenter {
+ height: 25px;
+ background: url(images/border1.png) repeat-x 0 -50px;
+}
+
+#cboxTopRight {
+ width: 25px;
+ height: 25px;
+ background: url(images/border1.png) no-repeat -25px 0;
+}
+
+#cboxBottomLeft {
+ width: 25px;
+ height: 25px;
+ background: url(images/border1.png) no-repeat 0 -25px;
+}
+
+#cboxBottomCenter {
+ height: 25px;
+ background: url(images/border1.png) repeat-x 0 -75px;
+}
+
+#cboxBottomRight {
+ width: 25px;
+ height: 25px;
+ background: url(images/border1.png) no-repeat -25px -25px;
+}
+
+#cboxMiddleLeft {
+ width: 25px;
+ background: url(images/border2.png) repeat-y 0 0;
+}
+
+#cboxMiddleRight {
+ width: 25px;
+ background: url(images/border2.png) repeat-y -25px 0;
+}
+
+#cboxContent {
+ background: #fff;
+ overflow: hidden;
+}
+
+.cboxIframe {
+ background: #fff;
+}
+
+#cboxError {
+ padding: 50px;
+ border: 1px solid #ccc;
+}
+
+#cboxLoadedContent {
+ margin-bottom: 20px;
+}
+
+#cboxTitle {
+ position: absolute;
+ bottom: 0px;
+ left: 0;
+ text-align: center;
+ width: 100%;
+ color: #999;
+}
+
+#cboxCurrent {
+ position: absolute;
+ bottom: 0px;
+ left: 100px;
+ color: #999;
+}
+
+#cboxLoadingOverlay {
+ background: #fff url(images/loading.gif) no-repeat 5px 5px;
+}
+
+/* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+#cboxPrevious,
+#cboxNext,
+#cboxSlideshow,
+#cboxClose {
+ border: 0;
+ padding: 0;
+ margin: 0;
+ overflow: visible;
+ width: auto;
+ background: none;
+}
+
+/* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+#cboxPrevious:active,
+#cboxNext:active,
+#cboxSlideshow:active,
+#cboxClose:active {
+ outline: 0;
+}
+
+#cboxSlideshow {
+ position: absolute;
+ bottom: 0px;
+ right: 42px;
+ color: #444;
+}
+
+#cboxPrevious {
+ position: absolute;
+ bottom: 0px;
+ left: 0;
+ color: #444;
+}
+
+#cboxNext {
+ position: absolute;
+ bottom: 0px;
+ left: 63px;
+ color: #444;
+}
+
+#cboxClose {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ display: block;
+ color: #444;
+}
+
+/*
+ The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
+ when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
+ See: http://jacklmoore.com/notes/ie-transparency-problems/
+*/
+.cboxIE #cboxTopLeft,
+.cboxIE #cboxTopCenter,
+.cboxIE #cboxTopRight,
+.cboxIE #cboxBottomLeft,
+.cboxIE #cboxBottomCenter,
+.cboxIE #cboxBottomRight,
+.cboxIE #cboxMiddleLeft,
+.cboxIE #cboxMiddleRight {
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF, endColorstr=#00FFFFFF);
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/corr_matrix.css b/gn2/wqflask/static/new/css/corr_matrix.css
new file mode 100644
index 00000000..cd2b0a80
--- /dev/null
+++ b/gn2/wqflask/static/new/css/corr_matrix.css
@@ -0,0 +1,30 @@
+.vertical_label {
+ -webkit-transform: rotate(-90deg);
+ -moz-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ -o-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ color: #000
+ font-size: 22px;
+ height: 50px;
+ width: 100px;
+ float: left;
+}
+
+.chart {
+
+}
+
+.main text {
+ font: 10px sans-serif;
+}
+
+.axis line, .axis path {
+ shape-rendering: crispEdges;
+ stroke: black;
+ fill: none;
+}
+
+circle {
+ fill: steelblue;
+}
diff --git a/gn2/wqflask/static/new/css/corr_scatter_plot.css b/gn2/wqflask/static/new/css/corr_scatter_plot.css
new file mode 100644
index 00000000..a2ebb252
--- /dev/null
+++ b/gn2/wqflask/static/new/css/corr_scatter_plot.css
@@ -0,0 +1,41 @@
+.nvd3 .nv-axis.nv-x text {
+ font-size: 16px;
+ font-weight: normal;
+ fill: black;
+}
+
+.nvd3 .nv-axis.nv-y text {
+ font-size: 16px;
+ font-weight: normal;
+ fill: black;
+}
+
+.nv-x .nv-axis g path.domain {
+ stroke: black;
+ stroke-width: 2;
+}
+
+.nv-y .nv-axis g path.domain {
+ stroke: black;
+ stroke-width: 2;
+}
+
+.nvd3 .nv-axis.nv-x path.domain {
+ stroke-opacity: 1;
+}
+
+.nvd3 .nv-axis.nv-y path.domain {
+ stroke-opacity: 1;
+}
+
+line.nv-regLine {
+ stroke: red;
+ stroke-width: 1;
+}
+
+.nv-axisMin-x,
+.nv-axisMax-x,
+.nv-axisMin-y,
+.nv-axisMax-y {
+ display: none;
+}
diff --git a/gn2/wqflask/static/new/css/corr_scatter_plot2.css b/gn2/wqflask/static/new/css/corr_scatter_plot2.css
new file mode 100644
index 00000000..a2ebb252
--- /dev/null
+++ b/gn2/wqflask/static/new/css/corr_scatter_plot2.css
@@ -0,0 +1,41 @@
+.nvd3 .nv-axis.nv-x text {
+ font-size: 16px;
+ font-weight: normal;
+ fill: black;
+}
+
+.nvd3 .nv-axis.nv-y text {
+ font-size: 16px;
+ font-weight: normal;
+ fill: black;
+}
+
+.nv-x .nv-axis g path.domain {
+ stroke: black;
+ stroke-width: 2;
+}
+
+.nv-y .nv-axis g path.domain {
+ stroke: black;
+ stroke-width: 2;
+}
+
+.nvd3 .nv-axis.nv-x path.domain {
+ stroke-opacity: 1;
+}
+
+.nvd3 .nv-axis.nv-y path.domain {
+ stroke-opacity: 1;
+}
+
+line.nv-regLine {
+ stroke: red;
+ stroke-width: 1;
+}
+
+.nv-axisMin-x,
+.nv-axisMax-x,
+.nv-axisMin-y,
+.nv-axisMax-y {
+ display: none;
+}
diff --git a/gn2/wqflask/static/new/css/d3-tip.min.css b/gn2/wqflask/static/new/css/d3-tip.min.css
new file mode 100644
index 00000000..3d253caf
--- /dev/null
+++ b/gn2/wqflask/static/new/css/d3-tip.min.css
@@ -0,0 +1 @@
+.d3-tip{line-height:1;font-weight:bold;padding:12px;background:rgba(0,0,0,0.8);color:#fff;border-radius:2px;pointer-events:none}.d3-tip:after{box-sizing:border-box;display:inline;font-size:10px;width:100%;line-height:1;color:rgba(0,0,0,0.8);position:absolute;pointer-events:none}.d3-tip.n:after{content:"\25BC";margin:-1px 0 0 0;top:100%;left:0;text-align:center}.d3-tip.e:after{content:"\25C0";margin:-4px 0 0 0;top:50%;left:-8px}.d3-tip.s:after{content:"\25B2";margin:0 0 1px 0;top:-8px;left:0;text-align:center}.d3-tip.w:after{content:"\25B6";margin:-4px 0 0 -1px;top:50%;left:100%}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/d3panels.min.css b/gn2/wqflask/static/new/css/d3panels.min.css
new file mode 100644
index 00000000..7db7b91f
--- /dev/null
+++ b/gn2/wqflask/static/new/css/d3panels.min.css
@@ -0,0 +1 @@
+svg.qtlcharts,svg.d3panels{font-family:sans-serif;font-size:11pt}svg.qtlcharts .title text,svg.d3panels .title text{dominant-baseline:middle;fill:#0074d9;text-anchor:middle}svg.qtlcharts .y.axis text,svg.d3panels .y.axis text{dominant-baseline:middle;text-anchor:end}svg.qtlcharts .y.axis text.title,svg.d3panels .y.axis text.title{text-anchor:middle;fill:slateblue}svg.qtlcharts .x.axis text,svg.d3panels .x.axis text{dominant-baseline:hanging;text-anchor:middle}svg.qtlcharts .x.axis text.title,svg.d3panels .x.axis text.title{fill:slateblue}svg.qtlcharts line.axis.grid,svg.d3panels line.axis.grid{fill:none;stroke-width:1;pointer-events:none}svg.qtlcharts line.x.axis.grid,svg.d3panels line.x.axis.grid{stroke:#c8c8c8;stroke-width:3}svg.qtlcharts line.y.axis.grid,svg.d3panels line.y.axis.grid{stroke:white}svg.qtlcharts .extent,svg.d3panels .extent{fill:#cac;opacity:.3}svg.qtlcharts circle.selected,svg.d3panels circle.selected{fill:hotpink;opacity:1}svg.qtlcharts a,svg.d3panels a{color:#08c;text-decoration:none}svg.qtlcharts a:hover,svg.d3panels a:hover{color:#333;text-decoration:underline}svg.qtlcharts text.crosstab,svg.d3panels text.crosstab{dominant-baseline:middle;text-anchor:end}svg.qtlcharts text.crosstabtitle,svg.d3panels text.crosstabtitle{dominant-baseline:middle;text-anchor:center}.caption{font-family:Sans-serif;font-size:11pt;margin-left:60px;width:600px}div.d3panels-tooltip{position:absolute;text-align:center;width:max-content;height:min-content;padding:5px;font-size:16px;font-family:sans-serif;font-weight:bold;background:darkslateblue;color:white;text-align:center;border:0;border-radius:3px;pointer-events:none;z-index:999}div.d3panels-tooltip-tri{position:absolute;text-align:center;width:32px;height:32px;padding:0;font-size:16px;font-family:sans-serif;font-weight:bold;background:#ffffff00;color:darkslateblue;text-align:center;border:0;pointer-events:none;z-index:998}div.error p{font-family:sans-serif;font-size:16pt;font-weight:bold;padding:5px}div.qtlcharts{font-family:sans-serif;font-size:12pt}div.searchbox{font-family:Sans-serif;font-size:12pt;margin-left:60px}div.searchbox.inactive input{color:#888}
diff --git a/gn2/wqflask/static/new/css/docs.css b/gn2/wqflask/static/new/css/docs.css
new file mode 100644
index 00000000..665559e6
--- /dev/null
+++ b/gn2/wqflask/static/new/css/docs.css
@@ -0,0 +1,1080 @@
+/* Add additional stylesheets below
+-------------------------------------------------- */
+/*
+ Bootstrap's documentation styles
+ Special styles for presenting Bootstrap's documentation and examples
+*/
+
+
+
+/* Body and structure
+-------------------------------------------------- */
+
+body {
+ position: relative;
+ padding-top: 0px;
+}
+
+/* Code in headings */
+h3 code {
+ font-size: 14px;
+ font-weight: normal;
+}
+
+
+
+/* Tweak navbar brand link to be super sleek
+-------------------------------------------------- */
+/*
+body > .navbar {
+ font-size: 12px;
+ font-weight: bold;
+}
+*/
+
+/* Change the docs' brand */
+
+body>.navbar .navbar-brand {
+ padding-right: 20px;
+ padding-left: 20px;
+ margin-left: 20px;
+ float: left;
+ font-weight: bold;
+ color: #ffffff;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .1), 0 0 30px rgba(255, 255, 255, .125);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ transition: all .2s linear;
+}
+
+body>.navbar .brand:hover {
+ text-decoration: none;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .1), 0 0 30px rgba(255, 255, 255, .4);
+}
+
+
+/* Sections
+-------------------------------------------------- */
+
+/* padding for in-page bookmarks and fixed navbar */
+section {
+ padding-top: 0px;
+}
+
+section>.page-header,
+section>.lead {
+ color: #5a5a5a;
+}
+
+section>ul li {
+ margin-bottom: 5px;
+}
+
+/* Separators (hr) */
+.bs-docs-separator {
+ margin: 40px 0 39px;
+}
+
+/* Faded out hr */
+hr.soften {
+ height: 1px;
+ margin: 70px 0;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, .1), rgba(0, 0, 0, 0));
+ background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, .1), rgba(0, 0, 0, 0));
+ background-image: -ms-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, .1), rgba(0, 0, 0, 0));
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0), rgba(0, 0, 0, .1), rgba(0, 0, 0, 0));
+ border: 0;
+}
+
+
+
+/* Jumbotrons
+-------------------------------------------------- */
+
+/* Base class
+------------------------- */
+.jumbotron {
+ position: relative;
+ padding: 0px 0;
+ color: black;
+ text-align: left;
+ text-shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 0 30px rgba(0, 0, 0, .075);
+ background: #d5d5d5;
+ /* Old browsers */
+
+}
+
+.jumbotron h1 {
+ font-size: 60px;
+ font-weight: bold;
+ letter-spacing: -1px;
+ line-height: 1;
+}
+
+.jumbotron p {
+ font-size: 20px;
+ font-weight: 300;
+ line-height: 20px;
+ margin-bottom: 10px;
+}
+
+/* Link styles (used on .masthead-links as well) */
+.jumbotron a {
+ color: #336699;
+ color: rgba(255, 255, 255, .5);
+ -webkit-transition: all .2s ease-in-out;
+ -moz-transition: all .2s ease-in-out;
+ transition: all .2s ease-in-out;
+}
+
+.jumbotron a:hover {
+ color: #336699;
+ text-shadow: 0 0 10px rgba(255, 255, 255, .25);
+}
+
+/* Download button */
+.masthead .btn {
+ padding: 14px 24px;
+ font-size: 24px;
+ font-weight: 200;
+ color: #fff;
+ /* redeclare to override the `.jumbotron a` */
+ border: 0;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 5px rgba(0, 0, 0, .25);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 5px rgba(0, 0, 0, .25);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 5px rgba(0, 0, 0, .25);
+ -webkit-transition: none;
+ -moz-transition: none;
+ transition: none;
+}
+
+.masthead .btn:hover {
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 5px rgba(0, 0, 0, .25);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 5px rgba(0, 0, 0, .25);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 5px rgba(0, 0, 0, .25);
+}
+
+.masthead .btn:active {
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .1), 0 1px 0 rgba(255, 255, 255, .1);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .1), 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+
+
+/* Pattern overlay
+------------------------- */
+.jumbotron .container {
+ position: relative;
+ z-index: 2;
+}
+
+.jumbotron:after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ /*background: url(../img/bs-docs-masthead-pattern.png) repeat center center;*/
+ opacity: .4;
+}
+
+/* Masthead (docs home)
+------------------------- */
+.masthead {
+ padding: 70px 0 80px;
+ margin-bottom: 0;
+ color: #fff;
+}
+
+.masthead h1 {
+ font-size: 120px;
+ line-height: 1;
+ letter-spacing: -2px;
+}
+
+.masthead p {
+ font-size: 40px;
+ font-weight: 200;
+ line-height: 1.25;
+}
+
+/* Textual links in masthead */
+.masthead-links {
+ margin: 0;
+ list-style: none;
+}
+
+.masthead-links li {
+ display: inline;
+ padding: 0 10px;
+ color: rgba(255, 255, 255, .25);
+}
+
+/* Social proof buttons from GitHub & Twitter */
+.bs-docs-social {
+ padding: 15px 0;
+ text-align: center;
+ background-color: #f5f5f5;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #ddd;
+}
+
+/* Quick links on Home */
+.bs-docs-social-buttons {
+ margin-left: 0;
+ margin-bottom: 0;
+ padding-left: 0;
+ list-style: none;
+}
+
+.bs-docs-social-buttons li {
+ display: inline-block;
+ padding: 5px 8px;
+ line-height: 1;
+ *display: inline;
+ *zoom: 1;
+}
+
+/* Subhead (other pages)
+------------------------- */
+.subhead {
+ text-align: left;
+ border-bottom: 1px solid #ddd;
+}
+
+.subhead h1 {
+ font-size: 30px;
+}
+
+.subhead p {
+ margin-bottom: 10px;
+}
+
+.subhead .navbar {
+ display: none;
+}
+
+
+
+/* Marketing section of Overview
+-------------------------------------------------- */
+
+.marketing {
+ text-align: center;
+ color: #5a5a5a;
+}
+
+.marketing h1 {
+ margin: 60px 0 10px;
+ font-size: 60px;
+ font-weight: 200;
+ line-height: 1;
+ letter-spacing: -1px;
+}
+
+.marketing h2 {
+ font-weight: 200;
+ margin-bottom: 5px;
+}
+
+.marketing p {
+ font-size: 16px;
+ line-height: 1.5;
+}
+
+.marketing .marketing-byline {
+ margin-bottom: 40px;
+ font-size: 20px;
+ font-weight: 300;
+ line-height: 25px;
+ color: #999;
+}
+
+.marketing img {
+ display: block;
+ margin: 0 auto 30px;
+}
+
+
+
+/* Footer
+-------------------------------------------------- */
+
+.footer {
+ padding: 70px 0;
+ margin-top: 70px;
+ border-top: 1px solid #e5e5e5;
+ background-color: #f5f5f5;
+}
+
+.footer p {
+ margin-bottom: 0;
+ color: #777;
+}
+
+.footer-links {
+ margin: 10px 0;
+}
+
+.footer-links li {
+ display: inline;
+ margin-right: 10px;
+}
+
+
+
+/* Special grid styles
+-------------------------------------------------- */
+
+.show-grid {
+ margin-top: 10px;
+ margin-bottom: 20px;
+}
+
+.show-grid [class*="span"] {
+ background-color: #eee;
+ text-align: center;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ min-height: 40px;
+ line-height: 40px;
+}
+
+.show-grid:hover [class*="span"] {
+ background: #ddd;
+}
+
+.show-grid .show-grid {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.show-grid .show-grid [class*="span"] {
+ background-color: #ccc;
+}
+
+
+
+/* Mini layout previews
+-------------------------------------------------- */
+.mini-layout {
+ border: 1px solid #ddd;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+ -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+
+.mini-layout,
+.mini-layout .mini-layout-body,
+.mini-layout.fluid .mini-layout-sidebar {
+ height: 300px;
+}
+
+.mini-layout {
+ margin-bottom: 20px;
+ padding: 9px;
+}
+
+.mini-layout div {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.mini-layout .mini-layout-body {
+ background-color: #dceaf4;
+ margin: 0 auto;
+ width: 70%;
+}
+
+.mini-layout.fluid .mini-layout-sidebar,
+.mini-layout.fluid .mini-layout-header,
+.mini-layout.fluid .mini-layout-body {
+ float: left;
+}
+
+.mini-layout.fluid .mini-layout-sidebar {
+ background-color: #bbd8e9;
+ width: 20%;
+}
+
+.mini-layout.fluid .mini-layout-body {
+ width: 77.5%;
+ margin-left: 2.5%;
+}
+
+
+
+/* Download page
+-------------------------------------------------- */
+
+.download .page-header {
+ margin-top: 36px;
+}
+
+.page-header .toggle-all {
+ margin-top: 5px;
+}
+
+/* Space out h3s when following a section */
+.download h3 {
+ margin-bottom: 5px;
+}
+
+.download-builder input+h3,
+.download-builder .checkbox+h3 {
+ margin-top: 9px;
+}
+
+/* Fields for variables */
+.download-builder input[type=text] {
+ margin-bottom: 9px;
+ font-family: Menlo, Monaco, "Courier New", monospace;
+ font-size: 12px;
+ color: #d14;
+}
+
+.download-builder input[type=text]:focus {
+ background-color: #fff;
+}
+
+/* Custom, larger checkbox labels */
+.download .checkbox {
+ padding: 6px 10px 6px 25px;
+ font-size: 13px;
+ line-height: 18px;
+ color: #555;
+ background-color: #f9f9f9;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+
+.download .checkbox:hover {
+ color: #333;
+ background-color: #f5f5f5;
+}
+
+.download .checkbox small {
+ font-size: 12px;
+ color: #777;
+}
+
+/* Variables section */
+#variables label {
+ margin-bottom: 0;
+}
+
+/* Giant download button */
+.download-btn {
+ margin: 36px 0 108px;
+}
+
+#download p,
+#download h4 {
+ max-width: 50%;
+ margin: 0 auto;
+ color: #999;
+ text-align: center;
+}
+
+#download h4 {
+ margin-bottom: 0;
+}
+
+#download p {
+ margin-bottom: 18px;
+}
+
+.download-btn .btn {
+ display: block;
+ width: auto;
+ padding: 19px 24px;
+ margin-bottom: 27px;
+ font-size: 30px;
+ line-height: 1;
+ text-align: center;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+
+
+/* Misc
+-------------------------------------------------- */
+
+/* Make tables spaced out a bit more */
+h2+table,
+h3+table,
+h4+table,
+h2+.row {
+ margin-top: 5px;
+}
+
+/* Example sites showcase */
+.example-sites {
+ xmargin-left: 20px;
+}
+
+.example-sites img {
+ max-width: 100%;
+ margin: 0 auto;
+}
+
+.scrollspy-example {
+ height: 200px;
+ overflow: auto;
+ position: relative;
+}
+
+
+/* Fake the :focus state to demo it */
+.focused {
+ border-color: rgba(82, 168, 236, .8);
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .1), 0 0 8px rgba(82, 168, 236, .6);
+ -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .1), 0 0 8px rgba(82, 168, 236, .6);
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, .1), 0 0 8px rgba(82, 168, 236, .6);
+ outline: 0;
+}
+
+/* For input sizes, make them display block */
+.docs-input-sizes select,
+.docs-input-sizes input[type=text] {
+ display: block;
+ margin-bottom: 9px;
+}
+
+/* Icons
+------------------------- */
+.the-icons {
+ margin-left: 0;
+ list-style: none;
+}
+
+.the-icons li {
+ float: left;
+ width: 25%;
+ line-height: 25px;
+}
+
+.the-icons i:hover {
+ background-color: rgba(255, 0, 0, .25);
+}
+
+/* Example page
+------------------------- */
+.bootstrap-examples p {
+ font-size: 13px;
+ line-height: 18px;
+}
+
+.bootstrap-examples .thumbnail {
+ margin-bottom: 9px;
+ background-color: #fff;
+}
+
+
+
+/* Bootstrap code examples
+-------------------------------------------------- */
+
+/* Base class */
+.bs-docs-example {
+ position: relative;
+ margin: 15px 0;
+ padding: 39px 19px 14px;
+ *padding-top: 19px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+
+/* Remove spacing between an example and it's code */
+.bs-docs-example+.prettyprint {
+ margin-top: -20px;
+ padding-top: 15px;
+}
+
+/* Tweak examples
+------------------------- */
+.bs-docs-example>p:last-child {
+ margin-bottom: 0;
+}
+
+.bs-docs-example .table,
+.bs-docs-example .progress,
+.bs-docs-example .well,
+.bs-docs-example .alert,
+.bs-docs-example .hero-unit,
+.bs-docs-example .pagination,
+.bs-docs-example .navbar,
+.bs-docs-example>.nav,
+.bs-docs-example blockquote {
+ margin-bottom: 5px;
+}
+
+.bs-docs-example .pagination {
+ margin-top: 0;
+}
+
+.bs-navbar-top-example,
+.bs-navbar-bottom-example {
+ z-index: 1;
+ padding: 0;
+ height: 90px;
+ overflow: hidden;
+ /* cut the drop shadows off */
+}
+
+.bs-navbar-top-example .navbar-fixed-top,
+.bs-navbar-bottom-example .navbar-fixed-bottom {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.bs-navbar-top-example {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+.bs-navbar-top-example:after {
+ top: auto;
+ bottom: -1px;
+ -webkit-border-radius: 0 4px 0 4px;
+ -moz-border-radius: 0 4px 0 4px;
+ border-radius: 0 4px 0 4px;
+}
+
+.bs-navbar-bottom-example {
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+
+.bs-navbar-bottom-example .navbar {
+ margin-bottom: 0;
+}
+
+form.bs-docs-example {
+ padding-bottom: 19px;
+}
+
+/* Images */
+.bs-docs-example-images img {
+ margin: 10px;
+ display: inline-block;
+}
+
+/* Tooltips */
+.bs-docs-tooltip-examples {
+ text-align: center;
+ margin: 0 0 10px;
+ list-style: none;
+}
+
+.bs-docs-tooltip-examples li {
+ display: inline;
+ padding: 0 10px;
+}
+
+/* Popovers */
+.bs-docs-example-popover {
+ padding-bottom: 24px;
+ background-color: #f9f9f9;
+}
+
+.bs-docs-example-popover .popover {
+ position: relative;
+ display: block;
+ float: left;
+ width: 260px;
+ margin: 20px;
+}
+
+
+
+/* Responsive docs
+-------------------------------------------------- */
+
+/* Utility classes table
+------------------------- */
+.responsive-utilities th small {
+ display: block;
+ font-weight: normal;
+ color: #999;
+}
+
+.responsive-utilities tbody th {
+ font-weight: normal;
+}
+
+.responsive-utilities td {
+ text-align: center;
+}
+
+.responsive-utilities td.is-visible {
+ color: #468847;
+ background-color: #dff0d8 !important;
+}
+
+.responsive-utilities td.is-hidden {
+ color: #ccc;
+ background-color: #f9f9f9 !important;
+}
+
+/* Responsive tests
+------------------------- */
+.responsive-utilities-test {
+ margin-top: 5px;
+ margin-left: 0;
+ list-style: none;
+ overflow: hidden;
+ /* clear floats */
+}
+
+.responsive-utilities-test li {
+ position: relative;
+ float: left;
+ width: 25%;
+ height: 43px;
+ font-size: 14px;
+ font-weight: bold;
+ line-height: 43px;
+ color: #999;
+ text-align: center;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.responsive-utilities-test li+li {
+ margin-left: 10px;
+}
+
+.responsive-utilities-test span {
+ position: absolute;
+ top: -1px;
+ left: -1px;
+ right: -1px;
+ bottom: -1px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.responsive-utilities-test span {
+ color: #468847;
+ background-color: #dff0d8;
+ border: 1px solid #d6e9c6;
+}
+
+
+
+/* Sidenav for Docs
+-------------------------------------------------- */
+
+.bs-docs-sidenav {
+ width: 228px;
+ margin: 30px 0 0;
+ padding: 0;
+ background-color: #fff;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, .065);
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, .065);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, .065);
+}
+
+.bs-docs-sidenav>li>a {
+ display: block;
+ *width: 190px;
+ margin: 0 0 -1px;
+ padding: 8px 14px;
+ border: 1px solid #e5e5e5;
+}
+
+.bs-docs-sidenav>li:first-child>a {
+ -webkit-border-radius: 6px 6px 0 0;
+ -moz-border-radius: 6px 6px 0 0;
+ border-radius: 6px 6px 0 0;
+}
+
+.bs-docs-sidenav>li:last-child>a {
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+}
+
+.bs-docs-sidenav>.active>a {
+ position: relative;
+ z-index: 2;
+ padding: 9px 15px;
+ border: 0;
+ text-shadow: 0 1px 0 rgba(0, 0, 0, .15);
+ -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1), inset -1px 0 0 rgba(0, 0, 0, .1);
+ -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1), inset -1px 0 0 rgba(0, 0, 0, .1);
+ box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1), inset -1px 0 0 rgba(0, 0, 0, .1);
+}
+
+/* Chevrons */
+.bs-docs-sidenav .icon-chevron-right {
+ float: right;
+ margin-top: 2px;
+ margin-right: -6px;
+ opacity: .25;
+}
+
+.bs-docs-sidenav>li>a:hover {
+ background-color: #f5f5f5;
+}
+
+.bs-docs-sidenav a:hover .icon-chevron-right {
+ opacity: .5;
+}
+
+.bs-docs-sidenav .active .icon-chevron-right,
+.bs-docs-sidenav .active a:hover .icon-chevron-right {
+ background-image: url(../img/glyphicons-halflings-white.png);
+ opacity: 1;
+}
+
+.bs-docs-sidenav.affix {
+ top: 40px;
+}
+
+.bs-docs-sidenav.affix-bottom {
+ position: absolute;
+ top: auto;
+ bottom: 270px;
+}
+
+
+
+
+/* Responsive
+-------------------------------------------------- */
+
+/* Desktop large
+------------------------- */
+@media (min-width: 1200px) {
+ .bs-docs-container {
+ max-width: 970px;
+ }
+
+ .bs-docs-sidenav {
+ width: 258px;
+ }
+}
+
+/* Desktop
+------------------------- */
+@media (max-width: 980px) {
+
+ /* Unfloat brand */
+ body>.navbar-fixed-top .brand {
+ float: left;
+ margin-left: 0;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+
+ /* Inline-block quick links for more spacing */
+ .quick-links li {
+ display: inline-block;
+ margin: 5px;
+ }
+
+ /* When affixed, space properly */
+ .bs-docs-sidenav {
+ top: 0;
+ margin-top: 30px;
+ margin-right: 0;
+ }
+}
+
+/* Tablet to desktop
+------------------------- */
+@media (min-width: 768px) and (max-width: 980px) {
+
+ /* Remove any padding from the body */
+ body {
+ padding-top: 0;
+ }
+
+ /* Widen masthead and social buttons to fill body padding */
+ .jumbotron {
+ margin-top: -20px;
+ /* Offset bottom margin on .navbar */
+ }
+
+ /* Adjust sidenav width */
+ .bs-docs-sidenav {
+ width: 166px;
+ margin-top: 20px;
+ }
+
+ .bs-docs-sidenav.affix {
+ top: 0;
+ }
+}
+
+/* Tablet
+------------------------- */
+@media (max-width: 767px) {
+
+ /* Remove any padding from the body */
+ body {
+ padding-top: 0;
+ }
+
+ /* Widen masthead and social buttons to fill body padding */
+ .jumbotron {
+ padding: 40px 20px;
+ margin-top: -20px;
+ /* Offset bottom margin on .navbar */
+ margin-right: -20px;
+ margin-left: -20px;
+ }
+
+ .masthead h1 {
+ font-size: 90px;
+ }
+
+ .masthead p,
+ .masthead .btn {
+ font-size: 24px;
+ }
+
+ .marketing .span4 {
+ margin-bottom: 40px;
+ }
+
+ .bs-docs-social {
+ margin: 0 -20px;
+ }
+
+ /* Space out the show-grid examples */
+ .show-grid [class*="span"] {
+ margin-bottom: 5px;
+ }
+
+ /* Sidenav */
+ .bs-docs-sidenav {
+ width: auto;
+ margin-bottom: 20px;
+ }
+
+ .bs-docs-sidenav.affix {
+ position: static;
+ width: auto;
+ top: 0;
+ }
+
+ /* Unfloat the back to top link in footer */
+ .footer {
+ margin-left: -20px;
+ margin-right: -20px;
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+
+ .footer p {
+ margin-bottom: 9px;
+ }
+}
+
+/* Landscape phones
+------------------------- */
+@media (max-width: 480px) {
+
+ /* Remove padding above jumbotron */
+ body {
+ padding-top: 0;
+ }
+
+ /* Change up some type stuff */
+ h2 small {
+ display: block;
+ }
+
+ /* Downsize the jumbotrons */
+ .jumbotron h1 {
+ font-size: 40px;
+ }
+
+ .jumbotron p,
+ .jumbotron .btn {
+ font-size: 20px;
+ }
+
+ .jumbotron .btn {
+ display: block;
+ margin: 0 auto;
+ }
+
+ /* center align subhead text like the masthead */
+ .subhead h1,
+ .subhead p {
+ text-align: left;
+ }
+
+ /* Marketing on home */
+ .marketing h1 {
+ font-size: 40px;
+ }
+
+ /* center example sites */
+ .example-sites {
+ margin-left: 0;
+ }
+
+ .example-sites>li {
+ float: none;
+ display: block;
+ max-width: 280px;
+ margin: 0 auto 18px;
+ text-align: center;
+ }
+
+ .example-sites .thumbnail>img {
+ max-width: 270px;
+ }
+
+ /* Do our best to make tables work in narrow viewports */
+ table code {
+ white-space: normal;
+ word-wrap: break-word;
+ word-break: break-all;
+ }
+
+ /* Modal example */
+ .modal-example .modal {
+ position: relative;
+ top: auto;
+ right: auto;
+ bottom: auto;
+ left: auto;
+ }
+
+ /* Unfloat the back to top in footer to prevent odd text wrapping */
+ .footer .pull-right {
+ float: none;
+ }
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/index_page.css b/gn2/wqflask/static/new/css/index_page.css
new file mode 100644
index 00000000..34b3cebf
--- /dev/null
+++ b/gn2/wqflask/static/new/css/index_page.css
@@ -0,0 +1,4 @@
+.info-button {
+ border: #A9A9A9;
+ background-color: #D3D3D3;
+}
diff --git a/gn2/wqflask/static/new/css/jupyter_notebooks.css b/gn2/wqflask/static/new/css/jupyter_notebooks.css
new file mode 100644
index 00000000..db972a17
--- /dev/null
+++ b/gn2/wqflask/static/new/css/jupyter_notebooks.css
@@ -0,0 +1,16 @@
+.jupyter-links {
+ padding: 1.5em;
+}
+
+.jupyter-links:nth-of-type(2n) {
+ background: #EEEEEE;
+}
+
+.jupyter-links .main-link {
+ font-size: larger;
+ display: block;
+}
+
+.jupyter-links .src-link {
+ font-size: smaller;
+}
diff --git a/gn2/wqflask/static/new/css/main.css b/gn2/wqflask/static/new/css/main.css
new file mode 100644
index 00000000..d5fb8a61
--- /dev/null
+++ b/gn2/wqflask/static/new/css/main.css
@@ -0,0 +1,40 @@
+@media (max-width: 10px) {
+ .navbar-header {
+ float: none;
+ }
+ .navbar-toggle {
+ display: block;
+ }
+ .navbar-collapse {
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
+ }
+ .navbar-collapse.collapse {
+ display: none!important;
+ }
+ .navbar-nav {
+ float: none!important;
+ margin: 7.5px -15px;
+ }
+ .navbar-nav>li {
+ float: none;
+ }
+ .navbar-nav>li>a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+ .navbar-text {
+ float: none;
+ margin: 15px 0;
+ }
+ .navbar-collapse.collapse.in {
+ display: block!important;
+ }
+ .collapsing {
+ overflow: hidden!important;
+ }
+}
+
+.checkbox {
+ min-height: 20px;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/markdown.css b/gn2/wqflask/static/new/css/markdown.css
new file mode 100644
index 00000000..859fe7fc
--- /dev/null
+++ b/gn2/wqflask/static/new/css/markdown.css
@@ -0,0 +1,108 @@
+#markdown {
+ padding: 20px;
+}
+
+#markdown h2,
+#markdown h3,
+#markdown h4,
+#markdown h5 {
+ font-weight: bold;
+}
+
+#markdown img {
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.github-btn-container {
+ margin: 20px 10px;
+ display: flex;
+ width: 90vw;
+ justify-content: flex-end;
+}
+
+.github-btn {
+ display: flex;
+ justify-content: center;
+ border: 3px solid #357ebd;
+ background: lightgrey;
+ padding: 3px 4px;
+ width: 200px;
+ border-radius: 16px;
+}
+
+.github-btn a {
+ align-self: center;
+ font-weight: bold;
+ color: #357ebd;
+}
+
+.github-btn a img {
+ height: 40px;
+ width: 40px;
+ padding-left:5px;
+}
+
+
+.container {
+ width: 80vw;
+ margin: auto;
+ max-width: 80vw;
+
+}
+
+.container p {
+ font-size: 17px;
+ word-spacing: 0.2em;
+}
+
+.graph-legend h1 {
+ text-align: center;
+}
+
+.graph-legend,
+#guix-graph,
+#guix-svg-graph{
+ width: 90%;
+ margin: 10px auto;
+}
+
+#guix-graph {
+ border: solid 2px black;
+}
+
+#guix-svg-graph img {
+ width: 100%;
+}
+
+#markdown table {
+ width: 100%;
+}
+
+#markdown td {
+ padding: 1em;
+ text-align: left;
+}
+
+#markdown th {
+ text-align: center;
+}
+
+#markdown table,
+#markdown td,
+#markdown th {
+ border: solid 2px black;
+}
+
+#markdown td,
+#markdown th {
+ padding-top: 8px;
+ padding-bottom: 8px;
+}
+
+@media(max-width:650px) {
+ .container {
+ width: 100vw;
+ }
+}
diff --git a/gn2/wqflask/static/new/css/marker_regression.css b/gn2/wqflask/static/new/css/marker_regression.css
new file mode 100644
index 00000000..9f56b63d
--- /dev/null
+++ b/gn2/wqflask/static/new/css/marker_regression.css
@@ -0,0 +1,76 @@
+.chr_manhattan_plot .y_axis path,
+.chr_manhattan_plot .y_axis line {
+ fill: none;
+ stroke: black;
+ shape-rendering: crispEdges;
+}
+.chr_manhattan_plot .y_axis text {
+ font-family: sans-serif;
+ font-size: 14px;
+}
+
+.chr_manhattan_plot .x_axis path,
+.chr_manhattan_plot .x_axis line {
+ fill: none;
+ stroke: black;
+ shape-rendering: crispEdges;
+}
+
+.chr_manhattan_plot .x_axis text {
+ text-anchor: end;
+ font-family: sans-serif;
+ font-size: 10px;
+}
+
+rect.pane {
+ cursor: move;
+ fill: none;
+ pointer-events: all;
+}
+
+/*rect {
+ stroke: WhiteSmoke;
+ fill: lightgrey;
+}*/
+/*rect {
+ stroke: WhiteSmoke;
+ fill: Azure;
+}*/
+
+tr .outlier {
+ background-color: #ffff99;
+}
+
+table.dataTable thead th{
+ border-right: 1px solid white;
+ color: white;
+ background-color: #369;
+}
+
+table.dataTable thead .sorting_asc {
+ background-image: url("/js/DataTables/images/sort_asc_disabled.png");
+}
+table.dataTable thead .sorting_desc {
+ background-image: url("/js/DataTables/images/sort_desc_disabled.png");
+}
+
+table.dataTable thead th {
+ padding: 4px 18px 4px 10px;
+}
+
+table.dataTable tbody td {
+ padding: 4px 20px 2px 10px;
+}
+
+table.dataTable tbody tr.selected {
+ background-color: #ffee99;
+}
+
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+ border-top: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+ border-left: 1px solid #ccc;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/mytooltip.css b/gn2/wqflask/static/new/css/mytooltip.css
new file mode 100644
index 00000000..bc44c488
--- /dev/null
+++ b/gn2/wqflask/static/new/css/mytooltip.css
@@ -0,0 +1,16 @@
+.mytooltiptext {
+ visibility: hidden;
+ width: inherit;
+ background-color: #E5E5AF;
+ color: #595959;
+ text-align: left;
+ padding: 5px 0;
+ border-radius: 6px;
+
+ position: absolute;
+ z-index: 1;
+}
+
+.mytooltip:hover .mytooltiptext {
+ visibility: visible;
+}
diff --git a/gn2/wqflask/static/new/css/network_graph.css b/gn2/wqflask/static/new/css/network_graph.css
new file mode 100644
index 00000000..1a0bafeb
--- /dev/null
+++ b/gn2/wqflask/static/new/css/network_graph.css
@@ -0,0 +1,37 @@
+#content h2, h3, h4, h5, h6 {
+ color: #545454;
+ margin-bottom: 1em;
+ border-bottom: dashed 1px #dfdfdf;
+ padding-bottom: 0.3em;
+}
+
+#content table td {
+ padding: 0.5em;
+ /* border-right: solid 1px #fff; */
+}
+
+#secondaryContent {
+ position: relative;
+ float: left;
+ width: 18.5em;
+ background: #fff url('/static/new/images/a1.gif') top right repeat-y;
+}
+
+
+input[type="button" i], input[type="submit" i], input[type="reset" i], input[type="file" i]::-webkit-file-upload-button, button {
+ align-items: flex-start;
+ text-align: center;
+ cursor: default;
+ color: buttontext;
+ border-image-source: initial;
+ border-image-slice: initial;
+ border-image-width: initial;
+ border-image-outset: initial;
+ border-image-repeat: initial;
+ background-color: buttonface;
+ box-sizing: border-box;
+ padding: 2px 6px 3px;
+ border-width: 2px;
+ border-style: outset;
+ border-color: buttonface;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/non-responsive.css b/gn2/wqflask/static/new/css/non-responsive.css
new file mode 100644
index 00000000..a4bcddd2
--- /dev/null
+++ b/gn2/wqflask/static/new/css/non-responsive.css
@@ -0,0 +1,114 @@
+/* Template-specific stuff
+ *
+ * Customizations just for the template; these are not necessary for anything
+ * with disabling the responsiveness.
+ */
+
+/* Account for fixed navbar */
+body {
+ //min-width: 1200px;
+ padding-top: 70px;
+ padding-bottom: 30px;
+}
+
+/* Finesse the page header spacing */
+.page-header {
+ margin-bottom: 10px;
+}
+
+.page-header .lead {
+ margin-bottom: 10px;
+}
+
+
+/* Non-responsive overrides
+ *
+ * Utilitze the following CSS to disable the responsive-ness of the container,
+ * grid system, and navbar.
+ */
+
+/* Reset the container */
+.container {
+ width: 100%;
+ max-width: none !important;
+}
+
+
+.container .navbar-header,
+.container .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+}
+
+/* Always float the navbar header */
+.navbar-header {
+ float: left;
+}
+
+/* Undo the collapsing navbar */
+.navbar-collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+}
+
+.navbar-toggle {
+ display: none;
+}
+
+.navbar-collapse {
+ border-top: 0;
+}
+
+/* Always apply the floated nav */
+.navbar-nav {
+ float: left;
+ margin: 0;
+}
+
+.navbar-nav>li {
+ float: left;
+}
+
+.navbar-nav>li>a {
+ padding: 5px;
+}
+
+/* Redeclare since we override the float above */
+.navbar-nav.navbar-right {
+ float: right;
+}
+
+/* Undo custom dropdowns */
+.navbar .navbar-nav .open .dropdown-menu {
+ position: absolute;
+ float: left;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-width: 0 1px 1px;
+ border-radius: 0 0 4px 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+
+.navbar-default .navbar-nav .open .dropdown-menu>li>a {
+ color: #333;
+}
+
+.navbar .navbar-nav .open .dropdown-menu>li>a:hover,
+.navbar .navbar-nav .open .dropdown-menu>li>a:focus,
+.navbar .navbar-nav .open .dropdown-menu>.active>a,
+.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,
+.navbar .navbar-nav .open .dropdown-menu>.active>a:focus {
+ color: #fff !important;
+ background-color: #3071a9 !important;
+}
+
+.navbar .navbar-nav .open .dropdown-menu>.disabled>a,
+.navbar .navbar-nav .open .dropdown-menu>.disabled>a:hover,
+.navbar .navbar-nav .open .dropdown-menu>.disabled>a:focus {
+ color: #999 !important;
+ background-color: transparent !important;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/pair_scan.css b/gn2/wqflask/static/new/css/pair_scan.css
new file mode 100644
index 00000000..90cec529
--- /dev/null
+++ b/gn2/wqflask/static/new/css/pair_scan.css
@@ -0,0 +1,6 @@
+/* Unset CSS for tooltip since it will inherit from the bootstrap tooltip class CSS otherwise */
+.tooltip{all:unset;}
+
+.pairscan-container {
+ width: 1000px;
+}
diff --git a/gn2/wqflask/static/new/css/panelutil.css b/gn2/wqflask/static/new/css/panelutil.css
new file mode 100644
index 00000000..ccd7eb01
--- /dev/null
+++ b/gn2/wqflask/static/new/css/panelutil.css
@@ -0,0 +1,91 @@
+
+/* figures will always be within a div with class="qtlcharts" */
+div.qtlcharts {
+ font-family: sans-serif;
+ font-size: 11pt;
+}
+
+div.qtlcharts .title text {
+ dominant-baseline: middle;
+ fill: blue;
+ text-anchor: middle;
+}
+
+div.qtlcharts .y.axis text {
+ dominant-baseline: middle;
+ text-anchor: end;
+}
+
+div.qtlcharts .y.axis text.title {
+ text-anchor: middle;
+ fill: slateblue;
+}
+
+div.qtlcharts .x.axis text {
+ dominant-baseline: hanging;
+ text-anchor: middle;
+}
+
+div.qtlcharts .x.axis text.title {
+ fill: slateblue;
+}
+
+/*div.qtlcharts line.axis.grid {
+ fill: none;
+ stroke-width: 1;
+ pointer-events: none;
+}
+
+div.qtlcharts line.x.axis.grid {
+ stroke: rgb(200, 200, 200);
+ stroke-width: 3;
+}
+
+div.qtlcharts line.y.axis.grid {
+ stroke: white;
+}*/
+
+div.qtlcharts .extent {
+ fill: #cac;
+ opacity: 0.3;
+}
+
+div.qtlcharts circle.selected {
+ fill: hotpink;
+ opacity: 1;
+}
+
+div.qtlcharts a {
+ color: #08c;
+ text-decoration: none;
+}
+
+div.qtlcharts a:hover {
+ color: #333;
+ text-decoration: underline;
+}
+
+
+/* figure captions */
+.caption {
+ font-family: Sans-serif;
+ font-size: 11pt;
+ margin-left: 60px;
+ width: 600px;
+}
+
+
+/* d3 tip for tool tips */
+.d3-tip {
+ background: darkslateblue;
+ color: #fff;
+ stroke: none;
+ font-weight: bold;
+ font-size: 16px;
+ font-family: sans-serif;
+ padding: 5px;
+}
+
+.d3-tip.e:after {
+ color: darkslateblue;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/parsley.css b/gn2/wqflask/static/new/css/parsley.css
new file mode 100644
index 00000000..7d244579
--- /dev/null
+++ b/gn2/wqflask/static/new/css/parsley.css
@@ -0,0 +1,20 @@
+/* Adapted from parsleyjs.org/documentation.html#parsleyclasses */
+
+input.parsley-success, textarea.parsley-success {
+ color: #468847 !important;
+ background-color: #DFF0D8 !important;
+ border: 1px solid #D6E9C6 !important;
+}
+input.parsley-error, textarea.parsley-error {
+ color: #B94A48 !important;
+ background-color: #F2DEDE !important;
+ border: 1px solid #EED3D7 !important;
+}
+ul.parsley-error-list {
+ font-size: 11px;
+ margin: 2px;
+ list-style-type:none;
+}
+ul.parsley-error-list li {
+ line-height: 11px;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/partial_correlations.css b/gn2/wqflask/static/new/css/partial_correlations.css
new file mode 100644
index 00000000..84a0877f
--- /dev/null
+++ b/gn2/wqflask/static/new/css/partial_correlations.css
@@ -0,0 +1,109 @@
+#partial-correlations-form {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 1em;
+}
+
+#main-form {
+ grid-column-start: 1;
+ grid-column-end: 2;
+ text-align: left;
+}
+
+#form-display-area {
+ grid-column-start: 2;
+ grid-column-end: 3;
+}
+
+#part-corr-success {
+ grid-column-start: 1;
+ grid-column-end: 3;
+}
+
+td, th {
+ border: 1px solid;
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.7em;
+}
+
+tr:nth-of-type(2n) {
+ background: #F9F9F9;
+}
+
+.with-trait {
+ margin-left: 0.7em;
+ position: relative;
+ display: grid;
+ width: 100%;
+ grid-column-gap: 1em;
+ grid-template-columns: 1em 1fr;
+ text-align: left;
+}
+
+.with-trait:nth-of-type(2n) {
+ background: #E5E5FF;
+}
+
+.with-trait .selector-element {
+ grid-column: 1 / 2;
+ grid-row: 1 / 1;
+}
+
+.with-trait:first-of-type {
+ padding-top: 2.5em;
+}
+
+.with-trait:first-of-type label *:before{
+ position: absolute;
+ top: 0px;
+
+ text-transform: capitalize;
+ font-weight: bolder;
+ content: attr(data-title);
+ background: #336699; /*#FFCCCC;*/
+ color: #FFFFFF;
+ padding: 0.5em;
+}
+
+.with-trait .label-element {
+ display: grid;
+ grid-column-gap: 0.5em;
+ grid-template-columns: 4fr 2fr 2fr 9fr 2fr 1fr 2fr;
+ grid-column: 2 / 2;
+ grid-row: 1 / 1;
+}
+
+.with-trait .label-element .trait-dataset {
+ grid-column: 1;
+ grid-row: 1 / 1;
+}
+
+.with-trait .label-element .trait-name {
+ grid-column: 2;
+ grid-row: 1 / 1;
+}
+
+.with-trait .label-element .trait-symbol {
+ grid-column: 3;
+ grid-row: 1 / 1;
+}
+
+.with-trait .label-element .trait-description {
+ grid-column: 4;
+ grid-row: 1 / 1;
+}
+
+.with-trait .label-element .trait-location {
+ grid-column: 5;
+ grid-row: 1 / 1;
+}
+
+.with-trait .label-element .trait-mean-expr {
+ grid-column: 6;
+ grid-row: 1 / 1;
+}
+
+.with-trait .label-element .trait-max-lrs {
+ grid-column: 7;
+ grid-row: 1 / 1;
+}
diff --git a/gn2/wqflask/static/new/css/prob_plot.css b/gn2/wqflask/static/new/css/prob_plot.css
new file mode 100644
index 00000000..2a1f8f53
--- /dev/null
+++ b/gn2/wqflask/static/new/css/prob_plot.css
@@ -0,0 +1,3 @@
+#prob_plot_title {
+ text-align: center;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/scatter-matrix.css b/gn2/wqflask/static/new/css/scatter-matrix.css
new file mode 100644
index 00000000..58150b26
--- /dev/null
+++ b/gn2/wqflask/static/new/css/scatter-matrix.css
@@ -0,0 +1,40 @@
+#scatter-matrix { font-size: 14px; }
+
+#scatter-matrix .axis { shape-rendering: crispEdges; }
+#scatter-matrix .axis line { stroke: #ddd; stroke-width: 1px; }
+#scatter-matrix .axis path { display: none; }
+#scatter-matrix .axis text { font-size: 0.8em; }
+
+rect.extent { fill: #000; fill-opacity: .125; stroke: #fff; }
+rect.frame { fill: #fff; fill-opacity: .7; stroke: #aaa; }
+
+circle { fill: #ccc; fill-opacity: .5; }
+
+.legend circle { fill-opacity: 1; }
+.legend text { font-size: 18px; font-style: oblique; }
+
+.cell text { pointer-events: none; }
+
+.color-0 { fill: #800; }
+.color-1 { fill: #080; }
+.color-2 { fill: #008; }
+.color-3 { fill: #440; }
+.color-4 { fill: #044; }
+.color-5 { fill: #404; }
+.color-6 { fill: #400; }
+.color-7 { fill: #040; }
+.color-8 { fill: #004; }
+.color-9 { fill: #cc0; }
+.color-10 { fill: #0cc; }
+.color-11 { fill: #c0c; }
+.color-12 { fill: #880; }
+.color-13 { fill: #088; }
+.color-14 { fill: #808; }
+.color-15 { fill: #c00; }
+.color-16 { fill: #0c0; }
+.color-17 { fill: #00c; }
+
+.scatter-matrix-filter-control ul { list-style: none; padding-left: 10px; }
+.scatter-matrix-variable-control ul { list-style: none; padding-left: 10px; }
+.scatter-matrix-drill-control ul { list-style: none; padding-left: 10px; }
+
diff --git a/gn2/wqflask/static/new/css/show_trait.css b/gn2/wqflask/static/new/css/show_trait.css
new file mode 100644
index 00000000..577bb5dd
--- /dev/null
+++ b/gn2/wqflask/static/new/css/show_trait.css
@@ -0,0 +1,311 @@
+tr .outlier {
+ background-color: #ffff99;
+}
+
+table.dataTable tbody tr.selected {
+ background-color: #ffee99;
+}
+
+table.metadata {
+ table-layout: fixed;
+}
+
+table.metadata td:nth-child(1) {
+ width: 10%;
+}
+
+table summary b {
+ cursor: pointer;
+ text-decoration: underline;
+}
+
+table details[open] {
+ width: 80%;
+}
+
+#bar_chart_container {
+ overflow-x:scroll;
+}
+
+div.sample_group {
+ overflow: auto; # needed because it contains float dataTable wrapper
+}
+
+.js-plotly-plot .plotly .modebar {
+ left: 100px;
+}
+
+table.dataTable thead th, table.dataTable tfoot th{
+ border-right: 1px solid white;
+ color: white;
+ background-color: #369;
+}
+
+table.dataTable thead .sorting_asc {
+ background-image: url("/js/DataTables/images/sort_asc_disabled.png");
+}
+table.dataTable thead .sorting_desc {
+ background-image: url("/js/DataTables/images/sort_desc_disabled.png");
+}
+
+table.dataTable thead th, table.dataTable tfoot {
+ padding: 4px 18px 4px 10px;
+}
+
+/* Header for a column with a numeric value that should be right-aligned */
+table.dataTable thead th div.numeric_header {
+ text-align: right;
+}
+
+table.dataTable tbody td {
+ padding: 2px 15px 0px 10px;
+}
+
+table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
+ border-top: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+}
+table.dataTable.cell-border tbody tr th:first-child,
+table.dataTable.cell-border tbody tr td:first-child {
+ border-left: 1px solid #ccc;
+}
+
+.checkbox {
+ min-height: 20px;
+}
+
+.trait_value_input {
+ text-align: right;
+}
+
+.glyphicon {
+ position: relative;
+ top: 2px;
+}
+
+table.dataTable tbody td.column_name-Checkbox {
+ padding: 1px 0px 0px 9px; /* The left padding here is because text-align:center does not seem to be working properly. No idea why this is. */
+ text-align: center;
+ vertical-align: middle;
+}
+
+table.dataTable tbody td.column_name-Index {
+ padding: 2px 4px 0px 2px;
+ text-align: right;
+}
+
+/* the column with +/- in it that appears in the table when there's an SE column */
+table.dataTable tbody td.column_name-PlusMinus {
+ padding-left: 2px;
+ padding-right: 2px;
+ text-align: center;
+}
+
+table.dataTable tbody td.column_name-Value, table.dataTable tbody td.column_name-SE, table.dataTable tbody td.column_name-num_cases {
+ text-align: right;
+}
+
+div.btn-toolbar {
+ margin-bottom:15px;
+}
+
+/* div containing the form options for each segment of the trait page - correlations, statistics, mapping, etc */
+div.section-form-div {
+ padding: 20px;
+}
+
+table.left-float {
+ float: left;
+}
+
+div.scatterplot-btn-div {
+ margin-bottom:40px;
+}
+
+.min-expr-field {
+ width: 70px;
+}
+
+div.p-range-slider {
+ width: 200px;
+ margin-left: 15px;
+}
+
+span.p-range-lower {
+ margin-top: 5px;
+ font: 400 12px Arial;
+ color: #888;
+ display: inline-block;
+}
+
+span.p-range-upper {
+ font: 400 12px Arial;
+ color: #888;
+ display: inline-block;
+ margin: 5px 0px 0px 170px;
+}
+
+input.corr-location {
+ width: 50px;
+ display: inline;
+}
+
+div.block-div {
+ margin-bottom: 10px;
+}
+
+div.block-div-2 {
+ margin-top:10px;
+ margin-bottom:10px;
+}
+
+div.normalize-div {
+ margin-top:10px;
+}
+
+div.main {
+ display: block;
+}
+
+div.options {
+ float: left;
+ width: 600px;
+ padding-top: 0px;
+}
+
+div.descriptions {
+ float: left;
+ width: 500px;
+ min-width: 20%;
+ margin-bottom: 0px;
+ padding-left: 15px;
+}
+
+div.covar-options {
+ padding-top: 7px;
+}
+
+.control-label {
+ text-align: right;
+}
+
+.chr-select, .maf-select, .scale-select, .reaper-ver-select {
+ width: 80px;
+}
+
+span.covar-text {
+ font-size: 13px;
+ font-weight: 400;
+}
+
+div.select-covar-div {
+ margin-bottom: 10px;
+}
+
+.select-covar-button {
+ width: 80px;
+ padding-right: 10px;
+}
+
+.selected-covariates {
+ overflow-y: scroll;
+ resize: none;
+ width: 400px;
+}
+
+.cofactor-input {
+ width: 160px;
+ display: inline-block;
+}
+
+.no-control-radio {
+ margin-left: 10px;
+}
+
+.map-method-text {
+ margin-top: 20px;
+}
+
+.rqtl-description {
+ padding-top: 40px;
+ display: none;
+}
+
+div.sample-table-container {
+ padding-bottom: 10px;
+}
+
+div.sample-table-search-container {
+ display: inline;
+ height: 40px;
+}
+
+input.sample-table-search {
+ width: 200px;
+ display: inline;
+ float: left;
+ vertical-align: top;
+}
+
+div.sample-table-export-container {
+ padding-left: 10px;
+ display: inline;
+}
+
+div.export-code-container {
+ padding-top: 20px;
+ width: 600px;
+ display: none;
+}
+
+.export-code-field {
+ padding-top: 0px;
+ padding-bottom: 0px;
+ height: 150px;
+}
+
+table.sample-table {
+ float: left;
+}
+
+input.trait-value-input {
+ text-align: right;
+}
+
+div.inline-div {
+ display: inline;
+}
+
+/* div.colorbox_border {
+ border: 1px solid grey;
+} */
+div#cboxContent {
+ /* box-shadow:
+ 0 2.8px 2.2px rgba(0, 0, 0, 0.034),
+ 0 6.7px 5.3px rgba(0, 0, 0, 0.048),
+ 0 12.5px 10px rgba(0, 0, 0, 0.06),
+ 0 22.3px 17.9px rgba(0, 0, 0, 0.072),
+ 0 41.8px 33.4px rgba(0, 0, 0, 0.086),
+ 0 100px 80px rgba(0, 0, 0, 0.12) */
+
+ padding: 10px 10px 5px 10px;
+
+ -moz-box-shadow: 3px 3px 5px #535353;
+ -webkit-box-shadow: 3px 3px 5px #535353;
+ box-shadow: 3px 3px 5px #535353;
+
+ -moz-border-radius: 6px 6px 6px 6px;
+ -webkit-border-radius: 6px;
+ border-radius: 6px 6px 6px 6px;
+
+ /* border: 2px solid grey; */
+}
+
+#cboxClose {
+ margin-right: 5px;
+ margin-bottom: 2px;
+}
+
+div.container {
+ min-width:750px;
+}
diff --git a/gn2/wqflask/static/new/css/snp_browser.css b/gn2/wqflask/static/new/css/snp_browser.css
new file mode 100644
index 00000000..a7942d2a
--- /dev/null
+++ b/gn2/wqflask/static/new/css/snp_browser.css
@@ -0,0 +1,58 @@
+.form_group {
+ margin-bottom 5px;
+}
+
+table.dataTable thead th {
+ vertical-align: bottom;
+}
+
+table.dataTable tbody tr.selected {
+ background-color: #ffee99;
+}
+
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+ background-repeat: no-repeat;
+ background-position: bottom right;
+}
+
+table.dataTable thead th{
+ border-right: 1px solid white;
+ color: white;
+ background-color: #369;
+}
+
+table.dataTable tbody td {
+ padding: 4px 20px 2px 10px;
+}
+
+td.A_allele_color {
+ background-color: #C33232
+}
+td.C_allele_color {
+ background-color: #1569C7
+}
+td.T_allele_color {
+ background-color: #CFCF32
+}
+td.G_allele_color {
+ background-color: #32C332
+}
+td.t_allele_color {
+ background-color: #FF6
+}
+td.c_allele_color {
+ background-color: #5CB3FF
+}
+td.a_allele_color {
+ background-color: #F66
+}
+td.g_allele_color {
+ background-color: #CF9
+}
+td.default_allele_color {
+ background-color: #FFFFFF
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/css/trait_list.css b/gn2/wqflask/static/new/css/trait_list.css
new file mode 100644
index 00000000..cc5a9eac
--- /dev/null
+++ b/gn2/wqflask/static/new/css/trait_list.css
@@ -0,0 +1,53 @@
+div.tool-button-container {
+ min-width: 1050px;
+}
+
+div.collection-table-options {
+ min-width: 1100px;
+}
+
+div.show-hide-container {
+ margin-bottom: 5px;
+ margin-top: 10px;
+}
+
+button.active {
+ background: #BEBEBE;
+ -webkit-box-shadow: inset 0px 0px 5px #c1c1c1;
+ -moz-box-shadow: inset 0px 0px 5px #c1c1c1;
+ box-shadow: inset 0px 0px 5px #c1c1c1;
+ outline: none;
+}
+
+div.dts {
+ display:block !important
+}
+
+div.dts div.dts_loading {
+ z-index:1
+}
+
+div.dts div.dts_label {
+ position:absolute;
+ right:10px;
+ background:rgba(0,0,0,0.8);
+ color:white;
+ box-shadow:3px 3px 10px rgba(0,0,0,0.5);
+ text-align:right;
+ border-radius:3px;
+ padding:0.4em;
+ z-index:2;
+ display:none
+}
+
+div.dts div.dataTables_scrollBody {
+ background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)
+}
+
+div.dts div.dataTables_scrollBody table {
+ z-index:2
+}
+
+div.dts div.dataTables_paginate,div.dts div.dataTables_length{
+ display:none
+}
diff --git a/gn2/wqflask/static/new/css/typeahead-bootstrap.css b/gn2/wqflask/static/new/css/typeahead-bootstrap.css
new file mode 100644
index 00000000..87dd4b5d
--- /dev/null
+++ b/gn2/wqflask/static/new/css/typeahead-bootstrap.css
@@ -0,0 +1,94 @@
+span.twitter-typeahead .tt-menu,
+span.twitter-typeahead .tt-dropdown-menu {
+ cursor: pointer;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: 14px;
+ text-align: left;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+}
+span.twitter-typeahead .tt-suggestion {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.42857143;
+ color: #333333;
+ white-space: nowrap;
+}
+span.twitter-typeahead .tt-suggestion.tt-cursor,
+span.twitter-typeahead .tt-suggestion:hover,
+span.twitter-typeahead .tt-suggestion:focus {
+ color: #ffffff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #337ab7;
+}
+.input-group.input-group-lg span.twitter-typeahead .form-control {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.input-group.input-group-sm span.twitter-typeahead .form-control {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+span.twitter-typeahead {
+ width: 100%;
+}
+.input-group span.twitter-typeahead {
+ display: block !important;
+ height: 34px;
+}
+.input-group span.twitter-typeahead .tt-menu,
+.input-group span.twitter-typeahead .tt-dropdown-menu {
+ top: 32px !important;
+}
+.input-group span.twitter-typeahead:not(:first-child):not(:last-child) .form-control {
+ border-radius: 0;
+}
+.input-group span.twitter-typeahead:first-child .form-control {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group span.twitter-typeahead:last-child .form-control {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+.input-group.input-group-sm span.twitter-typeahead {
+ height: 30px;
+}
+.input-group.input-group-sm span.twitter-typeahead .tt-menu,
+.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu {
+ top: 30px !important;
+}
+.input-group.input-group-lg span.twitter-typeahead {
+ height: 46px;
+}
+.input-group.input-group-lg span.twitter-typeahead .tt-menu,
+.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu {
+ top: 46px !important;
+}
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/images/CITGLogo.png b/gn2/wqflask/static/new/images/CITGLogo.png
new file mode 100644
index 00000000..ae99fedb
Binary files /dev/null and b/gn2/wqflask/static/new/images/CITGLogo.png differ
diff --git a/gn2/wqflask/static/new/images/Nif.png b/gn2/wqflask/static/new/images/Nif.png
new file mode 100644
index 00000000..e975a921
Binary files /dev/null and b/gn2/wqflask/static/new/images/Nif.png differ
diff --git a/gn2/wqflask/static/new/images/PythonLogo.png b/gn2/wqflask/static/new/images/PythonLogo.png
new file mode 100644
index 00000000..b76dafba
Binary files /dev/null and b/gn2/wqflask/static/new/images/PythonLogo.png differ
diff --git a/gn2/wqflask/static/new/images/a1.gif b/gn2/wqflask/static/new/images/a1.gif
new file mode 100644
index 00000000..283921a0
Binary files /dev/null and b/gn2/wqflask/static/new/images/a1.gif differ
diff --git a/gn2/wqflask/static/new/images/arrowdown.gif b/gn2/wqflask/static/new/images/arrowdown.gif
new file mode 100644
index 00000000..577e5476
Binary files /dev/null and b/gn2/wqflask/static/new/images/arrowdown.gif differ
diff --git a/gn2/wqflask/static/new/images/edit.gif b/gn2/wqflask/static/new/images/edit.gif
new file mode 100644
index 00000000..45b314ee
Binary files /dev/null and b/gn2/wqflask/static/new/images/edit.gif differ
diff --git a/gn2/wqflask/static/new/images/ipad_icon3.png b/gn2/wqflask/static/new/images/ipad_icon3.png
new file mode 100644
index 00000000..97060e97
Binary files /dev/null and b/gn2/wqflask/static/new/images/ipad_icon3.png differ
diff --git a/gn2/wqflask/static/new/images/question_mark.jpg b/gn2/wqflask/static/new/images/question_mark.jpg
new file mode 100644
index 00000000..82df7e81
Binary files /dev/null and b/gn2/wqflask/static/new/images/question_mark.jpg differ
diff --git a/gn2/wqflask/static/new/images/step1.gif b/gn2/wqflask/static/new/images/step1.gif
new file mode 100644
index 00000000..42d2bc7d
Binary files /dev/null and b/gn2/wqflask/static/new/images/step1.gif differ
diff --git a/gn2/wqflask/static/new/images/step2.gif b/gn2/wqflask/static/new/images/step2.gif
new file mode 100644
index 00000000..b3dca656
Binary files /dev/null and b/gn2/wqflask/static/new/images/step2.gif differ
diff --git a/gn2/wqflask/static/new/images/step3.gif b/gn2/wqflask/static/new/images/step3.gif
new file mode 100644
index 00000000..0e0c7ea2
Binary files /dev/null and b/gn2/wqflask/static/new/images/step3.gif differ
diff --git a/gn2/wqflask/static/new/javascript/auth/search.js b/gn2/wqflask/static/new/javascript/auth/search.js
new file mode 100644
index 00000000..d094cebf
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/auth/search.js
@@ -0,0 +1,172 @@
+class InvalidCSSIDSelector extends Error {
+ constructor(message) {
+ super(message);
+ this.name = "InvalidCSSIDSelector";
+ }
+}
+
+class InvalidDataAttributeName extends Error {
+ constructor(message) {
+ super(message);
+ this.name = "InvalidDataAttributeName";
+ }
+}
+
+/**
+ * CSSIDSelector: A CSS ID Selector
+ * @param {String} A CSS selector of the form '#...'
+ */
+class CSSIDSelector {
+ constructor(selector) {
+ if(!selector.startsWith("#")) {
+ throw new InvalidCSSIDSelector(
+ "Expected the CSS selector to begin with a `#` character.");
+ }
+ let id_str = selector.slice(1, selector.length);
+ if(document.getElementById(id_str) == null) {
+ throw new InvalidCSSIDSelector(
+ "Element with ID '" + id_str + "' does not exist.");
+ }
+ this.selector = selector;
+ }
+}
+
+/**
+ * TableDataSource: A type to represent a table's data source
+ * @param {String} A CSS selector for an ID
+ * @param {String} A `data-*` attribute name
+ */
+class TableDataSource {
+ constructor(table_id, data_attribute_name, checkbox_creation_function) {
+ this.table_id = new CSSIDSelector(table_id);
+ let data = document.querySelector(
+ table_id).getAttribute(data_attribute_name);
+ if(data == null) {
+ throw new InvalidDataAttributeName(
+ "data-* attribute '" + data_attribute_name + "' does not exist " +
+ "for table with ID '" + table_id.slice(1, table_id.length) +
+ "'.");
+ } else {
+ this.data_attribute_name = data_attribute_name;
+ }
+ this.checkbox_creation_function = checkbox_creation_function;
+ }
+}
+
+/**
+ * Render the table
+ * @param {String} The selector for the table's ID
+ * @param {String} The name of the data-* attribute holding the table's data
+ * @param {Function} The function to call to generate the appropriate checkbox
+ */
+function render_table(table_data_source) {
+ table_id = table_data_source.table_id.selector;
+ data_attr_name = table_data_source.data_attribute_name;
+ $(table_id + " tbody tr").remove();
+ table_data = JSON.parse($(table_id).attr(data_attr_name)).sort((d1, d2) => {
+ return (d1.dataset_name > d2.dataset_name ? 1 : (
+ d1.dataset_name < d2.dataset_name ? -1 : 0))
+ });
+ if(table_data.length < 1) {
+ row = $("
")
+ cell = $('');
+ cell.append(
+ $(''));
+ cell.append(" ");
+ cell.append("No genotype datasets remaining.");
+ row.append(cell);
+ $(table_id + " tbody").append(row);
+ }
+ table_data.forEach(function(dataset) {
+ row = $("")
+ row.append(table_data_source.checkbox_creation_function(dataset));
+ row.append(table_cell(dataset.InbredSetName));
+ row.append(table_cell(dataset.dataset_name));
+ row.append(table_cell(dataset.dataset_fullname));
+ row.append(table_cell(dataset.dataset_shortname));
+ $(table_id + " tbody").append(row);
+ });
+}
+
+function in_array(items, filter_fn) {
+ return items.filter(filter_fn).length > 0;
+}
+
+function remove_from_table_data(dataset, table_data_source, filter_fn) {
+ let table_id = table_data_source.table_id.selector;
+ let data_attr_name = table_data_source.data_attribute_name;
+ without_dataset = JSON.parse($(table_id).attr(data_attr_name)).filter(
+ filter_fn);
+ $(table_id).attr(data_attr_name, JSON.stringify(without_dataset));
+}
+
+function add_to_table_data(dataset, table_data_source, filter_fn) {
+ let table_id = table_data_source.table_id.selector;
+ let data_attr_name = table_data_source.data_attribute_name;
+ table_data = JSON.parse($(table_id).attr(data_attr_name));
+ if(!in_array(table_data, filter_fn)) {
+ table_data.push(dataset);
+ }
+ $(table_id).attr(data_attr_name, JSON.stringify(Array.from(table_data)));
+}
+
+/**
+ * Switch the dataset/trait from search table to selection table and vice versa
+ * @param {Object} A dataset/trait object
+ * @param {TableDataSource} The source table for the dataset/trait
+ * @param {TableDataSource} The destination table for the dataset/trait
+ */
+function select_deselect(item, source, destination, filter_fn, render_fn=render_table) {
+ dest_selector = destination.table_id.selector
+ dest_data = JSON.parse(
+ $(dest_selector).attr(destination.data_attribute_name));
+ add_to_table_data(item, destination, filter_fn); // Add to destination table
+ remove_from_table_data(item, source, (arg) => {return !filter_fn(arg)}); // Remove from source table
+ /***** BEGIN: Re-render tables *****/
+ render_fn(destination);
+ render_fn(source);
+ /***** END: Re-render tables *****/
+}
+
+function debounce(func, delay=500) {
+ var timeout;
+ return function search(event) {
+ clearTimeout(timeout);
+ timeout = setTimeout(func, delay);
+ };
+}
+
+/**
+ * Build a checkbox
+ * @param {Dataset Object} A JSON.stringify-able object
+ * @param {String} The name to assign the checkbox
+ */
+function build_checkbox(data_object, checkbox_name, checkbox_aux_classes="", checked=false) {
+ cell = $("");
+ check = $(
+ '');
+ check.val(JSON.stringify(data_object));
+ check.prop("checked", checked);
+ auxilliary_classes = checkbox_aux_classes.trim();
+ if(Boolean(auxilliary_classes)) {
+ check.attr("class",
+ check.attr("class") + " " + auxilliary_classes.trim());
+ }
+ cell.append(check);
+ return cell;
+}
+
+function link_checkbox(dataset) {
+ return build_checkbox(dataset, "selected", "checkbox-selected", true);
+}
+
+function search_checkbox(dataset) {
+ return build_checkbox(dataset, "search_datasets", "checkbox-search");
+}
+
+function table_cell(value) {
+ cell = $(" | ");
+ cell.html(value);
+ return cell;
+}
diff --git a/gn2/wqflask/static/new/javascript/auth/search_genotypes.js b/gn2/wqflask/static/new/javascript/auth/search_genotypes.js
new file mode 100644
index 00000000..d1b8ed9e
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/auth/search_genotypes.js
@@ -0,0 +1,95 @@
+function toggle_link_button() {
+ num_groups = $("#frm-link-genotypes select option").length - 1;
+ num_selected = JSON.parse(
+ $("#tbl-link-genotypes").attr("data-selected-datasets")).length;
+ if(num_groups > 0 && num_selected > 0) {
+ $("#frm-link-genotypes input[type='submit']").prop("disabled", false);
+ } else {
+ $("#frm-link-genotypes input[type='submit']").prop("disabled", true);
+ }
+}
+
+function search_genotypes() {
+ query = document.getElementById("txt-query").value;
+ selected = JSON.parse(document.getElementById(
+ "tbl-link-genotypes").getAttribute("data-selected-datasets"));
+ species_name = document.getElementById("txt-species-name").value
+ search_endpoint = "/auth/data/genotype/search"
+ search_table = new TableDataSource(
+ "#tbl-genotypes", "data-datasets", search_checkbox);
+ $.ajax(
+ search_endpoint,
+ {
+ "method": "POST",
+ "contentType": "application/json; charset=utf-8",
+ "dataType": "json",
+ "data": JSON.stringify({
+ "query": query,
+ "selected": selected,
+ "dataset_type": "genotype",
+ "species_name": species_name}),
+ "error": function(jqXHR, textStatus, errorThrown) {
+ data = jqXHR.responseJSON
+ elt = document.getElementById("search-error").setAttribute(
+ "style", "display: block;");
+ document.getElementById("search-error-text").innerHTML = (
+ data.error + " (" + data.status_code + "): " +
+ data.error_description);
+ document.getElementById("tbl-genotypes").setAttribute(
+ "data-datasets", JSON.stringify([]));
+ render_table(search_table);
+ },
+ "success": function(data, textStatus, jqXHR) {
+ document.getElementById("search-error").setAttribute(
+ "style", "display: none;");
+ document.getElementById("tbl-genotypes").setAttribute(
+ "data-datasets", JSON.stringify(data));
+ render_table(search_table);
+ }
+ });
+}
+
+/**
+ * Return function to check whether `dataset` is in array of `datasets`.
+ * @param {GenotypeDataset} A genotype dataset.
+ * @param {Array} An array of genotype datasets.
+ */
+function make_filter(trait) {
+ return (dst) => {
+ return (dst.SpeciesId == dataset.SpeciesId &&
+ dst.InbredSetId == dataset.InbredSetId &&
+ dst.GenoFreezeId == dataset.GenoFreezeId);
+ };
+}
+
+$(document).ready(function() {
+ let search_table = new TableDataSource(
+ "#tbl-genotypes", "data-datasets", search_checkbox);
+ let link_table = new TableDataSource(
+ "#tbl-link-genotypes", "data-selected-datasets", link_checkbox);
+
+ $("#frm-search-traits").submit(function(event) {
+ event.preventDefault();
+ return false;
+ });
+
+ $("#txt-query").keyup(debounce(search_genotypes));
+
+ $("#tbl-genotypes").on("change", ".checkbox-search", function(event) {
+ if(this.checked) {
+ dataset = JSON.parse(this.value);
+ select_deselect(
+ dataset, search_table, link_table, make_filter(dataset));
+ toggle_link_button();
+ }
+ });
+
+ $("#tbl-link-genotypes").on("change", ".checkbox-selected", function(event) {
+ if(!this.checked) {
+ dataset = JSON.parse(this.value);
+ select_deselect(
+ dataset, link_table, search_table, make_filter(dataset));
+ toggle_link_button();
+ }
+ });
+});
diff --git a/gn2/wqflask/static/new/javascript/auth/search_mrna.js b/gn2/wqflask/static/new/javascript/auth/search_mrna.js
new file mode 100644
index 00000000..3eca4ed2
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/auth/search_mrna.js
@@ -0,0 +1,97 @@
+function toggle_link_button() {
+ num_groups = $("#frm-link select option").length - 1;
+ num_selected = JSON.parse(
+ $("#tbl-link").attr("data-datasets")).length;
+ if(num_groups > 0 && num_selected > 0) {
+ $("#frm-link input[type='submit']").prop("disabled", false);
+ } else {
+ $("#frm-link input[type='submit']").prop("disabled", true);
+ }
+}
+
+function search_mrna() {
+ query = document.getElementById("txt-query").value;
+ selected = JSON.parse(document.getElementById(
+ "tbl-link").getAttribute("data-datasets"));
+ species_name = document.getElementById("txt-species-name").value
+ search_endpoint = "/auth/data/mrna/search"
+ search_table = new TableDataSource(
+ "#tbl-search", "data-datasets", search_checkbox);
+ $.ajax(
+ search_endpoint,
+ {
+ "method": "POST",
+ "contentType": "application/json; charset=utf-8",
+ "dataType": "json",
+ "data": JSON.stringify({
+ "query": query,
+ "selected": selected,
+ "dataset_type": "mrna",
+ "species_name": species_name}),
+ "error": function(jqXHR, textStatus, errorThrown) {
+ error_data = jqXHR.responseJSON
+ console.debug("ERROR_DATA:", error_data);
+ elt = document.getElementById("search-error").setAttribute(
+ "style", "display: block;");
+ document.getElementById("search-error-text").innerHTML = (
+ error_data.error + " (" + error_data.status_code + "): " +
+ error_data.error_description);
+ document.getElementById("tbl-search").setAttribute(
+ "data-datasets", JSON.stringify([]));
+ render_table(search_table);
+ },
+ "success": function(data, textStatus, jqXHR) {
+ document.getElementById("search-error").setAttribute(
+ "style", "display: none;");
+ document.getElementById("tbl-search").setAttribute(
+ "data-datasets", JSON.stringify(data));
+ render_table(search_table);
+ }
+ });
+}
+
+/**
+ * Make function to check whether `dataset` is in array of `datasets`.
+ * @param {mRNADataset} A mrna dataset.
+ * @param {Array} An array of mrna datasets.
+ */
+function make_filter(dataset) {
+ return (dst) => {
+ return (dst.SpeciesId == dataset.SpeciesId &&
+ dst.InbredSetId == dataset.InbredSetId &&
+ dst.ProbeFreezeId == dataset.ProbeFreezeId &&
+ dst.ProbeSetFreezeId == dataset.ProbeSetFreezeId);
+ };
+}
+
+$(document).ready(function() {
+ let search_table = new TableDataSource(
+ "#tbl-search", "data-datasets", search_checkbox);
+ let link_table = new TableDataSource(
+ "#tbl-link", "data-datasets", link_checkbox);
+
+ $("#frm-search").submit(function(event) {
+ event.preventDefault();
+ return false;
+ });
+
+ $("#txt-query").keyup(debounce(search_mrna));
+
+ $("#tbl-search").on("change", ".checkbox-search", function(event) {
+ if(this.checked) {
+ dataset = JSON.parse(this.value);
+ select_deselect(
+ dataset, search_table, link_table, make_filter(dataset));
+ toggle_link_button();
+ }
+ });
+
+ $("#tbl-link").on("change", ".checkbox-selected", function(event) {
+ if(!this.checked) {
+ dataset = JSON.parse(this.value);
+ select_deselect(
+ dataset, link_table, search_table, make_filter(dataset));
+ toggle_link_button();
+ }
+ });
+});
diff --git a/gn2/wqflask/static/new/javascript/auth/search_phenotypes.js b/gn2/wqflask/static/new/javascript/auth/search_phenotypes.js
new file mode 100644
index 00000000..99ecb16e
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/auth/search_phenotypes.js
@@ -0,0 +1,188 @@
+/**
+ * Global variables: Bad idea - figure out how to pass them down a call stack.
+ */
+search_table = new TableDataSource(
+ "#tbl-phenotypes", "data-traits", (trait) => {
+ return build_checkbox(trait, "search_traits", "checkbox-search");
+ });
+link_table = new TableDataSource(
+ "#tbl-link-phenotypes", "data-traits", (trait) => {
+ return build_checkbox(
+ trait, "selected", "checkbox-selected", checked=true);
+ });
+
+/**
+ * Toggle the state for the "Link Traits" button
+ */
+function toggle_link_button() {
+ num_groups = $("#frm-link-phenotypes select option").length - 1;
+ num_selected = JSON.parse(
+ $("#tbl-link-phenotypes").attr("data-traits")).length;
+ if(num_groups > 0 && num_selected > 0) {
+ $("#frm-link-phenotypes input[type='submit']").prop("disabled", false);
+ } else {
+ $("#frm-link-phenotypes input[type='submit']").prop("disabled", true);
+ }
+}
+
+/**
+ * Default error function: print out debug messages
+ */
+function default_error_fn(jqXHR, textStatus, errorThrown) {
+ console.debug("XHR:", jqXHR);
+ console.debug("STATUS:", textStatus);
+ console.debug("ERROR:", errorThrown);
+}
+
+/**
+ * Render the table(s) for the phenotype traits
+ * @param {TableDataSource} The table to render
+ */
+function render_pheno_table(table_data_source) {
+ table_id = table_data_source.table_id.selector;
+ data_attr_name = table_data_source.data_attribute_name;
+ $(table_id + " tbody tr").remove();
+ table_data = JSON.parse($(table_id).attr(data_attr_name)).sort((t1, t2) => {
+ return (t1.name > t2.name ? 1 : (t1.name < t2.name ? -1 : 0))
+ });
+ if(table_data.length < 1) {
+ row = $(" | ")
+ cell = $('');
+ cell.append(
+ $(''));
+ cell.append(" ");
+ cell.append("No phenotype traits to select from.");
+ row.append(cell);
+ $(table_id + " tbody").append(row);
+ }
+ table_data.forEach(function(trait) {
+ row = $("")
+ row.append(table_data_source.checkbox_creation_function(trait));
+ row.append(table_cell(trait.name));
+ row.append(table_cell(trait.group));
+ row.append(table_cell(trait.dataset));
+ row.append(table_cell(trait.dataset_fullname));
+ row.append(table_cell(trait.description));
+ row.append(table_cell(trait.authors.join(", ")));
+ row.append(table_cell(
+ '' +
+ trait.year + ""));
+ row.append(table_cell("Chr:" + trait.geno_chr + "@" + trait.geno_mb));
+ row.append(table_cell(trait.lrs));
+ row.append(table_cell(trait.additive));
+ $(table_id + " tbody").append(row);
+ });
+}
+
+function display_search_results(data, textStatus, jqXHR) {
+ if(data.status == "queued" || data.status == "started") {
+ setTimeout(() => {
+ fetch_search_results(data.job_id, display_search_results);
+ }, 250);
+ return;
+ }
+ if(data.status == "completed") {
+ $("#tbl-phenotypes").attr(
+ "data-traits", JSON.stringify(data.search_results));
+ // Remove this reference to global variable
+ render_pheno_table(search_table);
+ }
+ $("#txt-search").prop("disabled", false);
+}
+
+/**
+ * Fetch the search results
+ * @param {UUID}: The job id to fetch data for
+ */
+function fetch_search_results(job_id, success, error=default_error_fn) {
+ host = $("#frm-search-traits").attr("data-gn-server-url");
+ endpoint = host + "auth/data/search/phenotype/" + job_id
+ $("#txt-search").prop("disabled", true);
+ $.ajax(
+ endpoint,
+ {
+ "method": "GET",
+ "contentType": "application/json; charset=utf-8",
+ "dataType": "json",
+ "error": error,
+ "success": success
+ }
+ );
+}
+
+function search_phenotypes() {
+ query = document.getElementById("txt-query").value;
+ selected = JSON.parse(document.getElementById(
+ "tbl-link-phenotypes").getAttribute("data-traits"));
+ species_name = document.getElementById("txt-species-name").value
+ per_page = document.getElementById("txt-per-page").value
+ search_table = new TableDataSource(
+ "#tbl-phenotypes", "data-traits", search_checkbox);
+ endpoint = "/auth/data/phenotype/search"
+ $.ajax(
+ endpoint,
+ {
+ "method": "POST",
+ "contentType": "application/json; charset=utf-8",
+ "dataType": "json",
+ "data": JSON.stringify({
+ "query": query,
+ "species_name": species_name,
+ "dataset_type": "phenotype",
+ "per_page": per_page,
+ "selected_traits": selected
+ }),
+ "error": default_error_fn,
+ "success": (data, textStatus, jqXHR) => {
+ fetch_search_results(data.job_id, display_search_results);
+ }
+ });
+}
+
+/**
+ * Return a function to check whether `trait` is in array of `traits`.
+ * @param {PhenotypeTrait} A phenotype trait.
+ * @param {Array} An array of phenotype traits.
+ */
+function make_filter(trait) {
+ return (trt) => {
+ return (trt.species == trait.species &&
+ trt.group == trait.group &&
+ trt.dataset == trait.dataset &&
+ trt.name == trait.name);
+ };
+}
+
+$(document).ready(function() {
+ $("#frm-search-traits").submit(event => {
+ event.preventDefault();
+ return false;
+ });
+
+ $("#txt-query").keyup(debounce(search_phenotypes));
+
+ $("#tbl-link-phenotypes").on("change", ".checkbox-selected", function(event) {
+ if(!this.checked) {
+ trait = JSON.parse(this.value);
+ select_deselect(trait, link_table, search_table,
+ make_filter(trait), render_pheno_table);
+ toggle_link_button();
+ }
+ });
+
+ $("#tbl-phenotypes").on("change", ".checkbox-search", function(event) {
+ if(this.checked) {
+ trait = JSON.parse(this.value)
+ select_deselect(trait, search_table, link_table,
+ make_filter(trait), render_pheno_table);
+ toggle_link_button();
+ }
+ });
+
+ setTimeout(() => {
+ fetch_search_results(
+ $("#tbl-phenotypes").attr("data-initial-job-id"),
+ display_search_results);
+ }, 500);
+});
diff --git a/gn2/wqflask/static/new/javascript/auto_hide_column.js b/gn2/wqflask/static/new/javascript/auto_hide_column.js
new file mode 100644
index 00000000..1a4dc039
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/auto_hide_column.js
@@ -0,0 +1,21 @@
+ function filterDatatable(datatable){
+ let invalidColumns=[]
+ let columnCount=datatable.columns().header().length;
+ let numberOfRows=datatable.rows().count();
+ for (let col=0; col q3 + inter_quartile_range) {
+ j--;
+ }
+ console.log("[i, j]", [i, j]);
+ return [i, j];
+ };
+ })(this);
+ };
+
+ return Box_Plot;
+
+})();
+
+root.Box_Plot = Box_Plot;
diff --git a/gn2/wqflask/static/new/javascript/chr_lod_chart.js b/gn2/wqflask/static/new/javascript/chr_lod_chart.js
new file mode 100644
index 00000000..c6cbd01b
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/chr_lod_chart.js
@@ -0,0 +1,297 @@
+// Generated by CoffeeScript 1.9.2
+var Chr_Lod_Chart;
+
+Chr_Lod_Chart = (function() {
+ function Chr_Lod_Chart(plot_height, plot_width, chr, manhattanPlot, mappingScale) {
+ this.plot_height = plot_height;
+ this.plot_width = plot_width;
+ this.chr = chr;
+ this.manhattanPlot = manhattanPlot;
+ this.mappingScale = mappingScale;
+ this.qtl_results = js_data.qtl_results;
+ console.log("qtl_results are:", this.qtl_results);
+ console.log("chr is:", this.chr);
+ this.get_max_chr();
+ this.filter_qtl_results();
+ console.log("filtered results:", this.these_results);
+ this.get_qtl_count();
+ this.x_coords = [];
+ this.y_coords = [];
+ this.marker_names = [];
+ console.time('Create coordinates');
+ this.create_coordinates();
+ console.log("@x_coords: ", this.x_coords);
+ console.log("@y_coords: ", this.y_coords);
+ console.timeEnd('Create coordinates');
+ this.x_buffer = this.plot_width / 30;
+ this.y_buffer = this.plot_height / 20;
+ this.x_max = d3.max(this.x_coords);
+ this.y_max = d3.max(this.y_coords) * 1.2;
+ this.y_threshold = this.get_lod_threshold();
+ this.svg = this.create_svg();
+ this.plot_coordinates = _.zip(this.x_coords, this.y_coords, this.marker_names);
+ console.log("coordinates:", this.plot_coordinates);
+ this.plot_height -= this.y_buffer;
+ this.create_scales();
+ console.time('Create graph');
+ this.create_graph();
+ console.timeEnd('Create graph');
+ }
+
+ Chr_Lod_Chart.prototype.get_max_chr = function() {
+ var key, results;
+ this.max_chr = 0;
+ results = [];
+ for (key in js_data.chromosomes) {
+ console.log("key is:", key);
+ if (parseInt(key) > this.max_chr) {
+ results.push(this.max_chr = parseInt(key));
+ } else {
+ results.push(void 0);
+ }
+ }
+ return results;
+ };
+
+ Chr_Lod_Chart.prototype.filter_qtl_results = function() {
+ var i, len, ref, result, results, this_chr;
+ this.these_results = [];
+ this_chr = 100;
+ ref = this.qtl_results;
+ results = [];
+ for (i = 0, len = ref.length; i < len; i++) {
+ result = ref[i];
+ if (result.chr === "X") {
+ this_chr = this.max_chr;
+ } else {
+ this_chr = result.chr;
+ }
+ if (this_chr > parseInt(this.chr[0])) {
+ break;
+ }
+ if (parseInt(this_chr) === parseInt(this.chr[0])) {
+ results.push(this.these_results.push(result));
+ } else {
+ results.push(void 0);
+ }
+ }
+ return results;
+ };
+
+ Chr_Lod_Chart.prototype.get_qtl_count = function() {
+ var high_qtl_count, i, len, ref, result;
+ high_qtl_count = 0;
+ ref = this.these_results;
+ for (i = 0, len = ref.length; i < len; i++) {
+ result = ref[i];
+ if (result.lod_score > 1) {
+ high_qtl_count += 1;
+ }
+ }
+ console.log("high_qtl_count:", high_qtl_count);
+ return this.y_axis_filter = 2;
+ };
+
+ Chr_Lod_Chart.prototype.create_coordinates = function() {
+ var i, len, ref, result, results;
+ ref = this.these_results;
+ console.log("THESE_RESULTS:", ref)
+ results = [];
+ for (i = 0, len = ref.length; i < len; i++) {
+ result = ref[i];
+ this.x_coords.push(parseFloat(result.Mb));
+ if (js_data.result_score_type == "LOD") {
+ this.y_coords.push(result.lod_score);
+ }
+ else {
+ console.log("LRS VALUE:", result['lrs_value'])
+ this.y_coords.push(result['lrs_value']);
+ }
+ results.push(this.marker_names.push(result.name));
+ }
+ return results;
+ };
+
+ Chr_Lod_Chart.prototype.create_svg = function() {
+ var svg;
+ svg = d3.select("#topchart").append("svg").attr("class", "chr_manhattan_plot").attr("width", this.plot_width + this.x_buffer).attr("height", this.plot_height + this.y_buffer).append("g");
+ return svg;
+ };
+
+ Chr_Lod_Chart.prototype.create_scales = function() {
+ if (this.mappingScale == "morgan") {
+ max_pos = 0
+ for (i = 0, len = this.these_results.length; i < len; i++) {
+ marker = this.these_results[i]
+ if (parseFloat(marker['Mb']) > max_pos){
+ max_pos = parseFloat(marker.Mb)
+ }
+ }
+ this.x_scale = d3.scale.linear().domain([0, max_pos]).range([this.x_buffer, this.plot_width]);
+ }
+ else {
+ this.x_scale = d3.scale.linear().domain([0, this.chr[1]]).range([this.x_buffer, this.plot_width]);
+ }
+ return this.y_scale = d3.scale.linear().domain([0, this.y_max]).range([this.plot_height, this.y_buffer]);
+ };
+
+ Chr_Lod_Chart.prototype.get_lod_threshold = function() {
+ if (this.y_max / 2 > 2) {
+ return this.y_max / 2;
+ } else {
+ return 2;
+ }
+ };
+
+ Chr_Lod_Chart.prototype.create_graph = function() {
+ this.add_border();
+ this.add_x_axis();
+ this.add_y_axis();
+ this.add_title();
+ this.add_back_button();
+ if (this.manhattanPlot) {
+ return this.add_plot_points();
+ } else {
+ return this.add_path();
+ }
+ };
+
+ Chr_Lod_Chart.prototype.add_border = function() {
+ var border_coords;
+ border_coords = [[this.y_buffer, this.plot_height, this.x_buffer, this.x_buffer], [this.y_buffer, this.plot_height, this.plot_width, this.plot_width], [this.y_buffer, this.y_buffer, this.x_buffer, this.plot_width], [this.plot_height, this.plot_height, this.x_buffer, this.plot_width]];
+ return this.svg.selectAll("line").data(border_coords).enter().append("line").attr("y1", (function(_this) {
+ return function(d) {
+ return d[0];
+ };
+ })(this)).attr("y2", (function(_this) {
+ return function(d) {
+ return d[1];
+ };
+ })(this)).attr("x1", (function(_this) {
+ return function(d) {
+ return d[2];
+ };
+ })(this)).attr("x2", (function(_this) {
+ return function(d) {
+ return d[3];
+ };
+ })(this)).style("stroke", "#000");
+ };
+
+ Chr_Lod_Chart.prototype.add_x_axis = function() {
+ this.xAxis = d3.svg.axis().scale(this.x_scale).orient("bottom").ticks(20);
+ this.xAxis.tickFormat((function(_this) {
+ return function(d) {
+ d3.format("d");
+ return d;
+ };
+ })(this));
+ return this.svg.append("g").attr("class", "x_axis").attr("transform", "translate(0," + this.plot_height + ")").call(this.xAxis).selectAll("text").attr("text-anchor", "right").attr("font-size", "12px").attr("dx", "-1.6em").attr("transform", (function(_this) {
+ return function(d) {
+ return "translate(-12,0) rotate(-90)";
+ };
+ })(this));
+ };
+
+ Chr_Lod_Chart.prototype.add_y_axis = function() {
+ this.yAxis = d3.svg.axis().scale(this.y_scale).orient("left").ticks(5);
+ return this.svg.append("g").attr("class", "y_axis").attr("transform", "translate(" + this.x_buffer + ",0)").call(this.yAxis);
+ };
+
+ Chr_Lod_Chart.prototype.add_title = function() {
+ return this.svg.append("text").attr("class", "title").text("Chr " + this.chr[0]).attr("x", (function(_this) {
+ return function(d) {
+ return (_this.plot_width + _this.x_buffer) / 2;
+ };
+ })(this)).attr("y", this.y_buffer + 20).attr("dx", "0em").attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "18px").attr("fill", "black");
+ };
+
+ Chr_Lod_Chart.prototype.add_back_button = function() {
+ return $("#return_to_full_view").show().click((function(_this) {
+ return function() {
+ return _this.return_to_full_view();
+ };
+ })(this));
+ };
+
+ Chr_Lod_Chart.prototype.add_path = function() {
+ var line_function, line_graph;
+ line_function = d3.svg.line().x((function(_this) {
+ return function(d) {
+ return _this.x_scale(d[0]);
+ };
+ })(this)).y((function(_this) {
+ return function(d) {
+ return _this.y_scale(d[1]);
+ };
+ })(this)).interpolate("linear");
+ return line_graph = this.svg.append("path").attr("d", line_function(this.plot_coordinates)).attr("stroke", "blue").attr("stroke-width", 1).attr("fill", "none");
+ };
+
+ Chr_Lod_Chart.prototype.add_plot_points = function() {
+ return this.plot_point = this.svg.selectAll("circle").data(this.plot_coordinates).enter().append("circle").attr("cx", (function(_this) {
+ return function(d) {
+ return _this.x_scale(d[0]);
+ };
+ })(this)).attr("cy", (function(_this) {
+ return function(d) {
+ return _this.y_scale(d[1]);
+ };
+ })(this)).attr("r", (function(_this) {
+ return function(d) {
+ return 2;
+ };
+ })(this)).attr("fill", (function(_this) {
+ return function(d) {
+ return "black";
+ };
+ })(this)).attr("stroke", "black").attr("stroke-width", "1").attr("id", (function(_this) {
+ return function(d) {
+ return "point_" + String(d[2]);
+ };
+ })(this)).classed("circle", true).on("mouseover", (function(_this) {
+ return function(d) {
+ var this_id;
+ console.log("d3.event is:", d3.event);
+ console.log("d is:", d);
+ this_id = "point_" + String(d[2]);
+ return d3.select("#" + this_id).classed("d3_highlight", true).attr("r", 5).attr("stroke", "none").attr("fill", "blue").call(_this.show_marker_in_table(d));
+ };
+ })(this)).on("mouseout", (function(_this) {
+ return function(d) {
+ var this_id;
+ this_id = "point_" + String(d[2]);
+ return d3.select("#" + this_id).classed("d3_highlight", false).attr("r", function(d) {
+ return 2;
+ }).attr("fill", function(d) {
+ return "black";
+ }).attr("stroke", "black").attr("stroke-width", "1");
+ };
+ })(this)).append("svg:title").text((function(_this) {
+ return function(d) {
+ return d[2];
+ };
+ })(this));
+ };
+
+ Chr_Lod_Chart.prototype.return_to_full_view = function() {
+ $("#return_to_full_view").hide();
+ $('#topchart').remove();
+ $('#chart_container').append('');
+ return create_lod_chart();
+ };
+
+ Chr_Lod_Chart.prototype.show_marker_in_table = function(marker_info) {
+ var marker_name;
+ console.log("in show_marker_in_table");
+
+ /* Searches for the select marker in the results table below */
+ if (marker_info) {
+ marker_name = marker_info[2];
+ return $("#qtl_results_filter").find("input:first").val(marker_name).change();
+ }
+ };
+
+ return Chr_Lod_Chart;
+
+})();
diff --git a/gn2/wqflask/static/new/javascript/chr_manhattan_plot.js b/gn2/wqflask/static/new/javascript/chr_manhattan_plot.js
new file mode 100644
index 00000000..c661edc7
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/chr_manhattan_plot.js
@@ -0,0 +1,273 @@
+// Generated by CoffeeScript 1.8.0
+var Chr_Manhattan_Plot;
+
+Chr_Manhattan_Plot = (function() {
+ function Chr_Manhattan_Plot(plot_height, plot_width, chr, manhattanPlot) {
+ this.plot_height = plot_height;
+ this.plot_width = plot_width;
+ this.chr = chr;
+ this.qtl_results = js_data.qtl_results;
+ console.log("qtl_results are:", this.qtl_results);
+ console.log("chr is:", this.chr);
+ this.get_max_chr();
+ this.filter_qtl_results();
+ console.log("filtered results:", this.these_results);
+ this.get_qtl_count();
+ this.x_coords = [];
+ this.y_coords = [];
+ this.marker_names = [];
+ console.time('Create coordinates');
+ this.create_coordinates();
+ console.log("@x_coords: ", this.x_coords);
+ console.log("@y_coords: ", this.y_coords);
+ console.timeEnd('Create coordinates');
+ this.x_buffer = this.plot_width / 30;
+ this.y_buffer = this.plot_height / 20;
+ this.x_max = d3.max(this.x_coords);
+ this.y_max = d3.max(this.y_coords) * 1.2;
+ this.y_threshold = this.get_lod_threshold();
+ this.svg = this.create_svg();
+ this.plot_coordinates = _.zip(this.x_coords, this.y_coords, this.marker_names);
+ console.log("coordinates:", this.plot_coordinates);
+ this.plot_height -= this.y_buffer;
+ this.create_scales();
+ console.time('Create graph');
+ this.create_graph();
+ console.timeEnd('Create graph');
+ }
+
+ Chr_Manhattan_Plot.prototype.get_max_chr = function() {
+ var key, _results;
+ this.max_chr = 0;
+ _results = [];
+ for (key in js_data.chromosomes) {
+ console.log("key is:", key);
+ if (parseInt(key) > this.max_chr) {
+ _results.push(this.max_chr = parseInt(key));
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
+ Chr_Manhattan_Plot.prototype.filter_qtl_results = function() {
+ var result, this_chr, _i, _len, _ref, _results;
+ this.these_results = [];
+ this_chr = 100;
+ _ref = this.qtl_results;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ result = _ref[_i];
+ if (result.chr === "X") {
+ this_chr = this.max_chr;
+ } else {
+ this_chr = result.chr;
+ }
+ console.log("this_chr is:", this_chr);
+ console.log("@chr[0] is:", parseInt(this.chr[0]));
+ if (this_chr > parseInt(this.chr[0])) {
+ break;
+ }
+ if (parseInt(this_chr) === parseInt(this.chr[0])) {
+ _results.push(this.these_results.push(result));
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
+ Chr_Manhattan_Plot.prototype.get_qtl_count = function() {
+ var high_qtl_count, result, _i, _len, _ref;
+ high_qtl_count = 0;
+ _ref = this.these_results;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ result = _ref[_i];
+ if (result.lod_score > 1) {
+ high_qtl_count += 1;
+ }
+ }
+ console.log("high_qtl_count:", high_qtl_count);
+ return this.y_axis_filter = 2;
+ };
+
+ Chr_Manhattan_Plot.prototype.create_coordinates = function() {
+ var result, _i, _len, _ref, _results;
+ _ref = this.these_results;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ result = _ref[_i];
+ this.x_coords.push(parseFloat(result.Mb));
+ this.y_coords.push(result.lod_score);
+ _results.push(this.marker_names.push(result.name));
+ }
+ return _results;
+ };
+
+ Chr_Manhattan_Plot.prototype.create_svg = function() {
+ var svg;
+ svg = d3.select("#topchart").append("svg").attr("class", "chr_manhattan_plot").attr("width", this.plot_width + this.x_buffer).attr("height", this.plot_height + this.y_buffer).append("g");
+ return svg;
+ };
+
+ Chr_Manhattan_Plot.prototype.create_scales = function() {
+ this.x_scale = d3.scale.linear().domain([0, this.chr[1]]).range([this.x_buffer, this.plot_width]);
+ return this.y_scale = d3.scale.linear().domain([0, this.y_max]).range([this.plot_height, this.y_buffer]);
+ };
+
+ Chr_Manhattan_Plot.prototype.get_lod_threshold = function() {
+ if (this.y_max / 2 > 2) {
+ return this.y_max / 2;
+ } else {
+ return 2;
+ }
+ };
+
+ Chr_Manhattan_Plot.prototype.create_graph = function() {
+ this.add_border();
+ this.add_x_axis();
+ this.add_y_axis();
+ this.add_title();
+ this.add_back_button();
+ if (manhattanPlot) {
+ return this.add_plot_points();
+ } else {
+ return this.add_path();
+ }
+ };
+
+ Chr_Manhattan_Plot.prototype.add_border = function() {
+ var border_coords;
+ border_coords = [[this.y_buffer, this.plot_height, this.x_buffer, this.x_buffer], [this.y_buffer, this.plot_height, this.plot_width, this.plot_width], [this.y_buffer, this.y_buffer, this.x_buffer, this.plot_width], [this.plot_height, this.plot_height, this.x_buffer, this.plot_width]];
+ return this.svg.selectAll("line").data(border_coords).enter().append("line").attr("y1", (function(_this) {
+ return function(d) {
+ return d[0];
+ };
+ })(this)).attr("y2", (function(_this) {
+ return function(d) {
+ return d[1];
+ };
+ })(this)).attr("x1", (function(_this) {
+ return function(d) {
+ return d[2];
+ };
+ })(this)).attr("x2", (function(_this) {
+ return function(d) {
+ return d[3];
+ };
+ })(this)).style("stroke", "#000");
+ };
+
+ Chr_Manhattan_Plot.prototype.add_x_axis = function() {
+ this.xAxis = d3.svg.axis().scale(this.x_scale).orient("bottom").ticks(20);
+ this.xAxis.tickFormat((function(_this) {
+ return function(d) {
+ d3.format("d");
+ return d;
+ };
+ })(this));
+ return this.svg.append("g").attr("class", "x_axis").attr("transform", "translate(0," + this.plot_height + ")").call(this.xAxis).selectAll("text").attr("text-anchor", "right").attr("font-size", "12px").attr("dx", "-1.6em").attr("transform", (function(_this) {
+ return function(d) {
+ return "translate(-12,0) rotate(-90)";
+ };
+ })(this));
+ };
+
+ Chr_Manhattan_Plot.prototype.add_y_axis = function() {
+ this.yAxis = d3.svg.axis().scale(this.y_scale).orient("left").ticks(5);
+ return this.svg.append("g").attr("class", "y_axis").attr("transform", "translate(" + this.x_buffer + ",0)").call(this.yAxis);
+ };
+
+ Chr_Manhattan_Plot.prototype.add_title = function() {
+ return this.svg.append("text").attr("class", "title").text("Chr " + this.chr[0]).attr("x", (function(_this) {
+ return function(d) {
+ return (_this.plot_width + _this.x_buffer) / 2;
+ };
+ })(this)).attr("y", this.y_buffer + 20).attr("dx", "0em").attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "18px").attr("fill", "black");
+ };
+
+ Chr_Manhattan_Plot.prototype.add_back_button = function() {
+ return this.svg.append("text").attr("class", "back").text("Return to full view").attr("x", this.x_buffer * 2).attr("y", this.y_buffer / 2).attr("dx", "0em").attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "18px").attr("cursor", "pointer").attr("fill", "black").on("click", this.return_to_full_view);
+ };
+
+ Chr_Manhattan_Plot.prototype.add_path = function() {
+ var line_function, line_graph;
+ line_function = d3.svg.line().x((function(_this) {
+ return function(d) {
+ return _this.x_scale(d[0]);
+ };
+ })(this)).y((function(_this) {
+ return function(d) {
+ return _this.y_scale(d[1]);
+ };
+ })(this)).interpolate("linear");
+ return line_graph = this.svg.append("path").attr("d", line_function(this.plot_coordinates)).attr("stroke", "blue").attr("stroke-width", 1).attr("fill", "none");
+ };
+
+ Chr_Manhattan_Plot.prototype.add_plot_points = function() {
+ return this.plot_point = this.svg.selectAll("circle").data(this.plot_coordinates).enter().append("circle").attr("cx", (function(_this) {
+ return function(d) {
+ return _this.x_scale(d[0]);
+ };
+ })(this)).attr("cy", (function(_this) {
+ return function(d) {
+ return _this.y_scale(d[1]);
+ };
+ })(this)).attr("r", (function(_this) {
+ return function(d) {
+ return 2;
+ };
+ })(this)).attr("fill", (function(_this) {
+ return function(d) {
+ return "black";
+ };
+ })(this)).attr("stroke", "black").attr("stroke-width", "1").attr("id", (function(_this) {
+ return function(d) {
+ return "point_" + String(d[2]);
+ };
+ })(this)).classed("circle", true).on("mouseover", (function(_this) {
+ return function(d) {
+ var this_id;
+ console.log("d3.event is:", d3.event);
+ console.log("d is:", d);
+ this_id = "point_" + String(d[2]);
+ return d3.select("#" + this_id).classed("d3_highlight", true).attr("r", 5).attr("stroke", "none").attr("fill", "blue").call(_this.show_marker_in_table(d));
+ };
+ })(this)).on("mouseout", (function(_this) {
+ return function(d) {
+ var this_id;
+ this_id = "point_" + String(d[2]);
+ return d3.select("#" + this_id).classed("d3_highlight", false).attr("r", function(d) {
+ return 2;
+ }).attr("fill", function(d) {
+ return "black";
+ }).attr("stroke", "black").attr("stroke-width", "1");
+ };
+ })(this)).append("svg:title").text((function(_this) {
+ return function(d) {
+ return d[2];
+ };
+ })(this));
+ };
+
+ Chr_Manhattan_Plot.prototype.return_to_full_view = function() {
+ $('#topchart').remove();
+ $('#chart_container').append('');
+ return create_manhattan_plot();
+ };
+
+ Chr_Manhattan_Plot.prototype.show_marker_in_table = function(marker_info) {
+ var marker_name;
+ console.log("in show_marker_in_table");
+
+ /* Searches for the select marker in the results table below */
+ if (marker_info) {
+ marker_name = marker_info[2];
+ return $("#qtl_results_filter").find("input:first").val(marker_name).change();
+ }
+ };
+
+ return Chr_Manhattan_Plot;
+
+})();
diff --git a/gn2/wqflask/static/new/javascript/colorbrewer.js b/gn2/wqflask/static/new/javascript/colorbrewer.js
new file mode 100644
index 00000000..2efa9632
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/colorbrewer.js
@@ -0,0 +1,302 @@
+// This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/).
+var colorbrewer = {YlGn: {
+3: ["#f7fcb9","#addd8e","#31a354"],
+4: ["#ffffcc","#c2e699","#78c679","#238443"],
+5: ["#ffffcc","#c2e699","#78c679","#31a354","#006837"],
+6: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#31a354","#006837"],
+7: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
+8: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
+9: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"]
+},YlGnBu: {
+3: ["#edf8b1","#7fcdbb","#2c7fb8"],
+4: ["#ffffcc","#a1dab4","#41b6c4","#225ea8"],
+5: ["#ffffcc","#a1dab4","#41b6c4","#2c7fb8","#253494"],
+6: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#2c7fb8","#253494"],
+7: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
+8: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
+9: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]
+},GnBu: {
+3: ["#e0f3db","#a8ddb5","#43a2ca"],
+4: ["#f0f9e8","#bae4bc","#7bccc4","#2b8cbe"],
+5: ["#f0f9e8","#bae4bc","#7bccc4","#43a2ca","#0868ac"],
+6: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#43a2ca","#0868ac"],
+7: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
+8: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
+9: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"]
+},BuGn: {
+3: ["#e5f5f9","#99d8c9","#2ca25f"],
+4: ["#edf8fb","#b2e2e2","#66c2a4","#238b45"],
+5: ["#edf8fb","#b2e2e2","#66c2a4","#2ca25f","#006d2c"],
+6: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#2ca25f","#006d2c"],
+7: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
+8: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
+9: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"]
+},PuBuGn: {
+3: ["#ece2f0","#a6bddb","#1c9099"],
+4: ["#f6eff7","#bdc9e1","#67a9cf","#02818a"],
+5: ["#f6eff7","#bdc9e1","#67a9cf","#1c9099","#016c59"],
+6: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#1c9099","#016c59"],
+7: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
+8: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
+9: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"]
+},PuBu: {
+3: ["#ece7f2","#a6bddb","#2b8cbe"],
+4: ["#f1eef6","#bdc9e1","#74a9cf","#0570b0"],
+5: ["#f1eef6","#bdc9e1","#74a9cf","#2b8cbe","#045a8d"],
+6: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#2b8cbe","#045a8d"],
+7: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
+8: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
+9: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"]
+},BuPu: {
+3: ["#e0ecf4","#9ebcda","#8856a7"],
+4: ["#edf8fb","#b3cde3","#8c96c6","#88419d"],
+5: ["#edf8fb","#b3cde3","#8c96c6","#8856a7","#810f7c"],
+6: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8856a7","#810f7c"],
+7: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
+8: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
+9: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"]
+},RdPu: {
+3: ["#fde0dd","#fa9fb5","#c51b8a"],
+4: ["#feebe2","#fbb4b9","#f768a1","#ae017e"],
+5: ["#feebe2","#fbb4b9","#f768a1","#c51b8a","#7a0177"],
+6: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#c51b8a","#7a0177"],
+7: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
+8: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
+9: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"]
+},PuRd: {
+3: ["#e7e1ef","#c994c7","#dd1c77"],
+4: ["#f1eef6","#d7b5d8","#df65b0","#ce1256"],
+5: ["#f1eef6","#d7b5d8","#df65b0","#dd1c77","#980043"],
+6: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#dd1c77","#980043"],
+7: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
+8: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
+9: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"]
+},OrRd: {
+3: ["#fee8c8","#fdbb84","#e34a33"],
+4: ["#fef0d9","#fdcc8a","#fc8d59","#d7301f"],
+5: ["#fef0d9","#fdcc8a","#fc8d59","#e34a33","#b30000"],
+6: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#e34a33","#b30000"],
+7: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
+8: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
+9: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"]
+},YlOrRd: {
+3: ["#ffeda0","#feb24c","#f03b20"],
+4: ["#ffffb2","#fecc5c","#fd8d3c","#e31a1c"],
+5: ["#ffffb2","#fecc5c","#fd8d3c","#f03b20","#bd0026"],
+6: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#f03b20","#bd0026"],
+7: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
+8: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
+9: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]
+},YlOrBr: {
+3: ["#fff7bc","#fec44f","#d95f0e"],
+4: ["#ffffd4","#fed98e","#fe9929","#cc4c02"],
+5: ["#ffffd4","#fed98e","#fe9929","#d95f0e","#993404"],
+6: ["#ffffd4","#fee391","#fec44f","#fe9929","#d95f0e","#993404"],
+7: ["#ffffd4","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
+8: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
+9: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"]
+},Purples: {
+3: ["#efedf5","#bcbddc","#756bb1"],
+4: ["#f2f0f7","#cbc9e2","#9e9ac8","#6a51a3"],
+5: ["#f2f0f7","#cbc9e2","#9e9ac8","#756bb1","#54278f"],
+6: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#756bb1","#54278f"],
+7: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
+8: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
+9: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]
+},Blues: {
+3: ["#deebf7","#9ecae1","#3182bd"],
+4: ["#eff3ff","#bdd7e7","#6baed6","#2171b5"],
+5: ["#eff3ff","#bdd7e7","#6baed6","#3182bd","#08519c"],
+6: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#3182bd","#08519c"],
+7: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
+8: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
+9: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]
+},Greens: {
+3: ["#e5f5e0","#a1d99b","#31a354"],
+4: ["#edf8e9","#bae4b3","#74c476","#238b45"],
+5: ["#edf8e9","#bae4b3","#74c476","#31a354","#006d2c"],
+6: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#31a354","#006d2c"],
+7: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
+8: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
+9: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]
+},Oranges: {
+3: ["#fee6ce","#fdae6b","#e6550d"],
+4: ["#feedde","#fdbe85","#fd8d3c","#d94701"],
+5: ["#feedde","#fdbe85","#fd8d3c","#e6550d","#a63603"],
+6: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#e6550d","#a63603"],
+7: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
+8: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
+9: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]
+},Reds: {
+3: ["#fee0d2","#fc9272","#de2d26"],
+4: ["#fee5d9","#fcae91","#fb6a4a","#cb181d"],
+5: ["#fee5d9","#fcae91","#fb6a4a","#de2d26","#a50f15"],
+6: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#de2d26","#a50f15"],
+7: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
+8: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
+9: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]
+},Greys: {
+3: ["#f0f0f0","#bdbdbd","#636363"],
+4: ["#f7f7f7","#cccccc","#969696","#525252"],
+5: ["#f7f7f7","#cccccc","#969696","#636363","#252525"],
+6: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#636363","#252525"],
+7: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
+8: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
+9: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]
+},PuOr: {
+3: ["#f1a340","#f7f7f7","#998ec3"],
+4: ["#e66101","#fdb863","#b2abd2","#5e3c99"],
+5: ["#e66101","#fdb863","#f7f7f7","#b2abd2","#5e3c99"],
+6: ["#b35806","#f1a340","#fee0b6","#d8daeb","#998ec3","#542788"],
+7: ["#b35806","#f1a340","#fee0b6","#f7f7f7","#d8daeb","#998ec3","#542788"],
+8: ["#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788"],
+9: ["#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788"],
+10: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],
+11: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"]
+},BrBG: {
+3: ["#d8b365","#f5f5f5","#5ab4ac"],
+4: ["#a6611a","#dfc27d","#80cdc1","#018571"],
+5: ["#a6611a","#dfc27d","#f5f5f5","#80cdc1","#018571"],
+6: ["#8c510a","#d8b365","#f6e8c3","#c7eae5","#5ab4ac","#01665e"],
+7: ["#8c510a","#d8b365","#f6e8c3","#f5f5f5","#c7eae5","#5ab4ac","#01665e"],
+8: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e"],
+9: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e"],
+10: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],
+11: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]
+},PRGn: {
+3: ["#af8dc3","#f7f7f7","#7fbf7b"],
+4: ["#7b3294","#c2a5cf","#a6dba0","#008837"],
+5: ["#7b3294","#c2a5cf","#f7f7f7","#a6dba0","#008837"],
+6: ["#762a83","#af8dc3","#e7d4e8","#d9f0d3","#7fbf7b","#1b7837"],
+7: ["#762a83","#af8dc3","#e7d4e8","#f7f7f7","#d9f0d3","#7fbf7b","#1b7837"],
+8: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
+9: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
+10: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],
+11: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]
+},PiYG: {
+3: ["#e9a3c9","#f7f7f7","#a1d76a"],
+4: ["#d01c8b","#f1b6da","#b8e186","#4dac26"],
+5: ["#d01c8b","#f1b6da","#f7f7f7","#b8e186","#4dac26"],
+6: ["#c51b7d","#e9a3c9","#fde0ef","#e6f5d0","#a1d76a","#4d9221"],
+7: ["#c51b7d","#e9a3c9","#fde0ef","#f7f7f7","#e6f5d0","#a1d76a","#4d9221"],
+8: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
+9: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
+10: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],
+11: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]
+},RdBu: {
+3: ["#ef8a62","#f7f7f7","#67a9cf"],
+4: ["#ca0020","#f4a582","#92c5de","#0571b0"],
+5: ["#ca0020","#f4a582","#f7f7f7","#92c5de","#0571b0"],
+6: ["#b2182b","#ef8a62","#fddbc7","#d1e5f0","#67a9cf","#2166ac"],
+7: ["#b2182b","#ef8a62","#fddbc7","#f7f7f7","#d1e5f0","#67a9cf","#2166ac"],
+8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
+9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
+10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],
+11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]
+},RdGy: {
+3: ["#ef8a62","#ffffff","#999999"],
+4: ["#ca0020","#f4a582","#bababa","#404040"],
+5: ["#ca0020","#f4a582","#ffffff","#bababa","#404040"],
+6: ["#b2182b","#ef8a62","#fddbc7","#e0e0e0","#999999","#4d4d4d"],
+7: ["#b2182b","#ef8a62","#fddbc7","#ffffff","#e0e0e0","#999999","#4d4d4d"],
+8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d"],
+9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d"],
+10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],
+11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"]
+},RdYlBu: {
+3: ["#fc8d59","#ffffbf","#91bfdb"],
+4: ["#d7191c","#fdae61","#abd9e9","#2c7bb6"],
+5: ["#d7191c","#fdae61","#ffffbf","#abd9e9","#2c7bb6"],
+6: ["#d73027","#fc8d59","#fee090","#e0f3f8","#91bfdb","#4575b4"],
+7: ["#d73027","#fc8d59","#fee090","#ffffbf","#e0f3f8","#91bfdb","#4575b4"],
+8: ["#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4"],
+9: ["#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4"],
+10: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],
+11: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]
+},Spectral: {
+3: ["#fc8d59","#ffffbf","#99d594"],
+4: ["#d7191c","#fdae61","#abdda4","#2b83ba"],
+5: ["#d7191c","#fdae61","#ffffbf","#abdda4","#2b83ba"],
+6: ["#d53e4f","#fc8d59","#fee08b","#e6f598","#99d594","#3288bd"],
+7: ["#d53e4f","#fc8d59","#fee08b","#ffffbf","#e6f598","#99d594","#3288bd"],
+8: ["#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd"],
+9: ["#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd"],
+10: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],
+11: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]
+},RdYlGn: {
+3: ["#fc8d59","#ffffbf","#91cf60"],
+4: ["#d7191c","#fdae61","#a6d96a","#1a9641"],
+5: ["#d7191c","#fdae61","#ffffbf","#a6d96a","#1a9641"],
+6: ["#d73027","#fc8d59","#fee08b","#d9ef8b","#91cf60","#1a9850"],
+7: ["#d73027","#fc8d59","#fee08b","#ffffbf","#d9ef8b","#91cf60","#1a9850"],
+8: ["#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
+9: ["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
+10: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],
+11: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]
+},Accent: {
+3: ["#7fc97f","#beaed4","#fdc086"],
+4: ["#7fc97f","#beaed4","#fdc086","#ffff99"],
+5: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0"],
+6: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f"],
+7: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17"],
+8: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"]
+},Dark2: {
+3: ["#1b9e77","#d95f02","#7570b3"],
+4: ["#1b9e77","#d95f02","#7570b3","#e7298a"],
+5: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e"],
+6: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02"],
+7: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],
+8: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"]
+},Paired: {
+3: ["#a6cee3","#1f78b4","#b2df8a"],
+4: ["#a6cee3","#1f78b4","#b2df8a","#33a02c"],
+5: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99"],
+6: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c"],
+7: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f"],
+8: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],
+9: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6"],
+10: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a"],
+11: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99"],
+12: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"]
+},Pastel1: {
+3: ["#fbb4ae","#b3cde3","#ccebc5"],
+4: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4"],
+5: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6"],
+6: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc"],
+7: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd"],
+8: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],
+9: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]
+},Pastel2: {
+3: ["#b3e2cd","#fdcdac","#cbd5e8"],
+4: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4"],
+5: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9"],
+6: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae"],
+7: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],
+8: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"]
+},Set1: {
+3: ["#e41a1c","#377eb8","#4daf4a"],
+4: ["#e41a1c","#377eb8","#4daf4a","#984ea3"],
+5: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"],
+6: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33"],
+7: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628"],
+8: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],
+9: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"]
+},Set2: {
+3: ["#66c2a5","#fc8d62","#8da0cb"],
+4: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3"],
+5: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854"],
+6: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f"],
+7: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494"],
+8: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"]
+},Set3: {
+3: ["#8dd3c7","#ffffb3","#bebada"],
+4: ["#8dd3c7","#ffffb3","#bebada","#fb8072"],
+5: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3"],
+6: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462"],
+7: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69"],
+8: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"],
+9: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9"],
+10: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],
+11: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5"],
+12: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"]
+}};
diff --git a/gn2/wqflask/static/new/javascript/compare_traits_scatterplot.js b/gn2/wqflask/static/new/javascript/compare_traits_scatterplot.js
new file mode 100644
index 00000000..5c0ef16c
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/compare_traits_scatterplot.js
@@ -0,0 +1,121 @@
+// Generated by CoffeeScript 1.8.0
+var root;
+
+root = typeof exports !== "undefined" && exports !== null ? exports : this;
+
+root.create_scatterplot = function(json_ids, json_data) {
+ var data, h, halfh, halfw, indID, margin, mychart, totalh, totalw, w;
+ console.log("TESTING2");
+ h = 400;
+ w = 500;
+ margin = {
+ left: 60,
+ top: 40,
+ right: 40,
+ bottom: 40,
+ inner: 5
+ };
+ halfh = h + margin.top + margin.bottom;
+ totalh = halfh * 2;
+ halfw = w + margin.left + margin.right;
+ totalw = halfw * 2;
+ mychart = scatterplot().xvar(0).yvar(1).xlab("X").ylab("Y").height(h).width(w).margin(margin);
+ data = json_data;
+ indID = json_ids;
+ d3.select("div#comparison_scatterplot").datum({
+ data: data,
+ indID: indID
+ }).call(mychart);
+ return mychart.pointsSelect().on("mouseover", function(d) {
+ return d3.select(this).attr("r", mychart.pointsize() * 3);
+ }).on("mouseout", function(d) {
+ return d3.select(this).attr("r", mychart.pointsize());
+ });
+};
+
+root.create_scatterplots = function(trait_names, json_ids, json_data) {
+ var brush, brushend, brushmove, brushstart, chart, data, h, halfh, halfw, i, indID, margin, mychart, num_traits, svg, totalh, totalw, w, xscale, xshift, xvar, yscale, yshift, yvar, _i, _j, _k, _ref, _ref1, _ref2, _results;
+ console.log("json_data:", json_data);
+ console.log("trait_names:", trait_names);
+ num_traits = json_data.length;
+ console.log("num_traits:", num_traits);
+ h = 300;
+ w = 400;
+ margin = {
+ left: 60,
+ top: 40,
+ right: 40,
+ bottom: 40,
+ inner: 5
+ };
+ halfh = h + margin.top + margin.bottom;
+ totalh = halfh * (num_traits - 1);
+ halfw = w + margin.left + margin.right;
+ totalw = halfw;
+ xvar = [];
+ yvar = [];
+ xshift = [];
+ yshift = [];
+ for (i = _i = 0, _ref = num_traits - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
+ xvar.push(i);
+ yvar.push(0);
+ xshift.push(0);
+ yshift.push(halfh * i);
+ }
+ console.log("xvar:", xvar);
+ console.log("yvar:", yvar);
+ svg = d3.select("div#comparison_scatterplot").append("svg").attr("height", totalh).attr("width", totalw);
+ mychart = [];
+ chart = [];
+ for (i = _j = 1, _ref1 = num_traits - 1; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 1 <= _ref1 ? ++_j : --_j) {
+ mychart[i - 1] = scatterplot().xvar(xvar[i]).yvar(yvar[i]).nxticks(6).height(h).width(w).margin(margin).pointsize(4).xlab("" + trait_names[i - 1]).ylab("" + trait_names[0]).title("" + trait_names[0] + " vs. " + trait_names[i - 1]);
+ data = json_data;
+ indID = json_ids;
+ chart[i - 1] = svg.append("g").attr("id", "chart" + (i - 1)).attr("transform", "translate(" + xshift[i] + "," + yshift[i - 1] + ")");
+ chart[i - 1].datum({
+ data: data,
+ indID: indID
+ }).call(mychart[i - 1]);
+ }
+ brush = [];
+ brushstart = function(i) {
+ return function() {
+ var j, _k, _ref2;
+ for (j = _k = 0, _ref2 = num_traits - 2; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; j = 0 <= _ref2 ? ++_k : --_k) {
+ if (j !== i) {
+ chart[j].call(brush[j].clear());
+ }
+ }
+ return svg.selectAll("circle").attr("opacity", 0.6).classed("selected", false);
+ };
+ };
+ brushmove = function(i) {
+ return function() {
+ var e;
+ svg.selectAll("circle").classed("selected", false);
+ e = brush[i].extent();
+ return chart[i].selectAll("circle").classed("selected", function(d, j) {
+ var circ, cx, cy, selected;
+ circ = d3.select(this);
+ cx = circ.attr("cx");
+ cy = circ.attr("cy");
+ selected = e[0][0] <= cx && cx <= e[1][0] && e[0][1] <= cy && cy <= e[1][1];
+ if (selected) {
+ svg.selectAll("circle.pt" + j).classed("selected", true);
+ }
+ return selected;
+ });
+ };
+ };
+ brushend = function() {
+ return svg.selectAll("circle").attr("opacity", 1);
+ };
+ xscale = d3.scale.linear().domain([margin.left, margin.left + w]).range([margin.left, margin.left + w]);
+ yscale = d3.scale.linear().domain([margin.top, margin.top + h]).range([margin.top, margin.top + h]);
+ _results = [];
+ for (i = _k = 0, _ref2 = num_traits - 2; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
+ brush[i] = d3.svg.brush().x(xscale).y(yscale).on("brushstart", brushstart(i)).on("brush", brushmove(i)).on("brushend", brushend);
+ _results.push(chart[i].call(brush[i]));
+ }
+ return _results;
+};
diff --git a/gn2/wqflask/static/new/javascript/comparison_bar_chart.js b/gn2/wqflask/static/new/javascript/comparison_bar_chart.js
new file mode 100644
index 00000000..5e73807c
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/comparison_bar_chart.js
@@ -0,0 +1,25 @@
+generate_traces = function() {
+ traces = [];
+ for (i = 0, _len = js_data.traits.length; i < _len; i++) {
+ this_trace = {
+ x: js_data.samples,
+ y: js_data.sample_data[i],
+ name: js_data.traits[i],
+ type: 'bar',
+ bargap: 20
+ }
+
+ traces.push(this_trace)
+ }
+
+ return traces
+}
+
+create_bar_chart = function() {
+ var data = generate_traces()
+ var layout = {barmode: 'group', bargap: 5};
+
+ Plotly.newPlot('comp_bar_chart', data, layout);
+}
+
+create_bar_chart();
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/javascript/corr_matrix.js b/gn2/wqflask/static/new/javascript/corr_matrix.js
new file mode 100644
index 00000000..ad0fc8b8
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/corr_matrix.js
@@ -0,0 +1,159 @@
+// Generated by CoffeeScript 1.8.0
+var iplotCorr, root;
+
+root = typeof exports !== "undefined" && exports !== null ? exports : this;
+
+iplotCorr = function(data, chartOpts) {
+ var cells, chartdivid, colorScale, corXscale, corYscale, corZscale, corcolors, corr, corr_tip, corrplot, cortitle, drawScatter, height, i, j, margin, nGroup, ncorrX, ncorrY, nind, nvar, pixel_height, pixel_width, rectcolor, scat_tip, scatcolors, scatterplot, scattitle, svg, totalh, totalw, width, zlim, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
+ height = (_ref = chartOpts != null ? chartOpts.height : void 0) != null ? _ref : 450;
+ width = (_ref1 = chartOpts != null ? chartOpts.width : void 0) != null ? _ref1 : height;
+ margin = (_ref2 = chartOpts != null ? chartOpts.margin : void 0) != null ? _ref2 : {
+ left: 70,
+ top: 40,
+ right: 5,
+ bottom: 70,
+ inner: 5
+ };
+ corcolors = (_ref3 = chartOpts != null ? chartOpts.corcolors : void 0) != null ? _ref3 : ["darkslateblue", "white", "crimson"];
+ zlim = (_ref4 = chartOpts != null ? chartOpts.zlim : void 0) != null ? _ref4 : [-1, 0, 1];
+ rectcolor = (_ref5 = chartOpts != null ? chartOpts.rectcolor : void 0) != null ? _ref5 : d3.rgb(230, 230, 230);
+ cortitle = (_ref6 = chartOpts != null ? chartOpts.cortitle : void 0) != null ? _ref6 : "";
+ scattitle = (_ref7 = chartOpts != null ? chartOpts.scattitle : void 0) != null ? _ref7 : "";
+ scatcolors = (_ref8 = chartOpts != null ? chartOpts.scatcolors : void 0) != null ? _ref8 : null;
+ chartdivid = (_ref9 = chartOpts != null ? chartOpts.chartdivid : void 0) != null ? _ref9 : 'chart';
+ totalh = height + margin.top + margin.bottom;
+ totalw = (width + margin.left + margin.right) * 2;
+ svg = d3.select("div#" + chartdivid).append("svg").attr("height", totalh).attr("width", totalw);
+ corrplot = svg.append("g").attr("id", "corplot").attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+ scatterplot = svg.append("g").attr("id", "scatterplot").attr("transform", "translate(" + (margin.left * 2 + margin.right + width) + "," + margin.top + ")");
+ nind = data.indID.length;
+ nvar = data["var"].length;
+ ncorrX = data.cols.length;
+ ncorrY = data.rows.length;
+ corXscale = d3.scale.ordinal().domain(d3.range(ncorrX)).rangeBands([0, width]);
+ corYscale = d3.scale.ordinal().domain(d3.range(ncorrY)).rangeBands([0, height]);
+ corZscale = d3.scale.linear().domain(zlim).range(corcolors);
+ pixel_width = corXscale(1) - corXscale(0);
+ pixel_height = corYscale(0) - corYscale(1);
+ corr = [];
+ for (i in data.corr) {
+ for (j in data.corr[i]) {
+ corr.push({
+ row: i,
+ col: j,
+ value: data.corr[i][j]
+ });
+ }
+ corrplot.append("text").attr("class", "corrlabel_y").attr("y", corYscale(i) - pixel_height / 2).attr("x", -margin.left * 0.1).text(data["var"][data.rows[i]]).attr("dominant-baseline", "middle").attr("text-anchor", "end");
+ //corrplot.append("text").attr("class", "corrlabel_x").attr("x", corXscale(i) + pixel_width / 2).attr("y", height + margin.bottom * 0.2).text(data["var"][data.cols[i]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle");
+
+ }
+ scatterplot.append("rect").attr("height", height).attr("width", width).attr("fill", rectcolor).attr("stroke", "black").attr("stroke-width", 1).attr("pointer-events", "none");
+ corr_tip = d3.tip().attr('class', 'd3-tip').html(function(d) {
+ return d3.format(".2f")(d.value);
+ }).direction('e').offset([0, 10]);
+ corrplot.call(corr_tip);
+
+ cells = corrplot.selectAll("empty").data(corr).enter().append("rect").attr("class", "cell").attr("x", function(d) {
+ return corXscale(d.col);
+ }).attr("y", function(d) {
+ return corYscale(d.row);
+ }).attr("width", corXscale.rangeBand()).attr("height", corYscale.rangeBand()).attr("fill", function(d) {
+ return corZscale(d.value);
+ }).attr("stroke", "none").attr("stroke-width", 2).on("mouseover", function(d) {
+ d3.select(this).attr("stroke", "black");
+ corr_tip.show(d);
+ //corrplot.append("text").attr("class", "corrlabel").attr("x", corXscale(d.col) + pixel_width / 2).attr("y", height + margin.bottom * 0.2).text(data["var"][data.cols[d.col]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle");
+ //return corrplot.append("text").attr("class", "corrlabel_x").attr("y", corYscale(d.row) + pixel_height / 2).attr("x", -margin.left * 0.1).text(data["var"][data.rows[d.row]]).attr("dominant-baseline", "middle").attr("text-anchor", "end");
+ return corrplot.append("text").attr("class", "corrlabel_x").attr("x", corXscale(d.col) + pixel_width / 2).attr("y", height + margin.bottom * 0.2).text(data["var"][data.cols[d.col]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle");
+ }).on("mouseout", function(d) {
+ corr_tip.hide(d);
+ d3.selectAll("text.corrlabel_x").remove();
+ return d3.select(this).attr("stroke", "none");
+ }).on("click", function(d) {
+ return drawScatter(d.col, d.row);
+ });
+ nGroup = d3.max(data.group);
+ if (!(scatcolors != null) || scatcolors.length < nGroup) {
+ if (nGroup === 1) {
+ scatcolors = [d3.rgb(150, 150, 150)];
+ } else if (nGroup <= 3) {
+ scatcolors = ["crimson", "green", "darkslateblue"];
+ } else {
+ if (nGroup <= 10) {
+ colorScale = d3.scale.category10();
+ } else {
+ colorScale = d3.scale.category20();
+ }
+ scatcolors = (function() {
+ var _results;
+ _results = [];
+ for (i in d3.range(nGroup)) {
+ _results.push(colorScale(i));
+ }
+ return _results;
+ })();
+ }
+ }
+ scat_tip = d3.tip().attr('class', 'd3-tip').html(function(d, i) {
+ return data.indID[i];
+ }).direction('e').offset([0, 10]);
+ scatterplot.call(scat_tip);
+ drawScatter = function(i, j) {
+ var xScale, xticks, yScale, yticks;
+ d3.selectAll("circle.points").remove();
+ d3.selectAll("text.axes").remove();
+ d3.selectAll("line.axes").remove();
+ console.log("data.dat:", data.dat);
+ console.log("data.cols:", data.cols);
+ xScale = d3.scale.linear().domain(d3.extent(data.dat[data.cols[i]])).range([margin.inner, width - margin.inner]);
+ yScale = d3.scale.linear().domain(d3.extent(data.dat[data.rows[j]])).range([height - margin.inner, margin.inner]);
+ scatterplot.append("text").attr("id", "xaxis").attr("class", "axes").attr("x", width / 2).attr("y", height + margin.bottom * 0.7).text(data["var"][data.cols[i]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("fill", "slateblue");
+ scatterplot.append("text").attr("id", "yaxis").attr("class", "axes").attr("x", -margin.left * 0.8).attr("y", height / 2).text(data["var"][data.rows[j]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("transform", "rotate(270," + (-margin.left * 0.8) + "," + (height / 2) + ")").attr("fill", "slateblue");
+ xticks = xScale.ticks(5);
+ yticks = yScale.ticks(5);
+ scatterplot.selectAll("empty").data(xticks).enter().append("text").attr("class", "axes").text(function(d) {
+ return formatAxis(xticks)(d);
+ }).attr("x", function(d) {
+ return xScale(d);
+ }).attr("y", height + margin.bottom * 0.3).attr("dominant-baseline", "middle").attr("text-anchor", "middle");
+ scatterplot.selectAll("empty").data(yticks).enter().append("text").attr("class", "axes").text(function(d) {
+ return formatAxis(yticks)(d);
+ }).attr("x", -margin.left * 0.1).attr("y", function(d) {
+ return yScale(d);
+ }).attr("dominant-baseline", "middle").attr("text-anchor", "end");
+ scatterplot.selectAll("empty").data(xticks).enter().append("line").attr("class", "axes").attr("x1", function(d) {
+ return xScale(d);
+ }).attr("x2", function(d) {
+ return xScale(d);
+ }).attr("y1", 0).attr("y2", height).attr("stroke", "white").attr("stroke-width", 1);
+ scatterplot.selectAll("empty").data(yticks).enter().append("line").attr("class", "axes").attr("y1", function(d) {
+ return yScale(d);
+ }).attr("y2", function(d) {
+ return yScale(d);
+ }).attr("x1", 0).attr("x2", width).attr("stroke", "white").attr("stroke-width", 1);
+ return scatterplot.selectAll("empty").data(d3.range(nind)).enter().append("circle").attr("class", "points").attr("cx", function(d) {
+ return xScale(data.dat[data.cols[i]][d]);
+ }).attr("cy", function(d) {
+ return yScale(data.dat[data.rows[j]][d]);
+ }).attr("r", function(d) {
+ var x, y;
+ x = data.dat[data.cols[i]][d];
+ y = data.dat[data.rows[j]][d];
+ if ((x != "") && (y != "")) {
+ return 3;
+ } else {
+ return null;
+ }
+ }).attr("stroke", "black").attr("stroke-width", 1).attr("fill", function(d) {
+ return scatcolors[data.group[d] - 1];
+ }).on("mouseover", scat_tip.show).on("mouseout", scat_tip.hide);
+ };
+ corrplot.append("rect").attr("height", height).attr("width", width).attr("fill", "none").attr("stroke", "black").attr("stroke-width", 1).attr("pointer-events", "none");
+ scatterplot.append("rect").attr("height", height).attr("width", width).attr("fill", "none").attr("stroke", "black").attr("stroke-width", 1).attr("pointer-events", "none");
+ corrplot.append("text").text(cortitle).attr("id", "corrtitle").attr("x", width / 2).attr("y", -margin.top / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle");
+ scatterplot.append("text").text(scattitle).attr("id", "scattitle").attr("x", width / 2).attr("y", -margin.top / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle");
+ return d3.select("div#caption").style("opacity", 1);
+};
+
+root.corr_matrix = iplotCorr;
diff --git a/gn2/wqflask/static/new/javascript/corr_scatter_plot.js b/gn2/wqflask/static/new/javascript/corr_scatter_plot.js
new file mode 100644
index 00000000..553423cf
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/corr_scatter_plot.js
@@ -0,0 +1,73 @@
+// Generated by CoffeeScript 1.8.0
+var Scatter_Plot, root;
+
+root = typeof exports !== "undefined" && exports !== null ? exports : this;
+
+Scatter_Plot = (function() {
+ function Scatter_Plot() {
+ var chart, data, g, height, i, main, margin, maxx, maxy, minx, miny, sample1, sample2, samplename, samples_1, samples_2, text, width, x, xAxis, y, yAxis;
+ data = new Array();
+ samples_1 = js_data.samples_1;
+ samples_2 = js_data.samples_2;
+ i = 0;
+ for (samplename in samples_1) {
+ sample1 = samples_1[samplename];
+ sample2 = samples_2[samplename];
+ data[i++] = [sample1.value, sample2.value];
+ }
+ margin = {
+ top: 100,
+ right: 15,
+ bottom: 60,
+ left: 60
+ };
+ width = js_data.width - margin.left - margin.right;
+ height = js_data.height - margin.top - margin.bottom;
+ minx = d3.min(data, function(d) {
+ return d[0];
+ }) * 0.95;
+ maxx = d3.max(data, function(d) {
+ return d[0];
+ }) * 1.05;
+ miny = d3.min(data, function(d) {
+ return d[1];
+ }) * 0.95;
+ maxy = d3.max(data, function(d) {
+ return d[1];
+ }) * 1.05;
+ x = d3.scale.linear().domain([minx, maxx]).range([0, width]);
+ y = d3.scale.linear().domain([miny, maxy]).range([height, 0]);
+ chart = d3.select("#scatter_plot").append("svg:svg").attr("width", width + margin.right + margin.left).attr("height", height + margin.top + margin.bottom).attr("class", "chart");
+ main = chart.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")").attr("width", width).attr("height", height).attr("class", "main");
+ xAxis = d3.svg.axis().scale(x).orient("bottom");
+ main.append("g").attr("transform", "translate(0," + height + ")").attr("class", "main axis date").call(xAxis);
+ yAxis = d3.svg.axis().scale(y).orient("left");
+ main.append("g").attr("transform", "translate(0,0)").attr("class", "main axis date").call(yAxis);
+ g = main.append("svg:g");
+ g.selectAll("scatter-dots").data(data).enter().append("svg:circle").attr("cx", function(d) {
+ return x(d[0]);
+ }).attr("cy", function(d) {
+ return y(d[1]);
+ }).attr("fill", js_data.circle_color).attr("r", js_data.circle_radius);
+ main.append("line").attr("x1", x(minx)).attr("y1", y(js_data.slope * minx + js_data.intercept)).attr("x2", x(maxx * 0.995)).attr("y2", y(js_data.slope * maxx * 0.995 + js_data.intercept)).style("stroke", js_data.line_color).style("stroke-width", js_data.line_width);
+ chart.append("text").attr("x", width / 2).attr("y", margin.top / 2 - 25).text("Sample Correlation Scatterplot");
+ text = "";
+ text += "N=" + js_data.num_overlap;
+ chart.append("text").attr("x", margin.left).attr("y", margin.top / 2 - 5).text(text);
+ text = "";
+ text += "r=" + js_data.r_value + "\t";
+ text += "p(r)=" + js_data.p_value;
+ chart.append("text").attr("x", margin.left).attr("y", margin.top / 2 + 15).text(text);
+ text = "";
+ text += "slope=" + js_data.slope + "\t";
+ text += "intercept=" + js_data.intercept;
+ chart.append("text").attr("x", margin.left).attr("y", margin.top / 2 + 35).text(text);
+ chart.append("text").attr("x", width / 2).attr("y", height + margin.top + 35).text(js_data.trait_1);
+ chart.append("text").attr("x", 20).attr("y", height / 2 + margin.top + 30).attr("transform", "rotate(-90 20," + (height / 2 + margin.top + 30) + ")").text(js_data.trait_2);
+ }
+
+ return Scatter_Plot;
+
+})();
+
+root.Scatter_Plot = Scatter_Plot;
diff --git a/gn2/wqflask/static/new/javascript/create_corr_matrix.js b/gn2/wqflask/static/new/javascript/create_corr_matrix.js
new file mode 100644
index 00000000..c0c39fbc
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/create_corr_matrix.js
@@ -0,0 +1,94 @@
+var neg_color_scale = chroma.scale(['#91bfdb', '#ffffff']).domain([-1, -0.4]);
+var pos_color_scale = chroma.scale(['#ffffff', '#fc8d59']).domain([0.4, 1])
+$('.corr_cell').each( function () {
+ corr_value = parseFloat($(this).find('span.corr_value').text())
+ if (corr_value >= 0.5){
+ $(this).css('background-color', pos_color_scale(parseFloat(corr_value))._rgb)
+ }
+ else if (corr_value <= -0.5) {
+ $(this).css('background-color', neg_color_scale(parseFloat(corr_value))._rgb)
+ }
+ else {
+ $(this).css('background-color', 'white')
+ }
+});
+
+$('#short_labels').click( function (){
+ if ($('.short_check').css("display") == "none"){
+ $('.short_check').css("display", "inline-block")
+ } else {
+ $('.short_check').css("display", "none")
+ }
+ $('.shortName').each( function() {
+ if ($(this).css("display") == "none"){
+ $(this).css("display", "block");
+ }
+ else {
+ $(this).css("display", "none");
+ }
+ });
+});
+
+$('#long_labels').click( function (){
+ if ($('.long_check').css("display") == "none"){
+ $('.long_check').css("display", "inline-block")
+ } else {
+ $('.long_check').css("display", "none")
+ }
+ $('.verboseName').each( function() {
+ if ($(this).css("display") == "none"){
+ $(this).css("display", "block");
+ }
+ else {
+ $(this).css("display", "none");
+ }
+ });
+});
+
+select_all = function() {
+ $(".trait_checkbox").each(function() {
+ $(this).prop('checked', true);
+ });
+};
+
+deselect_all = function() {
+ $(".trait_checkbox").each(function() {
+ $(this).prop('checked', false);
+ });
+};
+
+change_buttons = function() {
+ num_checked = $('.trait_checkbox:checked').length;
+ if (num_checked === 0) {
+ $("#add").prop("disabled", true);
+ } else {
+ $("#add").prop("disabled", false);
+ }
+};
+
+add = function() {
+ var traits;
+ traits = $("input[name=pca_trait]:checked").map(function() {
+ return $(this).val();
+ }).get();
+
+ var traits_hash = md5(traits.toString());
+
+ $.ajax({
+ type: "POST",
+ url: "/collections/store_trait_list",
+ data: {
+ hash: traits_hash,
+ traits: traits.toString()
+ }
+ });
+
+ return $.colorbox({
+ href: "/collections/add?hash=" + traits_hash
+ });
+}
+
+$("#select_all").click(select_all);
+$("#deselect_all").click(deselect_all);
+$("#add").click(add);
+$(".btn, .trait_checkbox").click(change_buttons);
diff --git a/gn2/wqflask/static/new/javascript/create_datatable.js b/gn2/wqflask/static/new/javascript/create_datatable.js
new file mode 100644
index 00000000..541dfdf5
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/create_datatable.js
@@ -0,0 +1,117 @@
+create_table = function(tableId="trait_table", tableData = [], columnDefs = [], customSettings = {}) {
+
+ loadDataTable(tableId=tableId, tableData=tableData, customSettings, firstRun=true)
+
+ var widthChange = 0; // For storing the change in width so overall table width can be adjusted by that amount
+ function loadDataTable(tableId, tableData, customSettings, firstRun=false){
+ if (!firstRun){
+ columnDefs = setUserColumnsDefWidths(tableId, columnDefs);
+ }
+
+ tableSettings = {
+ "drawCallback": function( settings ) {
+ $('#' + tableId + ' tr').off().on("click", function(event) {
+ if (event.target.type !== 'checkbox' && event.target.tagName.toLowerCase() !== 'a') {
+ var obj =$(this).find('input');
+ obj.prop('checked', !obj.is(':checked'));
+ }
+ if ($(this).hasClass("selected") && event.target.tagName.toLowerCase() !== 'a'){
+ $(this).removeClass("selected")
+ } else if (event.target.tagName.toLowerCase() !== 'a') {
+ $(this).addClass("selected")
+ }
+ change_buttons()
+ });
+ },
+ "columns": columnDefs,
+ "sDom": "iti",
+ "destroy": true,
+ "autoWidth": false,
+ "bSortClasses": false,
+ "scrollY": "100vh",
+ "scrollX": "100%",
+ "scrollCollapse": true,
+ "scroller": true,
+ "iDisplayLength": -1,
+ "initComplete": function (settings) {
+ // Add JQueryUI resizable functionality to each th in the ScrollHead table
+ $('#' + tableId + '_wrapper .dataTables_scrollHead thead th').resizable({
+ handles: "e",
+ alsoResize: '#' + tableId + '_wrapper .dataTables_scrollHead table', //Not essential but makes the resizing smoother
+ resize: function( event, ui ) {
+ widthChange = ui.size.width - ui.originalSize.width;
+ },
+ stop: function () {
+ saveColumnSettings(tableId, theTable);
+ loadDataTable(tableId, tableData, customSettings, firstRun=false);
+ }
+ });
+ }
+ }
+
+ if (tableData.length > 0){
+ tableSettings["data"] = tableData
+ }
+
+ // Replace default settings with custom settings or add custom settings if not already set in default settings
+ $.each(customSettings, function(key, value) {
+ tableSettings[key] = value
+ });
+
+ if (!firstRun){
+ $('#' + tableId + '_container').css("width", String($('#' + tableId).width() + widthChange + 17) + "px"); // Change the container width by the change in width of the adjusted column, so the overall table size adjusts properly
+
+ let checkedRows = getCheckedRows(tableId);
+ theTable = $('#' + tableId).DataTable(tableSettings);
+ if (checkedRows.length > 0){
+ recheckRows(theTable, checkedRows);
+ }
+ } else {
+ theTable = $('#' + tableId).DataTable(tableSettings);
+ theTable.draw();
+ $('#' + tableId + '_container').css("width", String($('#' + tableId).width() + 17) + "px");
+ theTable.columns.adjust().draw();
+ }
+ }
+
+ theTable.on( 'order.dt search.dt draw.dt', function () {
+ theTable.column(1, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
+ cell.innerHTML = i+1;
+ } );
+ } ).draw();
+
+ window.addEventListener('resize', function(){
+ theTable.columns.adjust();
+ });
+
+ $('#' + tableId + '_searchbox').on( 'keyup', function () {
+ theTable.search($(this).val()).draw();
+ } );
+
+ $('.toggle-vis').on('click', function (e) {
+ e.preventDefault();
+
+ function toggleColumn(column) {
+ // Toggle column visibility
+ column.visible( ! column.visible() );
+ if (column.visible()){
+ $(this).removeClass("active");
+ } else {
+ $(this).addClass("active");
+ }
+ }
+
+ // Get the column API object
+ var targetCols = $(this).attr('data-column').split(",")
+ for (let i = 0; i < targetCols.length; i++){
+ var column = theTable.column( targetCols[i] );
+ toggleColumn(column);
+ }
+ } );
+
+ $('#redraw').on('click', function (e) {
+ e.preventDefault();
+ trait_table.columns().visible( true );
+ $('.toggle-vis.active').removeClass('active');
+ });
+}
diff --git a/gn2/wqflask/static/new/javascript/create_heatmap.js b/gn2/wqflask/static/new/javascript/create_heatmap.js
new file mode 100644
index 00000000..f3ae2a46
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/create_heatmap.js
@@ -0,0 +1,14 @@
+// Generated by CoffeeScript 1.8.0
+var create_heatmap;
+
+create_heatmap = function() {
+ var data, h, mychart, w;
+ h = 500;
+ w = 1200;
+ mychart = lodheatmap().height(h).width(w);
+ data = js_data.json_data;
+ console.log("data:", data);
+ return d3.select("div#chart").datum(data).call(mychart);
+};
+
+create_heatmap();
diff --git a/gn2/wqflask/static/new/javascript/create_lodchart.js b/gn2/wqflask/static/new/javascript/create_lodchart.js
new file mode 100644
index 00000000..778eed3a
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/create_lodchart.js
@@ -0,0 +1,50 @@
+//var create_lod_chart;
+
+create_lod_chart = function() {
+ var additive, chrrect, data, h, halfh, margin, mychart, totalh, totalw, w;
+ h = 500;
+ w = 1200;
+ margin = {
+ left: 60,
+ top: 40,
+ right: 40,
+ bottom: 40,
+ inner: 5
+ };
+ halfh = h + margin.top + margin.bottom;
+ totalh = halfh * 2;
+ totalw = w + margin.left + margin.right;
+ if ('additive' in js_data) {
+ additive = js_data.additive;
+ } else {
+ additive = false;
+ }
+ console.log("js_data:", js_data);
+ mychart = lodchart().lodvarname("lod.hk").height(h).width(w).margin(margin).ylab(js_data.result_score_type + " score").manhattanPlot(js_data.manhattan_plot);
+ data = js_data.json_data;
+ d3.select("div#topchart").datum(data).call(mychart);
+ chrrect = mychart.chrSelect();
+ chrrect.on("mouseover", function() {
+ return d3.select(this).attr("fill", "#E9CFEC");
+ }).on("mouseout", function(d, i) {
+ return d3.select(this).attr("fill", function() {
+ if (i % 2) {
+ return "#F1F1F9";
+ }
+ return "#FBFBFF";
+ });
+ });
+ return mychart.markerSelect().on("click", function(d) {
+ var r;
+ r = d3.select(this).attr("r");
+ return d3.select(this).transition().duration(500).attr("r", r * 3).transition().duration(500).attr("r", r);
+ });
+};
+
+create_lod_chart()
+
+/*
+$(function() {
+ return root.create_lod_chart = create_lod_chart;
+});
+*/
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/javascript/create_manhattan_plot.js b/gn2/wqflask/static/new/javascript/create_manhattan_plot.js
new file mode 100644
index 00000000..30af484d
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/create_manhattan_plot.js
@@ -0,0 +1,68 @@
+// Generated by CoffeeScript 1.8.0
+var create_manhattan_plot;
+
+create_manhattan_plot = function() {
+ var chrrect, data, h, halfh, margin, mychart, totalh, totalw, w;
+ h = 500;
+ w = 1200;
+ margin = {
+ left: 60,
+ top: 40,
+ right: 40,
+ bottom: 40,
+ inner: 5
+ };
+ halfh = h + margin.top + margin.bottom;
+ totalh = halfh * 2;
+ totalw = w + margin.left + margin.right;
+ console.log("js_data:", js_data);
+ mychart = lodchart().lodvarname("lod.hk").height(h).width(w).margin(margin).ylab("LOD score").manhattanPlot(js_data.manhattan_plot);
+ data = js_data.json_data;
+ d3.select("div#topchart").datum(data).call(mychart);
+ chrrect = mychart.chrSelect();
+ chrrect.on("mouseover", function() {
+ return d3.select(this).attr("fill", "#E9CFEC");
+ }).on("mouseout", function(d, i) {
+ return d3.select(this).attr("fill", function() {
+ if (i % 2) {
+ return "#F1F1F9";
+ }
+ return "#FBFBFF";
+ });
+ });
+ return mychart.markerSelect().on("click", function(d) {
+ var r;
+ r = d3.select(this).attr("r");
+ return d3.select(this).transition().duration(500).attr("r", r * 3).transition().duration(500).attr("r", r);
+ });
+};
+
+create_manhattan_plot();
+
+$("#export").click((function(_this) {
+ return function() {
+ var filename, form, svg, svg_xml;
+ svg = $("#topchart").find("svg")[0];
+ svg_xml = (new XMLSerializer).serializeToString(svg);
+ console.log("svg_xml:", svg_xml);
+ filename = "manhattan_plot_" + js_data.this_trait;
+ form = $("#exportform");
+ form.find("#data").val(svg_xml);
+ form.find("#filename").val(filename);
+ return form.submit();
+ };
+})(this));
+
+$("#export_pdf").click((function(_this) {
+ return function() {
+ var filename, form, svg, svg_xml;
+ svg = $("#topchart").find("svg")[0];
+ svg_xml = (new XMLSerializer).serializeToString(svg);
+ console.log("svg_xml:", svg_xml);
+ filename = "manhattan_plot_" + js_data.this_trait;
+ form = $("#exportpdfform");
+ form.find("#data").val(svg_xml);
+ form.find("#filename").val(filename);
+ return form.submit();
+ };
+})(this));
diff --git a/gn2/wqflask/static/new/javascript/ctl_graph.js b/gn2/wqflask/static/new/javascript/ctl_graph.js
new file mode 100644
index 00000000..bd950592
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/ctl_graph.js
@@ -0,0 +1,193 @@
+window.onload=function() {
+ // id of Cytoscape Web container div
+ //var div_id = "cytoscapeweb";
+
+ var cy = cytoscape({
+ container: $('#cytoscapeweb'), // container to render in
+
+ elements: elements_list,
+
+ style: [ // the stylesheet for the graph
+ {
+ selector: 'node',
+ style: {
+ 'background-color': '#666',
+ 'label': 'data(symbol)',
+ 'font-size': 10
+ }
+ },
+
+ {
+ selector: 'edge',
+ style: {
+ 'width': 'data(width)',
+ 'line-color': 'data(color)',
+ 'target-arrow-color': '#ccc',
+ 'target-arrow-shape': 'none',
+ 'font-size': 8,
+ 'curve-style': 'bezier'
+ }
+ }
+ ],
+
+ zoom: 12,
+ layout: { name: 'circle',
+ fit: true, // whether to fit the viewport to the graph
+ padding: 30 // the padding on fit
+ //idealEdgeLength: function( edge ){ return edge.data['correlation']*10; },
+ },
+
+
+ zoomingEnabled: true,
+ userZoomingEnabled: true,
+ panningEnabled: true,
+ userPanningEnabled: true,
+ boxSelectionEnabled: false,
+ selectionType: 'single',
+
+ // rendering options:
+ styleEnabled: true
+ });
+
+ var eles = cy.$() // var containing all elements, so elements can be restored after being removed
+
+ var defaults = {
+ zoomFactor: 0.05, // zoom factor per zoom tick
+ zoomDelay: 45, // how many ms between zoom ticks
+ minZoom: 0.1, // min zoom level
+ maxZoom: 10, // max zoom level
+ fitPadding: 30, // padding when fitting
+ panSpeed: 10, // how many ms in between pan ticks
+ panDistance: 10, // max pan distance per tick
+ panDragAreaSize: 75, // the length of the pan drag box in which the vector for panning is calculated (bigger = finer control of pan speed and direction)
+ panMinPercentSpeed: 0.25, // the slowest speed we can pan by (as a percent of panSpeed)
+ panInactiveArea: 8, // radius of inactive area in pan drag box
+ panIndicatorMinOpacity: 0.5, // min opacity of pan indicator (the draggable nib); scales from this to 1.0
+ zoomOnly: false, // a minimal version of the ui only with zooming (useful on systems with bad mousewheel resolution)
+ fitSelector: undefined, // selector of elements to fit
+ animateOnFit: function(){ // whether to animate on fit
+ return false;
+ },
+ fitAnimationDuration: 1000, // duration of animation on fit
+
+ // icon class names
+ sliderHandleIcon: 'fa fa-minus',
+ zoomInIcon: 'fa fa-plus',
+ zoomOutIcon: 'fa fa-minus',
+ resetIcon: 'fa fa-expand'
+ };
+
+ cy.panzoom( defaults );
+
+ function create_qtips(cy){
+ cy.nodes().qtip({
+ content: function(){
+ gn_link = ''+''+this.data().id +''+' '
+ ncbi_link = 'NCBI'+' '
+ omim_link = 'OMIM'+' '
+ qtip_content = gn_link + ncbi_link + omim_link
+ return qtip_content
+ },
+ position: {
+ my: 'top center',
+ at: 'bottom center'
+ },
+ style: {
+ classes: 'qtip-bootstrap',
+ tip: {
+ width: 16,
+ height: 8
+ }
+ }
+ });
+
+ cy.edges().qtip({
+ content: function(){
+ edge_ID = 'Edge: ' + this.data().id + ' '
+ lod_score = 'LOD: ' + this.data().lod + ' '
+ return edge_ID + lod_score
+ },
+ position: {
+ my: 'top center',
+ at: 'bottom center'
+ },
+ style: {
+ classes: 'qtip-bootstrap',
+ tip: {
+ width: 16,
+ height: 8
+ }
+ }
+ });
+ }
+
+ create_qtips(cy)
+
+ $('#slide').change(function() {
+ eles.restore()
+
+ console.log(eles)
+
+ // nodes_to_restore = eles.filter("node[max_corr >= " + $(this).val() + "], edge[correlation >= " + $(this).val() + "][correlation <= -" + $(this).val() + "]")
+ // nodes_to_restore.restore()
+
+ // edges_to_restore = eles.filter("edge[correlation >= " + $(this).val() + "][correlation <= -" + $(this).val() + "]")
+ // edges_to_restore.restore()
+
+ //cy.$("node[max_corr >= " + $(this).val() + "]").restore();
+ //cy.$("edge[correlation >= " + $(this).val() + "][correlation <= -" + $(this).val() + "]").restore();
+
+ cy.$("node[max_corr < " + $(this).val() + "]").remove();
+ cy.$("edge[correlation < " + $(this).val() + "][correlation > -" + $(this).val() + "]").remove();
+
+ cy.layout({ name: $('select[name=layout_select]').val(),
+ fit: true, // whether to fit the viewport to the graph
+ padding: 25 // the padding on fit
+ });
+
+ });
+
+ $('#reset_graph').click(function() {
+ eles.restore()
+ $('#slide').val(0)
+ cy.layout({ name: $('select[name=layout_select]').val(),
+ fit: true, // whether to fit the viewport to the graph
+ padding: 25 // the padding on fit
+ });
+ });
+
+ $('select[name=focus_select]').change(function() {
+ focus_trait = $(this).val()
+
+ eles.restore()
+ cy.$('edge[source != "' + focus_trait + '"][target != "' + focus_trait + '"]').remove()
+
+ cy.layout({ name: $('select[name=layout_select]').val(),
+ fit: true, // whether to fit the viewport to the graph
+ padding: 25 // the padding on fit
+ });
+ });
+
+ $('select[name=layout_select]').change(function() {
+ layout_type = $(this).val()
+ console.log("LAYOUT:", layout_type)
+ cy.layout({ name: layout_type,
+ fit: true, // whether to fit the viewport to the graph
+ padding: 25 // the padding on fit
+ });
+ });
+
+ $("a#image_link").click(function(e) {
+ var pngData = cy.png();
+
+ $(this).attr('href', pngData);
+ $(this).attr('download', 'network_graph.png');
+
+ console.log("TESTING:", image_link)
+
+ });
+
+
+};
+
+
diff --git a/gn2/wqflask/static/new/javascript/curvechart.js b/gn2/wqflask/static/new/javascript/curvechart.js
new file mode 100644
index 00000000..48bf6bf3
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/curvechart.js
@@ -0,0 +1,353 @@
+// Generated by CoffeeScript 1.8.0
+var curvechart;
+
+curvechart = function() {
+ var axispos, chart, commonX, curvesSelect, height, margin, nxticks, nyticks, rectcolor, rotate_ylab, strokecolor, strokecolorhilit, strokewidth, strokewidthhilit, title, titlepos, width, xlab, xlim, xscale, xticks, ylab, ylim, yscale, yticks;
+ width = 800;
+ height = 500;
+ margin = {
+ left: 60,
+ top: 40,
+ right: 40,
+ bottom: 40,
+ inner: 5
+ };
+ axispos = {
+ xtitle: 25,
+ ytitle: 30,
+ xlabel: 5,
+ ylabel: 5
+ };
+ titlepos = 20;
+ xlim = null;
+ ylim = null;
+ nxticks = 5;
+ xticks = null;
+ nyticks = 5;
+ yticks = null;
+ rectcolor = "#e6e6e6";
+ strokecolor = null;
+ strokecolorhilit = null;
+ strokewidth = 2;
+ strokewidthhilit = 2;
+ title = "";
+ xlab = "X";
+ ylab = "Y";
+ rotate_ylab = null;
+ yscale = d3.scale.linear();
+ xscale = d3.scale.linear();
+ curvesSelect = null;
+ commonX = true;
+ chart = function(selection) {
+ return selection.each(function(data) {
+ var curve, curves, g, gEnter, group, i, indID, indtip, j, lastpoint, ngroup, points, pointsg, svg, titlegrp, tmp, v, xaxis, xrange, xs, yaxis, yrange, ys, _i, _j, _len, _ref, _ref1, _ref2, _ref3, _results;
+ indID = (_ref = data != null ? data.indID : void 0) != null ? _ref : null;
+ indID = indID != null ? indID : (function() {
+ _results = [];
+ for (var _i = 1, _ref1 = data.data.length; 1 <= _ref1 ? _i <= _ref1 : _i >= _ref1; 1 <= _ref1 ? _i++ : _i--){ _results.push(_i); }
+ return _results;
+ }).apply(this);
+ group = (_ref2 = data != null ? data.group : void 0) != null ? _ref2 : (function() {
+ var _results1;
+ _results1 = [];
+ for (i in data.data) {
+ _results1.push(1);
+ }
+ return _results1;
+ })();
+ ngroup = d3.max(group);
+ group = (function() {
+ var _j, _len, _results1;
+ _results1 = [];
+ for (_j = 0, _len = group.length; _j < _len; _j++) {
+ g = group[_j];
+ _results1.push(g - 1);
+ }
+ return _results1;
+ })();
+ strokecolor = strokecolor != null ? strokecolor : selectGroupColors(ngroup, "pastel");
+ strokecolor = expand2vector(strokecolor, ngroup);
+ strokecolorhilit = strokecolorhilit != null ? strokecolorhilit : selectGroupColors(ngroup, "dark");
+ strokecolorhilit = expand2vector(strokecolorhilit, ngroup);
+ if (commonX) {
+ data = (function() {
+ var _results1;
+ _results1 = [];
+ for (i in data.data) {
+ _results1.push({
+ x: data.x,
+ y: data.data[i]
+ });
+ }
+ return _results1;
+ })();
+ } else {
+ data = data.data;
+ }
+ xlim = xlim != null ? xlim : d3.extent(pullVarAsArray(data, "x"));
+ ylim = ylim != null ? ylim : d3.extent(pullVarAsArray(data, "y"));
+ for (i in data) {
+ tmp = data[i];
+ data[i] = [];
+ for (j in tmp.x) {
+ if (!((tmp.x[j] == null) || (tmp.y[j] == null))) {
+ data[i].push({
+ x: tmp.x[j],
+ y: tmp.y[j]
+ });
+ }
+ }
+ }
+ svg = d3.select(this).selectAll("svg").data([data]);
+ gEnter = svg.enter().append("svg").append("g");
+ svg.attr("width", width + margin.left + margin.right).attr("height", height + margin.top + margin.bottom);
+ g = svg.select("g");
+ g.append("rect").attr("x", margin.left).attr("y", margin.top).attr("height", height).attr("width", width).attr("fill", rectcolor).attr("stroke", "none");
+ xrange = [margin.left + margin.inner, margin.left + width - margin.inner];
+ yrange = [margin.top + height - margin.inner, margin.top + margin.inner];
+ xscale.domain(xlim).range(xrange);
+ yscale.domain(ylim).range(yrange);
+ xs = d3.scale.linear().domain(xlim).range(xrange);
+ ys = d3.scale.linear().domain(ylim).range(yrange);
+ yticks = yticks != null ? yticks : ys.ticks(nyticks);
+ xticks = xticks != null ? xticks : xs.ticks(nxticks);
+ titlegrp = g.append("g").attr("class", "title").append("text").attr("x", margin.left + width / 2).attr("y", margin.top - titlepos).text(title);
+ xaxis = g.append("g").attr("class", "x axis");
+ xaxis.selectAll("empty").data(xticks).enter().append("line").attr("x1", function(d) {
+ return xscale(d);
+ }).attr("x2", function(d) {
+ return xscale(d);
+ }).attr("y1", margin.top).attr("y2", margin.top + height).attr("fill", "none").attr("stroke", "white").attr("stroke-width", 1).style("pointer-events", "none");
+ xaxis.selectAll("empty").data(xticks).enter().append("text").attr("x", function(d) {
+ return xscale(d);
+ }).attr("y", margin.top + height + axispos.xlabel).text(function(d) {
+ return formatAxis(xticks)(d);
+ });
+ xaxis.append("text").attr("class", "title").attr("x", margin.left + width / 2).attr("y", margin.top + height + axispos.xtitle).text(xlab);
+ rotate_ylab = rotate_ylab != null ? rotate_ylab : ylab.length > 1;
+ yaxis = g.append("g").attr("class", "y axis");
+ yaxis.selectAll("empty").data(yticks).enter().append("line").attr("y1", function(d) {
+ return yscale(d);
+ }).attr("y2", function(d) {
+ return yscale(d);
+ }).attr("x1", margin.left).attr("x2", margin.left + width).attr("fill", "none").attr("stroke", "white").attr("stroke-width", 1).style("pointer-events", "none");
+ yaxis.selectAll("empty").data(yticks).enter().append("text").attr("y", function(d) {
+ return yscale(d);
+ }).attr("x", margin.left - axispos.ylabel).text(function(d) {
+ return formatAxis(yticks)(d);
+ });
+ yaxis.append("text").attr("class", "title").attr("y", margin.top + height / 2).attr("x", margin.left - axispos.ytitle).text(ylab).attr("transform", rotate_ylab ? "rotate(270," + (margin.left - axispos.ytitle) + "," + (margin.top + height / 2) + ")" : "");
+ indtip = d3.tip().attr('class', 'd3-tip').html(function(d) {
+ return indID[d];
+ }).direction('e').offset([0, 10]);
+ svg.call(indtip);
+ curve = d3.svg.line().x(function(d) {
+ return xscale(d.x);
+ }).y(function(d) {
+ return yscale(d.y);
+ });
+ curves = g.append("g").attr("id", "curves");
+ curvesSelect = curves.selectAll("empty").data(d3.range(data.length)).enter().append("path").datum(function(d) {
+ return data[d];
+ }).attr("d", curve).attr("class", function(d, i) {
+ return "path" + i;
+ }).attr("fill", "none").attr("stroke", function(d, i) {
+ return strokecolor[group[i]];
+ }).attr("stroke-width", strokewidth).on("mouseover.panel", function(d, i) {
+ var circle;
+ d3.select(this).attr("stroke", strokecolorhilit[group[i]]).moveToFront();
+ circle = d3.select("circle#hiddenpoint" + i);
+ return indtip.show(i, circle.node());
+ }).on("mouseout.panel", function(d, i) {
+ d3.select(this).attr("stroke", strokecolor[group[i]]).moveToBack();
+ return indtip.hide();
+ });
+ lastpoint = (function() {
+ var _results1;
+ _results1 = [];
+ for (i in data) {
+ _results1.push({
+ x: null,
+ y: null
+ });
+ }
+ return _results1;
+ })();
+ for (i in data) {
+ _ref3 = data[i];
+ for (_j = 0, _len = _ref3.length; _j < _len; _j++) {
+ v = _ref3[_j];
+ if ((v.x != null) && (v.y != null)) {
+ lastpoint[i] = v;
+ }
+ }
+ }
+ pointsg = g.append("g").attr("id", "invisiblepoints");
+ points = pointsg.selectAll("empty").data(lastpoint).enter().append("circle").attr("id", function(d, i) {
+ return "hiddenpoint" + i;
+ }).attr("cx", function(d) {
+ return xscale(d.x);
+ }).attr("cy", function(d) {
+ return yscale(d.y);
+ }).attr("r", 1).attr("opacity", 0);
+ return g.append("rect").attr("x", margin.left).attr("y", margin.top).attr("height", height).attr("width", width).attr("fill", "none").attr("stroke", "black").attr("stroke-width", "none");
+ });
+ };
+ chart.width = function(value) {
+ if (!arguments.length) {
+ return width;
+ }
+ width = value;
+ return chart;
+ };
+ chart.height = function(value) {
+ if (!arguments.length) {
+ return height;
+ }
+ height = value;
+ return chart;
+ };
+ chart.margin = function(value) {
+ if (!arguments.length) {
+ return margin;
+ }
+ margin = value;
+ return chart;
+ };
+ chart.axispos = function(value) {
+ if (!arguments.length) {
+ return axispos;
+ }
+ axispos = value;
+ return chart;
+ };
+ chart.titlepos = function(value) {
+ if (!arguments.length) {
+ return titlepos;
+ }
+ titlepos;
+ return chart;
+ };
+ chart.xlim = function(value) {
+ if (!arguments.length) {
+ return xlim;
+ }
+ xlim = value;
+ return chart;
+ };
+ chart.nxticks = function(value) {
+ if (!arguments.length) {
+ return nxticks;
+ }
+ nxticks = value;
+ return chart;
+ };
+ chart.xticks = function(value) {
+ if (!arguments.length) {
+ return xticks;
+ }
+ xticks = value;
+ return chart;
+ };
+ chart.ylim = function(value) {
+ if (!arguments.length) {
+ return ylim;
+ }
+ ylim = value;
+ return chart;
+ };
+ chart.nyticks = function(value) {
+ if (!arguments.length) {
+ return nyticks;
+ }
+ nyticks = value;
+ return chart;
+ };
+ chart.yticks = function(value) {
+ if (!arguments.length) {
+ return yticks;
+ }
+ yticks = value;
+ return chart;
+ };
+ chart.rectcolor = function(value) {
+ if (!arguments.length) {
+ return rectcolor;
+ }
+ rectcolor = value;
+ return chart;
+ };
+ chart.strokecolor = function(value) {
+ if (!arguments.length) {
+ return strokecolor;
+ }
+ strokecolor = value;
+ return chart;
+ };
+ chart.strokecolorhilit = function(value) {
+ if (!arguments.length) {
+ return strokecolorhilit;
+ }
+ strokecolorhilit = value;
+ return chart;
+ };
+ chart.strokewidth = function(value) {
+ if (!arguments.length) {
+ return strokewidth;
+ }
+ strokewidth = value;
+ return chart;
+ };
+ chart.strokewidthhilit = function(value) {
+ if (!arguments.length) {
+ return strokewidthhilit;
+ }
+ strokewidthhilit = value;
+ return chart;
+ };
+ chart.commonX = function(value) {
+ if (!arguments.length) {
+ return commonX;
+ }
+ commonX = value;
+ return chart;
+ };
+ chart.title = function(value) {
+ if (!arguments.length) {
+ return title;
+ }
+ title = value;
+ return chart;
+ };
+ chart.xlab = function(value) {
+ if (!arguments.length) {
+ return xlab;
+ }
+ xlab = value;
+ return chart;
+ };
+ chart.ylab = function(value) {
+ if (!arguments.length) {
+ return ylab;
+ }
+ ylab = value;
+ return chart;
+ };
+ chart.rotate_ylab = function(value) {
+ if (!arguments.length) {
+ return rotate_ylab;
+ }
+ rotate_ylab = value;
+ return chart;
+ };
+ chart.yscale = function() {
+ return yscale;
+ };
+ chart.xscale = function() {
+ return xscale;
+ };
+ chart.curvesSelect = function() {
+ return curvesSelect;
+ };
+ return chart;
+};
diff --git a/gn2/wqflask/static/new/javascript/d3panels.min.js b/gn2/wqflask/static/new/javascript/d3panels.min.js
new file mode 100644
index 00000000..dfc10643
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/d3panels.min.js
@@ -0,0 +1 @@
+!function(){var d3panels={version:"1.7.1"};"use strict";d3panels.formatAxis=function(d){var extra_digits=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var gap,ndig;if(d[0]!=null){gap=d[1]-d[0]}else if(d.length>2){gap=d[2]-d[1]}else{gap=d[1]}ndig=Math.floor(d3panels.log10(Math.abs(gap)));if(ndig>0){ndig=0}ndig=Math.abs(ndig)+extra_digits;return function(val){if(val!=null&&val!=="NA"){return d3.format("."+ndig+"f")(val)}return"NA"}};d3panels.unique=function(x){var k,len,output,v;output={};for(k=0,len=x.length;k6&&arguments[6]!==undefined?arguments[6]:false;var chr_end_pixels,chr_length,chr_start_pixels,domain,i,k,n_chr,range,ref,right,tot_chr_length,tot_pixels,xscale;n_chr=chr.length;chr_length=function(){var results;results=[];for(i in end){results.push(end[i]-start[i])}return results}();tot_chr_length=chr_length.reduce(function(t,s){return t+s});tot_pixels=plot_width-gap*n_chr;chr_start_pixels=[left_margin+gap/2];chr_end_pixels=[left_margin+gap/2+tot_pixels/tot_chr_length*chr_length[0]];for(i=k=1,ref=n_chr-1;1<=ref?k<=ref:k>=ref;i=1<=ref?++k:--k){chr_start_pixels.push(chr_end_pixels[i-1]+gap);chr_end_pixels.push(chr_start_pixels[i]+tot_pixels/tot_chr_length*chr_length[i])}right=plot_width+left_margin*2;xscale={};for(i in chr){domain=[start[i],end[i]];range=[chr_start_pixels[i],chr_end_pixels[i]];if(reverse){domain.reverse();range=[right-range[1],right-range[0]]}xscale[chr[i]]=d3.scaleLinear().domain(domain).range(range)}return xscale};d3panels.selectGroupColors=function(ngroup,palette){var cat20,pastel1,pastel20,set1;if(ngroup===0){return[]}set1=["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"];pastel1=["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"];cat20=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"];pastel20=["#8fc7f4","#fed7f8","#ffbf8e","#fffbb8","#8ce08c","#d8ffca","#f68788","#ffd8d6","#d4a7fd","#f5f0f5","#cc968b","#f4dcd4","#f3b7f2","#f7f6f2","#bfbfbf","#f7f7f7","#fcfd82","#fbfbcd","#87feff","#defaf5"];if(palette==="dark"){if(ngroup===1){return["slateblue"]}if(ngroup===2){return["MediumVioletRed","slateblue"]}if(ngroup===3){return["MediumVioletRed","MediumSeaGreen","slateblue"]}if(ngroup<=9){return set1.slice(0,ngroup)}return cat20.slice(0,ngroup)}else{if(ngroup===1){return["#bebebe"]}if(ngroup===2){return["lightpink","lightblue"]}if(ngroup<=9){return pastel1.slice(0,ngroup)}return pastel20.slice(0,ngroup)}};d3panels.expand2vector=function(input,n){var i;if(input==null){return input}if(Array.isArray(input)&&input.length>=n){return input}if(!Array.isArray(input)){input=[input]}if(input.length>1&&n>1){input=function(){var results;results=[];for(i in d3.range(n)){results.push(input[i%input.length])}return results}()}if(input.length===1&&n>1){input=function(){var results;results=[];for(i in d3.range(n)){results.push(input[0])}return results}()}return input};d3panels.median=function(x){var n,xv;if(x==null){return null}x=function(){var k,len,results;results=[];for(k=0,len=x.length;k0)){return null}x.sort(function(a,b){return a-b});if(n%2===1){return x[(n-1)/2]}return(x[n/2]+x[n/2-1])/2};d3panels.pad_vector=function(x){var pad=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(pad==null){return[x[0]-(x[1]-x[0])].concat(x).concat([x[x.length-1]+(x[x.length-1]-x[x.length-2])])}return[x[0]-pad].concat(x).concat(x[x.length-1]+pad)};d3panels.calc_midpoints=function(x){var i,k,ref,results;results=[];for(i=k=0,ref=x.length-2;0<=ref?k<=ref:k>=ref;i=0<=ref?++k:--k){results.push((x[i]+x[i+1])/2)}return results};d3panels.calc_cell_rect=function(cells,xmid,ymid){var bottom,cell,k,left,len,results,right,top;results=[];for(k=0,len=cells.length;kref;i=2<=ref?++k:--k){d=x[i]-x[i-1];if(d>result){result=d}}return result};d3panels.matrixMin=function(mat){var i,j,result;result=mat[0][0];for(i in mat){for(j in mat[i]){if(!(result!=null)||result>mat[i][j]&&mat[i][j]!=null){result=mat[i][j]}}}return result};d3panels.matrixMax=function(mat){var i,j,result;result=mat[0][0];for(i in mat){for(j in mat[i]){if(!(result!=null)||result1&&arguments[1]!==undefined?arguments[1]:["NA",""];return vec.map(function(value){if(missingvalues.indexOf(value)>-1){return null}else{return value}})};d3panels.displayError=function(message){var divid=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var div;div="div.error";if(divid!=null){div+="#"+divid}if(d3.select(div).empty()){d3.select("body").insert("div",":first-child").attr("class","error")}return d3.select(div).append("p").text(message)};d3panels.sumArray=function(vec){var x;vec=function(){var k,len,results;results=[];for(k=0,len=vec.length;k0)){return null}return vec.reduce(function(a,b){return a*1+b*1})};d3panels.calc_crosstab=function(data){var col,cs,i,k,l,ncol,nrow,ref,ref1,result,row,rs;nrow=data.ycat.length;ncol=data.xcat.length;result=function(){var k,ref,results;results=[];for(row=k=0,ref=nrow;0<=ref?k<=ref:k>=ref;row=0<=ref?++k:--k){results.push(function(){var l,ref1,results1;results1=[];for(col=l=0,ref1=ncol;0<=ref1?l<=ref1:l>=ref1;col=0<=ref1?++l:--l){results1.push(0)}return results1}())}return results}();for(i in data.x){result[data.y[i]][data.x[i]]+=1}rs=d3panels.rowSums(result);cs=d3panels.colSums(result);for(i=k=0,ref=ncol;0<=ref?kref;i=0<=ref?++k:--k){result[nrow][i]=cs[i]}for(i=l=0,ref1=nrow;0<=ref1?lref1;i=0<=ref1?++l:--l){result[i][ncol]=rs[i]}result[nrow][ncol]=d3panels.sumArray(rs);return result};d3panels.rowSums=function(mat){var k,len,results,x;results=[];for(k=0,len=mat.length;kref;j=0<=ref?++k:--k){results.push(function(){var l,ref1,results1;results1=[];for(i=l=0,ref1=mat.length;0<=ref1?lref1;i=0<=ref1?++l:--l){results1.push(mat[i][j])}return results1}())}return results};d3panels.colSums=function(mat){return d3panels.rowSums(d3panels.transpose(mat))};d3panels.log2=function(x){if(x==null){return x}return Math.log(x)/Math.log(2)};d3panels.log10=function(x){if(x==null){return x}return Math.log(x)/Math.log(10)};d3panels.abs=function(x){if(x==null){return x}return Math.abs(x)};d3panels.mean_by_group=function(g,y){var i,means,n;means={};n={};for(i in g){if(n[g[i]]!=null){if(y[i]!=null){means[g[i]]+=y[i]}if(y[i]!=null){n[g[i]]+=1}}else{if(y[i]!=null){means[g[i]]=y[i]}if(y[i]!=null){n[g[i]]=1}}}for(i in means){means[i]/=n[i]}return means};d3panels.sd_by_group=function(g,y){var dev,i,means,n,sds;means=d3panels.mean_by_group(g,y);sds={};n={};for(i in g){dev=y[i]-means[g[i]];if(n[g[i]]!=null){if(y[i]!=null){sds[g[i]]+=dev*dev}if(y[i]!=null){n[g[i]]+=1}}else{if(y[i]!=null){sds[g[i]]=dev*dev}if(y[i]!=null){n[g[i]]=1}}}for(i in sds){sds[i]=n[i]<2?null:Math.sqrt(sds[i]/(n[i]-1))}return sds};d3panels.count_groups=function(g,y){var i,n;n={};for(i in g){if(n[g[i]]!=null){if(y[i]!=null){n[g[i]]+=1}}else{if(y[i]!=null){n[g[i]]=1}}}return n};d3panels.ci_by_group=function(g,y){var m=arguments.length>2&&arguments[2]!==undefined?arguments[2]:2;var ci,dev,i,means,n,sds;means=d3panels.mean_by_group(g,y);sds={};n={};for(i in g){dev=y[i]-means[g[i]];if(n[g[i]]!=null){if(y[i]!=null){sds[g[i]]+=dev*dev}if(y[i]!=null){n[g[i]]+=1}}else{if(y[i]!=null){sds[g[i]]=dev*dev}if(y[i]!=null){n[g[i]]=1}}}for(i in sds){sds[i]=n[i]<2?null:Math.sqrt(sds[i]/(n[i]-1))}ci={};for(i in means){ci[i]={mean:means[i],low:n[i]>0?means[i]-m*sds[i]/Math.sqrt(n[i]):means[i],high:n[i]>0?means[i]+m*sds[i]/Math.sqrt(n[i]):means[i]}}return ci};d3panels.pad_ylim=function(ylim){var p=arguments.length>1&&arguments[1]!==undefined?arguments[1]:.025;var d;d=ylim[1]-ylim[0];return[ylim[0]-d*p,ylim[1]+d*p]};d3panels.add_chrname_start_end=function(data){var c,i,k,l,len,len1,ref,ref1,these_pos;if(data.chrname==null){data.chrname=d3panels.unique(data.chr)}data.chrname=d3panels.forceAsArray(data.chrname);if(data.chrstart==null){data.chrstart=[];ref=data.chrname;for(k=0,len=ref.length;k=high){d3panels.displayError("calc_breaks: should have low < high");if(low>high){var _ref=[high,low];low=_ref[0];high=_ref[1]}if(low===high){low-=.5;high+=.5}}if(number<2){d3panels.displayError("calc_breaks: number should be >= 2");number=2}d=(high-low)/(number-1);results=[];for(i in d3.range(number)){results.push(low+d*i)}return results};d3panels.calc_freq=function(values,breaks){var return_counts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var br,i,k,len,n,ref,result,v,z;v=values.slice(0);v.sort(function(a,b){return+a-b});br=breaks.slice(0);br.sort(function(a,b){return+a-b});br[0]-=1e-6;br[br.length-1]+=1e-6;result=function(){var k,len,ref,results;ref=d3.range(br.length-1);results=[];for(k=0,len=ref.length;kbr[0]&&z =br[i]&&z =zthresh){cells.push({lod:data.lod[i][j],chrx:data.chr[i],chry:data.chr[j],poslabelx:data.poslabel[i],poslabely:data.poslabel[j],xindex:i,yindex:j,xindexByChr:indexWithinChr[i],yindexByChr:indexWithinChr[j]})}}}d3panels.calc_2dchrcell_rect(cells,xmid_scaled,ymid_scaled);cellg=svg.append("g").attr("id","cells");cellSelect=cellg.selectAll("empty").data(cells).enter().append("rect").attr("x",function(d){return d.left}).attr("y",function(d){return d.top}).attr("width",function(d){return d.width}).attr("height",function(d){return d.height}).attr("class",function(d,i){return"cell"+i}).attr("fill",function(d){if(d.lod!=null){return zscale(d.lod)}else{return nullcolor}}).attr("stroke","none").attr("stroke-width","1").on("mouseover",function(d){return d3.select(this).attr("stroke",hilitcolor).raise()}).on("mouseout",function(){return d3.select(this).attr("stroke","none")});tooltipfunc=function tooltipfunc(d){var z;z=d3.format(".2f")(Math.abs(d.lod));return"("+d.poslabelx+","+d.poslabely+") → "+z};return celltip=d3panels.tooltip_create(d3.select("body"),cellg.selectAll("rect"),{tipclass:tipclass},tooltipfunc)};chart.xscale=function(){return xscale};chart.yscale=function(){return yscale};chart.zscale=function(){return zscale};chart.cells=function(){return cellSelect};chart.celltip=function(){return celltip};chart.svg=function(){return svg};chart.remove=function(){svg.remove();d3panels.tooltip_destroy(celltip);return null};return chart};"use strict";d3panels.panelframe=function(chartOpts){var axispos,box,boxcolor,boxwidth,chart,height,margin,nxticks,nyticks,plot_height,plot_width,rectcolor,ref,ref1,ref10,ref11,ref12,ref13,ref14,ref15,ref16,ref17,ref18,ref19,ref2,ref20,ref21,ref22,ref23,ref24,ref25,ref26,ref3,ref4,ref5,ref6,ref7,ref8,ref9,rotate_ylab,svg,title,titlepos,v_over_h,width,xNA,xNA_size,xlab,xlabels,xlim,xlineOpts,xlines,xscale,xscale_wnull,xticklab,xticks,yNA,yNA_size,ylab,ylabels,ylim,ylineOpts,ylines,yscale,yscale_wnull,yticklab,yticks;if(chartOpts==null){chartOpts={}}width=(ref=chartOpts!=null?chartOpts.width:void 0)!=null?ref:800;height=(ref1=chartOpts!=null?chartOpts.height:void 0)!=null?ref1:500;margin=(ref2=chartOpts!=null?chartOpts.margin:void 0)!=null?ref2:{left:60,top:40,right:40,bottom:40,inner:3};axispos=(ref3=chartOpts!=null?chartOpts.axispos:void 0)!=null?ref3:{xtitle:25,ytitle:45,xlabel:5,ylabel:5};titlepos=(ref4=chartOpts!=null?chartOpts.titlepos:void 0)!=null?ref4:20;title=(ref5=chartOpts!=null?chartOpts.title:void 0)!=null?ref5:"";xlab=(ref6=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref6:"X";ylab=(ref7=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref7:"Y";rotate_ylab=(ref8=chartOpts!=null?chartOpts.rotate_ylab:void 0)!=null?ref8:null;xNA=(ref9=chartOpts!=null?chartOpts.xNA:void 0)!=null?ref9:false;yNA=(ref10=chartOpts!=null?chartOpts.yNA:void 0)!=null?ref10:false;xNA_size=(ref11=chartOpts!=null?chartOpts.xNA_size:void 0)!=null?ref11:{width:20,gap:10};yNA_size=(ref12=chartOpts!=null?chartOpts.yNA_size:void 0)!=null?ref12:{width:20,gap:10};xlim=(ref13=chartOpts!=null?chartOpts.xlim:void 0)!=null?ref13:[0,1];ylim=(ref14=chartOpts!=null?chartOpts.ylim:void 0)!=null?ref14:[0,1];nxticks=(ref15=chartOpts!=null?chartOpts.nxticks:void 0)!=null?ref15:5;xticks=(ref16=chartOpts!=null?chartOpts.xticks:void 0)!=null?ref16:null;xticklab=(ref17=chartOpts!=null?chartOpts.xticklab:void 0)!=null?ref17:null;nyticks=(ref18=chartOpts!=null?chartOpts.nyticks:void 0)!=null?ref18:5;yticks=(ref19=chartOpts!=null?chartOpts.yticks:void 0)!=null?ref19:null;yticklab=(ref20=chartOpts!=null?chartOpts.yticklab:void 0)!=null?ref20:null;rectcolor=(ref21=chartOpts!=null?chartOpts.rectcolor:void 0)!=null?ref21:"#e6e6e6";boxcolor=(ref22=chartOpts!=null?chartOpts.boxcolor:void 0)!=null?ref22:"black";boxwidth=(ref23=chartOpts!=null?chartOpts.boxwidth:void 0)!=null?ref23:2;xlineOpts=(ref24=chartOpts!=null?chartOpts.xlineOpts:void 0)!=null?ref24:{color:"white",width:2};ylineOpts=(ref25=chartOpts!=null?chartOpts.ylineOpts:void 0)!=null?ref25:{color:"white",width:2};v_over_h=(ref26=chartOpts!=null?chartOpts.v_over_h:void 0)!=null?ref26:false;xscale=null;yscale=null;xNA=xNA;yNA=yNA;xlines=null;ylines=null;xlabels=null;ylabels=null;plot_width=null;plot_height=null;box=null;svg=null;xscale_wnull=null;yscale_wnull=null;chart=function chart(selection){var boxes,boxes2include,d,g,i,inner_height,inner_width,xNA_xpos,xaxis,xrange,yNA_ypos,yaxis,ylabpos_x,ylabpos_y,yrange;margin=d3panels.check_listarg_v_default(margin,{left:60,top:40,right:40,bottom:40,inner:3});axispos=d3panels.check_listarg_v_default(axispos,{xtitle:25,ytitle:45,xlabel:5,ylabel:5});xNA_size=d3panels.check_listarg_v_default(xNA_size,{width:20,gap:10});yNA_size=d3panels.check_listarg_v_default(yNA_size,{width:20,gap:10});xlineOpts=d3panels.check_listarg_v_default(xlineOpts,{color:"white",width:2});ylineOpts=d3panels.check_listarg_v_default(ylineOpts,{color:"white",width:2});svg=selection.append("svg");svg.attr("width",width).attr("height",height).attr("class","d3panels");g=svg.append("g").attr("id","frame");if(!xNA){xNA_size={width:0,gap:0}}if(!yNA){yNA_size={width:0,gap:0}}plot_width=width-(margin.left+margin.right);plot_height=height-(margin.top+margin.bottom);inner_width=width-(margin.right+margin.left+xNA_size.width+xNA_size.gap);inner_height=height-(margin.top+margin.bottom+yNA_size.width+yNA_size.gap);boxes={left:[margin.left+xNA_size.width+xNA_size.gap,margin.left,margin.left,margin.left+xNA_size.width+xNA_size.gap],width:[inner_width,xNA_size.width,xNA_size.width,inner_width],top:[margin.top,margin.top,height-(margin.bottom+yNA_size.width),height-(margin.bottom+yNA_size.width)],height:[inner_height,inner_height,yNA_size.width,yNA_size.width]};xNA_xpos=xNA?margin.left+xNA_size.width/2:-5e4;yNA_ypos=yNA?height-margin.bottom-yNA_size.width/2:-5e4;xrange=[boxes.left[0],boxes.left[0]+boxes.width[0]];yrange=[boxes.top[0]+boxes.height[0],boxes.top[0]];for(i in boxes.left){if(boxes.width[i]>0&&boxes.height[i]>0){g.append("rect").attr("x",boxes.left[i]).attr("y",boxes.top[i]).attr("height",boxes.height[i]).attr("width",boxes.width[i]).attr("fill",rectcolor).attr("stroke","none").attr("shape-rendering","crispEdges")}}g.append("g").attr("class","title").append("text").text(title).attr("x",(width-margin.left-margin.right)/2+margin.left).attr("y",titlepos);rotate_ylab=rotate_ylab!=null?rotate_ylab:ylab.length>1;if(v_over_h){yaxis=g.append("g").attr("class","y axis");xaxis=g.append("g").attr("class","x axis")}else{xaxis=g.append("g").attr("class","x axis");yaxis=g.append("g").attr("class","y axis")}xaxis.append("text").attr("class","title").text(xlab).attr("x",(width-margin.left-margin.right)/2+margin.left).attr("y",plot_height+margin.top+axispos.xtitle);ylabpos_y=(height-margin.top-margin.bottom)/2+margin.top;ylabpos_x=margin.left-axispos.ytitle;yaxis.append("text").attr("class","title").text(ylab).attr("y",ylabpos_y).attr("x",ylabpos_x).attr("transform",rotate_ylab?"rotate(270,"+ylabpos_x+","+ylabpos_y+")":"");xscale=d3.scaleLinear().domain(xlim).range([xrange[0]+margin.inner,xrange[1]-margin.inner]);yscale=d3.scaleLinear().domain(ylim).range([yrange[0]-margin.inner,yrange[1]+margin.inner]);xscale_wnull=function xscale_wnull(val){if(val==null){return xNA_xpos}return xscale(val)};yscale_wnull=function yscale_wnull(val){if(val==null){return yNA_ypos}return yscale(val)};xticks=xticks!=null?xticks:xscale.ticks(nxticks);if(xticklab!=null&&xticklab.length!==xticks.length){d3panels.displayError("panelframe: xticklab.length ("+xticklab.length+") != xticks.length ("+xticks.length+")")}if(!(xticklab!=null&&xticklab.length===xticks.length)){xticklab=function(){var j,len,results;results=[];for(j=0,len=xticks.length;j0&&boxes.height[i]>0){results.push(i)}}return results}();box=svg.append("g").attr("id","box");return box.selectAll("empty").data(boxes2include).enter().append("rect").attr("x",function(i){return boxes.left[i]}).attr("y",function(i){return boxes.top[i]}).attr("height",function(i){return boxes.height[i]}).attr("width",function(i){return boxes.width[i]}).attr("fill","none").attr("stroke",boxcolor).attr("stroke-width",boxwidth).attr("shape-rendering","crispEdges")};chart.xscale=function(){return xscale_wnull};chart.yscale=function(){return yscale_wnull};chart.xNA=function(){return xNA};chart.yNA=function(){return yNA};chart.xlines=function(){return xlines};chart.ylines=function(){return ylines};chart.xlabels=function(){return xlabels};chart.ylabels=function(){return ylabels};chart.plot_width=function(){return plot_width};chart.plot_height=function(){return plot_height};chart.width=function(){return width};chart.height=function(){return height};chart.margin=function(){return margin};chart.box=function(){return box};chart.svg=function(){return svg};chart.remove=function(){svg.remove();return null};return chart};"use strict";d3panels.chrpanelframe=function(chartOpts){var altrectcolor,axispos,box,boxcolor,boxwidth,chart,chrGap,chrSelect,chrlinecolor,chrlines,chrlinewidth,height,horizontal,margin,nyticks,rectcolor,ref,ref1,ref10,ref11,ref12,ref13,ref14,ref15,ref16,ref17,ref18,ref19,ref2,ref20,ref21,ref22,ref3,ref4,ref5,ref6,ref7,ref8,ref9,rotate_ylab,svg,title,titlepos,width,xlab,xlabels,xlineOpts,xscale,ylab,ylabels,ylim,ylineOpts,yscale,yticklab,yticks;if(chartOpts==null){chartOpts={}}width=(ref=chartOpts!=null?chartOpts.width:void 0)!=null?ref:800;height=(ref1=chartOpts!=null?chartOpts.height:void 0)!=null?ref1:500;margin=(ref2=chartOpts!=null?chartOpts.margin:void 0)!=null?ref2:{left:60,top:40,right:40,bottom:40};axispos=(ref3=chartOpts!=null?chartOpts.axispos:void 0)!=null?ref3:{xtitle:25,ytitle:45,xlabel:5,ylabel:5};titlepos=(ref4=chartOpts!=null?chartOpts.titlepos:void 0)!=null?ref4:20;title=(ref5=chartOpts!=null?chartOpts.title:void 0)!=null?ref5:"";xlab=(ref6=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref6:null;ylab=(ref7=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref7:"LOD score";rotate_ylab=(ref8=chartOpts!=null?chartOpts.rotate_ylab:void 0)!=null?ref8:null;ylim=(ref9=chartOpts!=null?chartOpts.ylim:void 0)!=null?ref9:[0,1];nyticks=(ref10=chartOpts!=null?chartOpts.nyticks:void 0)!=null?ref10:5;yticks=(ref11=chartOpts!=null?chartOpts.yticks:void 0)!=null?ref11:null;yticklab=(ref12=chartOpts!=null?chartOpts.yticklab:void 0)!=null?ref12:null;rectcolor=(ref13=chartOpts!=null?chartOpts.rectcolor:void 0)!=null?ref13:"#e6e6e6";altrectcolor=(ref14=chartOpts!=null?chartOpts.altrectcolor:void 0)!=null?ref14:"#d4d4d4";chrlinecolor=(ref15=chartOpts!=null?chartOpts.chrlinecolor:void 0)!=null?ref15:"";chrlinewidth=(ref16=chartOpts!=null?chartOpts.chrlinewidth:void 0)!=null?ref16:2;boxcolor=(ref17=chartOpts!=null?chartOpts.boxcolor:void 0)!=null?ref17:"black";boxwidth=(ref18=chartOpts!=null?chartOpts.boxwidth:void 0)!=null?ref18:2;xlineOpts=(ref19=chartOpts!=null?chartOpts.xlineOpts:void 0)!=null?ref19:{color:"#d4d4d4",width:2};ylineOpts=(ref20=chartOpts!=null?chartOpts.ylineOpts:void 0)!=null?ref20:{color:"white",width:2};chrGap=(ref21=chartOpts!=null?chartOpts.chrGap:void 0)!=null?ref21:6;horizontal=(ref22=chartOpts.horizontal)!=null?ref22:false;xscale=null;yscale=null;xlabels=null;ylabels=null;chrSelect=null;chrlines=null;box=null;svg=null;chart=function chart(selection,data){var c,d,g,plot_height,plot_width,thechr,xaxis,xlines,xticks,yaxis,ylabpos_x,ylabpos_y,ylines;margin=d3panels.check_listarg_v_default(margin,{left:60,top:40,right:40,bottom:60});axispos=d3panels.check_listarg_v_default(axispos,{xtitle:25,ytitle:45,xlabel:5,ylabel:5});xlineOpts=d3panels.check_listarg_v_default(xlineOpts,{color:"white",width:2});ylineOpts=d3panels.check_listarg_v_default(ylineOpts,{color:"white",width:2});if(data.chr==null){d3panels.displayError("chrpanelframe: data.chr is missing")}if(data.end==null){d3panels.displayError("chrpanelframe: data.end is missing")}if(xlab==null){xlab=data.chr.length===1?"Position":"Chromosome"}svg=selection.append("svg");svg.attr("width",width).attr("height",height).attr("class","d3panels");g=svg.append("g").attr("id","frame");plot_width=width-(margin.left+margin.right);plot_height=height-(margin.top+margin.bottom);if(!(data!=null?data.start:void 0)){data.start=function(){var j,len,ref23,results;ref23=data.chr;results=[];for(j=0,len=ref23.length;j1}else{rotate_ylab=rotate_ylab!=null?rotate_ylab:ylab.length>1}xaxis=g.append("g").attr("class",function(){if(horizontal){return"y axis"}return"x axis"});yaxis=g.append("g").attr("class",function(){if(horizontal){return"x axis"}return"y axis"});xaxis.append("text").attr("class","title").text(function(){if(horizontal){return ylab}return xlab}).attr("x",(width-margin.left-margin.right)/2+margin.left).attr("y",plot_height+margin.top+axispos.xtitle);ylabpos_y=(height-margin.top-margin.bottom)/2+margin.top;ylabpos_x=margin.left-axispos.ytitle;yaxis.append("text").attr("class","title").text(function(){if(horizontal){return xlab}return ylab}).attr("y",ylabpos_y).attr("x",ylabpos_x).attr("transform",rotate_ylab?"rotate(270,"+ylabpos_x+","+ylabpos_y+")":"");if(data.chr.length>1){xlabels=xaxis.append("g").attr("id","xlabels").selectAll("empty").data(data.chr).enter().append("text").attr("x",function(d,i){if(horizontal){return margin.left-axispos.ylabel}return(xscale[d](data.start[i])+xscale[d](data.end[i]))/2}).attr("y",function(d,i){if(horizontal){return(xscale[d](data.start[i])+xscale[d](data.end[i]))/2}return height-margin.bottom+axispos.xlabel}).text(function(d){return d})}else{thechr=data.chr[0];xticks=xscale[thechr].ticks(5);xlabels=xaxis.append("g").attr("id","xlabels").selectAll("empty").data(xticks).enter().append("text").attr("x",function(d){if(horizontal){return margin.left-axispos.ylabel}return xscale[thechr](d)}).attr("y",function(d,i){if(horizontal){return xscale[thechr](d)}return height-margin.bottom+axispos.xlabel}).text(function(d){return d});xlines=xaxis.append("g").attr("id","xlines").selectAll("empty").data(xticks).enter().append("line").attr("x1",function(d){if(horizontal){return margin.left}return xscale[thechr](d)}).attr("x2",function(d){if(horizontal){return margin.left+plot_width}return xscale[thechr](d)}).attr("y1",function(d,i){if(horizontal){return xscale[thechr](d)}return margin.top}).attr("y2",function(d,i){if(horizontal){return xscale[thechr](d)}return plot_height+margin.top}).attr("fill","none").attr("stroke",xlineOpts.color).attr("stroke-width",xlineOpts.width).attr("shape-rendering","crispEdges").style("pointer-events","none")}yticks=yticks!=null?yticks:yscale.ticks(nyticks);if(yticklab!=null&&yticklab.length!==yticks.length){displayError("chrpanelframe: yticklab.length ("+yticklab.length+") != yticks.length ("+yticks.length+")")}if(!(yticklab!=null&&yticklab.length===yticks.length)){yticklab=function(){var j,len,results;results=[];for(j=0,len=yticks.length;j1){chrlines=svg.append("g").attr("id","chrlines");chrlines.selectAll("empty").data(data.chr.slice(0,+(data.chr.length-2)+1||9e9)).enter().append("line").attr("x1",function(d,i){if(horizontal){return margin.left}return xscale[d](data.end[i])+chrGap/2}).attr("x2",function(d,i){if(horizontal){return margin.left+plot_width}return xscale[d](data.end[i])+chrGap/2}).attr("y1",function(d,i){if(horizontal){return xscale[d](data.end[i])+chrGap/2}return margin.top}).attr("y2",function(d,i){if(horizontal){return xscale[d](data.end[i])+chrGap/2}return margin.top+plot_height}).attr("stroke",chrlinecolor).attr("stroke-width",chrlinewidth).attr("shape-rendering","crispEdges")}return box=svg.append("rect").attr("class","box").attr("x",margin.left).attr("y",margin.top).attr("height",plot_height).attr("width",plot_width).attr("fill","none").attr("stroke",boxcolor).attr("stroke-width",boxwidth).attr("shape-rendering","crispEdges")};chart.xscale=function(){return xscale};chart.yscale=function(){return yscale};chart.xlabels=function(){return xlabels};chart.ylabels=function(){return ylabels};chart.chrSelect=function(){return chrSelect};chart.chrlines=function(){return chrlines};chart.plot_width=function(){return plot_width};chart.plot_height=function(){return plot_height};chart.width=function(){return width};chart.height=function(){return height};chart.margin=function(){return margin};chart.box=function(){return box};chart.svg=function(){return svg};chart.remove=function(){svg.remove();return null};return chart};"use strict";d3panels.chr2dpanelframe=function(chartOpts){var altrectcolor,axispos,box,boxcolor,boxwidth,chart,chrGap,chrSelect,chrlinecolor,chrlines,chrlinewidth,height,margin,oneAtTop,rectcolor,ref,ref1,ref10,ref11,ref12,ref13,ref14,ref15,ref16,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,rotate_ylab,svg,title,titlepos,width,xlab,xlabels,xscale,ylab,ylabels,yscale;if(chartOpts==null){chartOpts={}}width=(ref=chartOpts!=null?chartOpts.width:void 0)!=null?ref:800;height=(ref1=chartOpts!=null?chartOpts.height:void 0)!=null?ref1:800;margin=(ref2=chartOpts!=null?chartOpts.margin:void 0)!=null?ref2:{left:60,top:40,right:40,bottom:60};axispos=(ref3=chartOpts!=null?chartOpts.axispos:void 0)!=null?ref3:{xtitle:25,ytitle:45,xlabel:5,ylabel:5};titlepos=(ref4=chartOpts!=null?chartOpts.titlepos:void 0)!=null?ref4:20;title=(ref5=chartOpts!=null?chartOpts.title:void 0)!=null?ref5:"";xlab=(ref6=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref6:"Chromosome";ylab=(ref7=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref7:"Chromosome";rotate_ylab=(ref8=chartOpts!=null?chartOpts.rotate_ylab:void 0)!=null?ref8:null;rectcolor=(ref9=chartOpts!=null?chartOpts.rectcolor:void 0)!=null?ref9:"#e6e6e6";altrectcolor=(ref10=chartOpts!=null?chartOpts.altrectcolor:void 0)!=null?ref10:"#d4d4d4";chrlinecolor=(ref11=chartOpts!=null?chartOpts.chrlinecolor:void 0)!=null?ref11:"";chrlinewidth=(ref12=chartOpts!=null?chartOpts.chrlinewidth:void 0)!=null?ref12:2;boxcolor=(ref13=chartOpts!=null?chartOpts.boxcolor:void 0)!=null?ref13:"black";boxwidth=(ref14=chartOpts!=null?chartOpts.boxwidth:void 0)!=null?ref14:2;chrGap=(ref15=chartOpts!=null?chartOpts.chrGap:void 0)!=null?ref15:6;oneAtTop=(ref16=chartOpts!=null?chartOpts.oneAtTop:void 0)!=null?ref16:false;xscale=null;yscale=null;xlabels=null;ylabels=null;chrSelect=null;chrlines=null;box=null;svg=null;chart=function chart(selection,data){var c,chrRect,chrx,chry,g,j,k,len,len1,plot_height,plot_width,ref17,ref18,x,xaxis,y,yaxis,ylabpos_x,ylabpos_y;margin=d3panels.check_listarg_v_default(margin,{left:60,top:40,right:40,bottom:60});axispos=d3panels.check_listarg_v_default(axispos,{xtitle:25,ytitle:45,xlabel:5,ylabel:5});if(data.chr==null){d3panels.displayError("chr2dpanelframe: data.chr is missing")}if(data.end==null){d3panels.displayError("chr2dpanelframe: data.end is missing")}svg=selection.append("svg");svg.attr("width",width).attr("height",height).attr("class","d3panels");g=svg.append("g").attr("id","frame");plot_width=width-(margin.left+margin.right);plot_height=height-(margin.top+margin.bottom);if(!(data!=null?data.start:void 0)){data.start=function(){var j,len,ref17,results;ref17=data.chr;results=[];for(j=0,len=ref17.length;j1;xaxis=g.append("g").attr("class","x axis");yaxis=g.append("g").attr("class","y axis");xaxis.append("text").attr("class","title").text(function(){return xlab}).attr("x",(width-margin.left-margin.right)/2+margin.left).attr("y",plot_height+margin.top+axispos.xtitle);ylabpos_y=(height-margin.top-margin.bottom)/2+margin.top;ylabpos_x=margin.left-axispos.ytitle;yaxis.append("text").attr("class","title").text(function(){return ylab}).attr("y",ylabpos_y).attr("x",ylabpos_x).attr("transform",rotate_ylab?"rotate(270,"+ylabpos_x+","+ylabpos_y+")":"");xlabels=xaxis.append("g").attr("id","xlabels").selectAll("empty").data(data.chr).enter().append("text").attr("x",function(d,i){return(xscale[d](data.start[i])+xscale[d](data.end[i]))/2}).attr("y",height-margin.bottom+axispos.xlabel).text(function(d){return d});ylabels=yaxis.append("g").attr("id","ylabels").selectAll("empty").data(data.chr).enter().append("text").attr("y",function(d,i){return(yscale[d](data.start[i])+yscale[d](data.end[i]))/2}).attr("x",margin.left-axispos.ylabel).text(function(d){return d});if(chrlinecolor!==""&&data.chr.length>1){chrlines=svg.append("g").attr("id","chrlines");chrlines.selectAll("empty").data(data.chr.slice(0,+(data.chr.length-2)+1||9e9)).enter().append("line").attr("x1",function(d,i){return xscale[d](data.end[i])+chrGap/2}).attr("x2",function(d,i){return xscale[d](data.end[i])+chrGap/2}).attr("y1",margin.top).attr("y2",margin.top+plot_height).attr("stroke",chrlinecolor).attr("stroke-width",chrlinewidth).attr("shape-rendering","crispEdges");chrlines.selectAll("empty").data(data.chr.slice(0,+(data.chr.length-2)+1||9e9)).enter().append("line").attr("y1",function(d,i){if(oneAtTop){return yscale[d](data.end[i])+chrGap/2}return yscale[d](data.end[i])-chrGap/2}).attr("y2",function(d,i){if(oneAtTop){return yscale[d](data.end[i])+chrGap/2}return yscale[d](data.end[i])-chrGap/2}).attr("x1",margin.left).attr("x2",margin.left+plot_width).attr("stroke",chrlinecolor).attr("stroke-width",chrlinewidth).attr("shape-rendering","crispEdges")}return box=svg.append("rect").attr("class","box").attr("x",margin.left).attr("y",margin.top).attr("height",plot_height).attr("width",plot_width).attr("fill","none").attr("stroke",boxcolor).attr("stroke-width",boxwidth).attr("shape-rendering","crispEdges")};chart.xscale=function(){return xscale};chart.yscale=function(){return yscale};chart.xlabels=function(){return xlabels};chart.ylabels=function(){return ylabels};chart.chrSelect=function(){return chrSelect};chart.chrlines=function(){return chrlines};chart.plot_width=function(){return plot_width};chart.plot_height=function(){return plot_height};chart.width=function(){return width};chart.height=function(){return height};chart.margin=function(){return margin};chart.box=function(){return box};chart.svg=function(){return svg};chart.remove=function(){svg.remove();return null};return chart};"use strict";d3panels.cichart=function(chartOpts){var chart,horizontal,ref,ref1,ref10,ref11,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,segcolor,segments,segstrokewidth,segwidth,svg,tip,tipclass,v_over_h,vertsegcolor,xcatlabels,xlab,xlineOpts,xscale,ylab,ylim,yscale;if(chartOpts==null){chartOpts={}}xcatlabels=(ref=chartOpts!=null?chartOpts.xcatlabels:void 0)!=null?ref:null;segwidth=(ref1=chartOpts!=null?chartOpts.segwidth:void 0)!=null?ref1:.4;segcolor=(ref2=chartOpts!=null?chartOpts.segcolor:void 0)!=null?ref2:"slateblue";segstrokewidth=(ref3=chartOpts!=null?chartOpts.segstrokewidth:void 0)!=null?ref3:"3";vertsegcolor=(ref4=chartOpts!=null?chartOpts.vertsegcolor:void 0)!=null?ref4:"slateblue";xlab=(ref5=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref5:"Group";ylab=(ref6=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref6:"Response";ylim=(ref7=chartOpts!=null?chartOpts.ylim:void 0)!=null?ref7:null;xlineOpts=(ref8=chartOpts!=null?chartOpts.xlineOpts:void 0)!=null?ref8:{color:"#CDCDCD",width:5};horizontal=(ref9=chartOpts!=null?chartOpts.horizontal:void 0)!=null?ref9:false;v_over_h=(ref10=chartOpts!=null?chartOpts.v_over_h:void 0)!=null?ref10:horizontal;tipclass=(ref11=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref11:"tooltip";xscale=null;yscale=null;segments=null;tip=null;svg=null;chart=function chart(selection,data){var direction,high,i,low,mean,myframe,ncat,segmentGroup,tipfunc,xlim,xticks,xval,yval;xlineOpts=d3panels.check_listarg_v_default(xlineOpts,{color:"#CDCDCD",width:5});if(data.mean==null){d3panels.displayError("cichart: data.mean is missing")}if(data.low==null){d3panels.displayError("cichart: data.low is missing")}if(data.high==null){d3panels.displayError("cichart: data.high is missing")}mean=data.mean;low=data.low;high=data.high;ncat=mean.length;if(ncat!==low.length){d3panels.displayError("cichart: low.length ["+low.length+"] != mean.length ["+ncat+"]")}if(ncat!==high.length){d3panels.displayError("cichart: high.length ["+high.length+"] != mean.length ["+ncat+"]")}xticks=function(){var results;results=[];for(i in mean){results.push(+i+1)}return results}();xcatlabels=xcatlabels!=null?xcatlabels:xticks;if(xcatlabels.length!==mean.length){d3panels.displayError("cichart: xcatlabels.length ["+xcatlabels.length+"] != mean.length ["+ncat+"]")}ylim=ylim!=null?ylim:d3panels.pad_ylim(d3.extent(low.concat(high)));xlim=[.5,mean.length+.5];segcolor=d3panels.expand2vector(d3panels.forceAsArray(segcolor),mean.length);vertsegcolor=d3panels.expand2vector(d3panels.forceAsArray(vertsegcolor),mean.length);if(horizontal){chartOpts.ylim=xlim.reverse();chartOpts.xlim=ylim;chartOpts.xlab=ylab;chartOpts.ylab=xlab;chartOpts.xlineOpts=chartOpts.ylineOpts;chartOpts.ylineOpts=xlineOpts;chartOpts.yNA=chartOpts.xNA;chartOpts.xNA=chartOpts.yNA;chartOpts.yticks=xticks;chartOpts.yticklab=xcatlabels;chartOpts.v_over_h=v_over_h}else{chartOpts.ylim=ylim;chartOpts.xlim=xlim;chartOpts.xlab=xlab;chartOpts.ylab=ylab;chartOpts.ylineOpts=chartOpts.ylineOpts;chartOpts.xlineOpts=xlineOpts;chartOpts.xticks=xticks;chartOpts.xticklab=xcatlabels;chartOpts.v_over_h=v_over_h}myframe=d3panels.panelframe(chartOpts);myframe(selection);svg=myframe.svg();xscale=myframe.xscale();yscale=myframe.yscale();segmentGroup=svg.append("g").attr("id","segments");segments=segmentGroup.selectAll("empty").data(low).enter().append("line").attr("x1",function(d,i){if(!horizontal){return xscale(i+1)}return xscale(d)}).attr("x2",function(d,i){if(!horizontal){return xscale(i+1)}return xscale(high[i])}).attr("y1",function(d,i){if(!horizontal){return yscale(d)}return yscale(i+1)}).attr("y2",function(d,i){if(!horizontal){return yscale(high[i])}return yscale(i+1)}).attr("fill","none").attr("stroke",function(d,i){return vertsegcolor[i]}).attr("stroke-width",segstrokewidth).attr("shape-rendering","crispEdges");yval=mean.concat(low,high);xval=function(){var results;results=[];for(i in yval){results.push(+(i%ncat)+1)}return results}();segments=segmentGroup.selectAll("empty").data(yval).enter().append("line").attr("x1",function(d,i){if(horizontal){return xscale(d)}else{if(incol||d3.min(data.x)<=0){d3panels.displayError("crosstab: data.x should be in range 1-"+ncol+" [was "+d3.min(data.x)+" - "+d3.max(data.x)+"]")}nrow=data.ycat.length;if(d3.max(data.y)>nrow||d3.min(data.y)<=0){d3panels.displayError("crosstab: data.y should be in range 1-"+nrow+" [was "+d3.min(data.y)+" - "+d3.max(data.y)+"]")}data.x=function(){var k,len,ref12,results;ref12=data.x;results=[];for(k=0,len=ref12.length;k=ref14;i=0<=ref14?++k:--k){for(j=l=0,ref15=ncol;0<=ref15?l<=ref15:l>=ref15;j=0<=ref15?++l:--l){cell={value:tab[i][j],row:i,col:j,shaded:false,rowpercent:"",colpercent:""};if(i0?Math.round(100*tab[i][j]/denom)+"%":"—"}else if(i===nrow-1){denom=tab[nrow][j];cell.colpercent=denom>0?"("+Math.round(100*tab[i][j]/denom)+"%)":"—"}else{cell.colpercent=cell.value}if(j0?Math.round(100*tab[i][j]/denom)+"%":"—"}else if(j===ncol-1){denom=tab[i][ncol];cell.rowpercent=denom>0?"("+Math.round(100*tab[i][j]/denom)+"%)":"—"}else{cell.rowpercent=cell.value}cells.push(cell)}}plot_width=width-margin.left-margin.right;plot_height=height-margin.top-margin.bottom;cellWidth=plot_width/(ncol+2);cellHeight=plot_height/(nrow+2);fontsize=fontsize!=null?fontsize:cellHeight*.5;cellPad=cellPad!=null?cellPad:cellWidth*.1;xscale=d3.scaleBand().domain(function(){var results=[];for(var m=0,ref16=ncol+1;0<=ref16?m<=ref16:m>=ref16;0<=ref16?m++:m--){results.push(m)}return results}.apply(this)).range([margin.left,width-margin.right]);yscale=d3.scaleBand().domain(function(){var results=[];for(var m=0,ref17=nrow+1;0<=ref17?m<=ref17:m>=ref17;0<=ref17?m++:m--){results.push(m)}return results}.apply(this)).range([margin.top,height-margin.bottom]);svg=selection.append("svg").attr("width",width).attr("height",height).attr("class","d3panels");rect=svg.append("g").attr("id","value_rect");rect.selectAll("empty").data(cells).enter().append("rect").attr("x",function(d){return xscale(d.col+1)}).attr("y",function(d){return yscale(d.row+1)}).attr("width",cellWidth).attr("height",cellHeight).attr("fill",function(d){if(d.shaded){return rectcolor}else{return"none"}}).attr("stroke",function(d){if(d.shaded){return rectcolor}else{return"none"}}).attr("stroke-width",0).style("pointer-events","none").attr("shape-rendering","crispEdges");values=svg.append("g").attr("id","values");values.selectAll("empty").data(cells).enter().append("text").attr("x",function(d){return xscale(d.col+1)+cellWidth-cellPad}).attr("y",function(d){return yscale(d.row+1)+cellHeight/2}).text(function(d){return d.value}).attr("class",function(d){return"crosstab row"+d.row+" col"+d.col}).style("font-size",fontsize).style("pointer-events","none");colrect=svg.append("g").attr("id","colrect");colrect.selectAll("empty").data(data.xcat.concat("Total")).enter().append("rect").attr("x",function(d,i){return xscale(i+1)}).attr("y",yscale(0)).attr("width",cellWidth).attr("height",cellHeight).attr("fill","white").attr("stroke","white").attr("shape-rendering","crispEdges").on("mouseover",function(d,i){d3.select(this).attr("fill",hilitcolor).attr("stroke",hilitcolor);return values.selectAll(".col"+i).text(function(d){return d.colpercent})}).on("mouseout",function(d,i){d3.select(this).attr("fill","white").attr("stroke","white");return values.selectAll("text.col"+i).text(function(d){return d.value})});collab=svg.append("g").attr("id","collab");collab.selectAll("empty").data(data.xcat.concat("Total")).enter().append("text").attr("x",function(d,i){return xscale(i+1)+cellWidth-cellPad}).attr("y",yscale(0)+cellHeight/2).text(function(d){return d}).attr("class","crosstab").style("font-size",fontsize).style("pointer-events","none");rowrect=svg.append("g").attr("id","rowrect");rowrect.selectAll("empty").data(data.ycat.concat("Total")).enter().append("rect").attr("x",xscale(0)).attr("y",function(d,i){return yscale(i+1)}).attr("width",cellWidth).attr("height",cellHeight).attr("fill","white").attr("stroke","white").attr("shape-rendering","crispEdges").on("mouseover",function(d,i){d3.select(this).attr("fill",hilitcolor).attr("stroke",hilitcolor);return values.selectAll(".row"+i).text(function(d){return d.rowpercent})}).on("mouseout",function(d,i){d3.select(this).attr("fill","white").attr("stroke","white");return values.selectAll(".row"+i).text(function(d){return d.value})});rowlab=svg.append("g").attr("id","rowlab");rowlab.selectAll("empty").data(data.ycat.concat("Total")).enter().append("text").attr("x",xscale(0)+cellWidth-cellPad).attr("y",function(d,i){return yscale(i+1)+cellHeight/2}).text(function(d){return d}).attr("class","crosstab").style("font-size",fontsize).style("pointer-events","none");borders=svg.append("g").attr("id","borders");borders.append("rect").attr("x",xscale(1)).attr("y",yscale(1)).attr("width",cellWidth*ncol).attr("height",cellHeight*nrow).attr("fill","none").attr("stroke",bordercolor).attr("stroke-width",2).style("pointer-events","none").attr("shape-rendering","crispEdges");borders.append("rect").attr("x",xscale(ncol+1)).attr("y",yscale(nrow+1)).attr("width",cellWidth).attr("height",cellHeight).attr("fill","none").attr("stroke",bordercolor).attr("stroke-width",2).style("pointer-events","none").attr("shape-rendering","crispEdges");titles=svg.append("g").attr("id","titles");titles.append("text").attr("class","crosstabtitle").attr("x",margin.left+(ncol+1)*cellWidth/2).attr("y",margin.top-cellHeight/2).text(data.xlabel).style("font-size",fontsize).style("font-weight","bold");titles.append("text").attr("class","crosstab").attr("x",xscale(0)+cellWidth-cellPad).attr("y",yscale(0)+cellHeight/2).text(data.ylabel).style("font-size",fontsize).style("font-weight","bold");return titles.append("text").attr("class","crosstabtitle").attr("x",margin.left+(width-margin.left-margin.right)/2).attr("y",margin.top-titlepos).text(title).style("font-size",fontsize)};chart.rowrect=function(){return rowrect};chart.colrect=function(){return colrect};chart.svg=function(){return svg};chart.remove=function(){svg.remove();return null};return chart};"use strict";d3panels.curvechart=function(chartOpts){var chart,curves,indtip,linecolor,linecolorhilit,linewidth,linewidthhilit,ref,ref1,ref2,ref3,ref4,ref5,ref6,svg,tipclass,xlim,xscale,ylim,yscale;if(chartOpts==null){chartOpts={}}xlim=(ref=chartOpts!=null?chartOpts.xlim:void 0)!=null?ref:null;ylim=(ref1=chartOpts!=null?chartOpts.ylim:void 0)!=null?ref1:null;linecolor=(ref2=chartOpts!=null?chartOpts.linecolor:void 0)!=null?ref2:null;linecolorhilit=(ref3=chartOpts!=null?chartOpts.linecolorhilit:void 0)!=null?ref3:null;linewidth=(ref4=chartOpts!=null?chartOpts.linewidth:void 0)!=null?ref4:2;linewidthhilit=(ref5=chartOpts!=null?chartOpts.linewidthhilit:void 0)!=null?ref5:2;tipclass=(ref6=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref6:"tooltip";xscale=null;yscale=null;curves=null;indtip=null;svg=null;chart=function chart(selection,data){var add_curves,i,j,myframe,n_ind,ref7,x,y;if(data.x==null){d3panels.displayError("curvechart: data.x is missing")}if(data.y==null){d3panels.displayError("curvechart: data.y is missing")}x=data.x;y=data.y;n_ind=y.length;if(x.length===1&&y.length>1){for(j=i=2,ref7=n_ind;2<=ref7?i<=ref7:i>=ref7;j=2<=ref7?++i:--i){x.push(x[0])}}if(x.length!==n_ind){d3panels.displayError("curvechart: data.x.length ("+x.length+") != data.y.length ("+n_ind+")")}xlim=xlim!=null?xlim:d3panels.matrixExtent(x);ylim=ylim!=null?ylim:d3panels.matrixExtent(y);chartOpts.xlim=xlim;chartOpts.ylim=ylim;chartOpts.xNA=false;chartOpts.yNA=false;myframe=d3panels.panelframe(chartOpts);myframe(selection);svg=myframe.svg();xscale=myframe.xscale();yscale=myframe.yscale();add_curves=d3panels.add_curves({linecolor:linecolor,linecolorhilit:linecolorhilit,linewidth:linewidth,linewidthhilit:linewidthhilit,tipclass:tipclass});add_curves(myframe,data);curves=add_curves.curves();indtip=add_curves.indtip();return myframe.box().raise()};chart.xscale=function(){return xscale};chart.yscale=function(){return yscale};chart.curves=function(){return curves};chart.indtip=function(){return indtip};chart.svg=function(){return svg};chart.remove=function(){svg.remove();d3panels.tooltip_destroy(indtip);return null};return chart};"use strict";var indexOf=[].indexOf;d3panels.dotchart=function(chartOpts){var chart,horizontal,indtip,jitter,pointcolor,points,pointsize,pointstroke,ref,ref1,ref10,ref11,ref12,ref13,ref14,ref15,ref16,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,svg,tipclass,v_over_h,xNA,xNA_size,xcategories,xcatlabels,xlab,xlineOpts,xscale,yNA,yNA_size,ylab,ylim,yscale;if(chartOpts==null){chartOpts={}}xcategories=(ref=chartOpts!=null?chartOpts.xcategories:void 0)!=null?ref:null;xcatlabels=(ref1=chartOpts!=null?chartOpts.xcatlabels:void 0)!=null?ref1:null;xNA=(ref2=chartOpts!=null?chartOpts.xNA:void 0)!=null?ref2:{handle:true,force:false};yNA=(ref3=chartOpts!=null?chartOpts.yNA:void 0)!=null?ref3:{handle:true,force:false};xNA_size=(ref4=chartOpts!=null?chartOpts.xNA_size:void 0)!=null?ref4:{width:20,gap:10};yNA_size=(ref5=chartOpts!=null?chartOpts.yNA_size:void 0)!=null?ref5:{width:20,gap:10};ylim=(ref6=chartOpts!=null?chartOpts.ylim:void 0)!=null?ref6:null;xlab=(ref7=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref7:"Group";ylab=(ref8=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref8:"Response";xlineOpts=(ref9=chartOpts!=null?chartOpts.xlineOpts:void 0)!=null?ref9:{color:"#cdcdcd",width:5};pointcolor=(ref10=chartOpts!=null?chartOpts.pointcolor:void 0)!=null?ref10:null;pointstroke=(ref11=chartOpts!=null?chartOpts.pointstroke:void 0)!=null?ref11:"black";pointsize=(ref12=chartOpts!=null?chartOpts.pointsize:void 0)!=null?ref12:3;jitter=(ref13=chartOpts!=null?chartOpts.jitter:void 0)!=null?ref13:"beeswarm";tipclass=(ref14=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref14:"tooltip";horizontal=(ref15=chartOpts!=null?chartOpts.horizontal:void 0)!=null?ref15:false;v_over_h=(ref16=chartOpts!=null?chartOpts.v_over_h:void 0)!=null?ref16:horizontal;xscale=null;yscale=null;xNA=xNA;yNA=yNA;points=null;indtip=null;svg=null;chart=function chart(selection,data){var force,g,group,i,indID,jitter_width,myframe,ngroup,pointGroup,ref17,ref18,ref19,ref20,scaledPoints,u,x,xlim,xv,y;xNA=d3panels.check_listarg_v_default(xNA,{handle:true,force:false});yNA=d3panels.check_listarg_v_default(yNA,{handle:true,force:false});xNA_size=d3panels.check_listarg_v_default(xNA,{width:20,gap:10});yNA_size=d3panels.check_listarg_v_default(yNA,{width:20,gap:10});if(data.x==null){d3panels.displayError("dotchart: data.x is missing")}if(data.y==null){d3panels.displayError("dotchart: data.y is missing")}x=d3panels.missing2null(data.x);y=d3panels.missing2null(data.y);indID=(ref17=data!=null?data.indID:void 0)!=null?ref17:function(){var results=[];for(var j=1,ref18=x.length;1<=ref18?j<=ref18:j>=ref18;1<=ref18?j++:j--){results.push(j)}return results}.apply(this);if(x.length!==y.length){d3panels.displayError("dotchart: length(x) ["+x.length+"] != length(y) ["+y.length+"]")}if(indID.length!==x.length){d3panels.displayError("dotchart: length(indID) ["+indID.length+"] != length(x) ["+x.length+"]")}group=(ref19=data!=null?data.group:void 0)!=null?ref19:function(){var j,len,results;results=[];for(j=0,len=x.length;jngroup-1)}return results}())>0){d3panels.displayError("dotchart: group values out of range");console.log("ngroup: "+ngroup);console.log("distinct groups: "+d3panels.unique(group))}if(group.length!==x.length){d3panels.displayError("dotchart: group.length ("+group.length+") != x.length ("+x.length+")")}pointcolor=pointcolor!=null?pointcolor:d3panels.selectGroupColors(ngroup,"dark");pointcolor=d3panels.expand2vector(pointcolor,ngroup);if(pointcolor.length=0))}return results}())>0){d3panels.displayError("dotchart: Some x values not in xcategories");console.log("xcategories:");console.log(xcategories);console.log("x:");console.log(x);for(i in x){if(x[i]!=null&&!(ref20=x[i],indexOf.call(xcategories,ref20)>=0)){x[i]=null}}}ylim=ylim!=null?ylim:d3panels.pad_ylim(d3.extent(y));xlim=[d3.min(xcategories)-.5,d3.max(xcategories)+.5];xNA.handle=xNA.force||xNA.handle&&!x.every(function(v){return v!=null});yNA.handle=yNA.force||yNA.handle&&!y.every(function(v){return v!=null});if(horizontal){chartOpts.ylim=xlim.reverse();chartOpts.xlim=ylim;chartOpts.xlab=ylab;chartOpts.ylab=xlab;chartOpts.xlineOpts=chartOpts.ylineOpts;chartOpts.ylineOpts=xlineOpts;chartOpts.yNA=xNA.handle;chartOpts.xNA=yNA.handle;chartOpts.xNA_size=yNA_size;chartOpts.yNA_size=xNA_size;chartOpts.yticks=xcategories;chartOpts.yticklab=xcatlabels;chartOpts.v_over_h=v_over_h}else{chartOpts.ylim=ylim;chartOpts.xlim=xlim;chartOpts.xlab=xlab;chartOpts.ylab=ylab;chartOpts.ylineOpts=chartOpts.ylineOpts;chartOpts.xlineOpts=xlineOpts;chartOpts.xNA=xNA.handle;chartOpts.yNA=yNA.handle;chartOpts.xNA_size=xNA_size;chartOpts.yNA_size=yNA_size;chartOpts.xticks=xcategories;chartOpts.xticklab=xcatlabels;chartOpts.v_over_h=v_over_h}myframe=d3panels.panelframe(chartOpts);myframe(selection);svg=myframe.svg();xscale=myframe.xscale();yscale=myframe.yscale();if(horizontal){scaledPoints=function(){var results;results=[];for(i in x){results.push({x:xscale(y[i]),y:yscale(x[i])})}return results}()}else{scaledPoints=function(){var results;results=[];for(i in x){results.push({x:xscale(x[i]),y:yscale(y[i])})}return results}()}pointGroup=svg.append("g").attr("id","points");points=pointGroup.selectAll("empty").data(scaledPoints).enter().append("circle").attr("class",function(d,i){return"pt"+i}).attr("r",pointsize).attr("fill",function(d,i){return pointcolor[group[i]]}).attr("stroke",pointstroke).attr("stroke-width","1").attr("cx",function(d){return d.x}).attr("cy",function(d){return d.y});indtip=d3panels.tooltip_create(d3.select("body"),points,{tipclass:tipclass},function(d,i){return indID[i]});if(jitter==="random"){jitter_width=.2;u=function(){var results;results=[];for(i in scaledPoints){results.push((Math.random()-.5)*jitter_width)}return results}();if(horizontal){points.attr("cy",function(d,i){if(x[i]!=null){return yscale(x[i]+u[i])}return yscale(x[i])+u[i]/jitter_width*xNA_size.width/2})}else{points.attr("cx",function(d,i){if(x[i]!=null){return xscale(x[i]+u[i])}return xscale(x[i])+u[i]/jitter_width*xNA_size.width/2})}}else if(jitter==="beeswarm"){if(horizontal){d3.range(scaledPoints.length).map(function(i){return scaledPoints[i].fx=scaledPoints[i].x});force=d3.forceSimulation(scaledPoints).force("y",d3.forceY(function(d){return d.y})).force("collide",d3.forceCollide(pointsize*1.1)).stop()}else{d3.range(scaledPoints.length).map(function(i){return scaledPoints[i].fy=scaledPoints[i].y});force=d3.forceSimulation(scaledPoints).force("x",d3.forceX(function(d){return d.x})).force("collide",d3.forceCollide(pointsize*1.1)).stop()}(function(){var results=[];for(var j=0;j<=30;j++){results.push(j)}return results}).apply(this).map(function(d){force.tick();return points.attr("cx",function(d){return d.x}).attr("cy",function(d){return d.y})})}else if(jitter!=="none"){d3panels.displayError('dotchart: jitter should be "beeswarm", "random", or "none"')}return myframe.box().raise()};chart.xscale=function(){return xscale};chart.yscale=function(){return yscale};chart.xNA=function(){return xNA.handle};chart.yNA=function(){return yNA.handle};chart.points=function(){return points};chart.indtip=function(){return indtip};chart.svg=function(){return svg};chart.remove=function(){svg.remove();d3panels.tooltip_destroy(indtip);return null};return chart};"use strict";d3panels.heatmap=function(chartOpts){var cellSelect,cells,celltip,chart,colors,hilitcolor,margin,nullcolor,ref,ref1,ref2,ref3,ref4,ref5,ref6,ref7,ref8,svg,tipclass,xlim,xscale,ylim,yscale,zlim,zscale,zthresh;if(chartOpts==null){chartOpts={}}margin=(ref=chartOpts!=null?chartOpts.margin:void 0)!=null?ref:{left:60,top:40,right:40,bottom:40,inner:0};xlim=(ref1=chartOpts!=null?chartOpts.xlim:void 0)!=null?ref1:null;ylim=(ref2=chartOpts!=null?chartOpts.ylim:void 0)!=null?ref2:null;nullcolor=(ref3=chartOpts!=null?chartOpts.nullcolor:void 0)!=null?ref3:"#e6e6e6";colors=(ref4=chartOpts!=null?chartOpts.colors:void 0)!=null?ref4:["slateblue","white","crimson"];zlim=(ref5=chartOpts!=null?chartOpts.zlim:void 0)!=null?ref5:null;zthresh=(ref6=chartOpts!=null?chartOpts.zthresh:void 0)!=null?ref6:null;hilitcolor=(ref7=chartOpts!=null?chartOpts.hilitcolor:void 0)!=null?ref7:"black";tipclass=(ref8=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref8:"tooltip";xscale=null;yscale=null;zscale=null;cells=null;celltip=null;svg=null;cellSelect=null;chart=function chart(selection,data){var cell,cellrect,i,j,myframe,nx,ny,ref10,ref9,tooltipfunc,xlabels,xmid,xmid_scaled,xv,ylabels,ymid,ymid_scaled,yv,zmax,zmin;margin=d3panels.check_listarg_v_default(margin,{left:60,top:40,right:40,bottom:40,inner:0});if(!(data.x!=null||data.xcat!=null)){d3panels.displayError("heatmap: data.x is missing")}if(!(data.y!=null||data.ycat!=null)){d3panels.displayError("heatmap: data.y is missing")}if(data.z==null){d3panels.displayError("heatmap: data.z is missing")}if(data.xcat!=null){data.x=function(){var results;results=[];for(i in data.xcat){results.push(+i)}return results}();xlim=xlim!=null?xlim:[-.5,data.x.length-.5];chartOpts.xticks=data.x;chartOpts.xlineOpts={color:"none",width:0};chartOpts.xlab=(ref9=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref9:""}if(data.ycat!=null){data.y=function(){var results;results=[];for(i in data.ycat){results.push(+i)}return results}();ylim=ylim!=null?ylim:[-.5,data.x.length-.5];chartOpts.yticks=data.y;chartOpts.ylineOpts={color:"none",width:0};chartOpts.ylab=(ref10=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref10:""}nx=data.x.length;ny=data.y.length;if(data.z.length!==nx){d3panels.displayError("heatmap: data.x.length ("+nx+") != data.z.length ("+data.z.length+")")}for(i in data.z){if(data.z[i].length!==ny){d3panels.displayError("heatmap: data.y.length ("+ny+") != data.z["+i+"].length ("+data.z[i].length+")")}}cells=[];for(i in data.z){for(j in data.z[i]){cells.push({x:data.x[i],y:data.y[j],z:data.z[i][j],xindex:+i,yindex:+j})}}xmid=d3panels.calc_midpoints(d3panels.pad_vector(data.x));ymid=d3panels.calc_midpoints(d3panels.pad_vector(data.y));xlim=xlim!=null?xlim:d3.extent(xmid);ylim=ylim!=null?ylim:d3.extent(ymid);zmin=d3panels.matrixMin(data.z);zmax=d3panels.matrixMaxAbs(data.z);zlim=zlim!=null?zlim:[-zmax,0,zmax];if(zlim.length!==colors.length){d3panels.displayError("heatmap: zlim.length ("+zlim.length+") != colors.length ("+colors.length+")")}zscale=d3.scaleLinear().domain(zlim).range(colors);zthresh=zthresh!=null?zthresh:zmin-1;cells=function(){var k,len,results;results=[];for(k=0,len=cells.length;k=zthresh){results.push(cell)}}return results}();chartOpts.margin=margin;chartOpts.xlim=xlim;chartOpts.ylim=ylim;chartOpts.xNA=false;chartOpts.yNA=false;myframe=d3panels.panelframe(chartOpts);myframe(selection);svg=myframe.svg();xscale=myframe.xscale();yscale=myframe.yscale();xlabels=myframe.xlabels();ylabels=myframe.ylabels();xmid_scaled=function(){var k,len,results;results=[];for(k=0,len=xmid.length;k0){curves=g.append("g").attr("id","curves");ref8=data.chrname;for(j=0,len=ref8.length;j0){markerpoints=g.append("g").attr("id","markerpoints_visible");markerpoints.selectAll("empty").data(data.markerinfo).enter().append("circle").attr("cx",function(d){if(horizontal){return yscale(d.lod)}return xscale[d.chr](d.pos)}).attr("cy",function(d){if(horizontal){return xscale[d.chr](d.pos)}return yscale(d.lod)}).attr("r",function(d){if(d.lod!=null){return pointsize}else{return null}}).attr("fill",pointcolor).attr("stroke",pointstroke).attr("pointer-events","hidden")}hiddenpoints=g.append("g").attr("id","markerpoints_hidden");bigpointsize=d3.max([2*pointsize,3]);markerSelect=hiddenpoints.selectAll("empty").data(data.markerinfo).enter().append("circle").attr("cx",function(d){if(horizontal){return yscale(d.lod)}return xscale[d.chr](d.pos)}).attr("cy",function(d){if(horizontal){return xscale[d.chr](d.pos)}return yscale(d.lod)}).attr("id",function(d){return d.name}).attr("r",function(d){if(d.lod!=null){return bigpointsize}else{return null}}).attr("opacity",0).attr("fill",pointcolor).attr("stroke",pointstroke).attr("stroke-width","1").on("mouseover",function(d){return d3.select(this).attr("opacity",1)}).on("mouseout",function(){return d3.select(this).attr("opacity",0)});return markertip=d3panels.tooltip_create(d3.select("body"),markerSelect,{tipclass:tipclass},function(d,i){return[d.name," LOD = "+d3.format(".2f")(d.lod)]})};chart.markerSelect=function(){return markerSelect};chart.markertip=function(){return markertip};chart.remove=function(){g.remove();d3panels.tooltip_destroy(markertip);return null};return chart};"use strict";d3panels.add_curves=function(chartOpts){var chart,curveGroup,curves,indtip,linecolor,linecolorhilit,linewidth,linewidthhilit,ref,ref1,ref2,ref3,ref4,tipclass;if(chartOpts==null){chartOpts={}}linecolor=(ref=chartOpts!=null?chartOpts.linecolor:void 0)!=null?ref:null;linecolorhilit=(ref1=chartOpts!=null?chartOpts.linecolorhilit:void 0)!=null?ref1:null;linewidth=(ref2=chartOpts!=null?chartOpts.linewidth:void 0)!=null?ref2:2;linewidthhilit=(ref3=chartOpts!=null?chartOpts.linewidthhilit:void 0)!=null?ref3:2;tipclass=(ref4=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref4:"tooltip";curves=null;indtip=null;curveGroup=null;chart=function chart(prevchart,data){var curvefunc,dataByPoint,g,group,i,indID,j,k,n_ind,ngroup,ref5,ref6,ref7,svg,x,xscale,y,yscale;if(data.x==null){d3panels.displayError("add_curves: data.x is missing")}if(data.y==null){d3panels.displayError("add_curves: data.y is missing")}x=function(){var k,len,ref5,results;ref5=data.x;results=[];for(k=0,len=ref5.length;k1){for(j=k=2,ref5=n_ind;2<=ref5?k<=ref5:k>=ref5;j=2<=ref5?++k:--k){x.push(x[0])}}if(x.length!==n_ind){d3panels.displayError("add_curves: data.x.length ("+x.length+") != data.y.length ("+n_ind+")")}indID=(ref6=data!=null?data.indID:void 0)!=null?ref6:function(){var results=[];for(var l=1;1<=n_ind?l<=n_ind:l>=n_ind;1<=n_ind?l++:l--){results.push(l)}return results}.apply(this);if(indID.length!==n_ind){d3panels.displayError("add_curves: data.indID.length ("+indID.length+") != data.y.length ("+n_ind+")")}group=(ref7=data!=null?data.group:void 0)!=null?ref7:function(){var results;results=[];for(i in y){results.push(1)}return results}();group=d3panels.expand2vector(group,n_ind);ngroup=d3.max(group);group=function(){var l,len,results;results=[];for(l=0,len=group.length;lngroup-1)}return results}())>0){d3panels.displayError("add_curves: group values out of range");console.log("distinct groups: "+d3panels.unique(group))}if(group.length!==n_ind){d3panels.displayError("add_curves: data.group.length ("+group.length+") != data.y.length ("+n_ind+")")}for(i in y){if(x[i].length!==y[i].length){d3panels.displayError("add_curves: length(x) ("+x[i].length+") != length(y) ("+y[i].length+") for individual "+indID[i]+" (index "+(i+1)+")")}}linecolor=linecolor!=null?linecolor:d3panels.selectGroupColors(ngroup,"pastel");linecolor=d3panels.expand2vector(linecolor,ngroup);linecolorhilit=linecolorhilit!=null?linecolorhilit:d3panels.selectGroupColors(ngroup,"dark");linecolorhilit=d3panels.expand2vector(linecolorhilit,ngroup);svg=prevchart.svg();xscale=prevchart.xscale();yscale=prevchart.yscale();dataByPoint=[];for(i in y){dataByPoint.push(function(){var results;results=[];for(j in y[i]){if(x[i][j]!=null&&y[i][j]!=null){results.push({x:x[i][j],y:y[i][j]})}}return results}())}curvefunc=d3.line().x(function(d){return xscale(d.x)}).y(function(d){return yscale(d.y)});curveGroup=svg.append("g").attr("id","curves");curves=curveGroup.selectAll("empty").data(d3.range(n_ind)).enter().append("path").datum(function(d){return dataByPoint[d]}).attr("d",curvefunc).attr("class",function(d,i){return"path"+i}).attr("fill","none").attr("stroke",function(d,i){return linecolor[group[i]]}).attr("stroke-width",linewidth).on("mouseover.panel",function(d,i){return d3.select(this).attr("stroke",linecolorhilit[group[i]]).attr("stroke-width",linewidthhilit).raise()}).on("mouseout.panel",function(d,i){return d3.select(this).attr("stroke",linecolor[group[i]]).attr("stroke-width",linewidth)});indtip=d3panels.tooltip_create(d3.select("body"),curves,{tipclass:tipclass},function(d,i){return indID[i]});return prevchart.box().raise()};chart.curves=function(){return curves};chart.indtip=function(){return indtip};chart.remove=function(){curveGroup.remove();d3panels.tooltip_destroy(indtip);return null};return chart};"use strict";d3panels.add_points=function(chartOpts){var chart,indtip,jitter,pointGroup,pointcolor,points,pointsize,pointstroke,ref,ref1,ref2,ref3,ref4,tipclass;if(chartOpts==null){chartOpts={}}pointcolor=(ref=chartOpts!=null?chartOpts.pointcolor:void 0)!=null?ref:null;pointsize=(ref1=chartOpts!=null?chartOpts.pointsize:void 0)!=null?ref1:3;pointstroke=(ref2=chartOpts!=null?chartOpts.pointstroke:void 0)!=null?ref2:"black";jitter=(ref3=chartOpts!=null?chartOpts.jitter:void 0)!=null?ref3:"beeswarm";tipclass=(ref4=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref4:"tooltip";points=null;indtip=null;pointGroup=null;chart=function chart(prevchart,data){var force,g,group,i,indID,ngroup,ref5,ref6,ref7,scaledPoints,svg,ux,uy,x,xscale,xwid,y,yscale,ywid;if(data.x==null){d3panels.displayError("add_points: data.x is missing")}if(data.y==null){d3panels.displayError("add_points: data.y is missing")}x=d3panels.missing2null(data.x);y=d3panels.missing2null(data.y);if(x.length!==y.length){d3panels.displayError("add_points: x.length ("+x.length+") != y.length ("+y.length+")")}indID=(ref5=data!=null?data.indID:void 0)!=null?ref5:null;indID=indID!=null?indID:function(){var results=[];for(var j=1,ref6=x.length;1<=ref6?j<=ref6:j>=ref6;1<=ref6?j++:j--){results.push(j)}return results}.apply(this);if(indID.length!==x.length){d3panels.displayError("add_points: indID.length ("+indID.length+") != x.length ("+x.length+")")}group=(ref7=data!=null?data.group:void 0)!=null?ref7:function(){var j,len,results;results=[];for(j=0,len=x.length;jngroup-1)}return results}())>0){d3panels.displayError("add_points: group values out of range");console.log("ngroup: "+ngroup);console.log("distinct groups: "+d3panels.unique(group))}if(group.length!==x.length){d3panels.displayError("add_points: group.length ("+group.length+") != x.length ("+x.length+")")}pointcolor=pointcolor!=null?pointcolor:d3panels.selectGroupColors(ngroup,"dark");pointcolor=d3panels.expand2vector(pointcolor,ngroup);if(pointcolor.length=zthresh){cells.push({lod:lod,chr:chr,pos:pos,poslabel:data.poslabelByChr[chr][i],posindex:+i,lodindex:+j})}}}}d3panels.calc_chrcell_rect(cells,xmid_scaled,ymid_scaled);cellg=svg.append("g").attr("id","cells");cellSelect=cellg.selectAll("empty").data(cells).enter().append("rect").attr("x",function(d){if(horizontal){return d.top}return d.left}).attr("y",function(d){if(horizontal){return d.left}return d.top}).attr("width",function(d){if(horizontal){return d.height}return d.width}).attr("height",function(d){if(horizontal){return d.width}return d.height}).attr("class",function(d,i){return"cell"+i}).attr("fill",function(d){if(d.lod!=null){return zscale(d.lod)}else{return nullcolor}}).attr("stroke","none").attr("stroke-width","1").attr("shape-rendering","crispEdges").on("mouseover",function(d){d3.select(this).attr("stroke",hilitcolor).raise();if(data.ycat!=null){return svg.select("text#ylab"+d.lodindex).attr("opacity",1)}}).on("mouseout",function(d){d3.select(this).attr("stroke","none");if(data.ycat!=null){return svg.select("text#ylab"+d.lodindex).attr("opacity",0)}});if(data.ycat!=null){svg.selectAll("g#ylines").remove();ylabels.attr("opacity",0).attr("id",function(d,i){return"ylab"+i})}celltipfunc=function celltipfunc(d){var lodlabel,z;z=d3.format(".2f")(Math.abs(d.lod));lodlabel=data.ycat!=null?data.ycat[d.lodindex]:d3panels.formatAxis(data.y)(data.y[d.lodindex]);if(horizontal){return lodlabel+", "+d.poslabel+" → "+z}return d.poslabel+", "+lodlabel+" → "+z};direction=horizontal?"north":"east";celltip=d3panels.tooltip_create(d3.select("body"),cellg.selectAll("rect"),{direction:direction,tipclass:tipclass},celltipfunc);return myframe.box().raise()};chart.xscale=function(){return xscale};chart.yscale=function(){return yscale};chart.zscale=function(){return yscale};chart.cells=function(){return cellSelect};chart.celltip=function(){return celltip};chart.svg=function(){return svg};chart.remove=function(){svg.remove();d3panels.tooltip_destroy(celltip);return null};return chart};"use strict";d3panels.mapchart=function(chartOpts){var chart,horizontal,linecolor,linecolorhilit,linewidth,markerSelect,martip,ref,ref1,ref10,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,shiftStart,svg,tickwidth,tipclass,v_over_h,xlab,xlineOpts,xscale,ylab,yscale;if(chartOpts==null){chartOpts={}}tickwidth=(ref=chartOpts!=null?chartOpts.tickwidth:void 0)!=null?ref:10;linecolor=(ref1=chartOpts!=null?chartOpts.linecolor:void 0)!=null?ref1:"slateblue";linecolorhilit=(ref2=chartOpts!=null?chartOpts.linecolorhilit:void 0)!=null?ref2:"Orchid";linewidth=(ref3=chartOpts!=null?chartOpts.linewidth:void 0)!=null?ref3:3;xlab=(ref4=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref4:"Chromosome";ylab=(ref5=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref5:"Position (cM)";xlineOpts=(ref6=chartOpts!=null?chartOpts.xlineOpts:void 0)!=null?ref6:{color:"#cdcdcd",width:5};horizontal=(ref7=chartOpts!=null?chartOpts.horizontal:void 0)!=null?ref7:false;v_over_h=(ref8=chartOpts!=null?chartOpts.v_over_h:void 0)!=null?ref8:horizontal;shiftStart=(ref9=chartOpts!=null?chartOpts.shiftStart:void 0)!=null?ref9:false;tipclass=(ref10=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref10:"tooltip";xscale=null;yscale=null;markerSelect=null;martip=null;svg=null;chart=function chart(selection,data){var chr,chrscale,direction,extentByChr,i,j,k,l,len,len1,markerpos,markers,minpos,myframe,n_chr,n_pos,pos,ref11,ref12,these_index,these_pos,tipfunc,x,xlim,xticklab,xticks,ylim;xlineOpts=d3panels.check_listarg_v_default(xlineOpts,{color:"#cdcdcd",width:5});if(data.chr==null){d3panels.displayError("mapchart: data.chr is missing")}if(data.pos==null){d3panels.displayError("mapchart: data.pos is missing")}if(data.marker==null){d3panels.displayError("mapchart: data.marker is missing")}n_pos=data.pos.length;if(data.chr.length!==n_pos){d3panels.displayError("mapchart: data.chr.length ("+data.chr.length+") != data.pos.length ("+n_pos+")")}if(data.marker.length!==n_pos){d3panels.displayError("mapchart: data.marker.length ("+data.marker.length+") != data.pos.length ("+n_pos+")")}if(data.chrname==null){data.chrname=d3panels.unique(data.chr)}data.chrname=d3panels.forceAsArray(data.chrname);data.adjpos=data.pos.slice(0);if(shiftStart){ref11=data.chrname;for(k=0,len=ref11.length;k1e-6){flag_sum_not_1}if(d3panels.sumArray(function(){var k,len1,results;results=[];for(k=0,len1=v.length;k1)}return results}())>0){flag_out_of_range=true}}if(flag_length_not_3){d3panels.displayError("trichart: points not all of length 3")}if(flag_sum_not_1){d3panels.displayError("trichart: points not all summing to 1")}if(flag_out_of_range){d3panels.displayError("trichart: points not all in [0,1]")}n=p.length;indID=(ref17=data!=null?data.indID:void 0)!=null?ref17:function(){var results;results=[];for(i in p){results.push(+i+1)}return results}();if(indID.length!==n){d3panels.displayError("trichart: data.indID.length ("+indID.length+") != data.p.length ("+n+")")}group=(ref18=data!=null?data.group:void 0)!=null?ref18:function(){var results;results=[];for(i in p){results.push(1)}return results}();group=d3panels.expand2vector(group,n);ngroup=d3.max(group);group=function(){var k,len1,results;results=[];for(k=0,len1=group.length;kngroup-1)}return results}())>0){d3panels.displayError("add_points: group values out of range");console.log("ngroup: "+ngroup);console.log("distinct groups: "+d3panels.unique(group))}if(group.length!==n){d3panels.displayError("trichart: data.group.length ("+group.length+") != data.p.length ("+n+")")}pointcolor=pointcolor!=null?pointcolor:d3panels.selectGroupColors(ngroup,"dark");pointcolor=d3panels.expand2vector(pointcolor,ngroup);if(pointcolor.lengthplot_width/xlim[1]){d=plot_height-plot_width/xlim[1];margin.top+=d/2;margin.bottom+=d/2;plot_height-=d}else{d=plot_width-plot_height*xlim[1];margin.left+=d/2;margin.right+=d/2;plot_width-=d}xscale=d3.scaleLinear().domain(xlim).range([margin.left,margin.left+plot_width]);yscale=d3.scaleLinear().domain(ylim).range([plot_height+margin.top,margin.top]);pscale=function pscale(p){sum=d3panels.sumArray(p);return{x:xscale((p[0]*2+p[1])/Math.sqrt(3)/sum),y:yscale(p[1]/sum)}};xy=function(){var k,len1,results;results=[];for(k=0,len1=p.length;k0){gr=function(){var results=[];for(var k=1;1<=gridlines?k<=gridlines:k>=gridlines;1<=gridlines?k++:k--){results.push(k)}return results}.apply(this).map(function(i){return i/(gridlines+1)});p1=gr.map(function(x){return[x,0,1-x]});p2=gr.map(function(x){return[x,1-x,0]});p3=gr.map(function(x){return[0,1-x,x]});p4=gr.map(function(x){return[1-x,0,x]});first=p1.concat(p2).concat(p3);second=p2.concat(p3).concat(p4);g=frame.append("g").attr("class","gridlines").selectAll("empty").data(first).enter().append("line").attr("x1",function(d){return pscale(d).x}).attr("y1",function(d){return pscale(d).y}).attr("x2",function(d,i){return pscale(second[i]).x}).attr("y2",function(d,i){return pscale(second[i]).y}).attr("stroke",gridcolor).attr("stroke-width",gridwidth).attr("shape-rendering","crispEdges").style("pointer-events","none").attr("fill","none");frame.append("path").datum(indices).attr("d",framefunc).attr("fill","none").attr("stroke",boxcolor).attr("stroke-width",boxwidth)}frame.append("g").attr("class","title").append("text").text(title).attr("x",plot_width/2+margin.left).attr("y",margin.top-titlepos);frame.append("g").attr("id","labels").selectAll("empty").data(vertices).enter().append("text").attr("x",function(d,i){return xscale(d.x)+[-1,+1,+1][i]*labelpos}).attr("y",function(d){return yscale(d.y)}).style("dominant-baseline","middle").style("text-anchor",function(d,i){return["end","start","start"][i]}).text(function(d,i){return labels[i]});points=svg.append("g").attr("id","points").selectAll("empty").data(p).enter().append("circle").attr("r",pointsize).attr("cx",function(d){return pscale(d).x}).attr("cy",function(d){return pscale(d).y}).attr("fill",function(d,i){return pointcolor[group[i]]}).attr("stroke",pointstroke).attr("stroke-width",1);return indtip=d3panels.tooltip_create(d3.select("body"),points,{tipclass:tipclass},function(d,i){return indID[i]})};chart.xscale=function(){return xscale};chart.yscale=function(){return yscale};chart.pscale=function(){return pscale};chart.points=function(){return points};chart.indtip=function(){return indtip};chart.svg=function(){return svg};chart.remove=function(){svg.remove();d3panels.tooltip_destroy(indtip);return null};return chart};"use strict";d3panels.histchart=function(chartOpts){var chart,curves,density,indtip,linecolor,linecolorhilit,linewidth,linewidthhilit,ref,ref1,ref10,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,rotate_ylab,svg,tipclass,xlab,xlim,xscale,ylab,ylim,yscale;if(chartOpts==null){chartOpts={}}xlim=(ref=chartOpts!=null?chartOpts.xlim:void 0)!=null?ref:null;ylim=(ref1=chartOpts!=null?chartOpts.ylim:void 0)!=null?ref1:null;xlab=(ref2=chartOpts!=null?chartOpts.xlab:void 0)!=null?ref2:"";ylab=(ref3=chartOpts!=null?chartOpts.ylab:void 0)!=null?ref3:"";rotate_ylab=(ref4=chartOpts!=null?chartOpts.rotate_ylab:void 0)!=null?ref4:null;linecolor=(ref5=chartOpts!=null?chartOpts.linecolor:void 0)!=null?ref5:null;linecolorhilit=(ref6=chartOpts!=null?chartOpts.linecolorhilit:void 0)!=null?ref6:null;linewidth=(ref7=chartOpts!=null?chartOpts.linewidth:void 0)!=null?ref7:2;linewidthhilit=(ref8=chartOpts!=null?chartOpts.linewidthhilit:void 0)!=null?ref8:2;density=(ref9=chartOpts!=null?chartOpts.density:void 0)!=null?ref9:true;tipclass=(ref10=chartOpts!=null?chartOpts.tipclass:void 0)!=null?ref10:"tooltip";xscale=null;yscale=null;curves=null;indtip=null;svg=null;chart=function chart(selection,data){var add_curves,breaks,brlim,d,f,freq,i,j,k,l,len,len1,maxn,maxpos,myframe,n_ind,p,path_data,path_x,path_y,pt,ref11,x,xv,xx;if(data.x==null){d3panels.displayError("histchart: data.x is missing")}x=data.x;data.group=function(){var results;results=[];for(i in x){results.push(+i+1)}return results}();n_ind=x.length;if(data.breaks==null){maxn=d3.max(function(){var k,len,results;results=[];for(k=0,len=x.length;k=brlim[0]&xv<=brlim[1]){results1.push(xv)}}return results1}())}return results}();freq=function(){var k,len,results;results=[];for(k=0,len=x.length;kpt.y){pt.y=f[j];pt.x=breaks[j+1]}}maxpos.push(pt)}ylim=ylim!=null?ylim:[0,d3panels.matrixMax(freq)*1.05];chartOpts.xlim=xlim;chartOpts.ylim=ylim;chartOpts.xNA=false;chartOpts.yNA=false;chartOpts.xlab=xlab;chartOpts.ylab=ylab;chartOpts.rotate_ylab=rotate_ylab;myframe=d3panels.panelframe(chartOpts);myframe(selection);svg=myframe.svg();xscale=myframe.xscale();yscale=myframe.yscale();path_data=function(){var len2,m,results;results=[];for(m=0,len2=freq.length;m0){margin.top=height*margin.top/(margin.top+margin.bottom)}else{margin.top=height/2}if(initial_value!=null){value=initial_value;if(valuerange[1]){value=range[1]}if(stops!=null){stopindex=d3panels.index_of_nearest(value,stops)}if(stops!=null){value=stops[stopindex]}}else{if(stops!=null){stopindex=Math.floor(Math.random()*stops.length);value=stops[stopindex]}else{value=(range[1]-range[0])*Math.random()+range[0]}}slider_svg=selection.insert("svg").attr("height",height).attr("width",width);xcscale=d3.scaleLinear().range([margin.left,width-margin.right]).domain(range).clamp(true);xscale=function xscale(d){if(stops!=null){return xcscale(stops[d3panels.index_of_nearest(d,stops)])}return xcscale(d)};clamp_pixels=function clamp_pixels(pixels,interval){if(pixelsinterval[1]){return interval[1]}return pixels};slider_svg.insert("rect").attr("x",margin.left).attr("y",margin.top-rectheight/2).attr("rx",rectheight*.3).attr("ry",rectheight*.3).attr("width",width-margin.left-margin.right).attr("height",rectheight).attr("fill",rectcolor);if(ticks==null){ticks=xcscale.ticks(nticks)}slider_svg.selectAll("empty").data(ticks).enter().insert("line").attr("x1",function(d){return xcscale(d)}).attr("x2",function(d){return xcscale(d)}).attr("y1",margin.top+rectheight/2+tickgap).attr("y2",margin.top+rectheight/2+tickgap+tickheight).attr("stroke","black").attr("shape-rendering","crispEdges");slider_svg.selectAll("empty").data(ticks).enter().insert("text").attr("x",function(d){return xcscale(d)}).attr("y",margin.top+rectheight/2+tickgap*2+tickheight).text(function(d){return d}).style("font-size",textsize).style("dominant-baseline","hanging").style("text-anchor","middle").style("pointer-events","none").style("-webkit-user-select","none").style("-moz-user-select","none").style("-ms-user-select","none");if(stops!=null&&ticks_at_stops){slider_svg.selectAll("empty").data(stops).enter().insert("line").attr("x1",function(d){return xcscale(d)}).attr("x2",function(d){return xcscale(d)}).attr("y1",margin.top-rectheight/2-tickgap).attr("y2",margin.top-rectheight/2-tickgap-tickheight).attr("stroke","black").attr("shape-rendering","crispEdges")}button=slider_svg.insert("g").attr("id","button").attr("transform","translate("+xscale(value)+",0)");button.insert("rect").attr("x",-buttonsize/2).attr("y",margin.top-buttonsize/2).attr("height",buttonsize).attr("width",buttonsize).attr("rx",buttonround).attr("ry",buttonround).attr("stroke",buttonstroke).attr("stroke-width",2).attr("fill",buttoncolor);button.insert("circle").attr("cx",0).attr("cy",margin.top).attr("r",buttondotsize).attr("fill",buttondotcolor);dragged=function dragged(d){var clamped_pixels,pixel_value;pixel_value=d3.event.x;clamped_pixels=clamp_pixels(pixel_value,[margin.left,width-margin.right]);value=xcscale.invert(clamped_pixels);d3.select(this).attr("transform","translate("+xcscale(value)+",0)");if(stops!=null){stopindex=d3panels.index_of_nearest(value,stops);value=stops[stopindex]}if(callback!=null){return callback(_chart)}};end_drag=function end_drag(d){var clamped_pixels,pixel_value;pixel_value=d3.event.x;clamped_pixels=clamp_pixels(pixel_value,[margin.left,width-margin.right]);value=xcscale.invert(clamped_pixels);if(stops!=null){stopindex=d3panels.index_of_nearest(value,stops);value=stops[stopindex]}if(callback!=null){callback(_chart)}return d3.select(this).attr("transform","translate("+xcscale(value)+",0)")};button.call(d3.drag().on("drag",dragged).on("end",end_drag));if(callback!=null){return callback(_chart)}};_chart.value=function(){return value};_chart.stopindex=function(){return stopindex};_chart.remove=function(){return slider_svg.remove()};return _chart};"use strict";d3panels.double_slider=function(chartOpts){var buttoncolor,buttondotcolor,buttondotsize,buttonround,buttonsize,buttonstroke,_chart,height,margin,nticks,rectcolor,rectheight,ref,ref1,ref10,ref11,ref12,ref13,ref14,ref15,ref16,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,slider_svg,stopindex,textsize,tickgap,tickheight,ticks,ticks_at_stops,value,width;if(chartOpts==null){chartOpts={}}width=(ref=chartOpts!=null?chartOpts.width:void 0)!=null?ref:800;height=(ref1=chartOpts!=null?chartOpts.height:void 0)!=null?ref1:80;margin=(ref2=chartOpts!=null?chartOpts.margin:void 0)!=null?ref2:{left:25,right:25,inner:0,top:40,bottom:40};rectheight=(ref3=chartOpts!=null?chartOpts.rectheight:void 0)!=null?ref3:10;rectcolor=(ref4=chartOpts!=null?chartOpts.rectcolor:void 0)!=null?ref4:"#ccc";buttonsize=(ref5=chartOpts!=null?chartOpts.buttonsize:void 0)!=null?ref5:rectheight*2;buttoncolor=(ref6=chartOpts!=null?chartOpts.buttoncolor:void 0)!=null?ref6:"#eee";buttonstroke=(ref7=chartOpts!=null?chartOpts.buttonstroke:void 0)!=null?ref7:"black";buttonround=(ref8=chartOpts!=null?chartOpts.buttonround:void 0)!=null?ref8:buttonsize*.2;buttondotcolor=(ref9=chartOpts!=null?chartOpts.buttondotcolor:void 0)!=null?ref9:["slateblue","orchid"];buttondotsize=(ref10=chartOpts!=null?chartOpts.buttondotsize:void 0)!=null?ref10:buttonsize/4;tickheight=(ref11=chartOpts!=null?chartOpts.tickheight:void 0)!=null?ref11:10;tickgap=(ref12=chartOpts!=null?chartOpts.tickgap:void 0)!=null?ref12:tickheight/2;textsize=(ref13=chartOpts!=null?chartOpts.textsize:void 0)!=null?ref13:14;nticks=(ref14=chartOpts!=null?chartOpts.nticks:void 0)!=null?ref14:5;ticks=(ref15=chartOpts!=null?chartOpts.ticks:void 0)!=null?ref15:null;ticks_at_stops=(ref16=chartOpts!=null?chartOpts.ticks_at_stops:void 0)!=null?ref16:true;value=[0,0];stopindex=[0,0];slider_svg=null;if(!Array.isArray(buttoncolor)){buttoncolor=[buttoncolor,buttoncolor]}if(!Array.isArray(buttonstroke)){buttonstroke=[buttonstroke,buttonstroke]}if(!Array.isArray(buttondotcolor)){buttondotcolor=[buttondotcolor,buttondotcolor]}_chart=function chart(selection,callback1,callback2,range,stops,initial_value){var buttons,callbacks,clamp_pixels,dragged,end_drag,start_drag,xcscale,xscale;margin=d3panels.check_listarg_v_default(margin,{left:25,right:25,inner:0,top:40,bottom:40});callbacks=[callback1,callback2];margin.left+=margin.inner;margin.right+=margin.inner;if(range==null){range=[margin.left,width-margin.right]}if(margin.top!=null&&margin.top+margin.bottom>0){margin.top=height*margin.top/(margin.top+margin.bottom)}else{margin.top=height/2}if(initial_value!=null){value=initial_value.map(function(d){if(drange[1]){return range[1]}return d});if(stops!=null){stopindex=value.map(function(d){return d3panels.index_of_nearest(d,stops)})}if(stops!=null){value=stopindex.map(function(i){return stops[i]})}}else{if(stops!=null){stopindex=[0,1].map(function(i){return Math.floor(Math.random()*stops.length)});value=stopindex.map(function(i){return stops[i]})}else{value=[0,1].map(function(i){return(range[1]-range[0])*Math.random()+range[0]})}}slider_svg=selection.insert("svg").attr("height",height).attr("width",width);xcscale=d3.scaleLinear().range([margin.left,width-margin.right]).domain(range).clamp(true);xscale=function xscale(d){if(stops!=null){return xcscale(stops[d3panels.index_of_nearest(d,stops)])}return xcscale(d)};clamp_pixels=function clamp_pixels(pixels,interval){if(pixelsinterval[1]){return interval[1]}return pixels};slider_svg.insert("rect").attr("x",margin.left).attr("y",margin.top-rectheight/2).attr("rx",rectheight*.3).attr("ry",rectheight*.3).attr("width",width-margin.left-margin.right).attr("height",rectheight).attr("fill",rectcolor);if(ticks==null){ticks=xcscale.ticks(nticks)}slider_svg.selectAll("empty").data(ticks).enter().insert("line").attr("x1",function(d){return xcscale(d)}).attr("x2",function(d){return xcscale(d)}).attr("y1",margin.top+rectheight/2+tickgap).attr("y2",margin.top+rectheight/2+tickgap+tickheight).attr("stroke","black").attr("shape-rendering","crispEdges");slider_svg.selectAll("empty").data(ticks).enter().insert("text").attr("x",function(d){return xcscale(d)}).attr("y",margin.top+rectheight/2+tickgap*2+tickheight).text(function(d){return d}).style("font-size",textsize).style("dominant-baseline","hanging").style("text-anchor","middle").style("pointer-events","none").style("-webkit-user-select","none").style("-moz-user-select","none").style("-ms-user-select","none");if(stops!=null&&ticks_at_stops){slider_svg.selectAll("empty").data(stops).enter().insert("line").attr("x1",function(d){return xcscale(d)}).attr("x2",function(d){return xcscale(d)}).attr("y1",margin.top-rectheight/2-tickgap).attr("y2",margin.top-rectheight/2-tickgap-tickheight).attr("stroke","black").attr("shape-rendering","crispEdges")}buttons=[0,1].map(function(i){return slider_svg.insert("g").attr("id","button"+(i+1)).attr("transform",function(d){return"translate("+xscale(value[i])+",0)"})});[0,1].map(function(i){buttons[i].insert("rect").attr("x",-buttonsize/2).attr("y",margin.top-buttonsize/2).attr("height",buttonsize).attr("width",buttonsize).attr("rx",buttonround).attr("ry",buttonround).attr("stroke",buttonstroke[i]).attr("stroke-width",2).attr("fill",buttoncolor[i]);return buttons[i].insert("circle").attr("cx",0).attr("cy",margin.top).attr("r",buttondotsize).attr("fill",buttondotcolor[i])});start_drag=function start_drag(i){return function(d){return buttons[i].raise()}};dragged=function dragged(i){return function(d){var clamped_pixels,pixel_value;pixel_value=d3.event.x;clamped_pixels=clamp_pixels(pixel_value,[margin.left,width-margin.right]);value[i]=xcscale.invert(clamped_pixels);d3.select(this).attr("transform","translate("+xcscale(value[i])+",0)");if(stops!=null){stopindex[i]=d3panels.index_of_nearest(value[i],stops);value[i]=stops[stopindex[i]]}if(callbacks[i]!=null){return callbacks[i](_chart)}}};end_drag=function end_drag(i){return function(d){var clamped_pixels,pixel_value;pixel_value=d3.event.x;clamped_pixels=clamp_pixels(pixel_value,[margin.left,width-margin.right]);value[i]=xcscale.invert(clamped_pixels);if(stops!=null){stopindex[i]=d3panels.index_of_nearest(value[i],stops);value[i]=stops[stopindex[i]]}if(callbacks[i]!=null){callbacks[i](_chart)}return d3.select(this).attr("transform","translate("+xcscale(value[i])+",0)")}};return[0,1].map(function(i){buttons[i].call(d3.drag().on("start",start_drag(i)).on("drag",dragged(i)).on("end",end_drag(i)));if(callbacks[i]!=null){return callbacks[i](_chart)}})};_chart.value=function(){return value};_chart.stopindex=function(){return stopindex};_chart.remove=function(){return slider_svg.remove()};return _chart};"use strict";d3panels.tooltip_create=function(selection,objects,options,tooltip_func){var direction,fill,fontcolor,fontsize,in_duration,out_duration,pad,ref,ref1,ref2,ref3,ref4,tipclass,tipdiv,tipgroup,triChar,tridiv;tipclass=(ref=options!=null?options.tipclass:void 0)!=null?ref:"d3panels-tooltip";direction=(ref1=options!=null?options.direction:void 0)!=null?ref1:"east";out_duration=(ref2=options!=null?options.out_duration:void 0)!=null?ref2:1e3;in_duration=(ref3=options!=null?options.in_duration:void 0)!=null?ref3:0;pad=(ref4=options!=null?options.pad:void 0)!=null?ref4:8;fill=options!=null?options.fill:void 0;fontcolor=options!=null?options.fontcolor:void 0;fontsize=options!=null?options.fontsize:void 0;tipgroup=selection.append("g").attr("class","d3panels-tooltip "+tipclass).style("opacity",0).datum({direction:direction,pad:pad});tipdiv=tipgroup.append("div").attr("class","d3panels-tooltip "+tipclass);if(direction==="east"){triChar="â—€"}else if(direction==="west"){triChar="â–¶"}else if(direction==="north"){triChar="â–¼"}else if(direction==="south"){triChar="â–²"}else{d3panels.displayError("tooltip_create: invalid direction ("+direction+")")}tridiv=tipgroup.append("div").attr("class","d3panels-tooltip-tri "+tipclass).html(triChar);if(fill!=null){tipdiv.style("background",fill)}if(fontcolor!=null){tipdiv.style("color",fontcolor)}if(fontsize!=null){tipdiv.style("font-size",fontsize+"px")}if(fill!=null){tridiv.style("color",fill)}if(fontsize!=null){tridiv.style("font-size",fontsize+"px")}objects.on("mouseover."+tipclass,function(d,i){var mouseX,mouseY;mouseX=d3.event.pageX*1;mouseY=d3.event.pageY*1;tipdiv.html(tooltip_func(d,i));d3panels.tooltip_move(tipgroup,mouseX,mouseY);return d3panels.tooltip_show(tipgroup,in_duration)});objects.on("mouseout."+tipclass,function(d){return d3panels.tooltip_hide(tipgroup,out_duration)});return tipgroup};d3panels.tooltip_move=function(tipgroup,x,y){var direction,divpad,fontsize,pad,posX,posY,shiftX,shiftY,tipbox_height,tipbox_width,tipdiv,triX,triY,tridiv;tipdiv=tipgroup.select("div.d3panels-tooltip");tridiv=tipgroup.select("div.d3panels-tooltip-tri");tipbox_height=tipdiv.node().getBoundingClientRect().height*1;tipbox_width=tipdiv.node().getBoundingClientRect().width*1;fontsize=tridiv.style("font-size").replace("px","")*1;pad=tipgroup.datum().pad*1+fontsize;direction=tipgroup.datum().direction;shiftX=shiftY=0;if(direction==="east"){posX=x+pad;posY=y-tipbox_height/2;divpad=tipdiv.style("padding-left").replace("px","")*1;shiftX=-fontsize-divpad;shiftY=tipbox_height/2-fontsize/2}else if(direction==="west"){posX=x-tipbox_width*1-pad;posY=y-tipbox_height/2;divpad=tipdiv.style("padding-right").replace("px","")*1;shiftX=tipbox_width-fontsize+divpad;shiftY=tipbox_height/2-fontsize/2}else if(direction==="north"){posX=x-tipbox_width/2;posY=y-tipbox_height-pad;divpad=tipdiv.style("padding-bottom").replace("px","")*1;shiftX=tipbox_width/2-fontsize;shiftY=tipbox_height+divpad/2-fontsize/2}else if(direction==="south"){posX=x-tipbox_width/2;posY=y+pad;divpad=tipdiv.style("padding-top").replace("px","")*1;shiftX=+tipbox_width/2-fontsize;shiftY=-fontsize}tipdiv.style("left",posX+"px").style("top",posY+"px");triX=posX+shiftX;triY=posY+shiftY;return tridiv.style("left",triX+"px").style("top",triY+"px").style("width",tipbox_width).style("height",tipbox_height)};d3panels.tooltip_text=function(tipgroup,text){return tipgroup.select("div.d3panels-tooltip").html(text)};d3panels.tooltip_show=function(tipgroup,duration){return tipgroup.transition().duration(duration).style("opacity",1)};d3panels.tooltip_hide=function(tipgroup,duration){return tipgroup.transition().duration(duration).style("opacity",0)};d3panels.tooltip_destroy=function(tipgroup){return tipgroup.remove()};if(typeof define==="function"&&define.amd)this.d3panels=d3panels,define(d3panels);else if(typeof module==="object"&&module.exports)module.exports=d3panels;else this.d3panels=d3panels}();
\ No newline at end of file
diff --git a/gn2/wqflask/static/new/javascript/dataset_select_menu_orig.js b/gn2/wqflask/static/new/javascript/dataset_select_menu_orig.js
new file mode 100644
index 00000000..25a703e6
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/dataset_select_menu_orig.js
@@ -0,0 +1,330 @@
+var apply_default, check_search_term, dataset_info, group_info, make_default, open_window, populate_dataset, populate_group, populate_species, populate_type, process_json, redo_dropdown;
+process_json = function(data) {
+ window.jdata = data;
+ populate_species();
+ if ($('#type').length > 0) { //This is to determine if it's the index page or the submit_trait page (which only has species and group selection and no make default option)
+ return apply_default();
+ }
+};
+
+range = function(size, startAt=0) {
+ return [...Array(size).keys()].map(idx => idx + startAt);
+};
+
+indicate_error = function (jqXHR, textStatus, errorThrown) {
+ errorElement = document.createElement("span");
+ errorElement.setAttribute("class", "alert-danger");
+ errorText = document.createTextNode(
+ "There was an error retrieving and setting the menu. Try again later.");
+ errorElement.appendChild(errorText);
+ if (document.getElementById("search")){
+ form = document.getElementById("search").getElementsByTagName("form")[0];
+ form.prepend(errorElement);
+ disable_element = function(select) {
+ select.setAttribute("disabled", "disabled");
+ };
+ Array.from(form.getElementsByTagName("select")).forEach(disable_element);
+ Array.from(form.getElementsByTagName("textarea")).forEach(disable_element);
+ }
+};
+
+defaultStatusCodeFunctions = range(200, 400).reduce(
+ function(acc, scode) {
+ acc[scode] = indicate_error;
+ return acc;
+ }, {});
+
+if (typeof gn_server_url === 'undefined'){
+ gn_server_url = $("#search form").attr("data-gn_server_url")
+}
+
+$.ajax(gn_server_url +'/menu/generate/json', {
+ dataType: 'json',
+ success: process_json,
+ error: indicate_error,
+ statusCode: {
+ ...defaultStatusCodeFunctions,
+ }
+});
+
+populate_species = function() {
+ var species_list;
+ species_list = this.jdata.species;
+ redo_dropdown($('#species'), species_list);
+ return populate_group();
+};
+window.populate_species = populate_species;
+
+populate_group = function() {
+ var group_list, species;
+ species = $('#species').val();
+ group_list = this.jdata.groups[species];
+ for (_i = 0, _len = group_list.length; _i < (_len - 1); _i++) {
+ if (group_list[_i][0] == "BXD300"){
+ group_list.splice(_i, 1)
+ }
+ }
+ redo_dropdown($('#group'), group_list);
+ if ($('#type').length > 0) { //This is to determine if it's the index page or the submit_trait page (which only has species and group selection and no make default option)
+ return populate_type();
+ }
+};
+window.populate_group = populate_group;
+
+populate_type = function() {
+ var group, species, type_list;
+ species = $('#species').val();
+ group = $('#group').val();
+ type_list = this.jdata.types[species][group];
+ redo_dropdown($('#type'), type_list);
+ return populate_dataset();
+};
+window.populate_type = populate_type;
+
+populate_dataset = function() {
+ var dataset_list, group, species, type;
+ species = $('#species').val();
+ group = $('#group').val();
+ type = $('#type').val();
+ dataset_list = this.jdata.datasets[species][group][type];
+ return redo_dropdown($('#dataset'), dataset_list);
+};
+window.populate_dataset = populate_dataset;
+
+redo_dropdown = function(dropdown, items) {
+ var item, _i, _len, _results;
+ dropdown.empty();
+ _results = [];
+
+ if (dropdown.attr('id') == "species"){
+ species_family_list = [];
+ for (_i = 0, _len = items.length; _i < _len; _i++) {
+ item = items[_i];
+ species_family = item[2].toString()
+ species_family_list.push([item[0], item[1], species_family])
+ }
+
+ current_family = ""
+ this_opt_group = null
+ for (_i = 0, _len = species_family_list.length; _i < _len; _i++) {
+ item = species_family_list[_i];
+ if (item[2] != "None" && current_family == ""){
+ current_family = item[2]
+ this_opt_group = $(" | |