source: trunk/grails-app/views/taskDetailed/search.gsp @ 467

Last change on this file since 467 was 467, checked in by gav, 14 years ago

Only show table headers in search views if there actually are results.

File size: 11.9 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>Task Search</title>
6        <filterpane:includes />
7        <nav:resources override="true"/>
8        <export:resource />
9    </head>
10    <body>
11        <div class="nav">
12            <nav:renderSubItems group="nav"/>
13        </div>
14
15        <div class="body">
16            <g:render template="/shared/messages" />
17            <g:if test="${params.message}">
18                <div class="message">${params.message}</div>
19            </g:if>
20            <g:hasErrors bean="${appCore}">
21                <div class="errors">
22                    <g:renderErrors bean="${appCore}" as="list" />
23                </div>
24            </g:hasErrors>
25            <filterpane:currentCriteria domainBean="Task"
26                                    action="search"
27                                    dateFormat="EEE, dd-MMM-yyyy"
28                                    removeImgDir="images"
29                                    removeImgFile="bullet_delete.png"
30                                    title="Advanced Search"/>
31
32            <div class="paginateButtons">
33                <span class="searchButtons">
34                    <a href='' onclick="showElement('searchPane'); return false;">Quick</a>
35                </span>
36                Results: ${taskInstanceList.size()} / ${taskInstanceTotal}
37                <span class="searchButtons">
38                    <filterpane:filterButton text="Advanced" appliedText="Advanced" />
39                </span>
40            </div>
41
42            <jsUtil:toggleControl toggleId="options"
43                                                    imageId="optionsImg"
44                                                    closedImgUrl="${resource(dir:'images/skin',file:'bullet_arrow_right.png')}"
45                                                    openImgUrl="${resource(dir:'images/skin',file:'bullet_arrow_down.png')}"
46                                                    text="${g.message(code: 'default.options.text')}"
47                                                    />
48
49            <div id="options" style="display:none;">
50                <g:form method="post" >
51                    <g:hiddenField name="params" value="${filterParams}" />
52                    <div class="dialog">
53                        <table>
54                            <tbody>
55
56                                <tr class="prop">
57                                    <td valign="top" class="name">
58                                        <label for="max">Results per page:</label>
59                                    </td>
60                                    <td valign="top" class="value">
61                                        <input type="text" maxlength="4" id="description" name="newMax" value="${params.max}"/>
62
63                                        <span class="buttons">
64                                            <g:actionSubmit action="setSearchParamsMax" class="go" value="Update" />
65                                        </span>
66                                    </td>
67                                </tr>
68
69                            </tbody>
70                        </table>
71                    </div>
72                <export:formats  params="${filterParams}" formats="['csv', 'excel', 'pdf', 'rtf']"/>
73                </g:form>
74            </div>
75
76            <br />
77
78            <g:if test="${taskInstanceList.size() > 10}">
79                <g:if test="${taskInstanceTotal > taskInstanceList.size()}">
80                    <div class="paginateButtons">
81                        <g:paginate total="${taskInstanceTotal}" params="${filterParams}" />
82                    </div>
83                </g:if>
84            </g:if>
85
86            <g:if test="${taskInstanceList.size() > 0}">
87                <div class="list">
88                    <table>
89                        <thead>
90                            <tr>
91
92                                <custom:sortableColumnWithImg property="attentionFlag"
93                                                                                                imgSrc="${resource(dir:'images/skin',file:'flag_red.png')}"
94                                                                                                imgAlt="Flag" params="${filterParams}" />
95
96                                <g:sortableColumn property="id" title="Id" params="${filterParams}" />
97
98                                <g:sortableColumn property="targetStartDate" title="Target Start Date" params="${filterParams}" />
99
100                                <g:sortableColumn property="description" title="Description" params="${filterParams}" />
101
102                                <g:sortableColumn  property="taskPriority" title="Task Priority" params="${filterParams}" />
103
104                                <g:sortableColumn  property="taskStatus" title="Task Status" params="${filterParams}" />
105
106                                <th></th>
107
108                            </tr>
109                        </thead>
110                        </tbody>
111                        <tbody>
112                        <g:each in="${taskInstanceList}" status="i" var="taskInstance">
113                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'/>
114
115                                <td class="idColumn">
116                                    <g:if test="${taskInstance.attentionFlag}">
117                                        <img  src="${resource(dir:'images/skin',file:'flag_red.png')}" alt="Flag" />
118                                    </g:if>
119                                </td>
120
121                                <td class="idColumn">${fieldValue(bean:taskInstance, field:'id')}</td>
122
123                                <td><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/></td>
124
125                                <td>${fieldValue(bean:taskInstance, field:'description')}</td>
126
127                                <td>${fieldValue(bean:taskInstance, field:'taskPriority')}</td>
128
129                                <td>${fieldValue(bean:taskInstance, field:'taskStatus')}</td>
130
131                                <td>
132                                    <g:link action="show" id="${taskInstance.id}">
133                                        <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
134                                    </g:link>
135                                </td>
136
137                            </tr>
138                        </g:each>
139                        </tbody>
140                    </table>
141                </div>
142            </g:if>
143            <div class="paginateButtons">
144                <g:paginate total="${taskInstanceTotal}" params="${filterParams}" />
145            </div>
146
147            <filterpane:filterPane domainBean="Task"
148                                    title="Advanced Search"
149                                    action="search"
150                                    class="overlayPane"
151                                    additionalProperties="id"
152                                    associatedProperties="taskPriority.name,
153                                                                                leadPerson.lastName,
154                                                                                leadPerson.firstName,
155                                                                                taskGroup.name,
156                                                                                associatedAssets.name,
157                                                                                primaryAsset.name,
158                                                                                taskStatus.name,
159                                                                                taskType.name"
160                                    filterPropertyValues="${['taskPriority.name':[values:TaskPriority.list()],
161                                                                                'leadPerson.lastName':[values:Person.executeQuery('select distinct t.lastName from Person t')],
162                                                                                'leadPerson.firstName':[values:Person.executeQuery('select distinct t.firstName from Person t')],
163                                                                                'taskGroup.name':[values:TaskGroup.list()],
164                                                                                'associatedAssets.name':[values:Asset.list()],
165                                                                                'primaryAsset.name':[values:Asset.list()],
166                                                                                'taskStatus.name':[values:TaskStatus.list()],
167                                                                                'taskType.name':[values:TaskType.list()],
168                                                                                targetCompletionDate:[years:2020..2000,precision:'day'],
169                                                                                targetStartDate:[years:2020..2000,precision:'day']
170                                                                                ]}"/>
171        </div> <!-- end body  -->
172
173        <!-- Start Search Pane -->
174        <div class="overlayPane" id="searchPane" style="display:none;">
175            <h2>Quick Search</h2>
176            <g:form method="post" id="searchForm" name="searchForm" >
177                <table>
178                    <tbody>
179
180                        <tr class="prop">
181                            <td valign="top" class="name">
182                                <label>My Tasks:</label>
183                            </td>
184                            <td valign="top" class="value">
185                                <g:link controller="taskDetailed"
186                                                action="search"
187                                                params="[quickSearch: 'searchMyTodays']">
188                                                Today's
189                                </g:link>
190                                <br />
191                                <g:link controller="taskDetailed"
192                                                action="search"
193                                                params="[quickSearch: 'searchMyInTheLastWeek']">
194                                                In the last week
195                                </g:link>
196                            </td>
197                        </tr>
198
199                        <tr class="prop">
200                            <td valign="top" class="name">
201                                <label>Tasks:</label>
202                            </td>
203                            <td valign="top" class="value">
204                                <g:link controller="taskDetailed"
205                                                action="search"
206                                                params="[quickSearch: 'searchTodays']">
207                                                Today's
208                                </g:link>
209                                <br />
210                                <g:link controller="taskDetailed"
211                                                action="search"
212                                                params="[quickSearch: 'searchInTheLastWeek']">
213                                                In the last week
214                                </g:link>
215                            </td>
216                        </tr>
217
218                    </tbody>
219                </table>
220                <div class="buttons">
221                    <span class="button">
222                        <input type="button" value="${g.message(code:'fp.tag.filterPane.button.cancel.text', default:'Cancel')}" onclick="return hideElement('searchPane');" />
223                    </span>
224                </div>
225            </g:form>
226        </div> <!-- end search pane -->
227
228    </body>
229</html>
Note: See TracBrowser for help on using the repository browser.