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

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

Implemented searching in 'all fields'

  • Property svn:keywords set to Rev Author Date
File size: 4.7 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        <link rel="stylesheet" href="<g:resource dir="css" file="buttons.css" />" type="text/css"/>
8        <g:javascript src="advancedQuery.js" />
9        <script type="text/javascript">
10                // Make a list of fields to search in
11                var queryableFields = [
12                        <g:set var="j" value="${0}" />
13                        <g:each in="${searchableFields}" var="entity">
14                                <g:each in="${entity.value}" var="field">
15                                        <g:if test="${j > 0}">,</g:if>
16                                        {
17                                                label: "${(
18                                                        entity.key.toString() + '.' + field.toString() + ' ' +
19                                                        entity.key.toString() + ' ' + field.toString() + ' ' +
20                                                        (field == '*' ? 'any field' : '') + ' ' +
21                                                        (field == '*' && entity.key == '*' ? 'any field in any object' : '')
22                                                        ).encodeAsJavaScript()}",
23                                                show: "${
24                                                        (field == '*' ?
25                                                                ( entity.key == '*' ? '[Any field in any object]' : '[Any field in ' + entity.key.toString() + ']' ) :
26                                                                (field?.size() > 1 ?
27                                                                        field[0].toUpperCase() + field[1..-1] :
28                                                                        field)
29                                                        ).encodeAsJavaScript()}",
30                                                value: "${entity.key.toString().encodeAsJavaScript()}.${field.toString().encodeAsJavaScript()}",
31                                                entity: "${entity.key.toString().encodeAsJavaScript()}"
32                                        }
33                                        <g:set var="j" value="1" />
34                                </g:each>
35                        </g:each>
36                ];
37       
38                <g:if test="${criteria && criteria.size() > 0}">
39                        // Show given criteria
40                        $(function() {
41                                <g:each in="${criteria}" var="criterion">
42                                        showCriterium("${criterion.entityField().encodeAsJavaScript()}", "${criterion.value.toString().encodeAsJavaScript()}", "${criterion.operator.toString().encodeAsJavaScript()}");
43                                </g:each>
44                                                       
45                                // Show or hide the 'search mode' box (AND or OR)
46                                toggleSearchMode()
47
48                                // Enable or disable the search button
49                                toggleSearchButton()
50                        });
51                </g:if>
52        </script>
53</head>
54<body>
55
56<h1>Search database</h1>
57
58<g:if test="${flash.error}">
59        <div class="errormessage">
60                ${flash.error.toString().encodeAsHTML()}
61        </div>
62</g:if>
63<g:if test="${flash.message}">
64        <div class="message">
65                ${flash.message.toString().encodeAsHTML()}
66        </div>
67</g:if>
68
69<div id="searchForm">
70        <g:form action="search" method="get">
71
72                <h3><span class="nummer">1</span>Select criteria</h3>
73                <p class="explanation">
74                        N.B. Comparing numerical values is done without taking into
75                        account the units. E.g. a weight of 1 kg equals 1 grams.
76                </p>
77                <ul id="criteria">
78                        <li class="titlerow">
79                                <span class="entityfield">
80                                        Field
81                                </span>
82                                <span class="operator">
83                                        Operator
84                                </span>
85                                <span class="value">
86                                        Value
87                                </span>
88                        </li>
89                        <li class="newCriterion">
90                                <span class="entityfield">
91                                        <select name="criteria.0.entityfield" id="queryFieldSelect">
92                                                <option value=""></option>
93                                                <g:each in="${searchableFields}" var="entity">
94                                                        <optgroup label="${entity.key}">
95                                                                <g:each in="${entity.value}" var="field">
96                                                                        <option value="${entity.key}.${field}">
97                                                                                <g:if test="${field?.size() > 1}">
98                                                                                        ${field[0].toUpperCase() + field[1..-1]}
99                                                                                </g:if>
100                                                                                <g:else>
101                                                                                        ${field}
102                                                                                </g:else>
103                                                                        </option>
104                                                                </g:each>
105                                                        </optgroup>
106                                                </g:each>
107                                        </select>
108                                </span>
109                                <span class="operator">
110                                        <select id="operator" name="criteria.0.operator">
111                                                <option value="equals">Equals</option>
112                                                <option value="contains">Contains</option>
113                                                <option value="&gt;=">&gt;=</option>
114                                                <option value="&gt;">&gt;</option>
115                                                <option value="&lt;">&lt;</option>
116                                                <option value="&lt;=">&lt;=</option>
117                                        </select>
118                                </span>
119                                <span class="value">
120                                        <input class='text' type="text" id="value" name="criteria.0.value" />
121                                </span>
122                                <span class="addButton">
123                                        <a class="disabled" href="#" onClick="addCriterion(); return false;">
124                                                <img src="${fam.icon( name: 'add' )}" border="0">
125                                        </a>
126                                </span>
127                        </li>
128                </ul>
129               
130                <div id="searchMode">
131                        <h3><span class="nummer">1b</span>Search mode</h3>
132                        <p>
133                                Choose how to combine the given criteria:<br />
134                                <g:select from="${searchModes}" name="operator" />
135                        </p>
136                </div>
137               
138                <h3><span class="nummer">2</span>Output type</h3>
139                <p>
140                        Choose the type of output:<br />
141                        <g:select from="${entitiesToSearchFor}" optionKey="key" optionValue="value" name="entity" />
142                </p>
143
144                <h3><span class="nummer">3</span>Run query</h3>
145                <p>
146                        <input type="submit" disabled="disabled" value="Search" class="submitcriteria" />
147                </p>
148        </g:form>
149       
150        <br clear="all" />
151</div>
152<g:if test="${session.queries?.size()}">
153<p class="options">
154        <g:link class="listPrevious" action="list">Previous searches</g:link>
155</p>
156</g:if>
157<br  clear="all" />
158</body>
159</html>
Note: See TracBrowser for help on using the repository browser.