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: 2121 $ |
---|
14 | * $Author: work@osx.eu $ |
---|
15 | * $Date: 2011-11-29 14:06:53 +0000 (di, 29 nov 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> |
---|