source: trunk/grails-app/views/advancedQuery/index.gsp @ 1526

Last change on this file since 1526 was 1526, checked in by robert@…, 10 years ago

Added assay search and improved query form

  • Property svn:keywords set to Rev Author Date
File size: 4.0 KB
Line 
1<html>
2<head>
3        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
4        <meta name="layout" content="main"/>
5        <title>Query database</title>
6        <link rel="stylesheet" href="<g:resource dir="css" file="advancedQuery.css" />" type="text/css"/>
7        <g:javascript src="advancedQuery.js" />
8        <script type="text/javascript">
9                // Make a list of fields to search in
10                var queryableFields = [
11                        <g:set var="j" value="${0}" />
12                        <g:each in="${searchableFields}" var="entity">
13                                <g:each in="${entity.value}" var="field">
14                                        <g:if test="${j > 0}">,</g:if>
15                                        {
16                                                label: "${entity.key.toString().encodeAsJavaScript()}.${field.toString().encodeAsJavaScript()} ${entity.key.toString().encodeAsJavaScript()} ${field.toString().encodeAsJavaScript()}",
17                                                show: "${(field[0].toUpperCase() + field[1..-1]).encodeAsJavaScript()}",
18                                                value: "${entity.key.toString().encodeAsJavaScript()}.${field.toString().encodeAsJavaScript()}",
19                                                entity: "${entity.key.toString().encodeAsJavaScript()}"
20                                        }
21                                        <g:set var="j" value="1" />
22                                </g:each>
23                        </g:each>
24                ];
25       
26                <g:if test="${criteria && criteria.size() > 0}">
27                        // Show given criteria
28                        $(function() {
29                                <g:each in="${criteria}" var="criterion">
30                                        showCriterium("${criterion.entityField().encodeAsJavaScript()}", "${criterion.value.toString().encodeAsJavaScript()}", "${criterion.operator.toString().encodeAsJavaScript()}");
31                                </g:each>
32                        });
33                </g:if>
34        </script>
35</head>
36<body>
37
38<h1>Query database</h1>
39
40<g:if test="${flash.error}">
41        <div class="errormessage">
42                ${flash.error.toString().encodeAsHTML()}
43        </div>
44</g:if>
45<g:if test="${flash.message}">
46        <div class="message">
47                ${flash.message.toString().encodeAsHTML()}
48        </div>
49</g:if>
50
51<div id="searchForm">
52        <g:form action="search" method="get">
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>
59                <ul id="criteria">
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>
105                </ul>
106               
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>
125        </g:form>
126       
127        <br clear="all" />
128</div>
129<p class="options">
130        <g:link class="listPrevious" action="list">Previous searches</g:link>
131</p>
132<br  clear="all" />
133</body>
134</html>
Note: See TracBrowser for help on using the repository browser.