Changeset 432


Ignore:
Timestamp:
May 18, 2010, 4:42:11 PM (7 years ago)
Author:
duh
Message:
  • events page now seperates 'events' from 'samplingEvents'
  • grouping is now in front to outline properly
  • added radio form element
  • todo: fix exceptions while deleting
Location:
trunk/grails-app
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/WizardController.groovy

    r430 r432  
    5353                                [title: 'Subjects'],                    // subjects
    5454                                [title: 'Events'],                              // events and event grouping
     55                                [title: 'Samples'],                             // samples
    5556                                [title: 'Confirmation'],                // confirmation page
    5657                                [title: 'Done']                                 // finish page
     
    248249                                        flow.eventGroups[0]     = new EventGroup(name: 'Group 1')       // 1 group by default
    249250                                        flow.eventTemplates     = [:]
     251                                } else if (!flash.values) {
     252                                        // set flash.values.templateType based on the event instance
     253                                        flash.values = [:]
     254                                        flash.values.templateType = (flow.event instanceof Event) ? 'event' : 'sample'
     255println "aapjes --> " + flash.values
    250256                                }
    251257                        }
     
    261267                        on("add") {
    262268                                flash.values                    = params
    263                                 def eventTemplateName   = params.get('template')
     269println params
     270println params.get('eventType')
     271println params.get('eventTemplate')
     272println params.get('sampleTemplate')
     273
     274                                def eventTemplateName   = (params.get('eventType') == 'event') ? params.get('eventTemplate') : params.get('sampleTemplate')
    264275                                def eventTemplate               = Template.findByName(eventTemplateName)
     276println "test: "+ eventTemplateName + ", " + eventTemplate
    265277
    266278                                // add this event template to the event template array
     
    345357                        on("deleteEventGroup") {
    346358                                flash.values = params
    347                                
     359
    348360                                def delete = params.get('do') as int;
    349361
     
    362374                        }.to "subjects"
    363375                        on("next") {
     376                                println params
    364377                                flash.values = params
    365378                                flash.errors = [:]
     
    368381                                if (flow.events.size() < 1) {
    369382                                        // append error map
    370                                         flash.values = params
    371383                                        this.appendErrorMap(['events': 'You need at least to create one event for your study'], flash.errors)
    372384                                        error()                                         
     
    376388                                        error()
    377389                                }
    378                         }.to "events"
    379                 }
    380 
     390                        }.to "samples"
     391                }
     392
     393                // samples page
     394                samples {
     395                        render(view: "_samples")
     396                        onRender {
     397                                flow.page = 5
     398                        }
     399                        on("previous").to "events"
     400                        on("next").to "samples"
     401                }
     402
     403                // confirmation
    381404                confirm {
    382405                        render(view: "_confirmation")
    383406                        onRender {
    384                                 flow.page = 5
     407                                flow.page = 6
    385408                        }
    386409                        on("toStudy").to "study"
    387410                        on("toSubjects").to "subjects"
    388411                        on("toEvents").to "events"
    389                         on("previous").to "events"
     412                        on("toSamples").to "samples"
     413                        on("previous").to "samples"
    390414                        on("next").to "save"
    391415                }
     
    491515                        }
    492516                        on("next").to "save"
    493                         on("previous").to "events"
     517                        on("previous").to "samples"
    494518                }
    495519
     
    596620        def handleEvents(flow, flash, params) {
    597621                def errors = false
    598                
    599                 // got an event in the flash scope?
    600                 if (!flow.event) flow.event = new Event()
     622                def template = null
     623
     624                // handle the type of event
     625                if (params.eventType == 'event') {
     626                        flow.event = new Event();
     627                        template = params.remove('eventTemplate')
     628                } else if (params.eventType == 'sample') {
     629                        flow.event = new SamplingEvent();
     630                        template = params.remove('sampleTemplate')
     631                }
     632
     633                // got an event in the flow scope?
     634                //if (!flow.event) flow.event = new Event()
    601635
    602636                // if a template is selected, get template instance
    603                 def template = params.remove('template')
    604637                if (template instanceof String && template.size() > 0) {
    605638                        params.template = Template.findByName(template)
  • trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy

    r416 r432  
    240240
    241241                // render a form element
    242                 out << '<div class="element">'
     242                if (attrs.get('elementId')) {
     243                out << '<div class="element" id="'+ attrs.remove('elementId') +'">'
     244                } else {
     245                        out << '<div class="element">'
     246                }
    243247                out << ' <div class="description">'
    244248                out << description
     
    344348                        body
    345349                )
     350        }
     351
     352        /**
     353         * render a set of radio form elements
     354         * @param Map attrs
     355         * @param Closure body  (help text)
     356         */
     357        def radioElement = { attrs, body ->
     358                baseElement.call(
     359                        'radioList',
     360                        attrs,
     361                        body
     362                )
     363        }
     364
     365        /**
     366         * render a set of radio elements
     367         * @param Map attrs
     368         * @param Closure body  (help text)
     369         */
     370        def radioList = { attrs ->
     371                def checked = true
     372
     373                attrs.elements.each {
     374                        out << radio(
     375                                name: attrs.name,
     376                                value: it,
     377                                checked: (attrs.value == it || (!attrs.value && checked))
     378                        )
     379                        out << it
     380                        checked = false
     381                }
    346382        }
    347383
  • trunk/grails-app/views/wizard/common/_wizard.gsp

    r359 r432  
    1616%>
    1717<div id="wizard" class="wizard">
    18         <h1>Study capture wizard</h1>
     18        <h1>Study wizard</h1>
    1919        <g:form action="pages" name="wizardForm" id="wizardForm">
    2020        <g:hiddenField name="do" value="" />
  • trunk/grails-app/views/wizard/pages/_events.gsp

    r418 r432  
    2121        </span>
    2222
    23         <wizard:templateElement name="template" description="Template" value="${event?.template}" entity="${dbnp.studycapturing.Event}" addDummy="true" ajaxOnChange="switchTemplate" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" >
     23        <wizard:radioElement name="eventType" description="Type" elements="['event','sample']" value="${values?.eventType}">
     24                Type of event
     25        </wizard:radioElement>
     26        <wizard:templateElement name="eventTemplate" elementId="eventTemplate" description="Event Template" value="${event?.template}" entity="${dbnp.studycapturing.Event}" addDummy="true" ajaxOnChange="switchTemplate" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" >
    2427                The template to use for this study
    2528        </wizard:templateElement>
     29        <wizard:templateElement name="sampleTemplate" elementId="sampleTemplate" description="Sample Template" value="${event?.template}" entity="${dbnp.studycapturing.SamplingEvent}" addDummy="true" ajaxOnChange="switchTemplate" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" >
     30                The template to use for this study
     31        </wizard:templateElement>
     32        <g:if test="${event?.template}">
     33        <div id="${values?.eventType}TemplateFields">
    2634        <g:if test="${event?.template}"><wizard:templateElements entity="${event}" /></g:if>
    2735        <g:if test="${event?.template}"><wizard:buttonElement name="add" value="Add" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()"/></g:if>
     36        </div>
     37        </g:if>
     38       
     39        <script type="text/javascript">
     40        function swapTemplate(value,refresh) {
     41                $("div[id$='Template'],div[id$='TemplateFields']").each(function() {
     42                        var e = $(this);
     43                        if (e.attr('id').match("^"+value) != null) {
     44                                e.show();
     45                        } else {
     46                                e.hide();
     47                        }
     48                });
    2849
    29 <g:if test="${events}">
     50                if(refresh) {
     51                }
     52        }
     53
     54        // handle template selectors
     55        $(document).ready(function() {
     56                // bind event handlers
     57                $("input[name=eventType]").click(function() {
     58                        swapTemplate($(this).val(),true);
     59                });
     60
     61                // handle selects
     62                swapTemplate($('input:radio[name=eventType]:checked').val(),false);
     63        });
     64        </script>
     65
     66        <g:if test="${events}">
    3067        <g:each var="eventTemplate" in="${eventTemplates}">
    3168                <g:set var="showHeader" value="${true}" />
     
    3875                                <div class="firstColumn">#</div>
    3976                                <div class="firstColumn"></div>
    40                                 <wizard:templateColumnHeaders entity="${events[ eventId ]}" class="column"/>
    4177                                <g:if test="${eventGroups}"><g:each var="eventGroup" status="g" in="${eventGroups}">
    4278                                <div class="column">
     
    4884                                        <wizard:ajaxButton name="addEventGroup" src="../images/icons/famfamfam/add.png" alt="add a new eventgroup" class="famfamfam" value="+" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" />
    4985                                </div>
     86                                <wizard:templateColumnHeaders entity="${events[ eventId ]}" class="column"/>
    5087                        </div>
    5188                        </g:if>
     
    5592                                        <wizard:ajaxButton name="deleteEvent" src="../images/icons/famfamfam/delete.png" alt="delete this subject" class="famfamfam" value="-" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" before="\$(\'input[name=do]\').val(${eventId});" afterSuccess="onWizardPage()"/>
    5693                                </div>
    57                                 <wizard:templateColumns id="${eventId}" entity="${events[ eventId ]}" template="${events[ eventId ].template}" name="event_${eventId}" class="column" />
    5894                                <g:if test="${eventGroups}"><g:each var="eventGroup" status="j" in="${eventGroups}">
    5995                                <div class="column">
     
    66102                                </g:each></g:if>
    67103                                <div class="column"></div>
     104                                <wizard:templateColumns id="${eventId}" entity="${events[ eventId ]}" template="${events[ eventId ].template}" name="event_${eventId}" class="column" />
    68105                        </div>
    69106                </g:each>
Note: See TracChangeset for help on using the changeset viewer.