Changeset 809


Ignore:
Timestamp:
02/16/11 20:10:39 (8 years ago)
Author:
gav
Message:

Domain change, first draft of TaskProcedureRevisions.

Location:
trunk/grails-app
Files:
3 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/TaskDetailedController.groovy

    r747 r809  
    434434            def assignedPersonList = taskInstance.assignedPersons.sort { p1, p2 -> p1.person.firstName.compareToIgnoreCase(p2.person.firstName) } 
    435435 
    436             def taskProcedureInstance = TaskProcedure.get(taskInstance.taskProcedure?.id) 
     436            def taskProcedureRevision = TaskProcedureRevision.get(taskInstance.taskProcedureRevision?.id) 
    437437            def taskProcedureExits = new Boolean("true") 
    438             if(!taskProcedureInstance) { 
     438            if(!taskProcedureRevision) { 
    439439                taskProcedureExits = false 
    440440            } 
    441  
    442             def maParams = [:] 
    443             maParams.max = 100 
    444             maParams.order = "asc" 
    445             maParams.sort = "procedureStepNumber" 
    446             def maintenanceActionList = MaintenanceAction.findAllByTaskProcedure(taskProcedureInstance, maParams) 
    447441 
    448442            def taskRecurringScheduleInstance = TaskRecurringSchedule.get(taskInstance.taskRecurringSchedule?.id) 
     
    456450                            entryCauseList: entryCauseList, 
    457451                            entryWorkDoneList: entryWorkDoneList, 
    458                             taskProcedureInstance: taskProcedureInstance, 
     452                            taskProcedureRevision: taskProcedureRevision, 
    459453                            taskProcedureExits: taskProcedureExits, 
    460454                            showTab: showTab, 
     
    462456                            subTaskInstanceTotal: subTaskInstanceTotal, 
    463457                            subTaskInstanceMax: params.max, 
    464                             maintenanceActionList: maintenanceActionList, 
    465458                            taskRecurringScheduleInstance: taskRecurringScheduleInstance, 
    466459                            taskRecurringScheduleExits: taskRecurringScheduleExits, 
  • trunk/grails-app/controllers/TaskProcedureDetailedController.groovy

    r798 r809  
    4343        if(!taskProcedureInstance) { 
    4444            flash.errorMessage = "TaskProcedure not found with id ${params.id}" 
    45             redirect(controller:'taskDetailed', action:'search') 
     45            redirect(action:'list') 
    4646            return 
    4747        } 
    4848 
    49         redirect(controller:'taskDetailed', 
    50                         action:'show', 
    51                         id:taskProcedureInstance.linkedTask?.id, 
    52                         params:[showTab:"showProcedureTab"]) 
    53     } 
     49        def taskProcedureRevision 
     50        if(params.revision?.toInteger()) 
     51             taskProcedureRevision = taskProcedureInstance.getRevision( params.revision ) 
     52        else 
     53             taskProcedureRevision = taskProcedureInstance.latestRevision 
    5454 
    55     def delete = { 
    56         def taskProcedureInstance = TaskProcedure.get( params.id ) 
    57         if(taskProcedureInstance) { 
    58             def taskInstance = taskProcedureInstance.linkedTask 
    59             try { 
    60                 taskProcedureInstance.tasks.each { 
    61                     it.taskProcedure = null 
    62                 } 
    63                 taskProcedureInstance.delete(flush:true) 
    64                 flash.message = "TaskProcedure ${params.id} deleted" 
    65                 redirect(controller:'taskDetailed', 
    66                                 action:'show', 
    67                                 id:taskInstance.id, 
    68                                 params:[showTab:"showProcedureTab"]) 
    69             } 
    70             catch(org.springframework.dao.DataIntegrityViolationException e) { 
    71                 flash.errorMessage = "TaskProcedure ${params.id} could not be deleted" 
    72                 redirect(controller:'taskDetailed', 
    73                                 action:'show', 
    74                                 id:taskInstance.id, 
    75                                 params:[showTab:"showProcedureTab"]) 
    76             } 
     55        if(!taskProcedureRevision) { 
     56            flash.errorMessage = "TaskProcedure ${params.id} revision ${params.revision} not found" 
     57            redirect(action:'list') 
     58            return 
    7759        } 
    78         else { 
    79             flash.errorMessage = "TaskProcedure not found with id ${params.id}" 
    80             redirect(action:list) 
    81         } 
     60 
     61        return [taskProcedureRevision: taskProcedureRevision] 
     62 
    8263    } 
    8364 
     
    8566 
    8667        // In the case of an actionSubmit button, rewrite action name from 'index'. 
    87         if(params._action_Edit) 
     68        //if(params._action_Edit) 
    8869            params.action='edit' 
    8970 
     
    10687        if(!result.error) { 
    10788            flash.message = g.message(code: "default.update.success", args: ["TaskProcedure", params.id]) 
    108             redirect(controller:'taskDetailed', 
    109                             action:'show', 
    110                             id:result.taskProcedureInstance.linkedTask.id, 
    111                             params:[showTab:"showProcedureTab"]) 
     89            redirect(action:'show', id:result.taskProcedureInstance.id) 
    11290            return 
    11391        } 
     
    12199        if(result.error.code == "default.optimistic.locking.failure") { 
    122100            flash.errorMessage = g.message(code: result.error.code, args: result.error.args) 
    123             redirect(controller:'taskDetailed', 
    124                             action:'show', 
    125                             id:result.taskProcedureInstance.linkedTask.id, 
    126                             params:[showTab:"showProcedureTab"]) 
     101            redirect(action:'show', id:result.taskProcedureInstance.id) 
    127102            return 
    128103        } 
     
    144119 
    145120        // Task already has a taskProcedure. 
    146         if(params.linkedTask.taskProcedure) { 
     121        if(params.linkedTask.taskProcedureRevision) { 
    147122            flash.errorMessage = g.message(code: 'default.optimistic.locking.failure') 
    148123            redirect(controller:'taskDetailed', 
     
    183158        if(!result.error) { 
    184159            flash.message = g.message(code: "default.create.success", args: ["TaskProcedure", result.taskProcedureInstance.id]) 
    185             redirect(controller:'taskDetailed', 
    186                             action:'show', 
    187                             id:result.taskProcedureInstance.linkedTask.id, 
    188                             params:[showTab:"showProcedureTab"]) 
     160            redirect(action:'show', id:result.taskProcedureInstance.id) 
    189161            return 
    190162        } 
    191163 
     164        // Task already has a taskProcedure. 
    192165        if(result.error.code == "default.optimistic.locking.failure") { 
    193166            flash.errorMessage = g.message(code: result.error.code, args: result.error.args) 
    194167            redirect(controller:'taskDetailed', 
    195168                            action:'show', 
    196                             id:result.taskProcedureInstance.linkedTask.id, 
     169                            id:params.linkedTask.id, 
    197170                            params:[showTab:"showProcedureTab"]) 
    198171            return 
  • trunk/grails-app/domain/DocumentReference.groovy

    r798 r809  
    1010//     static hasMany = [] 
    1111 
    12     static belongsTo = [TaskProcedure] 
     12    static belongsTo = [TaskProcedure, TaskProcedureRevision] 
     13 
     14    static mapping = { 
     15        batchSize 10 
     16    } 
    1317 
    1418    static constraints = { 
  • trunk/grails-app/domain/MaintenanceAction.groovy

    r798 r809  
    11class MaintenanceAction { 
    22 
    3     TaskProcedure taskProcedure 
    43    MaintenancePolicy maintenancePolicy 
    54    Section section 
     
    1716//     static hasMany = [] 
    1817 
    19     static belongsTo = [TaskProcedure] 
     18    static mapping = { 
     19        batchSize 10 
     20    } 
     21 
     22    static belongsTo = [TaskProcedure, TaskProcedureRevision] 
    2023 
    2124    static constraints = { 
     
    2629        procedureStepNumber(nullable:true) 
    2730        description(blank:false,maxSize:100) 
    28         pageRef(maxSize:100) 
     31        pageRef(maxSize:25) 
    2932    } 
    3033 
  • trunk/grails-app/domain/Task.groovy

    r807 r809  
    1313    AssetSubItem assetSubItem 
    1414    TaskRecurringSchedule taskRecurringSchedule 
    15     TaskProcedure taskProcedure 
     15    TaskProcedureRevision taskProcedureRevision 
    1616 
    1717    String description 
     
    6161        assetSubItem(nullable:true) 
    6262        taskRecurringSchedule(nullable:true) 
    63         taskProcedure(nullable:true) 
     63        taskProcedureRevision(nullable:true) 
    6464 
    6565    } 
  • trunk/grails-app/domain/TaskProcedure.groovy

    r798 r809  
    55 
    66    Task linkedTask 
    7     Person createdBy 
    8     Person lastUpdatedBy 
    9     Date dateCreated = new Date() // autoTimestamp 
    10     Date lastUpdated = new Date() // autoTimestamp 
    117 
    128    def getDescription() { linkedTask.description } 
     
    1511    List maintenanceActions = new ArrayList() 
    1612    List documentReferences = new ArrayList() 
     13    List revisions = new ArrayList() 
    1714 
    18     static hasMany = [tasks: Task, 
    19                                     maintenanceActions: MaintenanceAction, 
    20                                     documentReferences: DocumentReference] 
     15    static hasMany = [maintenanceActions: MaintenanceAction, 
     16                                    documentReferences: DocumentReference, 
     17                                    revisions: TaskProcedureRevision] 
    2118 
    2219    def getMaintenanceActionLazyList() { 
     
    2825    } 
    2926 
    30     static mappedBy = [tasks:"taskProcedure"] 
     27    // The current revision number is equal to the count of the revisions created. 
     28    // More efficient than loading the entire revisions list and using size(). 
     29    // WithTransaction is used to allow calling in a transaction however objects 
     30    // in the current transaction must not trigger DataIntegrityViolationException. 
     31    def getRevision() { 
     32        def revision 
     33        TaskProcedure.withTransaction { 
     34            revision = TaskProcedureRevision.countByTaskProcedure(this) 
     35        } 
     36        return revision 
     37    } 
     38 
     39    // Get a specific revision. 
     40    def getRevision(revision) { 
     41        def taskProcedureRevision 
     42        TaskProcedure.withTransaction { 
     43            taskProcedureRevision = TaskProcedureRevision.findByTaskProcedureAndRevision(this, revision) 
     44        } 
     45        return taskProcedureRevision 
     46    } 
     47 
     48    // Get the latest revision of this procedure. 
     49    def getLatestRevision() { 
     50        def taskProcedureRevision 
     51        TaskProcedure.withTransaction { 
     52            taskProcedureRevision = TaskProcedureRevision.findByTaskProcedureAndRevision(this, this.revision) 
     53        } 
     54        return taskProcedureRevision 
     55    } 
    3156 
    3257    static mapping = { 
     58        linkedTask lazy:false 
     59        revisions batchSize: 10 
    3360        maintenanceActions cascade:"all-delete-orphan" 
    3461        documentReferences cascade:"all-delete-orphan" 
     62        revisions cascade:"all-delete-orphan" 
    3563    } 
    3664 
  • trunk/grails-app/i18n/messages.properties

    r803 r809  
    154154task.operationNotPermittedOnTaskHavingSubTasksWithoutAuth=This operation is not permitted \ 
    155155    on a task that has sub tasks without authorisation. 
    156 task.operationNotPermittedOnTaskLinkedToProcedure=This operation is not permitted \ 
    157     on a task that is linked to a procedure. 
     156task.operationNotPermittedOnTaskLinkedToProcedureWithoutAuth=This operation is not permitted \ 
     157    on a task that is linked to a procedure without authorisation. 
    158158task.operationNotPermittedOnParentPmTask=This operation is not permitted \ 
    159159    on a Parent PM task. 
     
    317317default.create.success={0} {1} created. 
    318318default.create.failure={0} could not be created. 
     319default.create.revision.failure=Could not create revision. 
    319320default.optimistic.locking.failure=Another user has updated this item while you were editing, please check the updated values. 
    320321default.file.over.max.size=Supplied file is greater than max size of {0} {1}. 
  • trunk/grails-app/services/CreateDataService.groovy

    r798 r809  
    140140        createDemoAssignedGroups() 
    141141        createDemoAssignedPersons() 
    142         createDemoTaskProcedure() 
    143         createDemoMaintenanceActions() 
     142//         createDemoTaskProcedure() 
     143//         createDemoMaintenanceActions() 
    144144        createDemoTaskRecurringSchedules() 
    145145 
  • trunk/grails-app/services/TaskProcedureService.groovy

    r798 r809  
    77 
    88    def authService 
     9    def dateUtilService 
    910 
    1011    /** 
     
    2324                result.error = [ code: m.code, args: ["TaskProcedure", params.id] ] 
    2425                // Fetch to prevent lazy initialization error. 
    25                 result.taskProcedureInstance?.linkedTask.primaryAsset 
    26                 result.taskProcedureInstance?.createdBy 
     26                result.taskProcedureInstance.revisions.each {it.createdBy.toString()} 
    2727                return result 
    2828            } 
     
    4040 
    4141            result.taskProcedureInstance.properties = params 
    42             result.taskProcedureInstance.lastUpdatedBy = authService.currentUser 
    43             result.taskProcedureInstance.lastUpdated = new Date() // Required to trigger version increment. 
    4442 
    4543            // Gaps in the html index's can be created by adding 2 items and removing the first one. 
     
    8078            } 
    8179 
     80            def r = createRevision(result.taskProcedureInstance) 
     81            if(r.error) 
     82                return fail(field:'id', code:"default.create.revision.failure") 
     83 
     84            // Also sets: taskInstance.taskProcedureRevision = taskProcedureRevision 
     85            r.taskProcedureRevision.addToTasks(result.taskProcedureInstance.linkedTask) 
     86 
     87            // Update tasks that are using previousRevision. 
     88            // Only those that are not started and due to be started today or in the future. 
     89            def previousRevision = result.taskProcedureInstance.getRevision(r.taskProcedureRevision.revision - 1) 
     90            if(previousRevision) { 
     91                Task.withCriteria { 
     92                    eq("taskProcedureRevision", previousRevision) 
     93                    ge("targetStartDate", dateUtilService.today) 
     94                    taskStatus { 
     95                        idEq(1L) // Not Started. 
     96                    } 
     97                    maxResults(10000) 
     98                }.each { 
     99                    it.taskProcedureRevision = r.taskProcedureRevision 
     100                } 
     101            } 
     102 
    82103            // Success. 
    83104            return result 
    84105 
    85         } //end withTransaction 
     106        } // end withTransaction 
    86107    }  // end update() 
    87108 
     
    96117            def fail = { Map m -> 
    97118                status.setRollbackOnly() 
    98                 if(result.taskProcedureInstance && m.field)  
     119                if(result.taskProcedureInstance && m.field) 
    99120                    result.taskProcedureInstance.errors.rejectValue(m.field, m.code) 
    100121                result.error = [ code: m.code, args: ["TaskProcedure", params.id] ] 
     
    107128 
    108129            // Optimistic locking check on linkedTask. 
    109             if(result.taskProcedureInstance.linkedTask.taskProcedure) 
     130            if(result.taskProcedureInstance.linkedTask.taskProcedureRevision) 
    110131                    return fail(field:"version", code:"default.optimistic.locking.failure") 
    111  
    112             result.taskProcedureInstance.createdBy = authService.currentUser 
    113             result.taskProcedureInstance.lastUpdatedBy = authService.currentUser 
    114132 
    115133            // Gaps in the html index's can be created by adding 2 items and removing the first one. 
     
    124142            } 
    125143 
    126             // Also sets: taskInstance.taskProcedure = taskProcedureInstance 
    127             result.taskProcedureInstance.addToTasks(result.taskProcedureInstance.linkedTask) 
    128  
    129144            if(result.taskProcedureInstance.hasErrors() || !result.taskProcedureInstance.save()) { 
    130145                // Populate collection errors for display. 
     
    134149            } 
    135150 
    136         } //end withTransaction 
    137  
    138         result.taskProcedureInstance.lastUpdated = new Date() // Required to trigger version increment to 1. 
    139  
    140         // success 
     151            def r = createRevision(result.taskProcedureInstance) 
     152            if(r.error) 
     153                return fail(field:'id', code:"default.create.revision.failure") 
     154 
     155            // Also sets: taskInstance.taskProcedureRevision = taskProcedureRevision 
     156            r.taskProcedureRevision.addToTasks(result.taskProcedureInstance.linkedTask) 
     157 
     158        } // end withTransaction 
     159 
     160        // Success. 
    141161        return result 
    142162    }  // end save() 
    143163 
     164    /** 
     165    * Creates a new taskProcedureRevision. 
     166    * @param taskProcedureInstance The taskProcedure to create the revision for. 
     167    * @returns A map containing result.error (if any error) and result.taskProcedureRevision. 
     168    */ 
     169    def createRevision(taskProcedureInstance) { 
     170        def result = [:] 
     171        TaskProcedureRevision.withTransaction { status -> 
     172            def fail = { Map m -> 
     173                status.setRollbackOnly() 
     174                if(result.taskProcedureRevision && m.field) 
     175                    result.taskProcedureRevision.errors.rejectValue(m.field, m.code) 
     176                result.error = [ code: m.code, args: ["TaskProcedureRevision"] ] 
     177                return result 
     178            } 
     179 
     180            result.taskProcedureRevision = new TaskProcedureRevision() 
     181            taskProcedureInstance.addToRevisions(result.taskProcedureRevision) 
     182 
     183            result.taskProcedureRevision.taskProcedure = taskProcedureInstance 
     184            result.taskProcedureRevision.linkedTask = taskProcedureInstance.linkedTask 
     185            result.taskProcedureRevision.createdBy =  authService.currentUser 
     186            result.taskProcedureRevision.revision = 0 // init to prevent DataIntegrityViolationException 
     187            result.taskProcedureRevision.revision = taskProcedureInstance.revision 
     188            taskProcedureInstance.maintenanceActions.each { 
     189                result.taskProcedureRevision.addToMaintenanceActions(new MaintenanceAction(it.properties)) 
     190            } 
     191            taskProcedureInstance.documentReferences.each { 
     192                result.taskProcedureRevision.addToDocumentReferences(new DocumentReference(it.properties)) 
     193            } 
     194 
     195            if(result.taskProcedureRevision.hasErrors() || !result.taskProcedureRevision.save()) { 
     196                log.error result.taskProcedureRevision.errors 
     197                return fail(code:"default.create.failure") 
     198            } 
     199 
     200        } // end withTransaction 
     201 
     202        // Success. 
     203        return result 
     204    } // end createRevision() 
     205 
    144206} // end class 
  • trunk/grails-app/services/TaskRecurringScheduleService.groovy

    r445 r809  
    6868                p.targetStartDate = it.nextTargetStartDate 
    6969                p.targetCompletionDate = it.nextTargetCompletionDate 
    70                 if(it.task.taskProcedure) p.taskProcedure = it.task.taskProcedure 
     70                if(it.task.taskProcedureRevision) p.taskProcedureRevision = it.task.taskProcedureRevision 
    7171                if(it.task.assignedGroups) p.assignedGroups = new ArrayList(it.task.assignedGroups) 
    7272                if(it.task.assignedPersons) p.assignedPersons = new ArrayList(it.task.assignedPersons) 
  • trunk/grails-app/services/TaskService.groovy

    r802 r809  
    188188    * Creates a subTask copying sane attributes from the parentTask unless otherwise specified in params. 
    189189    * The targetStartDate and targetCompletionDate default to today since that is the sane thing to do. 
    190     * The taskProcedure is only assigned to the sub task if supplied in params. 
     190    * The taskProcedureRevision is only assigned to the sub task if supplied in params. 
    191191    * The assignedPersons and assignedGroups are only added to the sub task if supplied in params. 
    192192    * The positiveFault property is never set on the subTask. 
     
    228228 
    229229        // Supplied by recurring tasks. 
    230         if(params.taskProcedure) p.taskProcedure = params.taskProcedure 
     230        if(params.taskProcedureRevision) p.taskProcedureRevision = params.taskProcedureRevision 
    231231        if(params.assignedGroups) p.assignedGroups = params.assignedGroups // Collection. 
    232232        if(params.assignedPersons) p.assignedPersons = params.assignedPersons // Collection. 
     
    691691            } 
    692692 
    693             // Check for taskProcedure using this task as linkedTask. 
    694             if(result.taskInstance.taskProcedure?.linkedTask?.id == result.taskInstance.id) 
    695                 return fail(field:"taskProcedure", code:"task.operationNotPermittedOnTaskLinkedToProcedure") 
     693            // Check for taskProcedureRevision using this task as linkedTask. 
     694            if(result.taskInstance.taskProcedureRevision?.linkedTask?.id == result.taskInstance.id) { 
     695                if(!authenticateService.ifAnyGranted('ROLE_AppAdmin,ROLE_Manager,ROLE_TaskManager')) 
     696                    return fail(field:"taskProcedureRevision", code:"task.operationNotPermittedOnTaskLinkedToProcedureWithoutAuth") 
     697            } 
    696698 
    697699            // Check for Parent PM task type. 
    698700            if(result.taskInstance.taskType.id == 6) 
    699                 return fail(field:"taskProcedure", code:"task.operationNotPermittedOnParentPmTask") 
     701                return fail(field:"taskType", code:"task.operationNotPermittedOnParentPmTask") 
    700702 
    701703            result.taskInstance.trash = true 
  • trunk/grails-app/views/taskDetailed/show.gsp

    r803 r809  
    524524                        </g:if> 
    525525                        <g:else> 
    526                             <div class="dialog"> 
    527                                 <table> 
    528                                     <tbody> 
    529  
    530                                         <tr class="prop"> 
    531                                             <td valign="top" class="name">Procedure Id:</td> 
    532                                             <td valign="top" class="value"> 
    533                                                 ${fieldValue(bean:taskProcedureInstance, field:'id')} 
    534                                             </td> 
    535                                         </tr> 
    536  
    537                                         <tr class="prop"> 
    538                                             <td valign="top" class="name">Linked Task:</td> 
    539                                             <td valign="top" class="value"> 
    540                                                 <g:link controller="taskDetailed" 
    541                                                                 action="show" 
    542                                                                 id="${taskProcedureInstance.linkedTask.id}"> 
    543                                                     ${taskProcedureInstance.linkedTask.encodeAsHTML()} 
    544                                                 </g:link> 
    545                                             </td> 
    546                                         </tr> 
    547  
    548                                         <tr class="prop"> 
    549                                             <td valign="top" class="name">Linked Asset:</td> 
    550                                             <td valign="top" class="value"> 
    551                                                 <g:render template="/shared/assetTreeCompact" model="['assetInstance': taskProcedureInstance.linkedTask.primaryAsset]" /> 
    552                                             </td> 
    553                                         </tr> 
    554  
    555                                         <tr class="prop"> 
    556                                             <td valign="top" class="name">Version:</td> 
    557                                             <td valign="top" class="value"> 
    558                                                     ${fieldValue(bean:taskProcedureInstance, field:'version')} 
    559                                             </td> 
    560                                         </tr> 
    561  
    562                                         <tr class="prop"> 
    563                                             <td valign="top" class="name">Last Updated:</td> 
    564                                             <td valign="top" class="value"> 
    565                                                 <g:formatDate date="${taskProcedureInstance.lastUpdated}" 
    566                                                                             format="EEE, dd-MMM-yyyy"/> 
    567                                             </td> 
    568                                         </tr> 
    569  
    570                                     </tbody> 
    571                                 </table> 
    572                             </div> 
    573                             <div class="buttons"> 
    574                                 <g:form controller="taskProcedureDetailed"> 
    575                                     <input type="hidden" name="id" value="${taskProcedureInstance?.id}" /> 
    576                                     <span class="button"><g:actionSubmit class="edit" value="Edit" /></span> 
    577                                 </g:form> 
    578                             </div> 
    579  
    580                             <br /> 
    581  
    582                             <g:if test="${taskProcedureInstance.documentReferences}"> 
    583                                 <div class="list"> 
    584                                     <table> 
    585                                         <thead> 
    586                                             <tr> 
    587                                                 <th>Document Reference</th> 
    588                                                 <th>Location</th> 
    589                                             </tr> 
    590                                         </thead> 
    591                                         <tbody> 
    592                                             <g:each in="${taskProcedureInstance.documentReferences}" status="i" var="docRef"> 
    593                                                 <tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> 
    594  
    595                                                     <td valign="top" class="name"> 
    596                                                         ${fieldValue(bean:docRef, field:'name')} 
    597                                                     </td> 
    598  
    599                                                     <td  valign="top" style="text-align:left;" class="value"> 
    600                                                         <custom:easyUrl url="${docRef.location}" /> 
    601                                                     </td> 
    602  
    603                                                 </tr> 
    604                                             </g:each> 
    605  
    606                                         </tbody> 
    607                                     </table> 
    608                                 </div> 
    609                             </g:if> 
    610  
    611                             <br /> 
    612  
    613                             <div class="list"> 
    614                                 <table> 
    615                                     <thead> 
    616                                         <tr> 
    617                                             <th>Step</th> 
    618                                             <th>Assembly</th> 
    619                                             <th>Description</th> 
    620                                             <th>Page Ref</th> 
    621                                             <th>Condition</th> 
    622                                         </tr> 
    623                                     </thead> 
    624                                     <tbody> 
    625                                         <g:each in="${maintenanceActionList}" status="i" var="maintenanceAction"> 
    626                                             <tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> 
    627  
    628                                                 <td valign="top" class="name"> 
    629                                                     ${fieldValue(bean:maintenanceAction, field:'procedureStepNumber')} 
    630                                                 </td> 
    631  
    632                                                 <td  valign="top" style="text-align:left;" class="value"> 
    633                                                     <g:if test="${maintenanceAction.assetSubItem}"> 
    634                                                         ${maintenanceAction.assetSubItem.parentItem?.encodeAsHTML()} 
    635                                                         -- 
    636                                                         ${maintenanceAction.assetSubItem.encodeAsHTML()} 
    637                                                     </g:if> 
    638                                                 </td> 
    639  
    640                                                 <td  valign="top" style="text-align:left;" class="value"> 
    641                                                     ${fieldValue(bean:maintenanceAction, field:'description')} 
    642                                                 </td> 
    643  
    644                                                 <td  valign="top" style="text-align:left;" class="value"> 
    645                                                     ${fieldValue(bean:maintenanceAction, field:'pageRef')} 
    646                                                 </td> 
    647  
    648                                                 <td  valign="top" style="text-align:left;" class="value"> 
    649                                                 </td> 
    650  
    651                                             </tr> 
    652                                         </g:each> 
    653  
    654                                     </tbody> 
    655                                 </table> 
    656                             </div> 
    657  
     526                            <g:render template="/taskProcedureDetailed/taskProcedureRevision" 
     527                                                model="['taskProcedureRevision':taskProcedureRevision]" /> 
    658528                        </g:else> 
    659529 
  • trunk/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp

    r798 r809  
    3131            </tr> 
    3232 
    33             <g:if test="${taskProcedureInstance.version}"> 
     33            <g:if test="${taskProcedureInstance.id}"> 
    3434                <tr class="prop"> 
    35                     <td valign="top" class="name">Version:</td> 
     35                    <td valign="top" class="name">Revisions:</td> 
    3636                    <td valign="top" class="value"> 
    37                             ${fieldValue(bean:taskProcedureInstance, field:'version')} 
    38                     </td> 
    39                 </tr> 
    40  
    41                 <tr class="prop"> 
    42                     <td valign="top" class="name">Created By:</td> 
    43                     <td valign="top" class="value"> 
    44                             ${fieldValue(bean:taskProcedureInstance, field:'createdBy')} 
    45                             on 
    46                             <g:formatDate date="${taskProcedureInstance.dateCreated}" format="EEE, dd-MMM-yyyy @ HH:mm"/> 
    47                     </td> 
    48                 </tr> 
    49  
    50                 <tr class="prop"> 
    51                     <td valign="top" class="name">Last Updated By:</td> 
    52                     <td valign="top" class="value"> 
    53                             ${fieldValue(bean:taskProcedureInstance, field:'lastUpdatedBy')} 
    54                             on 
    55                             <g:formatDate date="${taskProcedureInstance.lastUpdated}" format="EEE, dd-MMM-yyyy @ HH:mm"/> 
     37                        <ul> 
     38                        <g:each var="r" in="${taskProcedureInstance.revisions}"> 
     39                            <li> 
     40                                <g:link action="show" id="${taskProcedureInstance.id}" params="['revision':r.revision]"> 
     41                                    ${r.fullRevisionString.encodeAsHTML()} 
     42                                </g:link> 
     43                            </li> 
     44                        </g:each> 
     45                        </ul> 
    5646                    </td> 
    5747                </tr> 
  • trunk/grails-app/views/taskProcedureDetailed/edit.gsp

    r798 r809  
    3131                    <span class="button"><g:actionSubmit class="save" value="Update" /></span> 
    3232                    <span class="button"><g:actionSubmit class="cancel" value="Cancel" action="Show"/></span> 
    33                     <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span> 
    3433                </div> 
    3534            </g:form> 
  • trunk/grails-app/views/taskProcedureDetailed/list.gsp

    r798 r809  
    1414        </div> 
    1515        <div class="body"> 
    16             <g:if test="${flash.message}"> 
    17             <div class="message">${flash.message}</div> 
    18             </g:if> 
     16            <g:render template="/shared/messages" /> 
    1917            <filterpane:currentCriteria domainBean="TaskProcedure" 
    2018                                    action="list" 
Note: See TracChangeset for help on using the changeset viewer.