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

Last change on this file since 226 was 225, checked in by gav, 15 years ago

Complete inventory movement implementation as per ticket #24.
Refactor showTab function in both Task and Inventory (which now has tabs).

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="${showTab.task}" title="Task #${taskInstance.id}" />
33                    <richui:tabLabel selected="${showTab.procedure}" title="Procedure" />
34                    <richui:tabLabel selected="${showTab.recurrence}" title="Recurrence" />
35                    <richui:tabLabel selected="${showTab.inventory}" title="Inventory" />
36                    <richui:tabLabel selected="${showTab.subTasks}" 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                                <g:hiddenField 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                                <g:hiddenField name="task.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 Movements.
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="inventoryItemDetailed" >
570                            <g:hiddenField 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 action="findInventoryItemForMovement" class="add" value="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="Create" /></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="Create" /></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.