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

Last change on this file since 713 was 713, checked in by gav, 13 years ago

Dynamic task quick search feature.

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