Acompanhe

SACE

A plataforma SACE disponibiliza, em tempo real, todas as informações produzidas pelo Sistema de Alerta Hidrológico - SAH do SGB/CPRM. São boletins de monitoramento e alerta, contendo previsões de níveis dos rios, dados de chuva e níveis dos principais rios das bacias monitoradas.


Sistemas de Alerta
  • Seca Extrema

  • Inundação Severa

  • Inundação

  • Alerta

  • Atenção

  • Normal



Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> jsonObj.url  [in template "20096#20121#46636" at line 55, column 97]

----
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: #assign imgUrl = jsonObj.url  [in template "20096#20121#46636" at line 55, column 81]
----
1<#assign dlService=serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
2<#assign ddmFieldLocalService=serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMFieldLocalService") /> 
3 
4<div id="noticias"> 
5	<#if entries?has_content> 
6		<div class="container"> 
7			<div class="row title"> 
8				<div class="col-12"> 
9					<div class="nossosProdutosTag" style="font-size: 15px;"><span class="nossosProdutosTagText" style="font-size: 15px;">Informe-se</span> 
10           </div> 
11					<br> 
12					<h2 class="font-weight-bold">Notícias</h2> 
13				</div> 
14			</div> 
15			<div class="row"> 
16                 
17				<#list entries as curEntry> 
18					<#if curEntry.getClassName()=="com.liferay.journal.model.JournalArticle"> 
19						<#assign assetRenderer=curEntry.getAssetRenderer() /> 
20						<#assign journalArticle=assetRenderer.getAssetObject() /> 
21						<#assign ddmStructure=journalArticle.getDDMStructure() /> 
22						<#assign ddmForm=ddmStructure.getDDMForm() /> 
23						<#assign ddmFormValues=ddmFieldLocalService.getDDMFormValues(ddmForm, 
24							journalArticle.getId()) /> 
25						<#assign ddmFormFieldValues=ddmFormValues.getDDMFormFieldValues() /> 
26						<#assign imageURL="/documents/" + curEntry.getGroupId() + "/" + curEntry.getEntryId() 
27							+ "/" /> 
28						<#assign titulo="" /> 
29						<#assign desc="" /> 
30						<#assign jsonObj="" /> 
31						<#assign viewURL=assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, 
32							curEntry) /> 
33						<#if assetLinkBehavior !="showFullContent" && 
34							assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL)??> 
35							<#assign viewURL=assetRenderer.getURLViewInContext(renderRequest, renderResponse, 
36								viewURL) /> 
37						</#if> 
38 
39						<#list ddmFormFieldValues as fieldName> 
40							<#if fieldName.getFieldReference()=='campoImagem'> 
41								<#attempt> 
42								  <#assign jsonObj = jsonFactoryUtil.createJSONObject(fieldName.getValue().getString(locale)) /> 
43								  <#if jsonObj=="{}"> 
44									  <#assign imgUrl="" /> 
45									<#else> 
46										<#assign imgUrl=jsonObj.url /> 
47								  </#if> 
48								<#recover> 
49									  <#assign imgUrl="" /> 
50								</#attempt> 
51								<#assign jsonObj = jsonFactoryUtil.createJSONObject(fieldName.getValue().getString(locale)) /> 
52								<#if jsonObj=="{}"> 
53									<#assign imgUrl="" /> 
54									<#else> 
55										<#assign imgUrl=jsonObj.url /> 
56								</#if> 
57							</#if> 
58							<#if fieldName.getFieldReference()=='campoConteudo'> 
59								<#assign desc=fieldName.getValue().getString(locale) /> 
60							</#if> 
61							<#if fieldName.getFieldReference()=='campoSumario'> 
62								<#assign intro=fieldName.getValue().getString(locale) /> 
63							</#if> 
64						  <#if fieldName.getFieldReference()=='campoTextoFlag'> 
65								<#assign flagtext=fieldName.getValue().getString(locale) /> 
66							</#if> 
67						  <#if fieldName.getFieldReference()=='campoCorFlag'> 
68								<#assign flagtextcolor=fieldName.getValue().getString(locale) /> 
69							</#if> 
70							<#if fieldName.getFieldReference()=='campoIconSvgFlag'> 
71								<#assign flagiconsvg=fieldName.getValue().getString(locale) /> 
72							</#if>		 
73						</#list> 
74							 
75							<#assign month = curEntry.publishDate?date?string('MM') /> 
76							<#assign year = curEntry.publishDate?date?string('yyyy') /> 
77							<#assign showImage = false /> 
78							<#if (year?number > 2023) || (year?number == 2023 && month?number > 10)> 
79								<#assign showImage = true /> 
80							</#if> 
81							 
82							<#if (curEntry?index <= 1) > 
83 
84									<#if curEntry?index==0> 
85									<div class="col-12 col-md-5 mult-md mb-4"> 
86									</#if> 
87										<div class="card card-md"> 
88											<!-- 
89												<#if showImage> 
90											<div class="img-content"> 
91												<div class="img" 
92													style="background-image: url(${imgUrl});"> 
93												</div> 
94											</div> 
95											</#if> 
96											--> 
97											 
98											<div class="info <#if showImage == false> w-100</#if>"> 
99												<div class="body"> 
100													<#if flagtext != ""> 
101													<div class="flag" style="background-color: #${flagtextcolor}"> 
102														<#if flagiconsvg != ""> 
103                                   <div class="icon"> ${flagiconsvg}</div> 
104														</#if> 
105													  ${flagtext} 
106													</div> 
107												  </#if> 
108													<h4 class="mb-4 mt-2 size-up-03">${curEntry.getTitle(locale)}</h4> 
109													<p>${intro}</p> 
110												</div> 
111												<div class="footer"> 
112													<a class="user-content stretched-link" href="${viewURL}"> 
113														<div class="left-content"> 
114															<p><span class="size-up-01 weight-bold d-none">${curEntry.userName}</span> <br /><span 
115																	class="date">${curEntry.publishDate?date?string('dd/MM/yyyy')}</span></p> 
116														</div> 
117														<div class="icon"> 
118															<svg width="15" height="14" viewBox="0 0 15 14" fill="none" 
119																xmlns="http://www.w3.org/2000/svg"> 
120																<path 
121																	d="M5.9375 1.09375L6.625 0.40625C6.9375 0.125 7.40625 0.125 7.6875 0.40625L13.7812 6.46875C14.0625 6.78125 14.0625 7.25 13.7812 7.53125L7.6875 13.625C7.40625 13.9062 6.9375 13.9062 6.625 13.625L5.9375 12.9375C5.65625 12.625 5.65625 12.1562 5.9375 11.8438L9.71875 8.25H0.75C0.3125 8.25 0 7.9375 0 7.5V6.5C0 6.09375 0.3125 5.75 0.75 5.75H9.71875L5.9375 2.1875C5.65625 1.875 5.625 1.40625 5.9375 1.09375Z" 
122																	fill="white" /> 
123															</svg> 
124														</div> 
125													</a> 
126												</div> 
127											</div> 
128 
129										</div> 
130									<#if curEntry?index==1> 
131									</div> 
132									</#if> 
133								 
134 
135								<#else> 
136									<#if curEntry?index==2> 
137									<div class="col-12 col-md-7 mult-sm mb-4"> 
138									</#if> 
139										<div class=" card card-sm"> 
140											<!-- 
141												<#if showImage> 
142											<div class="img-content"> 
143												<div class="img" 
144													style="background-image: url(${imgUrl});"> 
145												</div> 
146											</div> 
147										</#if> 
148											--> 
149											<div class="info <#if showImage == false> w-100</#if>"> 
150												<#if flagtext != ""> 
151													<div class="flag" style="background-color: #${flagtextcolor}"> 
152														<#if flagiconsvg != ""> 
153                                   <div class="icon"> ${flagiconsvg}</div> 
154														</#if> 
155													  ${flagtext} 
156													</div> 
157												</#if> 
158												<h4 class="size-up-01">${curEntry.getTitle(locale)}</h4> 
159												<p class="mb-1">${intro}</p> 
160												<a class="user-content stretched-link" href="${viewURL}"> 
161													<p><span class="size-up-01 weight-bold d-none">${curEntry.userName}</span> <br /><span 
162															class="date">${curEntry.publishDate?date?string('dd/MM/yyyy')}</span></p> 
163													<div class="icon"> 
164														<svg width="15" height="14" viewBox="0 0 15 14" fill="none" 
165															xmlns="http://www.w3.org/2000/svg"> 
166															<path 
167																d="M5.9375 1.09375L6.625 0.40625C6.9375 0.125 7.40625 0.125 7.6875 0.40625L13.7812 6.46875C14.0625 6.78125 14.0625 7.25 13.7812 7.53125L7.6875 13.625C7.40625 13.9062 6.9375 13.9062 6.625 13.625L5.9375 12.9375C5.65625 12.625 5.65625 12.1562 5.9375 11.8438L9.71875 8.25H0.75C0.3125 8.25 0 7.9375 0 7.5V6.5C0 6.09375 0.3125 5.75 0.75 5.75H9.71875L5.9375 2.1875C5.65625 1.875 5.625 1.40625 5.9375 1.09375Z" 
168																fill="white" /> 
169														</svg> 
170													</div> 
171												</a> 
172											</div> 
173										</div> 
174									<#if curEntry?index==4> 
175									</div> 
176									</#if> 
177							</#if> 
178                         
179						 
180					</#if> 
181				</#list> 
182				</div> 
183					 
184			</div> 
185	</#if> 
186</div> 
187 
188 
189	<style> 
190		#noticias { 
191			background-color: var(--gray-200); 
192			padding-top: 4%; 
193
194 
195		#noticias .title { 
196			margin-bottom: 20%; 
197
198 
199		#noticias .title h2 { 
200			color: var(--blue-500); 
201			font-weight: 100; 
202
203 
204		#noticias .card { 
205			border-color: var(--cyan); 
206			border-radius: 35px; 
207			padding: 24px; 
208			height: 100%; 
209
210 
211		#noticias .card h4 { 
212			color: var(--blue-500); 
213
214 
215		#noticias .card-sm .img-content { 
216			position: relative; 
217			margin-bottom: 32%; 
218
219 
220		#noticias .card .img-content .img { 
221			background-size: cover; 
222			background-position: center; 
223			background-repeat: no-repeat; 
224			border-radius: 24px; 
225			bottom: 0; 
226			position: absolute; 
227
228 
229		#noticias .card .flag { 
230			background: white; 
231			color: var(--white); 
232			display: flex; 
233			align-items: center; 
234			padding: 4px; 
235			border-radius: 4px; 
236			width: max-content; 
237
238 
239		#noticias .card .flag .icon { 
240			margin-right: 8px; 
241
242		 
243	 
244 
245		#noticias .card .info p { 
246			color: var(--gray-600); 
247
248 
249		#noticias .card .user-content { 
250			display: flex; 
251			align-items: end; 
252			justify-content: space-between; 
253			text-decoration: none; 
254			color: var(--black); 
255
256 
257		#noticias .card .user-content p { 
258			margin: 0; 
259
260 
261		#noticias .card .user-content .picture-content img { 
262			width: 48px; 
263			height: 48px; 
264			border-radius: 50%; 
265
266 
267 
268		#noticias .card .user-content .left-content { 
269			display: flex; 
270			align-items: center; 
271
272 
273		#noticias .card .user-content .left-content .picture-content { 
274			margin-right: 8px; 
275
276 
277		#noticias .card .user-content .icon { 
278			width: 40px; 
279			height: 40px; 
280
281 
282		#noticias a .icon { 
283			background: var(--cyan); 
284			border-radius: 50%; 
285			display: flex; 
286			align-items: center; 
287			justify-content: center; 
288
289 
290        #noticias a:hover{ 
291            background: none; 
292
293 
294		#noticias a:hover .icon { 
295			background: var(--blue-500); 
296			transition: all 0.5s; 
297
298 
299		#noticias .weight-bold { 
300			color: var(--black); 
301
302 
303		#noticias .date { 
304			color: var(--gray-600); 
305
306 
307		#noticias .mult-sm { 
308			display: flex; 
309			flex-direction: column; 
310			justify-content: space-between; 
311
312 
313		#noticias .mult-md { 
314			display: flex; 
315			flex-direction: column; 
316			justify-content: space-evenly; 
317			height: auto; 
318         
319
320 
321		#noticias .card-md .img-content { 
322			bottom: -20%; 
323			position: relative; 
324			margin-bottom: 35%; 
325
326 
327		#noticias .card-md .img-content .img { 
328			width: 254px; 
329    		height: 161px; 
330
331 
332		#noticias .card-sm .img-content { 
333			bottom: -32%; 
334
335 
336		#noticias .card-sm .img-content .img { 
337			width: 264px; 
338    		height: 170px; 
339
340 
341	 
342		#noticias .card-md .info { 
343			height: auto; 
344			display: flex; 
345			flex-direction: column; 
346			justify-content: space-between; 
347
348 
349		#noticias .card-md:last-child { 
350			margin: 0; 
351
352 
353		#noticias .card-sm:last-child { 
354			margin: 0; 
355
356 
357	 
358		#noticias .link { 
359			float: right; 
360			display: flex; 
361			align-items: center; 
362			text-decoration: none; 
363			padding-right: 20px; 
364
365 
366		#noticias .link .icon { 
367			width: 38px; 
368			height: 38px; 
369			margin-left: 8px; 
370
371 
372        @media screen and (min-width: 768px) { 
373 
374			 
375            #noticias .card-sm { 
376                display: flex; 
377                flex-direction: row; 
378                align-items: center; 
379				height: '-webkit-fill-available'; 
380			 
381
382 
383			#noticias .card-sm .img-content { 
384				bottom: -50%; 
385
386 
387			#noticias .card-sm .img-content { 
388				width: 60%; 
389				height: 122%; 
390				position: relative; 
391
392 
393			#noticias .card-sm .img-content .img { 
394				height: inherit; 
395    			width: 90%; 
396
397 
398			#noticias .card-md .img-content  { 
399				height: 24%; 
400				width: 90%; 
401				position: relative; 
402				bottom: 0%; 
403    			margin-bottom: -2%; 
404
405 
406			#noticias .card-md .img-content .img { 
407				width: inherit; 
408    			height: 145%; 
409
410 
411		 
412			#noticias .card-md .info { 
413				height: 76%; 
414				width: 100%; 
415
416 
417			#noticias .card-sm .info{ 
418				width: 100%; 
419
420 
421            #noticias .title{ 
422                margin-bottom: 5%; 
423
424 
425            #noticias .mult-md { 
426                margin: 0; 
427
428 
429            #noticias .info{ 
430                //height: 74%; 
431
432 
433
434 
435		.dark #noticias { 
436			background: var(--dark-contrast); 
437
438 
439		.dark  #noticias .card { 
440			background: var(--dark-background); 
441			border-color: var(--dark-title); 
442
443 
444		.dark #noticias a .icon { 
445			background: var(--dark-title); 
446
447 
448		.dark #noticias a:hover .icon { 
449			background: var(--dark-title-orange); 
450
451	</style>