Changeset 264

Show
Ignore:
Timestamp:
15-03-10 02:59:21 (4 years ago)
Author:
jahn
Message:

There are still errors in saving the Events. The errors are related to the Maps that associate ProtocolParameters? with "hasMany" members.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/views/event/edit.gsp

    r247 r264  
    99 
    1010 
     11 
     12 
     13 
    1114<body> 
    1215 
    1316 
     17 
     18 
     19<script type="text/javascript"> 
     20 
     21     var nextSampleRowId=0; 
     22 
     23     function addAddButton(elementId,sampleTableId) { 
     24         var parent=document.getElementById(elementId); 
     25         var button=document.createElement('input'); 
     26         button.setAttribute('type','button'); 
     27         button.setAttribute('onclick','addEmptySampleRow(\''+sampleTableId+'\');'); 
     28         button.value='add Sample'; 
     29         parent.appendChild(button); 
     30     } 
     31 
     32 
     33     function addEmptySampleRow(elementId) { 
     34          addSampleRow(elementId,'',''); 
     35     } 
     36 
     37 
     38     function addSampleRow(elementId,text1,text2) { 
     39             addSampleRowWithId(elementId,text1,text2,nextSampleRowId); 
     40             nextSampleRowId++; 
     41     } 
     42 
     43 
     44     function addSampleRowWithId(elementId,text1,text2,newId) { 
     45 
     46        var parent=document.getElementById(elementId); 
     47        var tr=document.createElement('tr'); 
     48        tr.id='samplerow'+newId; 
     49        parent.appendChild(tr); 
     50 
     51        var td1=document.createElement('td'); 
     52        var input1= document.createElement('input'); 
     53        input1.type='text'; 
     54        input1.value=text1; 
     55        input1.name='sampleName'+(newId); 
     56        input1.id=input1.name 
     57        td1.appendChild(input1); 
     58 
     59        var td2=document.createElement('td'); 
     60        var input2= document.createElement('input'); 
     61        input2.type='text'; 
     62        input2.value=text2; 
     63        input2.name='sampleMaterial'+(newId); 
     64        input2.id=input2.name 
     65        td2.appendChild(input2); 
     66 
     67        tr.appendChild(td1); 
     68        tr.appendChild(td2); 
     69 
     70        var td3=document.createElement('td'); 
     71        var button=document.createElement('input'); 
     72        button.setAttribute('type','button'); 
     73        button.value='delete'; 
     74        button.onclick=function(){jQuery(tr).remove();} 
     75        tr.appendChild(td3); 
     76        td3.appendChild(button); 
     77     } 
     78 
     79</script> 
     80 
     81 
     82 
     83 
    1484        <div class="body"> 
    1585 
    1686            <h1><g:message code="default.create.label" args="[entityName]" /></h1> 
     87 
    1788 
    1889            <g:if test="${flash.message}"> 
     
    2495 
    2596 
    26  
    2797            <g:form action="save" method="post" id="${eventInstance.id}"> 
    2898 
     
    32102 
    33103 
    34                             <tr class="prop"> 
    35                                 <td valign="top" class="name"> 
    36                                     <label for="subject"><g:message code="event.subject.label" default="Subject" /></label> 
    37                                 </td> 
    38                                 <td valign="top" class="value" > 
    39                                     <g:select id="subject" name="subject.id" from="${dbnp.studycapturing.Subject.list()}" optionKey="id" optionValue="name" value="${eventInstance?.subject?.id}" /> 
    40                                 </td> 
    41                             </tr> 
     104                            <!-- show the EventDescription --> 
     105 
     106                            <tr class="prop"> 
     107                                <td valign="top" class="name"> 
     108                                  <label for="name"><g:message code="eventDescription.name.label" default="Name" /></label> 
     109                                </td> 
     110                                <td valign="top" class="value ${hasErrors(bean: description, field: 'name', 'errors')}"> 
     111                                    <g:textField name="name" value="${description?.name}" /> 
     112                                </td> 
     113                            </tr> 
     114 
     115 
     116                            <tr class="prop"> 
     117                                <td valign="top" class="name"> 
     118                                  <label for="description"><g:message code="eventDescription.description.label" default="Description" /></label> 
     119                                </td> 
     120                                <td valign="top" class="value ${hasErrors(bean: description, field: 'description', 'errors')}"> 
     121                                    <g:textArea name="description" value="${description?.description}" cols="40" rows="6" /> 
     122                                </td> 
     123                            </tr> 
     124 
     125 
     126                            <!-- show Event members --> 
    42127 
    43128                            <tr class="prop"> 
     
    75160                            </tr> 
    76161 
    77                             <g:render template="../common/eventDescriptionTableRows" model="${[description:description, event:event]}"/> 
    78  
    79  
    80                             <tr class="prop"> 
    81                             <td>This is a sampling event </td> 
    82                             <td valign="top" class="value ${hasErrors(bean: description, field: 'protocol', 'errors')}"> 
    83                                  <g:select name="mySampleEvent" id="mySampleEvent" from="${['yes','no']}" value="${isSamplingEvent}" onchange="${remoteFunction(action:'showSample', controller='event', update:'samplePartial', onComplete:'Effect.Appear(samplePartial)', id:params['id'], params:'\'wantSample=\' + this.value',)}" /> 
    84                             </td> 
    85                             </tr> 
    86  
    87  
    88                         </tbody> 
    89  
    90  
    91  
    92                         <tbody id="samplePartial">  
    93  
    94                         <g:if  test="${(eventInstance.isSamplingEvent()) && (eventInstance.samples!=null)}" > 
    95                                 <% def list = eventInstance.samples %> 
    96                                 <% list.sort{ a,b -> a.name <=> b.name }%> 
    97                                 <g:each in="${list}"> 
    98                                 <tr class="prop"> 
    99                                         <td valign="top" class="name" width=200 > 
    100                                         <label><%=  it.name %> </label> 
    101                                         </td> 
    102                                         <td valign="top" class="name"> 
    103                                         <g:textField name="${it.name}" value="" /> 
    104                                         </td> 
    105                                 </tr> 
    106                                 </g:each> 
    107                         </g:if> 
    108                         </tbody> 
    109  
    110  
     162 
     163 
     164                            <!-- select protocol --> 
     165 
     166                            <tr class="prop"> 
     167 
     168                                <td valign="top" class="name" width=200 > 
     169                                  <label for="protocol"><g:message code="eventDescription.protocol.label" default="Protocol" /></label> 
     170                                </td> 
     171                                <td valign="top" class="value ${hasErrors(bean: description, field: 'rotocol', 'errors')}"> 
     172                                    <% protocols=dbnp.studycapturing.Protocol.list() %> 
     173                                    <g:select name="protocol" id="protocol" from="${protocols}" optionKey="id" optionValue="${{it.name}}" 
     174                                              value="${{it?.id}}" onchange="${remoteFunction(action:'showPartial', controller:'eventDescription', update:'preview', 
     175                                              params:'\'protocolid=\' + this.value')} " /> 
     176                                </td> 
     177                            </tr> 
     178 
     179 
     180                            <!-- this part changes dynamically on select --> 
     181 
     182                            <tbody id="preview"> 
     183                                <g:include action='showPartial' controller='eventDescription' params="[protocolid:protocols[0].id]" id="${eventInstance.id}" /> 
     184                            </tbody> 
     185 
     186 
     187 
     188                        </tbody>                <!-- end of main table --> 
     189 
     190 
     191 
     192 
     193 
     194 
     195 
     196                        <!-- samplePartial --> 
     197 
     198                        <g:if test="${showSample}"> 
     199 
     200                             <tbody> 
     201                                     <tr> <td> Sample </td>  <td> 
     202                                     <table>  
     203                                     <thead> <th>Name</th> <th>Material</th> <th> Delete </th> </thead> 
     204                                     <tbody id="Samples" class="Samples"> </tbody> 
     205                                     </table> 
     206                                     </td> </tr> 
     207                                     <g:each var="sample" in="${samples}">  
     208                                             <script type="text/javascript"> 
     209                                                     addSampleRowWithId('Samples',"${sample.name}","${sample.material}","_existing_${sample.id}") 
     210                                             </script> 
     211                                     </g:each> 
     212                                     <tr><td></td><td id="sampleAddButtonRow"></td></tr> 
     213                             </tbody> 
     214 
     215                             <script type="text/javascript"> 
     216                                     addAddButton('sampleAddButtonRow','Samples'); 
     217                             </script> 
     218 
     219                        </g:if> 
    111220 
    112221 
     
    115224                </div> 
    116225 
    117  
    118226                <div class="buttons"> 
    119                     <span class="button"><g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Save')}" /></span> 
     227                    <span class="button"><g:submitButton name="save" class="save" value="${message(code: 'default.button.save.label', default: 'Save')}" /></span> 
    120228                </div> 
    121229 
     
    123231            </g:form> 
    124232        </div> 
     233 
     234 
    125235</body> 
    126236</html>