root/trunk/grails-app/views/studyWizard/pages/_events.gsp @ 1782

Revision 1782, 5.9 KB (checked in by work@…, 3 years ago)

- resolved #93, improved seperation of events / sampling events in events page of the wizard

  • Property svn:keywords set to Rev Author Date
Line 
1<%
2/**
3 * Events page
4 *
5 * @author  Jeroen Wesbeek
6 * @since   20100212
7 * @package wizard
8 * @see     dbnp.studycapturing.WizardTagLib::previousNext
9 * @see     dbnp.studycapturing.WizardController
10 *
11 * Revision information:
12 * $Rev$
13 * $Author$
14 * $Date$
15 */
16%>
17<af:page>
18        <span class="info">
19                <span class="title">Define all events that occur in your study</span>
20                An event is any change ‘forced’ upon a subject, such as treatment, challenge, sampling. Choose an event type an define the different parameters of the event.               
21        </span>
22
23        <af:radioElement name="eventType" description="Choose the type of event" elements="[event:'treatment, challenge, etc.',sample:'sampling event']" class="eventradio" elementclass="label_radio" value="${values?.eventType}">
24                The type of event can be either a sampling event (e.g. taking a sample) or anything that acts upon a subject (e.g. a treatment or a challenge)
25        </af:radioElement>
26        <af:templateElement required="true" name="eventTemplate" elementId="eventTemplate" description="Event Template" value="${event?.template}" entity="${dbnp.studycapturing.Event}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
27                The template to use for this event
28        </af:templateElement>
29        <af:templateElement  required="true" name="sampleTemplate" elementId="sampleTemplate" description="Sampling Event Template" value="${event?.template}" entity="${dbnp.studycapturing.SamplingEvent}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
30                The template to use for this sampling event
31        </af:templateElement>
32        <g:if test="${event?.template}">
33        <div id="${values?.eventType}TemplateFields">
34        <g:if test="${event?.template}"><af:templateElements entity="${event}" /></g:if>
35        <g:if test="${event?.template}"><af:buttonElement name="add" value="Add" afterSuccess="onPage()"/></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                });
49
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                // ignore enter key in event group name text fields
65                $('input[name^="eventGroup"]').bind('keydown',function(event) {
66                  return (event.keyCode != 13);
67                });
68
69                $('body').addClass('has-js');
70                $('.label_check, .label_radio').click(function(){
71                        setupLabel();
72                });
73                setupLabel();
74        });
75
76    function setupLabel() {
77        if ($('.label_check input').length) {
78            $('.label_check').each(function(){
79                $(this).removeClass('c_on');
80            });
81            $('.label_check input:checked').each(function(){
82                $(this).parent('label').addClass('c_on');
83            });
84        }
85        if ($('.label_radio input').length) {
86            $('.label_radio').each(function(){
87                $(this).removeClass('r_on');
88            });
89            $('.label_radio input:checked').each(function(){
90                $(this).parent('label').addClass('r_on');
91            });
92        }
93    }
94        </script>
95
96        <g:if test="${study.events || study.samplingEvents}">
97                <g:each var="template" in="${study.giveAllEventTemplates()}">
98                        <g:set var="showHeader" value="${true}" />
99                        <h1>${template}</h1>
100                        <div class="tableEditor">
101                        <g:each var="event" in="${study.giveEventsForTemplate(template)}">
102                                <g:if test="${showHeader}">
103                                <g:set var="showHeader" value="${false}" />
104                                <div class="header">
105                                        <div class="firstColumn"></div>
106                                        <g:if test="${study.eventGroups}"><g:each var="eventGroup" in="${study.eventGroups}">
107                                        <div class="column">
108                                                <g:textField name="eventGroup_${eventGroup.getIdentifier()}_${template.getIdentifier()}" value="${eventGroup.name}" />
109                                                <af:ajaxButton name="deleteEventGroup" src="${resource(dir: 'images/icons', file: 'delete.png', plugin: 'famfamfam')}" alt="delete this eventgroup" class="famfamfam" value="-" before="\$(\'input[name=do]\').val(${eventGroup.getIdentifier()});" afterSuccess="onPage()" />
110                                        </div>
111                                        </g:each></g:if>
112                                        <div class="firstColumn">
113                                                <af:ajaxButton name="addEventGroup" src="${resource(dir: 'images/icons', file: 'add.png', plugin: 'famfamfam')}" alt="add a new eventgroup" class="famfamfam" value="+" afterSuccess="onPage()" />
114                                        </div>
115                                  <af:templateColumnHeaders class="column" entity="${event}" />
116                                </div>
117                                </g:if>
118
119                                <div class="row">
120                                        <div class="firstColumn">
121                                                <af:ajaxButton name="deleteEvent" src="${resource(dir: 'images/icons', file: 'delete.png', plugin: 'famfamfam')}" alt="delete this event" class="famfamfam" value="-" before="\$(\'input[name=do]\').val(${event.getIdentifier()});" afterSuccess="onPage()"/>
122                                        </div>
123                                        <g:if test="${study.eventGroups}"><g:each var="eventGroup" in="${study.eventGroups}">
124                                        <div class="column">
125                                                <g:if test="${eventGroup.events.find{ it == event } || eventGroup.samplingEvents.find{ it == event }}">
126                                                        <input type="checkbox" name="event_${event.getIdentifier()}_group_${eventGroup.getIdentifier()}" checked="checked" />
127                                                </g:if><g:else>
128                                                        <input type="checkbox" name="event_${event.getIdentifier()}_group_${eventGroup.getIdentifier()}"/>
129                                                </g:else>
130                                        </div>
131                                        </g:each></g:if>
132                                        <div class="firstColumn">
133                                                <af:ajaxButton name="duplicate" src="${resource(dir: 'images/icons', file: 'application_put.png', plugin: 'famfamfam')}" alt="duplicate this event" class="famfamfam" value="-" before="\$(\'input[name=do]\').val(${event.getIdentifier()});" afterSuccess="onPage()" />
134                                        </div>
135                                        <af:templateColumns class="column" entity="${event}" name="event_${event.getIdentifier()}" />
136                                </div>
137
138                        </g:each>
139                        </div>
140                        <div class="sliderContainer">
141                                <div class="slider"></div>
142                        </div>
143                </g:each>
144        </g:if>
145</af:page>
Note: See TracBrowser for help on using the browser.