GLOBE Projects

GLOBE Side Navigation

An error occurred while processing the template.
The following has evaluated to null or missing:
==> project_badges  [in template "10132#10165#GLOBE-PROJECT-TEMPLATE" at line 99, column 7]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if (project_badges.getChildren()?has...  [in template "10132#10165#GLOBE-PROJECT-TEMPLATE" at line 99, column 1]
----
1<#assign 
2    orgArray = [] 
3    userArray = [] 
4    badgeArray = [] 
5    languageArray = [] 
6    protocolArray = [] 
7    reportTypesArray = [] 
8    orgLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") 
9    userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService") 
10    groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") 
11    userGroupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserGroupLocalService") 
12    idLocalService = serviceLocator.findService("gov.globe.util.idlookup.service.IDLookupLocalService") 
13    assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
14    globeMemberId = idLocalService.getId("globe.usergroupid.globe_members") 
15    candidateId = idLocalService.getId("globe.usergroupid.candidates") 
16    studentsId = idLocalService.getId("globe.usergroupid.students") 
17    projectDate = getterUtil.getString(project_date.getData()) 
18    reportType = "" 
19    accountType = "" 
20    videoLink = "" 
21    presentationLink = "" 
22/> 
23 
24<#if (project_authororganization.getSiblings()?has_content)> 
25    <#list project_authororganization.getSiblings() as authOrg > 
26        <#assign 
27            accountTypeArr = stringUtil.split(authOrg.getData(), "@@@") 
28            dataArray = stringUtil.split(accountTypeArr[0], "$$$") 
29        /> 
30        <#if (accountTypeArr?size > 1)> 
31            <#assign 
32                accountType = accountTypeArr[1] 
33            /> 
34        <#else> 
35            <#assign 
36                accountType = "regular" 
37            /> 
38        </#if> 
39         
40        <#if (dataArray?has_content && dataArray?size > 0) > 
41            <#assign orgValue = dataArray[0] /> 
42            <#if (orgValue?is_string && !orgValue?eval?is_number)> 
43                <#assign org = orgLocalService.getOrganization(company.getCompanyId(), orgValue) /> 
44            <#else> 
45                <#assign org = orgLocalService.getOrganization(orgValue?eval) /> 
46            </#if> 
47            <#assign 
48                orgName = org.getName() 
49                group = org.getGroup() 
50                orgURL = group.getFriendlyURL() 
51                orgLink = "<a href='/web${orgURL}'>${orgName}</a>" 
52                orgArray = orgArray + [orgLink] 
53            /> 
54            <#if (dataArray?size > 1) > 
55                <#assign 
56                    userData = dataArray[1] 
57                /> 
58                 
59                <#-- check if name has an email --> 
60                <#if (userData?contains("("))> 
61                    <#assign 
62                        emailAddress = stringUtil.extractLast(userData, "(") 
63                        emailAddress = stringUtil.extractFirst(emailAddress, ")") 
64                        user = userLocalService.getUserByEmailAddress(company.getCompanyId(), emailAddress) 
65                    /> 
66                    <#if user.isActive() > 
67                        <#if (userGroupLocalService.hasUserUserGroup(user.getUserId(), globeMemberId) 
68                                || userGroupLocalService.hasUserUserGroup(user.getUserId(), candidateId) 
69                                || userGroupLocalService.hasUserUserGroup(user.getUserId(), studentsId)) > 
70                            <#assign 
71                                groupUser = groupLocalService.getGroup(user.getGroup().getGroupId()) 
72                                userLink = "<a href='/web${groupUser.getFriendlyURL()}'>${user.getFullName()}</a>" 
73                            /> 
74                        <#else> 
75                            <#assign 
76                                userLink = "${user.getFullName()}" 
77                            /> 
78                        </#if> 
79                    <#else> 
80                        <#assign 
81                            userLink = "${user.getFullName()} (inactive)" 
82                        /> 
83                    </#if> 
84                    <#assign 
85                        userArray = userArray + [userLink] 
86                    /> 
87                 
88                <#else> 
89                    <#-- no email - just show name --> 
90                    <#assign 
91                        userArray = userArray + [userData] 
92                    /> 
93                </#if> 
94                 
95            </#if> 
96        </#if> 
97    </#list> 
98</#if> 
99<#if (project_badges.getChildren()?has_content)> 
100    <#list project_badges.getChildren() as badge > 
101        <#if (badge.getData()?has_content && badge.getData()?eval) > 
102            <#assign badgeArray = badgeArray + [languageUtil.get(locale, badge.getName())] /> 
103        </#if> 
104    </#list> 
105</#if> 
106<#if (project_report_type_2?has_content) > 
107    <#-- this is the NEW way of specifying report types --> 
108    <#list project_report_type_2.getChildren() as reportTypeObj > 
109        <#if (reportTypeObj.getData()?has_content && (reportTypeObj.getName() == "ivss_report" || reportTypeObj.getName() == "mission_earth_report")) > 
110            <#assign reportType = reportTypeObj.getName() /> 
111        </#if> 
112        <#if (reportTypeObj.getData()?has_content && reportTypeObj.getData()?eval) > 
113            <#switch reportTypeObj.getName() > 
114                <#case "ivss_report"> 
115                    <#assign reportTypesArray = reportTypesArray + ["International Virtual Science Symposium Report"] /> 
116                <#break > 
117                <#case "standard_research_report"> 
118                    <#assign reportTypesArray = reportTypesArray + ["Standard Research Report"] /> 
119                <#break > 
120                <#case "mission_earth_report"> 
121                    <#assign reportTypesArray = reportTypesArray + ["Mission Earth Report"] /> 
122                <#break > 
123                <#case "mission_mosquito_report"> 
124                    <#assign reportTypesArray = reportTypesArray + ["Mission Mosquito Report"] /> 
125                <#break > 
126                <#case "student_research_symposia_report"> 
127                    <#assign reportTypesArray = reportTypesArray + ["U.S. Student Research Symposia (SRS)"] /> 
128                <#break > 
129            </#switch> 
130        </#if> 
131    </#list> 
132<#elseif (type_student_report?has_content) > 
133    <#-- this is the OLD way of specifying the report type --> 
134    <#assign 
135        project_report_type = type_student_report.getChild("project_report_type") 
136    /> 
137    <#if (project_report_type.getData() == "science_fair_report") > 
138        <#assign  
139            reportType = "ivss_report" 
140            reportTypesArray = reportTypesArray + ["International Virtual Science Symposium Report"] 
141        /> 
142    <#elseif (project_report_type.getData() == "standard_report") > 
143        <#assign 
144            reportType = "standard_research_report" 
145            reportTypesArray = reportTypesArray + ["Standard Research Report"] 
146        /> 
147    <#elseif (project_report_type.getData() == "mission_earth_report") > 
148        <#assign 
149            reportType = "mission_earth_report" 
150            reportTypesArray = reportTypesArray + ["Mission Earth Report"] 
151        /> 
152    </#if> 
153</#if> 
154 
155<#if report_language?has_content > 
156    <#list report_language.getChildren() as language> 
157        <#if (language.getData()?has_content && language.getData()?eval) > 
158            <#if (language.getName() == "other") > 
159                <#assign otherLanguage = language.getChild("other_string") /> 
160                <#if (otherLanguage.getData()?has_content) > 
161                    <#assign languageArray = languageArray +  
162                        [stringUtil.upperCaseFirstLetter(language.getName()) +  
163                            " (" + otherLanguage.getData() + ")"] /> 
164                </#if> 
165            <#else> 
166                <#assign languageArray = languageArray + [stringUtil.upperCaseFirstLetter(language.getName())] /> 
167            </#if> 
168        </#if> 
169    </#list> 
170</#if> 
171<#if protocol_checkboxes.getData()?has_content > 
172    <#assign protocolIds = stringUtil.split(protocol_checkboxes.getData()) /> 
173    <#list protocolIds as protocolId > 
174        <#if (protocolId?has_content) > 
175            <#assign 
176                category = assetCategoryLocalService.getCategory(protocolId?eval) 
177                protocolArray = protocolArray + [category.getName()] 
178            /> 
179        </#if> 
180    </#list> 
181</#if> 
182 
183<#if (proejct_video_url??) > 
184    <#if (proejct_video_url.getData()?has_content) > 
185        <#assign videoLink = proejct_video_url.getData() /> 
186    </#if> 
187</#if> 
188 
189<#if (project_poster_presentation??) > 
190    <#if (project_poster_presentation.getData()?has_content) > 
191        <#assign presentationLink = project_poster_presentation.getData() /> 
192    </#if> 
193</#if> 
194 
195<#if (project_presentation?has_content) > 
196    <#if project_presentation.getChild("proejct_video_url")??> 
197        <#assign  
198            proejct_video_url = project_presentation.getChild("proejct_video_url") 
199            videoLink = proejct_video_url.getData() 
200        /> 
201    </#if> 
202    <#if project_presentation.getChild("project_poster_presentation")??> 
203        <#assign  
204            project_poster_presentation = project_presentation.getChild("project_poster_presentation") 
205            presentationLink = project_poster_presentation.getData() 
206        /> 
207    </#if> 
208</#if> 
209 
210<#assign 
211    organizations = stringUtil.merge(orgArray, ", ") 
212    users = stringUtil.merge(userArray, ", ") 
213    badges = stringUtil.merge(badgeArray, ", ") 
214    languages = stringUtil.merge(languageArray, ", ") 
215    reportTypes = stringUtil.merge(reportTypesArray, ", ") 
216    protocols = stringUtil.merge(protocolArray, ", ") 
217    projectImageUrl = project_thumbnail_image.getData() 
218/> 
219<#if (validator.isNull(projectImageUrl) || projectImageUrl == "") > 
220    <#assign 
221        projectImageUrl = "/o/gov-globe-main-theme/images/GLOBElogo-2015.png" 
222    /> 
223</#if> 
224 
225<style type="text/css" > 
226    #report-container #report-details-container { 
227        display: flex; 
228
229    #report-container #report-details-container #report-details { 
230        flex: 1; 
231
232    #report-container #report-details-container .report-data-row { 
233        padding-bottom: 7px; 
234
235    #report-container #report-details-container .report-data-row .report-data-title { 
236        font-weight: 700; 
237
238    #report-container #report-details-container .report-data-row .report-data-value { 
239        padding:0px 10px; 
240
241    #report-container #report-image { 
242        width: 225px; 
243        vertical-align: top; 
244
245    #report-container #report-image img { 
246        height: 200px; 
247        object-fit: cover; 
248
249    #report-container #report-url-description { 
250        margin: 20px 0 0; 
251
252    #report-container #report-url-description #report-description { 
253        margin-top: 20px; 
254
255</style> 
256 
257<div id="report-container"> 
258    <h2 style="padding-bottom:10px;">${project_title.getData()}</h2> 
259    <div id="report-details-container"> 
260        <div id="report-details"> 
261            <div class="report-data-row" ><span class="report-data-title" >Organization(s):</span><span class="report-data-value" >${organizations}</span></div> 
262            <div class="report-data-row" ><span class="report-data-title" >Student(s):</span><span class="report-data-value" >${project_authors.getData()}</span></div> 
263            <div class="report-data-row" ><span class="report-data-title" >Grade Level:</span><span class="report-data-value" >${languageUtil.get(locale,project_grade.getData())}</span></div> 
264             
265            <div class="report-data-row" ><span class="report-data-title" > 
266            <#if (accountType == 'obs_cs' || accountType == 'obs_school')> 
267                Teacher:</span><span class="report-data-value">${users}</span></div> 
268            <#else> 
269                GLOBE Teacher:</span><span class="report-data-value">${users}</span></div> 
270            </#if> 
271 
272            <div class="report-data-row" ><span class="report-data-title" >Contributors:</span><span class="report-data-value" >${project_additional_authors.getData()}</span></div> 
273            <div class="report-data-row" ><span class="report-data-title" >Report Type(s):</span><span class="report-data-value" >${reportTypes}</span></div> 
274            <div class="report-data-row" ><span class="report-data-title" >Protocols:</span><span class="report-data-value" >${protocols}</span></div> 
275 
276            <#if (reportType == "ivss_report" || reportType == "mission_earth_report") > 
277                <#if (videoLink?has_content && videoLink?length > 0) > 
278                    <#if (!stringUtil.startsWith(videoLink, "http://") && !stringUtil.startsWith(videoLink, "https://")) > 
279                        <#assign videoLink = "http://" + videoLink /> 
280                    </#if> 
281                    <div class="report-data-row"> 
282                        <span class="report-data-title">Presentation Video:</span><span  
283                                class="report-data-value" > 
284                            <a href="${videoLink}" target="_blank">View Video</a> 
285                        </span> 
286                    </div> 
287                </#if> 
288 
289 
290 
291                <#if (presentationLink?has_content && presentationLink?length > 0) > 
292                    <div class="report-data-row"> 
293                        <span class="report-data-title">Presentation Poster:</span><span  
294                                class="report-data-value"> 
295                            <a href="${presentationLink}" target="_blank">View Document</a> 
296                        </span> 
297                    </div> 
298                </#if> 
299            </#if> 
300            <#if (reportType == "ivss_report") > 
301                <div class="report-data-row"> 
302                    <span class="report-data-title">Optional Badges:</span><span  
303                            class="report-data-value" >${badges}</span> 
304                </div> 
305            </#if> 
306            <div class="report-data-row" > 
307                <span class="report-data-title" >Language(s):</span><span  
308                        class="report-data-value" >${languages}</span> 
309            </div> 
310            <div class="report-data-row" > 
311                <span class="report-data-title" >Date Submitted:</span><span  
312                        class="report-data-value" >${projectDate}</span> 
313            </div> 
314        </div> 
315        <div id="report-image" > 
316            <img src="${projectImageUrl}" alt="${project_thumbnail_alt_tag.getData()}"> 
317        </div> 
318    </div> 
319    <div id="report-url-description"> 
320        <#if (project_linkto_document.getData() != "")> 
321            <div > 
322                <a href="${project_linkto_document.getData()}" target="_blank"><b>View Research Report</b></a><br> 
323            </div> 
324        </#if> 
325        <div id="report-description"> 
326            ${project_description.getData()} 
327        </div> 
328    </div> 
329</div> 



Comments

Interesting project! What was the most surprising thing that you learned through this research?

Furthermore, It seems that there are quite a few additional research investigations that could come from this project. What would you study next, and why?
This project helped us take what we learned in class, and see how the factors influence and impact each other. For example how temperature and dissolved oxygen are directly related, and how the data changed as the water moved downstream. We hope samples will continue to be collected at these sites to see if results are consistent or to determine if factors such as drought, would impact the data. To continue and add to this study it would be interesting to see the data if next year’s class can collect every week. Also, we would like to be much more involved in a comparative study with Mr. Connick’s project in Mahopac High School, New York. This would be important to study because we are along similar latitude coordinates, therefore we could track climate changes and also see how our hydrology data is impacted at the different locations.
Hello Andrew, Emily, Samarah, Poorva, Taylor, Emily, and Toria. Thanks for providing an interesting research project. As you were analyzing your data were you able to determine why there is a relationship between water temperature and dissolved oxygen? Why is dissolved oxygen lower when water temperature is high and vice versa?

If you were able to collect these data throughout the year (perhaps every two weeks) what do you think the data would tell you? Perhaps next year's class can pick up on your data collection at the same sites and continue building this data legacy. Consistency in the time of day that data are collected would also be important in looking for trends in data. I hope to see more data in the future.
Hello Gary!
From what we observed, the relationship between dissolved oxygen and water temperature had a lot to do with the seasonal changes. As the temperature lowered, there were less active living organism such as macroinvertebrates using the oxygen; and vice versa as the temperature increases, there are more active fish and macroinvertebrates using more oxygen.
If we were able to collect more frequently, we would hope see clearer trends and patterns in the data. We do hope that next year’s class will be able to use are same GPS coordinates to continue our data collection. Then in a few years it will be interesting to see if the trends continue or change in the data set. We were careful to collect during 11am and 1pm eastern standard time, however we did always collect on the same days; this is again something we hope to improve on the study for next year.