Changeset 233

Show
Ignore:
Timestamp:
05-03-10 09:08:23 (4 years ago)
Author:
jahn
Message:

Functionality for dynamically adding parameters included. Dialog for paramert string lists added.

Location:
trunk/grails-app/views/eventDescription
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/views/eventDescription/showMyProtocolFilled.gsp

    r220 r233  
    11<script type="text/javascript"> 
     2 
     3var parametertypes= new Array(); 
     4<% dbnp.studycapturing.ProtocolParameterType.list().each{ print "parametertypes.push(\'${it}\');" } %> 
     5 
    26 
    37function addRowEmpty(id){ 
     
    1721    addTextFieldToRow(row,'classification',20); addTextFieldToRow(row,'unit',6); 
    1822    var textField=addSelector(row,null); addTextFieldToRow(row,'reference',10); addTextFieldToRow(row,'description',20); 
    19     addTextElementToRow(row,textField,'option',6); addRowButton(row); tbody.appendChild(row); 
     23    addElementToRow(row,textField,'option',6); addRowButton(row); tbody.appendChild(row); 
    2024} 
    2125 
     
    4246    addTextFieldToRow(row,'reference',10).value=reference; 
    4347    addTextFieldToRow(row,'description',20).value=description; 
    44     addTextElementToRow(row,textField,'option',6); 
     48    addElementToRow(row,textField,'option',6); 
    4549    addRowButton(row); 
    4650    tbody.appendChild(row); 
    4751} 
    48  
    49  
    50  
    51  
    52  
    53  
    54  
    55 var parametertypes= new Array(); 
    56 <% dbnp.studycapturing.ProtocolParameterType.list().each{ print "parametertypes.push(\'${it}\');" } %> 
    57  
    5852 
    5953 
     
    7064 
    7165 
    72   function addTextElementToRow(row,field,id,size){ 
     66  function addElementToRow(row,field,id,size){ 
    7367     var td=document.createElement('td'); 
    7468     td.setAttribute('id',id + '_' + row.id); 
     
    9892 
    9993 
    100   function addSelector(row,selectedText){ 
     94  // for the STRINGLIST type, display a link to show 
     95  // all optional values of the parameter. 
     96  function showLinkForSTRINGLIST(anchor,textNode,option,showDialogString,dialog) { 
     97        if(option.value=='STRINGLIST') { 
     98           textNode.nodeValue='edit'; 
     99           anchor.setAttribute('onclick',showDialogString); 
     100        } 
     101        else { 
     102           textNode.nodeValue='n.a.'; 
     103           anchor.setAttribute('onclick',''); 
     104        } 
     105  } 
     106 
     107 
     108 
     109   function addRowToDialog(dialogTableBodyId) { 
     110        var tbody = document.getElementById(dialogTableBodyId); 
     111        var input=document.createElement('input'); 
     112        tbody.insertRow(-1).insertCell(-1).appendChild(input); 
     113   } 
     114 
     115 
     116 
     117   // create the dialog for this STRINGLIST. 
     118   // the dialog holds all possible values this parameter can take. 
     119   // moreover, it is extendable. 
     120   function addDialogForSelector(rowId,options) { 
     121     var dialog = document.createElement('div'); 
     122     dialog.setAttribute('id','dialog_'+rowId); 
     123     //var dialogText = document.createTextNode(dialog.id); 
     124     //dialog.appendChild(dialogText); 
     125 
     126 
     127     var table=document.createElement('table'); 
     128     var tbody=document.createElement('tbody'); tbody.id='options_'+dialog.id; 
     129     var tr=document.createElement('tr'); 
     130     var th=document.createElement('th'); 
     131     var tx=document.createTextNode('Parameter Values'); 
     132     dialog.appendChild(table); 
     133     table.appendChild(tbody); 
     134     tbody.appendChild(tr); 
     135     tr.appendChild(tx); 
     136 
     137     for(i=0;i<options.length;i++){ 
     138         var input=document.createElement('input'); 
     139         input.value=options[i]; 
     140         tbody.insertRow(-1).insertCell(-1).appendChild(input); 
     141     } 
     142 
     143     var button=document.createElement('input'); 
     144     button.setAttribute('type','Button'); 
     145     button.value='Add Option'; 
     146     dialog.appendChild(button); 
     147     button.onclick=function(){ addRowToDialog('options_'+dialog.id); } 
     148 
     149 
     150     return dialog; 
     151   } 
     152 
     153 
     154   function addSelector(row,selectedText){ 
     155 
     156     // add dialog for displaying paramter options 
     157     // preserve row's id 
     158     var options= [1,2,3,4,5,6,7,8,9]; 
     159     var dialog = addDialogForSelector(row.id,options); 
     160 
    101161 
    102162     var selector=document.createElement("select"); 
     
    108168         option.appendChild(text); 
    109169         selector.appendChild(option); 
    110          if(selectedText!=null&&selectedText==parametertypes[i]) { 
    111               selectedIndex=i; 
    112               alert(selectedText); 
    113          } 
     170         if(selectedText!=null&&selectedText==parametertypes[i]) { selectedIndex=i; } 
    114171     } 
    115172 
    116      // set label for selected element 
    117      selector.selectedIndex=selectedIndex; 
    118      var option=selector.options[selector.selectedIndex]; 
    119      var textNode = document.createTextNode(""); 
    120      option=selector.options[selector.selectedIndex]; 
    121      textNode.nodeValue=(option.value=='STRINGLIST') ? 'link stuff' : 'n.a.'; 
    122  
    123  
    124      // show edit link for STRINGLIST 
    125      selector.onchange=function(){ 
    126          option=this.options[this.selectedIndex]; 
    127          textNode.nodeValue=(option.value=='STRINGLIST') ? 'link stuff' : 'n.a.'; 
    128      } 
    129173 
    130174     //  td for the selector 
     
    132176     td.appendChild(selector); 
    133177     row.appendChild(td); 
    134  
    135      return textNode; 
     178     td.appendChild(dialog);                          // dialog 
     179     jQuery(dialog).dialog({autoOpen:false}); 
     180 
     181     var showDialogString = "jQuery('#"+ dialog.id + "').dialog('open');" 
     182 
     183 
     184     // set label for selected element 
     185     selector.selectedIndex=selectedIndex; 
     186     var option=selector.options[selector.selectedIndex]; 
     187 
     188     var anchor= document.createElement('a'); 
     189     anchor.setAttribute('name', 'myanchor'); 
     190     var textNode=document.createTextNode(''); 
     191     option=selector.options[selector.selectedIndex]; 
     192     textNode.nodeValue=(option.value=='STRINGLIST') ? 'edit' : 'n.a.'; 
     193     showLinkForSTRINGLIST(anchor,textNode,option,showDialogString,dialog); 
     194     anchor.appendChild(textNode); 
     195 
     196 
     197     // show edit link for STRINGLIST 
     198     selector.onchange=function(){ 
     199         option=this.options[this.selectedIndex]; 
     200         showLinkForSTRINGLIST(anchor,textNode,option,showDialogString,dialog); 
     201     } 
     202 
     203 
     204     return anchor; 
    136205  } 
    137206 
     
    181250<tr class="prop"> 
    182251    <td id='test'>  nope </td> 
    183     <td> <g:select name="selectedProtocol" from="${dbnp.studycapturing.Protocol.list()}" value="${protocol.id}" onchange= 
    184            "${remoteFunction( action:'showProtocolParameters', update:'showProtocolParameters', params:'\'something=\'+this.value', id:'this.id')} " /> 
     252    <td> <g:select name="selectedProtocol" from="${dbnp.studycapturing.Protocol.list()}" value="${protocol.id}" optionKey="id"   optionValue="name" 
     253                   onchange= "${remoteFunction( action:'showProtocolParameters', update:'showProtocolParameters', params:'\'id=\'+this.value' )} " /> 
    185254    </td> 
    186255</tr> 
     
    188257 
    189258<tr><td></td> 
    190  
    191259<td> 
    192260 
  • trunk/grails-app/views/eventDescription/showProtocolParameters.gsp

    r221 r233  
    66<% tableRowId=0 %> 
    77<g:each in ="${list}" > 
    8  
    98    <script type="text/javascript"> 
    109    addRow('showProtocolParameters',"${list.id}","${it.name}","${it.unit}","${it.type}","${it.reference}","${it.description}"); 
    1110    </script> 
    12  
    1311</g:each>