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 33, column 26]

----
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 33, column 9]
----
1<#assign 
2orgArray = [] 
3countryArray = [] 
4userArray = [] 
5badgeArray = [] 
6languageArray = [] 
7protocolArray = [] 
8reportTypesArray = [] 
9orgLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") 
10userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService") 
11groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") 
12userGroupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserGroupLocalService") 
13idLocalService = serviceLocator.findService("gov.globe.util.idlookup.service.IDLookupLocalService") 
14assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
15globeDataService = serviceLocator.findService("gov.globe.util.services.GLOBE_DataServiceUtil") 
16globeMemberId = idLocalService.getId("globe.usergroupid.globe_members") 
17approvedUSId = idLocalService.getId("globe.usergroupid.account_approved_us") 
18preCandidateUSId = idLocalService.getId("globe.usergroupid.precandidate_us") 
19candidateId = idLocalService.getId("globe.usergroupid.candidates") 
20projectDate = getterUtil.getString(project_date.getData()) 
21reportType = "" 
22accountType = "" 
23videoLink = "" 
24presentationLink = "" 
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 + ["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 + ["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 
221organizations = stringUtil.merge(orgArray, ", ") 
222countries = stringUtil.merge(countryArray, ", ") 
223users = stringUtil.merge(userArray, ", ") 
224badges = stringUtil.merge(badgeArray, ", ") 
225languages = stringUtil.merge(languageArray, ", ") 
226reportTypes = stringUtil.merge(reportTypesArray, ", ") 
227protocols = stringUtil.merge(protocolArray, ", ") 
228projectImageUrl = 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            <#if (validator.isNotNull(project_grade.getData())) > 
272                <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> 
273            </#if> 
274            <div class="report-data-row" ><span class="report-data-title" > 
275            GLOBE Member(s):</span><span class="report-data-value">${users}</span></div> 
276 
277        <div class="report-data-row" ><span class="report-data-title" >Contributors:</span><span class="report-data-value" >${project_additional_authors.getData()}</span></div> 
278        <div class="report-data-row" ><span class="report-data-title" >Report Type(s):</span><span class="report-data-value" >${reportTypes}</span></div> 
279        <div class="report-data-row" ><span class="report-data-title" >Protocols:</span><span class="report-data-value" >${protocols}</span></div> 
280 
281        <#if (reportType == "ivss_report" || reportType == "mission_earth_report") > 
282            <#if (videoLink?has_content && videoLink?length > 0) > 
283                <#if (!stringUtil.startsWith(videoLink, "http://") && !stringUtil.startsWith(videoLink, "https://")) > 
284                    <#assign videoLink = "http://" + videoLink /> 
285                </#if> 
286                <div class="report-data-row"> 
287                    <span class="report-data-title">Presentation Video:</span><span 
288                            class="report-data-value" > 
289                            <a href="${videoLink}" target="_blank">View Video</a> 
290                        </span> 
291                </div> 
292            </#if> 
293 
294            <#if (presentationLink?has_content && presentationLink?length > 0) > 
295                <div class="report-data-row"> 
296                    <span class="report-data-title">Presentation Poster:</span><span 
297                            class="report-data-value"> 
298                            <a href="${presentationLink}" target="_blank">View Document</a> 
299                        </span> 
300                </div> 
301            </#if> 
302        </#if> 
303        <#-- GLOBE-7038: Hide Optional Badges from SRR Detail Page --> 
304        <#--            <#if (reportType == "ivss_report") >--> 
305        <#--                <div class="report-data-row">--> 
306        <#--                    <span class="report-data-title">Optional Badges:</span><span --> 
307        <#--                            class="report-data-value" >${badges}</span>--> 
308        <#--                </div>--> 
309        <#--            </#if>--> 
310        <div class="report-data-row" > 
311            <span class="report-data-title" >Language(s):</span><span 
312                    class="report-data-value" >${languages}</span> 
313        </div> 
314        <div class="report-data-row" > 
315            <span class="report-data-title" >Date Submitted:</span><span 
316                    class="report-data-value" >${projectDate}</span> 
317        </div> 
318    </div> 
319    <div id="report-image" class="col-12 col-sm-5 col-md-4 order-1 text-center pb-4"> 
320        <img src="${projectImageUrl}" alt="${project_thumbnail_alt_tag.getData()}" onerror="this.src='/o/gov-globe-main-theme/images/GLOBE_news_and_events_thumbnail.jpg'"> 
321    </div> 
322</div> 
323<div id="report-url-description"> 
324    <#if (project_linkto_document.getData() != "")> 
325        <div > 
326            <a href="${project_linkto_document.getData()}" target="_blank"><b>View Research Report</b></a><br> 
327        </div> 
328    </#if> 
329    <div id="report-description"> 
330        ${project_description.getData()} 
331    </div> 
332</div> 
333</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?