source: trunk/grails-app/views/studyWizard/pages/_events.gsp @ 1865

Last change on this file since 1865 was 1865, checked in by work@…, 9 years ago
  • resolves gscf #447
  • gdt up to 0.0.49
  • Property svn:keywords set to Rev Author Date
File size: 6.4 KB
Line 
1<%@ page import="dbnp.studycapturing.SamplingEvent" %>
2<%
3/**
4 * Events page
5 *
6 * @author  Jeroen Wesbeek
7 * @since   20100212
8 * @package wizard
9 * @see     dbnp.studycapturing.WizardTagLib::previousNext
10 * @see     dbnp.studycapturing.WizardController
11 *
12 * Revision information:
13 * $Rev: 1865 $
14 * $Author: work@osx.eu $
15 * $Date: 2011-05-23 15:28:51 +0000 (ma, 23 mei 2011) $
16 */
17%>
18<af:page>
19        <span class="info">
20                <span class="title">Define all events that occur in your study</span>
21                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.               
22        </span>
23
24        <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}">
25                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)
26        </af:radioElement>
27        <af:templateElement required="true" name="eventTemplate" elementId="eventTemplate" description="Event Template" value="${event?.template}" entity="${dbnp.studycapturing.Event}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
28                The template to use for this event
29        </af:templateElement>
30        <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()" >
31                The template to use for this sampling event
32        </af:templateElement>
33        <g:if test="${event?.template}">
34        <div id="${values?.eventType}TemplateFields">
35        <g:if test="${event?.template}"><af:templateElements entity="${event}" /></g:if>
36        <g:if test="${event?.template}"><af:buttonElement name="add" value="Add" afterSuccess="onPage()"/></g:if>
37        </div>
38        </g:if>
39       
40        <script type="text/javascript">
41        function swapTemplate(value,refresh) {
42                $("div[id$='Template'],div[id$='TemplateFields']").each(function() {
43                        var e = $(this);
44                        if (e.attr('id').match("^"+value) != null) {
45                                e.show();
46                        } else {
47                                e.hide();
48                        }
49                });
50
51                if(refresh) {
52                }
53        }
54
55        // handle template selectors
56        $(document).ready(function() {
57                // bind event handlers
58                $("input[name=eventType]").click(function() {
59                        swapTemplate($(this).val(),true);
60                });
61
62                // handle selects
63                swapTemplate($('input:radio[name=eventType]:checked').val(),false);
64
65                // ignore enter key in event group name text fields
66                $('input[name^="eventGroup"]').bind('keydown',function(event) {
67                  return (event.keyCode != 13);
68                });
69
70                $('body').addClass('has-js');
71                $('.label_check, .label_radio').click(function(){
72                        setupLabel();
73                });
74                setupLabel();
75        });
76
77    function setupLabel() {
78        if ($('.label_check input').length) {
79            $('.label_check').each(function(){
80                $(this).removeClass('c_on');
81            });
82            $('.label_check input:checked').each(function(){
83                $(this).parent('label').addClass('c_on');
84            });
85        }
86        if ($('.label_radio input').length) {
87            $('.label_radio').each(function(){
88                $(this).removeClass('r_on');
89            });
90            $('.label_radio input:checked').each(function(){
91                $(this).parent('label').addClass('r_on');
92            });
93        }
94    }
95        </script>
96
97        <g:if test="${study.events || study.samplingEvents}">
98                <g:each var="template" in="${study.giveAllEventTemplates()}">
99                        <g:set var="showHeader" value="${true}" />
100                        <h1>${template} (<g:if test="${template.entity == SamplingEvent}">sampling event</g:if><g:else>treatment, challenge, etc.</g:else>)</h1>
101                        <div class="tableEditor">
102                        <g:each var="event" in="${study.giveEventsForTemplate(template)}">
103                                <g:if test="${showHeader}">
104                                <g:set var="showHeader" value="${false}" />
105                                <div class="header">
106                                        <div class="firstColumn"></div>
107                                        <g:if test="${study.eventGroups}"><g:each var="eventGroup" in="${study.eventGroups}">
108                                        <div class="column">
109                                                <g:textField name="eventGroup_${eventGroup.getIdentifier()}_${template.getIdentifier()}" value="${eventGroup.name}" />
110                                                <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()" />
111                                        </div>
112                                        </g:each></g:if>
113                                        <div class="firstColumn">
114                                                <af:ajaxButton name="addEventGroup" src="${resource(dir: 'images/icons', file: 'add.png', plugin: 'famfamfam')}" alt="add a new eventgroup" class="famfamfam" value="+" afterSuccess="onPage()" />
115                                        </div>
116                                  <af:templateColumnHeaders class="column" entity="${event}" />
117                                </div>
118                                </g:if>
119
120                                <div class="row" identifier="${event.getIdentifier()}">
121                                        <div class="firstColumn">
122                                                <input type="button" value="" action="deleteEvent" class="delete" identifier="${event.getIdentifier()}" />
123                                        </div>
124                                        <g:if test="${study.eventGroups}"><g:each var="eventGroup" in="${study.eventGroups}">
125                                        <div class="column">
126                                                <g:if test="${eventGroup.events.find{ it == event } || eventGroup.samplingEvents.find{ it == event }}">
127                                                        <input type="checkbox" name="event_${event.getIdentifier()}_group_${eventGroup.getIdentifier()}" checked="checked" />
128                                                </g:if><g:else>
129                                                        <input type="checkbox" name="event_${event.getIdentifier()}_group_${eventGroup.getIdentifier()}"/>
130                                                </g:else>
131                                        </div>
132                                        </g:each></g:if>
133                                        <div class="firstColumn">
134                                                <input type="button" value="" action="duplicate" class="clone" identifier="${event.getIdentifier()}" />
135                                        </div>
136                                        <af:templateColumns class="column" entity="${event}" name="event_${event.getIdentifier()}" />
137                                </div>
138
139                        </g:each>
140                        </div>
141                </g:each>
142        </g:if>
143
144        <script type="text/javascript">
145        $(document).ready(function() {
146                if (tableEditor) {
147                        tableEditor.registerActionCallback('deleteEvent', function() {
148                                if (confirm('are you sure you want to delete ' + ((this.length>1) ? 'these '+this.length+' events?' : 'this event?'))) {
149                                        $('input[name="do"]').val(this);
150                                        <af:ajaxSubmitJs name="deleteEvent" afterSuccess="onPage()" />
151                                }
152                        });
153                        tableEditor.registerActionCallback('duplicate', function() {
154                                $('input[name="do"]').val(this);
155                                <af:ajaxSubmitJs name="duplicate" afterSuccess="onPage()" />
156                        });
157                }
158        });
159        </script>
160</af:page>
Note: See TracBrowser for help on using the repository browser.