about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZachary Sloan2012-10-26 18:27:22 -0500
committerZachary Sloan2012-10-26 18:27:22 -0500
commit4353a903c4661f5c12c4d653044122cf59ef373a (patch)
treed3ba453cd76165c43e7b19cd275e3bf53c0c88e6
parentcf86b790abe5955ab8384aed89d7c0cceb58004b (diff)
downloadgenenetwork2-4353a903c4661f5c12c4d653044122cf59ef373a.tar.gz
Changed search page appearance using bootstrap
Headers/information displays correctly for single mRNA expression trait searches
-rw-r--r--wqflask/wqflask/search_results.py33
-rw-r--r--wqflask/wqflask/static/packages/bootstrap/css/docs.css2
-rw-r--r--wqflask/wqflask/templates/search_result_page.html269
-rw-r--r--wqflask/wqflask/views.py2
4 files changed, 106 insertions, 200 deletions
diff --git a/wqflask/wqflask/search_results.py b/wqflask/wqflask/search_results.py
index 8fc12b16..a2b0596c 100644
--- a/wqflask/wqflask/search_results.py
+++ b/wqflask/wqflask/search_results.py
@@ -182,6 +182,14 @@ class SearchResultPage(templatePage):
                                 'GenbankId',
                                 'UniGeneId',
                                 'RefSeq_TranscriptId']
+            self.header_fields = ['',
+                                'ID',
+                                'Symbol',
+                                'Description',
+                                'Location',
+                                'Mean Expr',
+                                'Max LRS',
+                                'Max LRS Location']
         elif self.dataset.type == "Geno":
             self.search_fields = ['Name','Chr']
 
@@ -693,8 +701,7 @@ class SearchResultPage(templatePage):
     and ProbeSetXRef.ProbeSetFreezeId = %s  
                 """ % (self.db_conn.escape_string(search_term),
                 self.db_conn.escape_string(str(self.dataset.id))))
-            
-            print("query is:", query)
+
             self.cursor.execute(query)
             #print("query is:", pf(self.query))
 
@@ -1252,19 +1259,25 @@ class SearchResultPage(templatePage):
                     else:
                         trait_location_value = ord(str(this_trait.chr).upper()[0])*1000 + this_trait.mb
 
-                trait_location_repr = 'Chr%s: %.6f' % (this_trait.chr, float(this_trait.mb) )
+                trait_location_repr = 'Chr %s: %.4f Mb' % (this_trait.chr, float(this_trait.mb) )
                 this_trait.trait_location_repr = trait_location_repr
                 #this_trait.trait_location_value = trait_location_value
             tr.append(TDCell(HT.TD(trait_location_repr, Class=className, nowrap="on"), trait_location_repr, trait_location_value))
 
             #XZ, 01/12/08: This SQL query is much faster.
-            self.cursor.execute("""
-                select ProbeSetXRef.mean from ProbeSetXRef, ProbeSet
-                where ProbeSetXRef.ProbeSetFreezeId = %d and
-                    ProbeSet.Id = ProbeSetXRef.ProbeSetId and
-                    ProbeSet.Name = '%s'
-            """ % (this_trait.db.id, this_trait.name))
+            query = (
+"""select ProbeSetXRef.mean from ProbeSetXRef, ProbeSet
+    where ProbeSetXRef.ProbeSetFreezeId = %s and
+    ProbeSet.Id = ProbeSetXRef.ProbeSetId and
+    ProbeSet.Name = '%s'
+            """ % (self.db_conn.escape_string(str(this_trait.db.id)),
+                   self.db_conn.escape_string(this_trait.name)))
+            
+            print("query is:", pf(query))
+            
+            self.cursor.execute(query)
             result = self.cursor.fetchone()
+
             if result:
                 if result[0]:
                     mean = result[0]
@@ -1310,7 +1323,7 @@ class SearchResultPage(templatePage):
 
                         this_trait.LRS_score_repr = LRS_score_repr = '%3.1f' % this_trait.lrs
                         this_trait.LRS_score_value = LRS_score_value = this_trait.lrs
-                        this_trait.LRS_location_repr = LRS_location_repr = 'Chr%s: %.6f' % (LRS_Chr, float(LRS_Mb) )
+                        this_trait.LRS_location_repr = LRS_location_repr = 'Chr %s: %.4f Mb' % (LRS_Chr, float(LRS_Mb) )
                         LRS_flag = 0
 
                         #tr.append(TDCell(HT.TD(HT.Href(text=LRS_score_repr,url="javascript:showIntervalMapping('%s', '%s : %s')" % (formName, this_trait.db.shortname, this_trait.name), Class="fs12 fwn"), Class=className, align='right', nowrap="on"),LRS_score_repr, LRS_score_value))
diff --git a/wqflask/wqflask/static/packages/bootstrap/css/docs.css b/wqflask/wqflask/static/packages/bootstrap/css/docs.css
index a6fff3c3..7efd72cd 100644
--- a/wqflask/wqflask/static/packages/bootstrap/css/docs.css
+++ b/wqflask/wqflask/static/packages/bootstrap/css/docs.css
@@ -560,7 +560,7 @@ h2 + .row {
 
 /* Echo out a label for the example */
 .bs-docs-example:after {
-  content: "Example";
+  content: "Results";
   position: absolute;
   top: -1px;
   left: -1px;
diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html
index 06458818..abf2dba7 100644
--- a/wqflask/wqflask/templates/search_result_page.html
+++ b/wqflask/wqflask/templates/search_result_page.html
@@ -2,195 +2,88 @@
 {% block title %}Search Results{% endblock %}
 {% block content %}
 <!-- Start of body -->
-    <TR>
-        <TD  bgColor=#eeeeee class="solidBorder">
-            <Table width= "100%" cellSpacing=0 cellPadding=5>
-                <TR>
-                    <TD valign="top" height="200" width="100%" bgcolor="#eeeeee">
-                        <P class="title">Search Results</P>
-                        <BLOCKQUOTE>GeneNetwork searched:
-                            <a href="/dbdoc/{{dataset.fullname}}">{{ dataset.fullname }}</a>
-                            <br />
-                            
-                            For all records  that match:
-                            <ul>
-                                {% if search_terms %}
-                                    <li>
-                                        {% for word in search_terms %}
-                                            <strong>{{word.search_term}}</strong> {% if not loop.last %} or {% endif %}
-                                        {% endfor %}
-                                    </li>
-                                {% endif %}
-                            </ul>
+    <header class="jumbotron subhead" id="overview">
+        <div class="container">
+            <h1>Search Results</h1>
+            <p class="lead">
+                GeneNetwork found {{ numify(results|count, "record", "records") }}.
+            </p>
+        </div>
+    </header>
 
-                            <P>GeneNetwork found <strong>{{ numify(results|count, "record", "records") }}</strong>.</P>
-
-                            <P>To study a record, click on its ID below.</P>
-
-                            <P>To add one or more records to your Selection window, use the checkbox and then click the <STRONG>Add to Collection</STRONG> button.</P>
-                        </BLOCKQUOTE>
-                        <FORM METHOD="GET" ACTION="/search" ENCTYPE="multipart/form-data" NAME="show_trait">
-
-                        <INPUT TYPE="hidden" NAME="database" VALUE="_">
-                        <INPUT TYPE="hidden" NAME="incparentsf1" VALUE="ON">
-                        <INPUT TYPE="hidden" NAME="FormID" VALUE="showDatabase">
-                        <INPUT TYPE="hidden" NAME="ProbeSetID" VALUE="_">
-                        <INPUT TYPE="hidden" NAME="RISet" VALUE="BXD">
-                        <INPUT TYPE="hidden" NAME="CellID" VALUE="_">
-                        <P>
-                        <TABLE border="0" cellpadding="0" cellspacing="2" width="100%">
-                            <TR>
-                                <TD>
-                                    <TABLE border="0" cellpadding="0" cellspacing="2" width="20%">
-                                        <TR>
-                                            <TD width="25%">
-                                                <A HREF="#" onClick="checkAll(document.getElementsByName('show_trait')[0]);">
-                                                <IMG src="/images/select_all2_final.jpg" alt="Select All" name="selectall" style="border:none;" title="Select All"></A>
-                                            </TD>
-                                            <TD width="25%">
-                                                <A HREF="#" onClick="checkNone(document.getElementsByName('show_trait')[0]);">
-                                                    <IMG src="/images/select_none2_final.jpg" alt="Select None" style="border:none;" title="Select None">
-                                                </A>
-                                            </TD>
-                                            <TD width="25%">
-                                                <A HREF="#" onClick="checkInvert(document.getElementsByName('show_trait')[0]);">
-                                                    <IMG src="/images/invert_selection2_final.jpg" alt="Invert Selection" name="selectinvert" style="border:none;" title="Invert Selection">
-                                                </A>
-                                            </TD>
-                                            <TD width="25%">
-                                                <A HREF="#">
-                                                    <IMG src="/images/add_collection1_final.jpg" alt="Add To Collection" name="addselect" style="border:none;" title="Add To Collection">
-                                                </A>
-                                            </TD>
-                                        </TR>
-                                        <TR>
-                                            <TD width="25%">&nbsp;&nbsp;Select</TD>
-                                            <TD width="255">&nbsp;Deselect</TD>
-                                            <TD width="25%">&nbsp;&nbsp;&nbsp;Invert</TD>
-                                            <TD width="25%">&nbsp;&nbsp;&nbsp;&nbsp;Add</TD>
-                                        </TR></TABLE>
-                                </TD>
-                            </TR>
-                            <TR>
-                                <TD height="40">
-                                    <INPUT TYPE="button" NAME="Default_Name" class="button" VALUE="Download Table" onClick="location.href='/tmp/Search_fYr7h2Hn.xls'">
-                                </TD>
-                            </TR>
-                            <TR>
-                                <TD>
-                                    <DIV id="sortable">
-                                        <TABLE class="collap b2" cellpadding="5" cellspacing="1">
-                                            <TR>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb" nowrap="ON">
-                                                </TD>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb">
-                                                    Record
-                                                    <BR>ID<BR>
-                                                    <DIV style="float: bottom;">
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=record_id&order=up&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortup.gif" alt="sortup.gif" border="0">
-                                                        </A>
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=record_id&order=down&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortdown.gif" alt="sortdown.gif" border="0">
-                                                        </A>
-                                                    </DIV>
-                                                </TD>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb">
-                                                    Symbol<BR><BR>
-                                                    <DIV style="float: bottom;">
-                                                        <IMG src="/images/sortupon.gif" alt="sortupon.gif" border="0">
-                                                            <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=symbol&order=down&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                                <IMG src="/images/sortdown.gif" alt="sortdown.gif" border="0">
-                                                            </A>
-                                                    </DIV>
-                                                </TD>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb">
-                                                    Description<BR><BR>
-                                                    <DIV style="float: bottom;">
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=desc&order=up&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortup.gif" alt="sortup.gif" border="0">
-                                                        </A>
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=desc&order=down&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortdown.gif" alt="sortdown.gif" border="0">
-                                                        </A>
-                                                    </DIV>
-                                                </TD>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb">Location<BR>Chr and Mb<BR>
-                                                    <DIV style="float: bottom;">
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=location&order=up&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortup.gif" alt="sortup.gif" border="0">
-                                                        </A>
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=location&order=down&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortdown.gif" alt="sortdown.gif" border="0">
-                                                        </A>
-                                                    </DIV>
-                                                </TD>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb">Mean<BR>Expr<BR>
-                                                <DIV style="float: bottom;">
-                                                    <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=mean&order=up&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                        <IMG src="/images/sortup.gif" alt="sortup.gif" border="0">
-                                                    </A>
-                                                    <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=mean&order=down&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                        <IMG src="/images/sortdown.gif" alt="sortdown.gif" border="0">
-                                                    </A>
-                                                </DIV>
-                                                </TD>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb" nowrap="ON">Max<BR>LRS<BR>
-                                                    <DIV style="float: bottom;">
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=lrs&order=up&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortup.gif" alt="sortup.gif" border="0">
-                                                        </A>
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=lrs&order=down&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortdown.gif" alt="sortdown.gif" border="0">
-                                                        </A>
-                                                    </DIV>
-                                                </TD>
-                                                <TD class="fs13 fwb ffl b1 cw cbrb" nowrap="ON">Max LRS Location<BR>Chr and Mb<BR>
-                                                    <DIV style="float: bottom;">
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=lrs_location&order=up&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortup.gif" alt="sortup.gif" border="0">
-                                                        </A>
-                                                        <A HREF="javascript:xmlhttpPost('/webqtl/main.py?FormID=AJAX_table', 'sortable', 'sort=lrs_location&order=down&file=Search_fYr7h2Hn&tableID=sortable&addIndex=1&hiddenColumns=')">
-                                                            <IMG src="/images/sortdown.gif" alt="sortdown.gif" border="0">
-                                                        </A>
-                                                    </DIV>
-                                                </TD>
-                                            </TR>
-                                            {% for this_trait in trait_list %}
-                                            <TR id="{{ this_trait }}">
-                                                <TD class="fs12 fwn ffl b1 c222" nowrap="on">{{ loop.index }}
-                                                    <INPUT TYPE="checkbox" NAME="searchResult" class="checkbox" VALUE="{{ this_trait }}" onClick="highlight(this)">
-                                                </TD>
-                                                <TD class="stdcell">
-                                                    {# <A HREF="javascript:showDatabase3('{{ thisFormName }}','{{this_trait.db.name}}','{{ this_trait.name }}','{{ this_trait.cellid }}')" class="fs12 fwn"> - </a> #}
-                                                    <a href="{{ url_for('show_trait_page', database=this_trait.db.name, ProbeSetID=this_trait.name, incparentsf1='ON', RISet='BXD')}}" class="fs12 fwn">
-                                                        {{ this_trait.name.upper() }}
-                                                    </a>
-                                                </TD>
-                                                <TD class="fs12 fwn b1 c222 fsI">
-                                                    <A HREF="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids={{this_trait.geneid}}" TARGET="_blank" class="font_black fs12 fwn">
-                                                        {{ this_trait.symbol }}
-                                                    </A>
-                                                </TD>
-                                                <TD class="stdcell">{{ this_trait.description_display }}</TD>
-                                                <TD class="stdcell" nowrap="on">{{ this_trait.trait_location_repr }}</TD>
-                                                <TD class="stdcell" nowrap="ON" align="right">{{ this_trait.mean }}</TD>
-                                                <TD class="stdcell" nowrap="on" align="right">{{ this_trait.LRS_score_repr }}</TD>
-                                                <TD class="stdcell" nowrap="on">{{ this_trait.LRS_location_repr }}</TD>
-                                            </TR>
-                                            {% endfor %}
-                                        </TABLE>
-                                    </DIV>
-                                </TD>
-                            </TR>
-                        </TABLE>
-                        <INPUT TYPE="hidden" NAME="Default_Name">
-                        </FORM>
-                    </TD>
-                </TR>
-            </TABLE>
-        </TD>
-    </TR>
+    <div class="container">
+        <div class="page-header">
+            <h1>Your Search</h1>
+        </div>
+        
+        <p>We searched <a href="/dbdoc/{{dataset.fullname}}">{{ dataset.fullname }}</a><//>
+        
+        <p>To find all records that match:</p>
+        <ul>
+            {% if search_terms %}
+            <li>
+                {% for word in search_terms %}
+                    <strong>{{word.search_term}}</strong> {% if not loop.last %} or {% endif %}
+                {% endfor %}
+            </li>
+            {% endif %}
+        </ul>
+        
+        <p>To study a record, click on its ID below.<br />
+        Check records below and click Add button to add to selection.</p>
+        
+        <div class="bs-docs-example">
+            <table class="table table-hover">
+                <thead>
+                    <tr>
+                    {% for header in header_fields %}
+                        <th>{{header}}</th>
+                    {% endfor %}
+                </thead>
+                
+                <tbody>
+                    {% for this_trait in trait_list %}
+                    <TR id="{{ this_trait }}">
+                        <TD>
+                            <INPUT TYPE="checkbox" NAME="searchResult" class="checkbox"
+                                   VALUE="{{ this_trait }}">
+                        </TD>
+                        <TD>
+                            <a href="{{ url_for('show_trait_page',
+                                    database=this_trait.db.name,
+                                    ProbeSetID=this_trait.name, incparentsf1='ON',
+                                    RISet='BXD')}}">
+                                {{ this_trait.name.upper() }}
+                            </a>
+                        </TD>
+                        <TD>
+                            <A HREF=
+                                "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids={{this_trait.geneid}}" TARGET="_blank">
+                                {{ this_trait.symbol }}
+                            </A>
+                        </TD>
+                        <TD>{{ this_trait.description_display }}</TD>
+                        <TD>{{ this_trait.trait_location_repr }}</TD>
+                        <TD>{{ this_trait.mean }}</TD>
+                        <TD>{{ this_trait.LRS_score_repr }}</TD>
+                        <TD>{{ this_trait.LRS_location_repr }}</TD>
+                    </TR>
+                {% endfor %}
+                </tbody>
+                
+            </table>
+            
+            <br />
+            
+            <button class="btn"><i class="icon-ok"></i> Select</button>
+            <button class="btn"><i class="icon-remove"></i> Deselect</button>
+            <button class="btn"><i class="icon-resize-vertical"></i> Invert</button>
+            <button class="btn"><i class="icon-plus-sign"></i> Add</button>
+            <button class="btn btn-primary pull-right"><i class="icon-download icon-white"></i> Download Table</button>
+        </div>
+        
+    </div>
+    
 <!-- End of body -->
 
 {% endblock %}
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index dd95f7ca..41d1d714 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -64,7 +64,7 @@ def search_page():
         print("calling search_results.SearchResultPage")
         the_search = search_results.SearchResultPage(request.args)
         print("template_vars is:", pf(the_search.__dict__))
-        print("trait_list is:", pf(the_search.__dict__['trait_list'][0].__dict__))
+        #print("trait_list is:", pf(the_search.__dict__['trait_list'][0].__dict__))
         return render_template("search_result_page.html", **the_search.__dict__)