Ignore:
Timestamp:
Feb 16, 2011, 11:12:14 AM (13 years ago)
Author:
robert@…
Message:

Added assay search and improved query form

Location:
trunk/grails-app/views/advancedQuery
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/views/advancedQuery/_criteria.gsp

    r1512 r1526  
    11<%@ page import="dbnp.query.*" %>
    2 <ul id="criteria">
    3         <g:each in="${criteria}" var="criterion" status="j">
    4                 <li>
    5                         <span class="entityfield">${criterion.entityField().toLowerCase()}</span>
    6                         <span class="operator">${criterion.operator}</span>
    7                         <span class="value">
    8                                 <g:if test="${criterion.value != null && criterion.value instanceof Search}">
    9                                         <g:link action="show" id="${criterion.value.id}">${criterion.value}</g:link>
     2<g:if test="${criteria}">
     3        with
     4        <ul id="criteria">
     5                <g:each in="${criteria}" var="criterion" status="j">
     6                        <li>
     7                                <span class="entityfield">${criterion.entityField().toLowerCase()}</span>
     8                                <span class="operator">${criterion.operator}</span>
     9                                <span class="value">
     10                                        <g:if test="${criterion.value != null && criterion.value instanceof Search}">
     11                                                <g:link action="show" id="${criterion.value.id}">${criterion.value}</g:link>
     12                                        </g:if>
     13                                        <g:else>
     14                                                ${criterion.value}
     15                                        </g:else>
     16                                </span>
     17                                <g:if test="${j < criteria.size() -1}">
     18                                        <g:if test="${search.searchMode == SearchMode.and}">and</g:if>
     19                                        <g:if test="${search.searchMode == SearchMode.or}">or</g:if>
    1020                                </g:if>
    11                                 <g:else>
    12                                         ${criterion.value}
    13                                 </g:else>
    14                         </span>
    15                         <g:if test="${j < criteria.size() -1}">
    16                                 <g:if test="${search.searchMode == SearchMode.and}">and</g:if>
    17                                 <g:if test="${search.searchMode == SearchMode.or}">or</g:if>
    18                         </g:if>
    19                 </li>
    20         </g:each>
    21 </ul>
     21                        </li>
     22                </g:each>
     23        </ul>
     24</g:if>
     25<g:else>
     26        without criteria.
     27</g:else>
  • trunk/grails-app/views/advancedQuery/index.gsp

    r1512 r1526  
    3030                                        showCriterium("${criterion.entityField().encodeAsJavaScript()}", "${criterion.value.toString().encodeAsJavaScript()}", "${criterion.operator.toString().encodeAsJavaScript()}");
    3131                                </g:each>
    32                                 showHideNoCriteriaItem();
    3332                        });
    3433                </g:if>
     
    5150
    5251<div id="searchForm">
    53         <form id="input_criteria">
    54         <h2>Add criterium</h2>
    55         <p class="explanation">
    56                 N.B. Comparing numerical values is done without taking into
    57                 account the units. E.g. a weight of 1 kg equals 1 grams.
    58         </p>
    59         <label for="field">Field</label>
    60                 <select name="field" id="queryFieldSelect">
    61                         <option value=""></option>
    62                         <g:each in="${searchableFields}" var="entity">
    63                                 <optgroup label="${entity.key}">
    64                                         <g:each in="${entity.value}" var="field">
    65                                                 <option value="${entity.key}.${field}">
    66                                                         ${field[0].toUpperCase() + field[1..-1]}
    67                                                 </option>
    68                                         </g:each>
    69                                 </optgroup>
    70                         </g:each>
    71                 </select>
    72                
    73         <label for="value">Comparison</label>
    74                 <select name="operator">
    75                         <option value="equals">Equals</option>
    76                         <option value="contains">Contains</option>
    77                         <option value="&gt;=">Greater than or equals</option>
    78                         <option value="&gt;">Greater than</option>
    79                         <option value="&lt;">Lower than</option>
    80                         <option value="&lt;=">Lower than or equals</option>
    81                 </select>
    82        
    83         <label for="value">Value</label>
    84                 <input class='text' type="text" name="value" />
    85        
    86         <input class="button" type="button" onClick="addCriterium();" value="Add" />
    87         </form>
    8852        <g:form action="search" method="get">
    89                 <label for="entity">Search for</label><g:select from="${entitiesToSearchFor}" optionKey="key" optionValue="value" name="entity" /><br />
    90                 <label for="entity">Searchtype</label><g:select from="${searchModes}" name="operator" /><br />
    91                 <label for="criteria">Criteria</label>
     53
     54                <h3><span class="nummer">1</span>Select criteria</h3>
     55                <p class="explanation">
     56                        N.B. Comparing numerical values is done without taking into
     57                        account the units. E.g. a weight of 1 kg equals 1 grams.
     58                </p>
    9259                <ul id="criteria">
    93                         <li class="emptyList">No criteria added. Use the form on the right to specify criteria to search on.</li>
     60                        <li class="titlerow">
     61                                <span class="entityfield">
     62                                        Field
     63                                </span>
     64                                <span class="operator">
     65                                        Operator
     66                                </span>
     67                                <span class="value">
     68                                        Value
     69                                </span>
     70                        </li>
     71                        <li class="newCriterion">
     72                                <span class="entityfield">
     73                                        <select name="criteria.0.entityfield" id="queryFieldSelect">
     74                                                <option value=""></option>
     75                                                <g:each in="${searchableFields}" var="entity">
     76                                                        <optgroup label="${entity.key}">
     77                                                                <g:each in="${entity.value}" var="field">
     78                                                                        <option value="${entity.key}.${field}">
     79                                                                                ${field[0].toUpperCase() + field[1..-1]}
     80                                                                        </option>
     81                                                                </g:each>
     82                                                        </optgroup>
     83                                                </g:each>
     84                                        </select>
     85                                </span>
     86                                <span class="operator">
     87                                        <select id="operator" name="criteria.0.operator">
     88                                                <option value="equals">Equals</option>
     89                                                <option value="contains">Contains</option>
     90                                                <option value="&gt;=">&gt;=</option>
     91                                                <option value="&gt;">&gt;</option>
     92                                                <option value="&lt;">&lt;</option>
     93                                                <option value="&lt;=">&lt;=</option>
     94                                        </select>
     95                                </span>
     96                                <span class="value">
     97                                        <input class='text' type="text" id="value" name="criteria.0.value" />
     98                                </span>
     99                                <span class="addButton">
     100                                        <a href="#" onClick="addCriterion(); return false;">
     101                                                <img src="${fam.icon( name: 'add' )}" border="0">
     102                                        </a>
     103                                </span>
     104                        </li>
    94105                </ul>
    95106               
    96                 <input type="submit" value="Run query" class="submitcriteria" disabled="disabled" />
     107                <div id="searchMode">
     108                        <h3><span class="nummer">1b</span>Search mode</h3>
     109                        <p>
     110                                Choose how to combine the given criteria:<br />
     111                                <g:select from="${searchModes}" name="operator" />
     112                        </p>
     113                </div>
     114               
     115                <h3><span class="nummer">2</span>Output type</h3>
     116                <p>
     117                        Choose the type of output:<br />
     118                        <g:select from="${entitiesToSearchFor}" optionKey="key" optionValue="value" name="entity" />
     119                </p>
     120
     121                <h3><span class="nummer">3</span>Run query</h3>
     122                <p>
     123                        <input type="submit" value="Run query" class="submitcriteria" />
     124                </p>
    97125        </g:form>
    98126       
  • trunk/grails-app/views/advancedQuery/list.gsp

    r1524 r1526  
    5656                                <td>${search.entity}</td>
    5757                                <td>
    58                                         <g:each in="${search.getCriteria()}" var="criterion" status="j">
    59                                                 <g:if test="${j > 0}">, </g:if>
     58                                        <g:set var="criteria" value="${search.getCriteria()}" />
     59                                        <g:each in="${criteria}" var="criterion" status="j">
    6060                                                <span class="entityfield">${criterion.entityField()}</span>
    6161                                                <span class="operator">${criterion.operator}</span>
     
    6868                                                        </g:else>
    6969                                                </span>
     70                                                <g:if test="${j < criteria.size() -1}">
     71                                                        <g:if test="${search.searchMode == SearchMode.and}">and</g:if>
     72                                                        <g:if test="${search.searchMode == SearchMode.or}">or</g:if>
     73                                                </g:if>                                         
    7074                                        </g:each>
    7175                                </td>
  • trunk/grails-app/views/advancedQuery/results.gsp

    r1524 r1526  
    1212
    1313<div class="searchoptions">
    14         ${search.getNumResults()} <g:if test="${search.getNumResults() == 1}">result</g:if><g:else>results</g:else> found with
     14        ${search.getNumResults()} <g:if test="${search.getNumResults() == 1}">result</g:if><g:else>results</g:else> found
    1515        <g:render template="criteria" model="[criteria: search.getCriteria()]" />
    1616</div>
     
    4949                                                        if( fieldValue ) {
    5050                                                                if( fieldValue instanceof Collection ) {
    51                                                                         fieldValue = fieldValue.collect { it.toString() }.findAll { it }.join( ', ' );
     51                                                                        fieldValue = fieldValue.collect { it.toString() }.findAll { it }.unique().join( ', ' );
    5252                                                                } else {
    5353                                                                        fieldValue = fieldValue.toString();
  • trunk/grails-app/views/advancedQuery/sampleresults.gsp

    r1524 r1526  
    1212
    1313<div class="searchoptions">
    14         ${search.getNumResults()} <g:if test="${search.getNumResults() == 1}">sample</g:if><g:else>samples</g:else> found with
     14        ${search.getNumResults()} <g:if test="${search.getNumResults() == 1}">sample</g:if><g:else>samples</g:else> found
    1515        <g:render template="criteria" model="[criteria: search.getCriteria()]" />
    1616</div>
     
    5050                                                        if( fieldValue ) {
    5151                                                                if( fieldValue instanceof Collection ) {
    52                                                                         fieldValue = fieldValue.collect { it.toString() }.findAll { it }.join( ', ' );
     52                                                                        fieldValue = fieldValue.collect { it.toString() }.findAll { it }.unique().join( ', ' );
    5353                                                                } else {
    5454                                                                        fieldValue = fieldValue.toString();
  • trunk/grails-app/views/advancedQuery/studyresults.gsp

    r1524 r1526  
    1212
    1313<div class="searchoptions">
    14         ${search.getNumResults()} <g:if test="${search.getNumResults() == 1}">study</g:if><g:else>studies</g:else> found with
     14        ${search.getNumResults()} <g:if test="${search.getNumResults() == 1}">study</g:if><g:else>studies</g:else> found
    1515        <g:render template="criteria" model="[criteria: search.getCriteria()]" />
    1616</div>
     
    8686                                                        if( fieldValue ) {
    8787                                                                if( fieldValue instanceof Collection ) {
    88                                                                         fieldValue = fieldValue.collect { it.toString() }.findAll { it }.join( ', ' );
     88                                                                        fieldValue = fieldValue.collect { it.toString() }.findAll { it }.unique().join( ', ' );
    8989                                                                } else {
    9090                                                                        fieldValue = fieldValue.toString();
Note: See TracChangeset for help on using the changeset viewer.