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

Last change on this file since 202 was 199, checked in by gav, 15 years ago

Upgrade quartz plugin to 0.4.1 propper.
Refactor and enable quartz scheduling for recurring tasks.
Adjust svn ignores to ignore all log files.
Create a pseudo system person for automated insertions.

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