Changeset 381
- Timestamp:
- Apr 26, 2010, 3:50:22 PM (13 years ago)
- Location:
- trunk/grails-app
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy
r375 r381 302 302 // Set the value of the found template field 303 303 // Convenience setter for template string list fields: find TemplateFieldListItem by name 304 if (field.type == TemplateFieldType.STRINGLIST && value .class == String) {304 if (field.type == TemplateFieldType.STRINGLIST && value && value.class == String) { 305 305 // Kees insensitive pattern matching ;) 306 306 value = field.listEntries.find { it.name ==~ /(?i)($value)/ } -
trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy
r374 r381 209 209 */ 210 210 def baseElement = {inputElement, attrs, help -> 211 println "rendering " + inputElement + " with name " + attrs.get('name') 211 212 // work variables 212 213 def description = attrs.remove('description') … … 661 662 } 662 663 663 /** 664 * render table input elements for all subjectFields in a template 665 * @param Map attributes 666 */ 667 def templateColumns = {attrs, body -> 668 def subject = attrs.remove('subject') 669 def subjectId = attrs.remove('id') 670 def template = attrs.remove('template') 671 def intFields = subject.templateIntegerFields 672 def stringFields = subject.templateStringFields 673 def floatFields = subject.templateFloatFields 674 def termFields = subject.templateTermFields 675 676 // output columns for these subjectFields 677 template.fields.each() { 678 def fieldValue = subject.getFieldValue(it.name) 679 680 // output div 681 out << '<div class="' + attrs.get('class') + '">' 682 683 // handle field types 684 switch (it.type.toString()) { 685 case ['STRING', 'TEXT', 'INTEGER', 'FLOAT', 'DOUBLE']: 686 out << textField( 687 name: attrs.name + '_' + it.escapedName(), 688 value: fieldValue 689 ) 690 break 691 case 'STRINGLIST': 692 // render stringlist subjectfield 693 if (!it.listEntries.isEmpty()) { 694 out << select( 695 name: attrs.name + '_' + it.escapedName(), 696 from: it.listEntries, 697 value: fieldValue 698 ) 699 } else { 700 out << '<span class="warning">no values!!</span>' 701 } 702 break 703 case 'DATE': 704 // transform value? 705 if (fieldValue instanceof Date) { 706 if (fieldValue.getHours() == 0 && fieldValue.getMinutes() == 0) { 707 // transform date instance to formatted string (dd/mm/yyyy) 708 fieldValue = String.format('%td/%<tm/%<tY', fieldValue) 709 } else { 710 // transform to date + time 711 fieldValue = String.format('%td/%<tm/%<tY %<tH:%<tM', fieldValue) 712 } 713 } 714 715 // output a date field (not the 'rel' which makes the 716 // javascript front-end bind the jquery-ui datepicker) 717 out << textField( 718 name: attrs.name + '_' + it.escapedName(), 719 value: fieldValue, 720 rel: 'date' 721 ) 722 break 723 case 'ONTOLOGYTERM': 724 // @see http://www.bioontology.org/wiki/index.php/NCBO_Widgets#Term-selection_field_on_a_form 725 // @see ontology-chooser.js, table-editor.js 726 //out << it.getClass() 727 out << textField( 728 name: attrs.name + '_' + it.escapedName(), 729 value: fieldValue, 730 rel: 'ontology-all-name', 731 size: 100 732 ) 733 out << hiddenField( 734 name: attrs.name + '_' + it.escapedName() + '-concept_id' 735 ) 736 out << hiddenField( 737 name: attrs.name + '_' + it.escapedName() + '-ontology_id' 738 ) 739 out << hiddenField( 740 name: attrs.name + '_' + it.escapedName() + '-full_id' 741 ) 742 break 743 default: 744 // unsupported field type 745 out << '<span class="warning">!' + it.type + '</span>' 746 break 747 } 748 749 out << '</div>' 750 } 664 def templateColumns = { attrs -> 665 // render template fields as columns 666 attrs.renderType = 'column' 667 out << renderTemplateFields(attrs) 668 } 669 670 def templateElements = { attrs -> 671 // render template fields as form elements 672 attrs.renderType = 'element' 673 out << renderTemplateFields(attrs) 751 674 } 752 675 … … 756 679 * @param String body 757 680 */ 758 def templateElements = {attrs -> 759 def entity = (attrs.get('entity')) 760 def template = (entity && entity instanceof TemplateEntity) ? entity.template : null 681 def renderTemplateFields = { attrs -> 682 def renderType = attrs.remove('renderType') 683 def entity = (attrs.get('entity')) 684 def template = (entity && entity instanceof TemplateEntity) ? entity.template : null 685 def inputElement= null 761 686 762 687 // got a template? … … 766 691 def fieldValue = entity.getFieldValue(it.name) 767 692 693 // output column opening element? 694 if (renderType == 'column') { 695 out << '<div class="' + attrs.get('class') + '">' 696 } 697 768 698 switch (it.type.toString()) { 769 699 case ['STRING', 'TEXT', 'INTEGER', 'FLOAT', 'DOUBLE']: 770 out << textFieldElement( 700 inputElement = (renderType == 'element') ? 'textFieldElement' : 'textField' 701 out << "$inputElement"( 771 702 description: it.name, 772 703 name: it.escapedName(), … … 775 706 break 776 707 case 'STRINGLIST': 708 inputElement = (renderType == 'element') ? 'selectElement' : 'select' 777 709 if (!it.listEntries.isEmpty()) { 778 out << selectElement(710 out << "$inputElement"( 779 711 description: it.name, 780 712 name: it.escapedName(), … … 789 721 // @see http://www.bioontology.org/wiki/index.php/NCBO_Widgets#Term-selection_field_on_a_form 790 722 // @see ontology-chooser.js 791 out << textFieldElement( 723 inputElement = (renderType == 'element') ? 'textFieldElement' : 'textField' 724 out << "$inputElement"( 792 725 name: it.escapedName(), 793 726 value: fieldValue, … … 809 742 break 810 743 case 'DATE': 811 out << dateElement( 744 inputElement = (renderType == 'element') ? 'dateElement' : 'textField' 745 746 // transform value? 747 if (fieldValue instanceof Date) { 748 if (fieldValue.getHours() == 0 && fieldValue.getMinutes() == 0) { 749 // transform date instance to formatted string (dd/mm/yyyy) 750 fieldValue = String.format('%td/%<tm/%<tY', fieldValue) 751 } else { 752 // transform to date + time 753 fieldValue = String.format('%td/%<tm/%<tY %<tH:%<tM', fieldValue) 754 } 755 } 756 757 // render element 758 out << "$inputElement"( 812 759 description: it.name, 813 760 name: it.escapedName(), 814 value: fieldValue 761 value: fieldValue, 762 rel: 'date' 815 763 ) 816 764 break 817 765 default: 818 out << "unkown field type '" + it.type + "'<br/>" 766 // unsupported field type 767 out << '<span class="warning">!' + it.type + '</span>' 819 768 break 820 769 } 770 771 // output column closing element? 772 if (renderType == 'column') { 773 out << '</div>' 774 } 821 775 } 822 776 } -
trunk/grails-app/views/wizard/pages/_subjects.gsp
r367 r381 57 57 <wizard:termSelect value="${subjects[ subjectId ].species}" name="subject_${subjectId}_species" ontology="1132" /> 58 58 </div> 59 <wizard:templateColumns id="${subjectId}" template="${subjects[ subjectId ].template}" name="subject_${subjectId}" class="column" subject="${subjects[ subjectId ]}" />59 <wizard:templateColumns id="${subjectId}" entity="${subjects[ subjectId ]}" template="${subjects[ subjectId ].template}" name="subject_${subjectId}" class="column" subject="${subjects[ subjectId ]}" /> 60 60 </div> 61 61 </g:each>
Note: See TracChangeset
for help on using the changeset viewer.