Ignore:
Timestamp:
Mar 7, 2011, 12:01:52 PM (10 years ago)
Author:
robert@…
Message:

Improved simple wizard so that is can edit studies

Location:
trunk/grails-app/views
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/views/simpleWizard/assays.gsp

    r1581 r1591  
    3838                        <input type="hidden" name="wizard" value="true" />
    3939                        <input type="hidden" name="event" value="refresh" />
    40                
    4140                        <af:templateElement name="template" description="Template"
    42                                 value="${assay?.template}" entity="${dbnp.studycapturing.Assay}"
     41                                value="${wizardAssay?.template}" entity="${dbnp.studycapturing.Assay}"
    4342                                addDummy="true" onChange="if(\$( this ).val() != '') { submitForm( 'assays' ); }">
    4443                                Choose the type of assay you would like to perform.
     
    4645                        </af:templateElement>
    4746               
    48                         <g:if test="${assay}">
    49                                 <af:templateElements ignore="externalassayid" entity="${assay}" />
     47                        <g:if test="${wizardAssay}">
     48                                <af:templateElements ignore="externalassayid" entity="${wizardAssay}" />
    5049                        </g:if>
    5150               
  • trunk/grails-app/views/simpleWizard/columns.gsp

    r1581 r1591  
    4343                                        <tr class="matchWith">
    4444                                                <g:each in="${excel.data.header}" var="mappingcolumn" status="i">
     45                                                        <%
     46                                                                def selectedValue;
     47                                                                if( mappingcolumn.entityclass?.name && mappingcolumn.property )
     48                                                                        selectedValue = mappingcolumn.entityclass.name[ mappingcolumn.entityclass.name.lastIndexOf( "." ) + 1 .. -1 ] + mappingcolumn.property;
     49                                                        %>
    4550                                                        <td>
    4651                                                                <g:set var="selected" value="${mappingcolumn.property}"/>
    47                                                                 <importer:propertyChooser name="matches" mappingcolumn="${mappingcolumn}" matchvalue="${mappingcolumn.name}"
    48                                                                         selected="${selected}" fuzzymatching="true" treshold="0.8" template_id="${template.id}" "allfieldtypes="true"/>
     52                                                                <% /* Put a select box with template fields of multiple entities */ %>
     53                                                                <select name="matches.index.${mappingcolumn.index}" style="font-size: 10px;">
     54                                                                        <option value="dontimport">Don't import</option>
     55                                                                        <g:each in="${templates}" var="entityTemplates">
     56                                                                                <g:if test="${entityTemplates.value}">
     57                                                                                        <optgroup label="${entityTemplates.key}">
     58                                                                                                <%
     59                                                                                                        def allFields = domainFields[ entityTemplates.key ] + entityTemplates.value?.fields;
     60                                                                                                %>
     61                                                                                                <g:each in="${allFields}" var="field">
     62                                                                                                        <%
     63                                                                                                                def value = entityTemplates.key + "||" + field.name
     64                                                                                                                def selected = ( value == selectedValue );
     65                                                                                                        %>
     66                                                                                                        <option value="${value}" <g:if test="${selected}">selected="selected"</g:if>>
     67                                                                                                                ${field.name} <g:if test="${field.preferredIdentifier}">[identifier]</g:if>
     68                                                                                                       
     69                                                                                                </g:each>
     70                                                                                        </optgroup>
     71                                                                                </g:if>
     72                                                                        </g:each>
     73                                                                </select>
    4974                                                        </td>
    5075                                                </g:each>
  • trunk/grails-app/views/simpleWizard/missingFields.gsp

    r1581 r1591  
    4747                       
    4848                        <div class="wizard" id="wizard">
    49                             <div class="tableEditor">
    50                                 <g:set var="showHeader" value="${true}"/>
    51                                     <g:each status="index" var="table" in="${imported.data}">
    52                                                 <g:each status="i" var="entity" in="${table}">
    53                                                     <g:if test="${showHeader}">
    54                                                                 <g:set var="showHeader" value="${false}"/>
    55                                                                 <div class="header">
    56                                                                         <div class="firstColumn"></div>
    57                                                                         <af:templateColumnHeaders entity="${entity}" class="column" />
    58                                                                 </div>
    59                                                                 <input type="hidden" name="entity" value="${entity.getClass().getName()}">
    60                                                     </g:if>
    61                                                     <div class="row">
     49                                <g:set var="showHeader" value="${true}" />
     50                                <g:set var="previousTemplate" value=""/>                       
     51                                <div class="tableEditor">
     52                                        <g:each var="record" in="${records}">
     53                                                <g:if test="${showHeader}">
     54                                                        <g:set var="showHeader" value="${false}" />
     55                                                        <div class="header">
    6256                                                                <div class="firstColumn"></div>
    63                                                                 <af:templateColumns id="${entity.hashCode()}" entity="${entity}" template="${entity.template}" name="entity_${entity.getIdentifier()}" class="column" subject="${entity.hashCode()}" addDummy="true" />
    64                                                     </div>
    65                                                 </g:each>
    66                                     </g:each>
    67                             </div>
    68                             <div class="sliderContainer">
    69                               <div class="slider"></div>
    70                             </div>
     57                                                                <g:each var="entity" in="${record}">
     58                                                                        <g:if test="${entity.value}">
     59                                                                                <af:templateColumnHeaders entity="${entity.value}" class="column" columnWidths="[Name:100]"/>
     60                                                                        </g:if>
     61                                                                </g:each>
     62                                                        </div>
     63                                                </g:if>
     64                                                <div class="row">
     65                                                        <div class="firstColumn"></div>
     66                                                        <g:each var="entity" in="${record}">
     67                                                                <g:if test="${entity.value}">
     68                                                                        <af:templateColumns  id="${entity.value.hashCode()}" name="${entity.key.toLowerCase()}_${entity.value.getIdentifier()}" template="${entity.value.template}" class="column" id="1" entity="${entity.value}" addDummy="true" subject="${entity.hashCode()}" />
     69                                                                </g:if>
     70                                                        </g:each>
     71                                                </div>
     72                                        </g:each>
     73                                </div>
     74                                <div class="sliderContainer">
     75                                        <div class="slider" ></div>
     76                                </div>
    7177                    <div>
    7278                </g:form>
  • trunk/grails-app/views/simpleWizard/overview.gsp

    r1581 r1591  
    8989               
    9090                <div class="element">
    91                         <div class="description">Sample template</div>${study.samples?.getAt(0)?.template?.name}
     91                        <div class="description">Samples</div>
     92                       
     93                        <g:if test="${study.samples?.size()}">
     94                                <g:each in="${study.samples.template.unique()}" var="currentSampleTemplate" status="j">
     95                                        <g:if test="${currentSampleTemplate}">
     96                                                <g:if test="${j > 0}">,</g:if>
     97                                                <%=study.samples.findAll { return it.template == currentSampleTemplate; }.size()%>
     98                                                ${currentSampleTemplate.name}
     99                                        </g:if>
     100                                </g:each>
     101                        </g:if>
     102                        <g:else>
     103                                -
     104                        </g:else>
    92105                </div>
    93                 <div class="element">
    94                         <div class="description"># samples</div>${study.samples?.size()}
    95                 </div>
    96                 <div class="element">
    97                         <div class="description">Assay template</div>${study.assays?.getAt(0)?.template?.name}
    98                 </div>
     106               
     107                <br />
     108                <g:if test="${wizardAssay}">
     109                        <div class="element">
     110                                <div class="description">Assay template</div>${wizardAssay.template?.name}
     111                        </div>
     112                </g:if>
    99113
    100114                <br clear="all" />
  • trunk/grails-app/views/simpleWizard/samples.gsp

    r1581 r1591  
    2727                        <input type="hidden" name="wizard" value="true" />
    2828                        <input type="hidden" name="event" value="refresh" />
    29                
    30                         <g:if test="${study.samples?.size()}">
    31                                 <p>Current samples</p>
    32                                 <g:each in="${study.samples}" var="sample">
    33                                         ${sample.name}<br />
    34                                 </g:each>
    35                                
    36                                 <p class="options">
    37                                         <a href="#" onClick="$('#samplesDialog').dialog('open'); return false;" class="add">Add samples</a>
    38                                         <a href="#" onClick="$('#samplesDialog').dialog('open'); return false;" class="update">Update samples</a>
    39                                 </p>
    40                                
    41                                 <% /* If samples are already present, the dialog should not be opened by default */ %>
    42                                 <script type="text/javascript">
    43                                         $( '#samplesDialog' ).dialog({
    44                                                 title   : "Add/update samples",
    45                                                 autoOpen: false,
    46                                                 width   : 800,
    47                                                 height  : 400,
    48                                                 modal   : true,
    49                                                 position: "center",
    50                                                 buttons : {
    51                                                         Add  : function() {
    52                                                                 //addUser(element_id);
    53                                                                 $(this).dialog("close");
    54                                                         },
    55                                                         Update  : function() {
    56                                                                 //addUser(element_id);
    57                                                                 $(this).dialog("close");
    58                                                         },
    59                                                         Close  : function() {
    60                                                                 $(this).dialog("close");
    61                                                         }
    62                                                 },
    63                                                 close   : function() {
    64                                                         /* closeFunc(this); */
    65                                                 }
    66                                         });             
    67                                 </script>
    68                         </g:if>
     29
    6930                        <div id="samplesDialog">
    7031                        <span class="info">
    7132                                        <span class="title">Import sample data</span>
    72                                         You can import your Excel data to the server by choosing a file from your local harddisk in the form below.
     33                                        You can import your Excel data to the server by choosing a file from your local harddisk in the form below. The excel sheet should contain
     34                                        data on the first sheet, and the sheet should contain one row with headers.
    7335                                </span>
    7436                   
     
    8345                                        </tr>
    8446                                        <tr>
    85                                             <td width="100px">
    86                                                 Use data from sheet:
    87                                             </td>
    88                                             <td width="100px">
    89                                                 <g:select name="sheetindex" from="${1..25}" value="${sampleForm?.sheetIndex}"/>
    90                                             </td>
    91                                         </tr>
    92                                         <tr>
    93                                             <td width="100px">
    94                                                 Columnheader starts at row:
    95                                             </td>
    96                                             <td width="100px">
    97                                                 <g:select name="headerrow" from="${1..10}" value="${sampleForm?.headerRow}"/>
    98                                             </td>
    99                                         </tr>
    100                                         <tr>
    101                                             <td width="100px">
    102                                                 Data starts at row:
    103                                             </td>
    104                                             <td width="100px">
    105                                                 <g:select name="datamatrix_start" from="${2..10}" value="${sampleForm?.dataMatrixStart}"/>
    106                                             </td>
    107                                         </tr>   
    108                                         <tr>
    10947                                            <td>
    11048                                                <div id="datatemplate">Choose type of sample template:</div>
    11149                                            </td>
    11250                                            <td>
    113                                                         <g:select rel="template" entity="${encodedEntity}" name="template_id" optionKey="id" optionValue="name" from="${sampleTemplates}" value="${sampleForm?.templateId}"/>
     51                                                        <g:select rel="template" entity="${encodedEntity.Sample}" name="sample_template_id" optionKey="id" optionValue="name" from="${templates.Sample}"/>
    11452                                            </td>
    11553                                        </tr>
    11654                                </table>       
    117                        
    11855                        </div>
    11956               
  • trunk/grails-app/views/simpleWizard/save.gsp

    r1581 r1591  
    2222                </g:if>         
    2323
    24                 ${study}
    25                
    26                 <g:form class="simpleWizard" name="saved" action="saved" controller="simpleWizard">
     24                <g:form class="simpleWizard" name="saved" action="save" controller="simpleWizard">
    2725                        <input type="hidden" name="wizard" value="true" />
    2826                        <input type="hidden" name="event" value="refresh" />
    2927               
    3028                        <p class="options">
    31                                 <g:link class="view" controller="study" action="show" id="${study.id}">View study</g:link>
    32                                 <g:link class="edit" controller="simpleWizard" action="study" id="${study.id}">Edit study</g:link>
    33                                 <g:link class="restart" controller="simpleWizard" action="study">Add another study</g:link>
     29                                <g:if test="${success}">
     30                                        <g:link class="view" controller="study" action="show" id="${study.id}">View study</g:link>
     31                                        <g:link class="edit" controller="simpleWizard" action="study" id="${study.id}">Edit study</g:link>
     32                                        <g:link class="restart" controller="simpleWizard" action="study">Add another study</g:link>
     33                                </g:if>
     34                                <g:else>
     35                                        <a href="#" onClick="submitForm( 'saved', 'previous' ); return false;" class="previous">Previous</a>
     36                                </g:else>
    3437                        </p>
    3538                       
  • trunk/grails-app/views/studyWizard/pages/_samples.gsp

    r1461 r1591  
    3636
    3737        <g:if test="${study.samples}">
    38                 <g:if test="${study.samples.findAll{!it.template}.size()}">
     38                <g:if test="${study.samples.findAll{!it?.template}.size()}">
    3939                <h1>Samples that still need to have a template assigned</h1>
    4040                <div class="tableEditor">
     
    4848                <g:set var="previousTemplate" value=""/>
    4949                <g:each var="sample" in="${study.samples}">
    50                         <g:if test="${!sample.template}">
     50                        <g:if test="${!sample?.template}">
    5151                                <div class="row">
    5252                                        <div class="firstColumn">&nbsp;</div>
    5353                                        <div class="column">
    54                                                 <g:if test="${previousTemplate != sample.parentEvent.template.name}">
    55                                                         <g:set var="previousTemplate" value="${sample.parentEvent.template.name}"/>
    56                                                         ${sample.parentEvent.template.name}
     54                                                <g:if test="${previousTemplate != sample.parentEvent?.template?.name}">
     55                                                        <g:set var="previousTemplate" value="${sample.parentEvent?.template?.name}"/>
     56                                                        ${sample.parentEvent?.template?.name}
    5757                                                        <div class="helpIcon"></div>
    5858                                                        <div class="helpContent">
    59                                                                 <h1>${sample.parentEvent.template.name}</h1>
     59                                                                <h1>${sample.parentEvent?.template?.name}</h1>
    6060                                                                <h2>Template Fields:</h2>
    61                                                                 <g:each var="field" in="${sample.parentEvent.giveFields()}">
     61                                                                <g:each var="field" in="${sample.parentEvent?.giveFields()}">
    6262                                                                        ${field.name[0].toUpperCase() + field.name.substring(1)}<br/>
    6363                                                                </g:each>
     
    6666                                        </div>
    6767                                        <div class="column">
    68                                                 ${sample.parentSubject.name}
     68                                                ${sample.parentSubject?.name}
    6969                                                <div class="helpIcon"></div>
    7070                                                <div class="helpContent">
    71                                                         <h1>${sample.parentSubject.template.name}</h1>
     71                                                        <h1>${sample.parentSubject?.template?.name}</h1>
    7272                                                        <h2>Template Fields:</h2>
    73                                                         <g:each var="field" in="${sample.parentSubject.giveFields()}">
     73                                                        <g:each var="field" in="${sample.parentSubject?.giveFields()}">
    7474                                                                ${field.name[0].toUpperCase() + field.name.substring(1)}<br/>
    7575                                                        </g:each>
     
    109109                                        <div class="firstColumn"></div>
    110110                                        <div class="column">
    111                                                 <g:if test="${previousTemplate != sample.parentEvent.template.name}">
    112                                                         <g:set var="previousTemplate" value="${sample.parentEvent.template.name}"/>
    113                                                         ${sample.parentEvent.template.name}
     111                                                <g:if test="${previousTemplate != sample.parentEvent?.template?.name}">
     112                                                        <g:set var="previousTemplate" value="${sample.parentEvent?.template?.name}"/>
     113                                                        ${sample.parentEvent?.template?.name}
    114114                                                        <div class="helpIcon"></div>
    115115                                                        <div class="helpContent">
    116                                                                 <h1>${sample.parentEvent.template.name}</h1>
     116                                                                <h1>${sample.parentEvent?.template?.name}</h1>
    117117                                                                <h2>Template Fields:</h2>
    118                                                                 <g:each var="field" in="${sample.parentEvent.giveFields()}">
     118                                                                <g:each var="field" in="${sample.parentEvent?.giveFields()}">
    119119                                                                        ${field.name[0].toUpperCase() + field.name.substring(1)}<br/>
    120120                                                                </g:each>
     
    123123                                        </div>
    124124                                        <div class="column">
    125                                                 ${sample.parentSubject.name}
     125                                                ${sample.parentSubject?.name}
    126126                                                <div class="helpIcon"></div>
    127127                                                <div class="helpContent">
    128                                                         <h1>${sample.parentSubject.template.name}</h1>
     128                                                        <h1>${sample.parentSubject?.template?.name}</h1>
    129129                                                        <h2>Template Fields:</h2>
    130                                                         <g:each var="field" in="${sample.parentSubject.giveFields()}">
     130                                                        <g:each var="field" in="${sample.parentSubject?.giveFields()}">
    131131                                                                ${field.name[0].toUpperCase() + field.name.substring(1)}<br/>
    132132                                                        </g:each>
     
    134134                                        </div>
    135135                                        <div class="column">
    136                                                 <af:templateSelect name="template_${sample.getIdentifier()}" entity="${dbnp.studycapturing.Sample}" value="${sample.template}" addDummy="true" tableEditorChangeEvent="switchTemplate(element);" />
     136                                                <af:templateSelect name="template_${sample.getIdentifier()}" entity="${dbnp.studycapturing.Sample}" value="${sample?.template}" addDummy="true" tableEditorChangeEvent="switchTemplate(element);" />
    137137                                        </div>
    138138                                        <af:templateColumns name="sample_${sample.getIdentifier()}" class="column" id="1" entity="${sample}"/>
Note: See TracChangeset for help on using the changeset viewer.