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

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

Update service, controller and view logic to hand Task and Entry highestSeverity.
Also remove associatedAssets from task search panes.

File size: 17.2 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                                                                                                imgTitle="Attention Flag"
93                                                                                                params="${filterParams}" />
94
95                                <custom:sortableColumnWithImg property="highestSeverity"
96                                                                                                imgSrc="${resource(dir:'images/skin',file:'award_star_silver_3.png')}"
97                                                                                                imgAlt="Severity"
98                                                                                                imgTitle="Highest Severity"
99                                                                                                params="${filterParams}" />
100
101                                <g:sortableColumn property="targetStartDate" title="Target Start Date" params="${filterParams}" />
102
103                                <g:sortableColumn property="description" title="Description" params="${filterParams}" />
104
105                                <g:sortableColumn property="taskGroup" title="Group" params="${filterParams}" />
106
107                                <g:sortableColumn  property="taskType" title="Type" params="${filterParams}" />
108
109                                <custom:sortableColumnWithImg property="taskStatus"
110                                                                                                imgSrc="${resource(dir:'images/skin',file:'status.png')}"
111                                                                                                imgAlt="Status"
112                                                                                                imgTitle="Status"
113                                                                                                params="${filterParams}" />
114
115                                <g:sortableColumn  property="taskPriority" title="Priority" params="${filterParams}" />
116
117                                <custom:sortableColumnWithImg property="defaultSort"
118                                                                                                imgSrc="${resource(dir:'images/skin',file:'table_sort.png')}"
119                                                                                                imgAlt="Sort"
120                                                                                                imgTitle="Default Sort"
121                                                                                                params="${filterParams}" />
122
123                            </tr>
124                        </thead>
125                        </tbody>
126                        <tbody>
127                        <g:each in="${taskInstanceList}" status="i" var="taskInstance">
128                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}">
129
130                                <td class="idColumn" onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
131                                    <g:if test="${taskInstance.attentionFlag}">
132                                        <img  src="${resource(dir:'images/skin',file:'flag_red.png')}" alt="Flag" title="Attention Flag"/>
133                                    </g:if>
134                                </td>
135
136                                <td class="idColumn" onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
137                                    <g:if test="${taskInstance.highestSeverity}">
138                                        ${taskInstance.highestSeverity.code.encodeAsHTML()}
139                                    </g:if>
140                                </td>
141
142                                <td onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
143                                    <g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/>
144                                </td>
145
146                                <td onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
147                                    <b>
148                                        Task #${fieldValue(bean:taskInstance, field:'id')}
149                                    </b>
150                                    <g:if test="${taskInstance.approved}" >
151                                        <img  src="${resource(dir:'images/skin',file:'cog.png')}" alt="Approved" title="Approved" />
152                                    </g:if>
153                                    <g:if test="${taskInstance.taskRecurringSchedule?.enabled}" >
154                                        <img  src="${resource(dir:'images/skin',file:'arrow_refresh.png')}" alt="Recurrence Enabled" title="Recurrence Enabled" />
155                                    </g:if>
156                                    <br />
157
158                                    <b>
159                                    <g:if test="${taskInstance.primaryAsset}">
160                                        ${fieldValue(bean:taskInstance, field:'primaryAsset')}:
161                                    </g:if>
162                                    ${fieldValue(bean:taskInstance, field:'description')}
163                                    </b>
164                                    <g:if test="${taskInstance.taskProcedureRevision?.maintenanceActions}" >
165                                        <br />
166                                        <custom:taskProcedureMachines taskProcedureRevision="${taskInstance.taskProcedureRevision}" />
167                                    </g:if>
168                                    <g:if test="${taskInstance.safetyRequirement}" >
169                                        <br />
170                                        <img  src="${resource(dir:'images/skin',file:'lightning.png')}" alt="Safety Requirement" title="Safety Requirement" />
171                                        Safety
172                                    </g:if>
173                                    <g:if test="${taskInstance.regulatoryRequirement}" >
174                                        <br />
175                                        <img  src="${resource(dir:'images/skin',file:'script_lightning.png')}" alt="Regulatory Requirement" title="Regulatory Requirement" />
176                                        Regulatory
177                                    </g:if>
178                                    <g:if test="${taskInstance.mandatoryRequirement}" >
179                                        <br />
180                                        <img  src="${resource(dir:'images/skin',file:'script.png')}" alt="Mandatory Requirement" title="Mandatory Requirement" />
181                                        Mandatory
182                                    </g:if>
183                                    <br />
184                                    <br />
185                                    <g:each in="${taskInstance.assignedGroups}" status="j" var="assignedGroup">
186                                        ${assignedGroup.encodeAsHTML()}<br />
187                                    </g:each>
188                                    <g:each in="${taskInstance.assignedPersons}" status="k" var="assignedPerson">
189                                        ${assignedPerson.encodeAsHTML()}<br />
190                                    </g:each>
191                                    <g:each in="${taskInstance.entries}" status="m" var="entry">
192                                        <g:if test="${entry.entryType.id == 3}">
193                                            <em>${'WD: ' +entry.toShortString().encodeAsHTML()}</em><br />
194                                        </g:if>
195                                    </g:each>
196                                    <g:if test="${taskInstance.subTasks}">
197                                        Sub Tasks: ${taskInstance.subTasks.size()}<br />
198                                    </g:if>
199                                </td>
200
201                                <td onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
202                                    ${fieldValue(bean:taskInstance, field:'taskGroup')}
203                                </td>
204
205                                <td onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
206                                    ${fieldValue(bean:taskInstance, field:'taskType')}
207                                </td>
208
209                                <td class="idColumn" onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
210                                    <g:if test="${taskInstance.taskStatus.id == 1}" >
211                                        <img  src="${resource(dir:'images/skin',file:'not_started.png')}" alt="Not Started" title="Not Started" />
212                                    </g:if>
213                                    <g:if test="${taskInstance.taskStatus.id == 2}" >
214                                        <img  src="${resource(dir:'images/skin',file:'arrow_right.png')}" alt="In Progress" title="In Progress" />
215                                    </g:if>
216                                    <g:if test="${taskInstance.taskStatus.id == 3}" >
217                                        <img  src="${resource(dir:'images/skin',file:'tick.png')}" alt="Complete" title="Complete" />
218                                    </g:if>
219                                </td>
220
221                                <td onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${taskInstance.id}"'>
222                                    ${fieldValue(bean:taskInstance, field:'taskPriority')}
223                                </td>
224
225                                <td class="notClickable">
226                                    <g:link action="show" id="${taskInstance.id}">
227                                        <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" title="Show" />
228                                    </g:link>
229                                </td>
230
231                            </tr>
232                        </g:each>
233                        </tbody>
234                    </table>
235                </div>
236            </g:if>
237            <div class="paginateButtons">
238                <g:paginate action="search" total="${taskInstanceTotal}" params="${filterParams}" />
239            </div>
240
241            <filterpane:filterPane domainBean="Task"
242                                    title="Advanced Search"
243                                    action="search"
244                                    class="overlayPane"
245                                    additionalProperties="id"
246                                    excludeProperties="targetCompletionDate"
247                                    associatedProperties="taskPriority.name,
248                                                                                leadPerson.lastName,
249                                                                                leadPerson.firstName,
250                                                                                taskGroup.name,
251                                                                                highestSeverity.code,
252                                                                                primaryAsset.name,
253                                                                                taskStatus.name,
254                                                                                taskType.name"
255                                    filterPropertyValues="${['taskPriority.name':[values: associatedPropertyValues.taskPriorityList],
256                                                                                'leadPerson.lastName':[values: associatedPropertyValues.lastNameList],
257                                                                                'leadPerson.firstName':[values: associatedPropertyValues.firstNameList],
258                                                                                'taskGroup.name':[values: associatedPropertyValues.taskGroupList],
259                                                                                'highestSeverity.code':[values: associatedPropertyValues.highestSeverityList],
260                                                                                'primaryAsset.name':[values: associatedPropertyValues.assetList],
261                                                                                'taskStatus.name':[values: associatedPropertyValues.taskStatusList],
262                                                                                'taskType.name':[values: associatedPropertyValues.taskTypeList],
263                                                                                targetCompletionDate:[years: associatedPropertyValues.yearRange,precision:'day'],
264                                                                                targetStartDate:[years: associatedPropertyValues.yearRange,precision:'day']
265                                                                                ]}"/>
266
267            <g:render template="quickSearchPane" />
268
269        </div> <!-- end body  -->
270    </body>
271</html>
Note: See TracBrowser for help on using the repository browser.