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

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