source: trunk/grails-app/views/taskDetailed/show.gsp @ 180

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

Add support for taskModification audit/change log, the create and update modifications are complete.
Moved create and update of tasks to taskService.
Small Assset domain class adjustment to prevent blank asset name.
Removed "static scope = 'request'" from services since I don't believe it is required and it limits where the service may be used.

File size: 32.6 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>Show Task</title>
6        <g:javascript src="overlayPane.js" />
7        <nav:resources override="true"/>
8        <resource:tabView skin="tabviewCustom" />
9    </head>
10    <body>
11        <div class="nav">
12            <nav:renderSubItems group="nav"/>
13        </div>
14        <div class="body">
15            <g:if test="${flash.message}">
16            <div class="message">${flash.message}</div>
17            </g:if>
18            <g:hasErrors bean="${taskInstance}">
19            <div class="errors">
20                <g:renderErrors bean="${taskInstance}" as="list" />
21            </div>
22            </g:hasErrors>
23
24            <richui:tabView id="tabView">
25
26                <richui:tabLabels>
27                    <richui:tabLabel selected="${showTaskTab}" title="Task #${taskInstance.id}" />
28                    <richui:tabLabel selected="${showProcedureTab}" title="Procedure" />
29                    <richui:tabLabel selected="${showRecurrenceTab}" title="Recurrence" />
30                    <richui:tabLabel selected="${showInventoryTab}" title="Inventory" />
31                    <richui:tabLabel selected="${showSubTasksTab}" title="Sub Tasks" />
32                </richui:tabLabels>
33
34                <richui:tabContents>
35
36<!-- Start Task tab -->
37                    <richui:tabContent>
38
39                        <div class="dialog">
40                            <table>
41                                <tbody>
42
43                                    <tr class="prop">
44                                        <td valign="top" class="name">Description:</td>
45
46                                        <td valign="top" class="value">${fieldValue(bean:taskInstance, field:'description')}</td>
47
48                                    </tr>
49
50                                    <tr class="prop">
51                                        <td valign="top" class="name">Comment:</td>
52
53                                        <td valign="top" class="value">${fieldValue(bean:taskInstance, field:'comment')}</td>
54
55                                    </tr>
56
57                                    <tr class="prop">
58                                        <td valign="top" class="name">Target Start:</td>
59
60                                        <td valign="top" class="value"><g:formatDate date="${taskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/></td>
61
62                                    </tr>
63
64                                    <tr class="prop">
65                                        <td valign="top" class="name">Target Completion:</td>
66
67                                        <td valign="top" class="value"><g:formatDate date="${taskInstance.targetCompletionDate}" format="EEE, dd-MMM-yyyy"/></td>
68
69                                    </tr>
70
71                                    <tr class="prop">
72                                        <td valign="top" class="name">
73                                            <div id="modControlClosed">
74                                                <a href='' onclick="showElement('modifications');
75                                                                                    showElement('modControlOpened');
76                                                                                    hideElement('modControlClosed'); return false;">
77                                                    Modifications <img  src="${resource(dir:'images/skin',file:'sorted_asc.gif')}" alt="Show" />
78                                                </a>
79                                            </div>
80                                            <div id="modControlOpened" style="display:none;">
81                                                <a href='' onclick="hideElement('modifications');
82                                                                                    hideElement('modControlOpened');
83                                                                                    showElement('modControlClosed');
84                                                                                    return false;">
85                                                    Modifications <img  src="${resource(dir:'images/skin',file:'sorted_desc.gif')}" alt="Show" />
86                                                </a>
87                                            </div>
88                                        </td>
89
90                                        <td  valign="top" style="text-align:left;" class="value">
91                                            <div id="modifications" style="display:none;">
92                                                <ul>
93                                                <g:each var="a" in="${taskModificationList}">
94                                                    <li>${a?.encodeAsHTML()}</li>
95                                                </g:each>
96                                                </ul>
97                                            </div>
98                                        </td>
99                                    </tr>
100
101
102                                    <tr class="prop">
103                                        <td valign="top" class="name">Lead Person:</td>
104
105                                        <td valign="top" class="value">${taskInstance?.leadPerson?.encodeAsHTML()}</td>
106
107                                    </tr>
108
109                                    <tr class="prop">
110                                        <td valign="top" class="name">Primary Asset:</td>
111
112                                        <td valign="top" class="value"><g:link controller="assetDetailed" action="show" id="${taskInstance?.primaryAsset?.id}">${taskInstance?.primaryAsset?.encodeAsHTML()}</g:link></td>
113
114                                    </tr>
115
116                                    <tr class="prop">
117                                        <td valign="top" class="name">Associated Assets:</td>
118
119                                        <td  valign="top" style="text-align:left;" class="value">
120                                            <ul>
121                                            <g:each var="a" in="${taskInstance.associatedAssets}">
122                                                <li>${a?.encodeAsHTML()}</li>
123                                            </g:each>
124                                            </ul>
125                                        </td>
126
127                                    </tr>
128
129                                    <tr class="prop">
130                                        <td valign="top" class="name">Priority:</td>
131
132                                        <td valign="top" class="value">${taskInstance?.taskPriority?.encodeAsHTML()}</td>
133
134                                    </tr>
135
136                                    <tr class="prop">
137                                        <td valign="top" class="name">Status:</td>
138
139                                        <td valign="top" class="value">${taskInstance?.taskStatus?.encodeAsHTML()}</td>
140
141                                    </tr>
142
143                                    <tr class="prop">
144                                        <td valign="top" class="name">Active:</td>
145
146                                        <td valign="top" class="value">${fieldValue(bean:taskInstance, field:'isActive')}</td>
147
148                                    </tr>
149
150                                    <tr class="prop">
151                                        <td valign="top" class="name">Approved:</td>
152
153                                        <td valign="top" class="value">${fieldValue(bean:taskInstance, field:'isApproved')}</td>
154
155                                    </tr>
156
157                                    <tr class="prop">
158                                        <td valign="top" class="name">Scheduled:</td>
159
160                                        <td valign="top" class="value">${fieldValue(bean:taskInstance, field:'isScheduled')}</td>
161
162                                    </tr>
163
164                                    <tr class="prop">
165                                        <td valign="top" class="name">Parent Task:</td>
166
167                                        <td valign="top" class="value"><g:link controller="taskDetailed" action="show" id="${taskInstance?.parentTask?.id}">${taskInstance?.parentTask?.encodeAsHTML()}</g:link></td>
168
169                                    </tr>
170
171                                    <tr class="prop">
172                                        <td valign="top" class="name">Group:</td>
173
174                                        <td valign="top" class="value">${taskInstance?.taskGroup?.encodeAsHTML()}</td>
175
176                                    </tr>
177
178                                    <tr class="prop">
179                                        <td valign="top" class="name">Type:</td>
180
181                                        <td valign="top" class="value">${taskInstance?.taskType?.encodeAsHTML()}</td>
182
183                                    </tr>
184
185                                    <tr class="prop">
186                                        <td valign="top" class="name">Assigned Persons:</td>
187
188                                        <td  valign="top" style="text-align:left;" class="value">
189                                            <ul>
190                                            <g:each var="a" in="${taskInstance.assignedPersons}">
191                                                <li><g:link controller="assignedPersonDetailed" action="edit" id="${a.id}">${a?.encodeAsHTML()}</g:link></li>
192                                            </g:each>
193                                            </ul>
194                                            <g:link controller="assignedPersonDetailed" params="['task.id':taskInstance?.id]" action="create">Add AssignedPerson</g:link>
195                                        </td>
196
197                                    </tr>
198
199                                </tbody>
200                            </table>
201                        </div>
202
203                        <div class="buttons">
204                            <g:form>
205                                <input type="hidden" name="id" value="${taskInstance?.id}" />
206                                <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
207                                <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
208                            </g:form>
209                        </div>
210
211                        <div class="list">
212                            <h1>Faults</h1>
213                            <table>
214                                <thead>
215                                    <tr>
216                                        <th>Comment</th>
217                                        <th>Date Done</th>
218                                        <th>Duration</th>
219                                        <th>Entered By</th>
220                                        <th></th>
221                                    </tr>
222                                </thead>
223                                <tbody>
224                                <g:each in="${entryFaultList}" status="i" var="entry">
225                                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/entryDetailed/edit/${entry.id}"'/>
226
227                                            <td style="width:65%">${entry.comment}</td>
228                                            <td><g:formatDate date="${entry.dateDone}" format="EEE, dd-MMM-yyyy"/></td>
229                                            <td>${entry.durationHour}:${entry.durationMinute}</td>
230                                            <td>${entry.enteredBy}</td>
231
232                                            <td>
233                                                <g:link controller="entryDetailed" action="edit" id="${entry.id}">
234                                                    <img  src="${resource(dir:'images/skin',file:'database_edit.png')}" alt="Edit" />
235                                                </g:link>
236                                            </td>
237
238                                        </tr>
239                                </g:each>
240                                </tbody>
241                            </table>
242                        </div>
243
244                        <div class="list">
245                            <h1>Work Done</h1>
246                            <table>
247                                <thead>
248                                    <tr>
249                                        <th>Comment</th>
250                                        <th>Date Done</th>
251                                        <th>Duration</th>
252                                        <th>Entered By</th>
253                                        <th></th>
254
255            <!--                            <g:sortableColumn property="commentW" title="Comment" />
256
257                                        <g:sortableColumn property="dateDoneW" title="Date Done" />
258
259                                        <g:sortableColumn property="enteredByW" title="Entered By" />-->
260                                    </tr>
261                                </thead>
262                                <tbody>
263                                <g:each in="${entryWorkDoneList}" status="i" var="entry">
264                                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/entryDetailed/edit/${entry.id}"'/>
265
266                                            <td width="65%">${entry.comment}</td>
267                                            <td><g:formatDate date="${entry.dateDone}" format="EEE, dd-MMM-yyyy"/></td>
268                                            <td>${entry.durationHour}:${entry.durationMinute}</td>
269                                            <td>${entry.enteredBy}</td>
270
271                                            <td>
272                                                <g:link controller="entryDetailed" action="edit" id="${entry.id}">
273                                                    <img  src="${resource(dir:'images/skin',file:'database_edit.png')}" alt="Edit" />
274                                                </g:link>
275                                            </td>
276
277                                        </tr>
278                                </g:each>
279                                </tbody>
280                            </table>
281                        </div>
282
283                        <br />
284
285                        <div class="buttons">
286                            <g:form controller="entryDetailed">
287                                <input type="hidden" name="taskInstance.id" value="${taskInstance?.id}" />
288                                <span class="button">
289                                    <g:actionSubmit value="Add Entry" action="create"  class="add"/>
290                                </span>
291                            </g:form>
292                        </div>
293                    </richui:tabContent>
294<!-- End Task tab -->
295
296
297<!-- Start Task Procedure tab-->
298                    <richui:tabContent>
299                        <g:if test="${!taskProcedureExits}">
300                            <br />
301                            No Procedure linked.
302                            <br />
303                            <br />
304                            <g:form controller="taskProcedureDetailed" >
305                                <input type="hidden" name="taskInstance.id" value="${taskInstance?.id}" />
306
307                                <div class="buttons">
308                                    <span class="button">
309                                        <g:actionSubmit value="New" action="create" class="add"/>
310                                    </span>
311                                    <span class="button">
312                                        <g:actionSubmit value="Search" action="search" class="search"/>
313                                    </span>
314                                </div>
315
316                            </g:form>
317
318                        </g:if>
319                        <g:else>
320                            <div class="dialog">
321                                <table>
322                                    <tbody>
323
324                                        <tr class="prop">
325                                            <td valign="top" class="name">Procedure Id:</td>
326
327                                            <td valign="top" class="value">${fieldValue(bean:taskProcedureInstance, field:'id')}</td>
328
329                                        </tr>
330
331                                        <tr class="prop">
332                                            <td valign="top" class="name">Name:</td>
333
334                                            <td valign="top" class="value">${fieldValue(bean:taskProcedureInstance, field:'name')}</td>
335
336                                        </tr>
337
338                                        <tr class="prop">
339                                            <td valign="top" class="name">Description:</td>
340
341                                            <td valign="top" class="value">${fieldValue(bean:taskProcedureInstance, field:'description')}</td>
342
343                                        </tr>
344
345                                        <tr class="prop">
346                                            <td valign="top" class="name">Is Active:</td>
347
348                                            <td valign="top" class="value">${fieldValue(bean:taskProcedureInstance, field:'isActive')}</td>
349
350                                        </tr>
351
352                                    </tbody>
353                                </table>
354                            </div>
355                            <div class="buttons">
356                                <g:form controller="taskProcedureDetailed">
357                                    <input type="hidden" name="id" value="${taskProcedureInstance?.id}" />
358                                    <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
359                                </g:form>
360                            </div>
361
362                            <div class="list">
363                                <table>
364                                    <thead>
365                                        <tr>
366                                            <th>Step</th>
367                                            <th>Description</th>
368                                        </tr>
369                                    </thead>
370                                    <tbody>
371                                        <g:each in="${maintenanceActionList}" status="i" var="maintenanceAction">
372                                            <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
373
374                                                <td valign="top" class="name">
375                                                    ${maintenanceAction?.procedureStepNumber}
376                                                </td>
377
378                                                <td  valign="top" style="text-align:left;" class="value">
379                                                    ${maintenanceAction?.description}
380                                                </td>
381
382                                            </tr>
383                                        </g:each>
384
385                                    </tbody>
386                                </table>
387                            </div>
388
389                        </g:else>
390
391                    </richui:tabContent>
392<!-- End Task Procedure tab-->
393
394<!-- Start Task Recurrence tab -->
395                    <richui:tabContent>
396
397                        <g:if test="${!taskRecurringScheduleExits}">
398                            <br />
399                            No Recurring Schedule.
400                            <br />
401                            <br />
402                            <g:form controller="taskRecurringScheduleDetailed" >
403                                <input type="hidden" name="taskInstance.id" value="${taskInstance?.id}" />
404
405                                <div class="buttons">
406                                    <span class="button">
407                                        <g:actionSubmit value="Create" action="create"  class="add"/>
408                                    </span>
409                                </div>
410
411                            </g:form>
412
413                        </g:if>
414                        <g:else>
415
416                        <div class="dialog">
417                                <table>
418                                    <tbody>
419                                        <tr class="prop">
420                                            <td valign="top" class="name">Recurring Schedule:</td>
421
422                                            <td valign="top" class="value">${taskRecurringScheduleInstance.encodeAsHTML()}</td>
423
424                                        </tr>
425
426                                        <tr class="prop">
427                                            <td valign="top" class="name">Start Date:</td>
428
429                                            <td valign="top" class="value">
430                                                <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd-MMM-yyyy"/>
431                                            </td>
432
433                                        </tr>
434
435                                        <tr class="prop">
436                                            <td valign="top" class="name">Task Duration:</td>
437
438                                            <td valign="top" class="value">
439                                                ${taskRecurringScheduleInstance?.taskDuration} ${taskRecurringScheduleInstance?.taskDurationPeriod}
440                                            </td>
441                                        </tr>
442
443                                        <tr class="prop">
444                                            <td valign="top" class="name">Generate Ahead:</td>
445
446                                            <td valign="top" class="value">
447                                                ${taskRecurringScheduleInstance?.generateAhead} ${taskRecurringScheduleInstance?.generateAheadPeriod}
448                                            </td>
449
450                                        </tr>
451
452                                        </tr>
453
454                                        <tr class="prop">
455                                            <td valign="top" class="name">Is Enabled:</td>
456
457                                            <td valign="top" class="value">${fieldValue(bean:taskRecurringScheduleInstance, field:'isEnabled')}</td>
458
459                                        </tr>
460
461                                    </tbody>
462                                </table>
463
464                                <table>
465                                    <tbody>
466
467                                        <tr class="prop">
468                                            <td valign="top" class="name">Next Target Start Date:</td>   
469
470                                            <td valign="top" class="value">
471                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetStartDate}" format="EEE, dd-MMM-yyyy"/>
472                                            </td>
473
474                                        </tr>
475
476                                        <tr class="prop">
477                                            <td valign="top" class="name">Next Target Completion Date:</td>   
478
479                                            <td valign="top" class="value">
480                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetCompletionDate}" format="EEE, dd-MMM-yyyy"/>
481                                            </td>
482
483                                        </tr>
484
485                                        <tr class="prop">
486                                            <td valign="top" class="name">Next Generation Date:</td>
487
488                                            <td valign="top" class="value">
489                                                <g:formatDate date="${taskRecurringScheduleInstance.nextGenerationDate}" format="EEE, dd-MMM-yyyy"/>
490                                            </td>
491                                        </tr>
492
493                                        <tr class="prop">
494                                            <td valign="top" class="name">Last Generated Date:</td>
495
496                                            <td valign="top" class="value">
497                                                <g:formatDate date="${taskRecurringScheduleInstance.lastGeneratedDate}" format="EEE, dd-MMM-yyyy"/>
498                                            </td>
499
500                                        </tr>
501
502                                        <tr class="prop">
503                                            <td valign="top" class="name">Last Generated Sub Task:</td>
504
505                                            <td valign="top" class="value">
506                                                <g:link controller="taskDetailed" action="show" id="${taskRecurringScheduleInstance?.lastGeneratedSubTask?.id}">
507                                                    ${taskRecurringScheduleInstance?.lastGeneratedSubTask?.encodeAsHTML()}
508                                                </g:link>
509                                            </td>
510                                        </tr>
511                                    </tbody>
512                                </table>
513                            </div>
514                            <div class="buttons">
515                                <g:form controller="taskRecurringScheduleDetailed">
516                                    <input type="hidden" name="id" value="${taskRecurringScheduleInstance?.id}" />
517                                    <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
518                                </g:form>
519                            </div>
520
521                        </g:else>
522                    </richui:tabContent>
523<!-- End Task Recurrence tab -->
524
525<!-- Start Inventory tab -->
526                    <richui:tabContent>
527
528                        <g:if test="${inventoryMovementList.isEmpty()}">
529                            <br />
530                            No Inventory Used.
531                            <br />
532                            <br />
533                        </g:if>
534                        <g:else>
535                            <div class="list">
536                                <table>
537                                    <thead>
538                                        <tr>
539                                            <th>Inventory Item</th>
540                                            <th>Quantity</th>
541                                            <th>Movement Type</th>
542                                            <th>Date</th>
543                                            <th></th>
544                                        </tr>
545                                    </thead>
546                                    <tbody>
547                                        <g:each in="${inventoryMovementList}" status="i" var="inventoryMovementInstance">
548                                            <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/inventoryMovementDetailed/show/${inventoryMovementInstance.id}"'/>
549
550                                                <td>${fieldValue(bean:inventoryMovementInstance, field:'inventoryItem')}</td>
551                                                <td>${fieldValue(bean:inventoryMovementInstance, field:'quantity')}</td>
552                                                <td>${fieldValue(bean:inventoryMovementInstance, field:'inventoryMovementType')}</td>
553                                                <td><g:formatDate date="${inventoryMovementInstance.date}" format="EEE, dd-MMM-yyyy"/></td>
554                                                <td>
555                                                    <g:link controller="inventoryMovementDetailed" action="show" id="${inventoryMovementInstance.id}">
556                                                        <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
557                                                    </g:link>
558                                                </td>
559
560                                            </tr>
561                                        </g:each>
562                                    </tbody>
563                                </table>
564                            </div>
565                        </g:else>
566
567                        <g:form controller="inventoryMovementDetailed" >
568                            <input type="hidden" name="task.id" value="${taskInstance?.id}" />
569                            <div class="buttons">
570                                <g:if test="${!inventoryMovementList.isEmpty()}">
571                                    Results: ${inventoryMovementList.size()}
572                                    <br />
573                                </g:if>
574                                <span class="button">
575                                    <g:actionSubmit value="Add" action="create"  class="add"/>
576                                </span>
577                            </div>
578                        </g:form>
579
580                    </richui:tabContent>
581<!-- End Inventory tab -->
582
583<!-- Start Sub Task tab -->
584                    <richui:tabContent>
585                        <g:if test="${subTaskInstanceTotal >= 1}">
586                            <div class="list">
587                                <table>
588                                    <thead>
589                                        <tr>
590
591                                            <th>Id</th>
592
593                                            <th>Target Start Date</th>
594
595                                            <th>Description</th>
596
597                                            <th>Lead Person</th>
598
599                                            <th>Task Priority</th>
600
601                                            <th>Task Status</th>
602
603                                            <th></th>
604
605                                        </tr>
606                                    </thead>
607                                    <tbody>
608                                    <g:each in="${subTaskInstanceList}" status="i" var="subTaskInstance">
609                                    <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/taskDetailed/show/${subTaskInstance.id}"'/>
610
611                                            <td>${fieldValue(bean:subTaskInstance, field:'id')}</td>
612
613                                            <td><g:formatDate date="${subTaskInstance.targetStartDate}" format="EEE, dd-MMM-yyyy"/></td>
614
615                                            <td>${subTaskInstance.description}</td>
616
617
618                                            <td>${subTaskInstance.leadPerson}</td>
619
620                                            <td>${subTaskInstance.taskPriority}</td>
621
622                                            <td>${subTaskInstance.taskStatus}</td>
623
624                                            <td>
625                                                <g:link action="show" id="${subTaskInstance.id}">
626                                                    <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
627                                                </g:link>
628                                            </td>
629
630                                        </tr>
631                                    </g:each>
632                                    </tbody>
633                                </table>
634                            </div>
635
636                            <div class="buttons">
637                                <g:form>
638                                    <input type="hidden" name="id" value="${taskInstance?.id}" />
639                                    <g:if test="${subTaskInstanceTotal > subTaskInstanceMax}">
640                                        Showing ${subTaskInstanceMax} of ${subTaskInstanceTotal}
641                                        <br />
642                                    </g:if>
643                                    <g:else>
644                                        Total ${subTaskInstanceTotal}
645                                        <br />
646                                    </g:else>
647                                    <span class="button"><g:actionSubmit action="listSubTasks" class="table" value="Sortable List" /></span>
648                                </g:form>
649                            </div>
650
651                        </g:if>
652                        <g:else>
653                            <br />
654                            No Sub Tasks.
655                        </g:else>
656
657                    </richui:tabContent>
658<!-- End Sub Task tab -->
659
660                </richui:tabContents>
661            </richui:tabView>
662
663        </div>
664    </body>
665</html>
Note: See TracBrowser for help on using the repository browser.