GLOBE Projects

GLOBE Side Navigation

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

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



Comments

Was all of your water collected around the same time each month to maintain consistent data?
Thank you for sharing this detailed, thoughtful study. I am wondering, how did you choose your sites? Did you expect to see a difference between the water samples from standing water bodies and those from tap water?
I chose my sites according to my prior knowledge of the history of the sites. I did expect the standing water to have more dissolved oxygen and more nitrate than the tap water, which proved to be true.
Hello Sophia,
Thank you for uploading such an interesting and detailed study. We you able to provide these data to some of the administrators - especially those at Walker Science Building, where you notes there might be a problem with the lines?
Looking at your tables of data, the average for the Dissolved Oxygen for 14th avenue site (2.66 ppm) looks a little bit off since your trial values are 7, 8, and 7. Also, how were these water samples collected? Were they collected at similar locations to reduce variables?