1//----------------------------------- 2//ANTIGO - VOLTOU --- INICIO 3function downloadTemperatura(){ 4 $.get(URL_BREAKNEWS_TEMPERATURA, function( data ) { 5 //let dados=JSON.parse(data); 6 let dados = dataToJson(data); 7 downloadBreakNewsNivelRio(); 8 drawBreakNewsTemp(dados); 9 }); 10} 11 12function drawBreakNewsTemp(dados){ 13 breakTemperatura=''; 14 if(dados){ 15 let temperatura = dados[dados.length-1]; 16 if(temperatura){ 17 breakTemperatura=' <i class="fa fa-thermometer-three-quarters" aria-hidden="true"></i> Temperatura Atual: '+numeroBR(temperatura.valor)+'°C '+breakNewsDot(); 18 } 19 } 20} 21 22function dataToJson(data){ 23 let ret = data; 24 try{ 25 ret =JSON.parse(data); 26 } catch (e) { 27 ret = data; 28 } 29 return ret; 30} 31 32function downloadBreakNews(){ 33 try{ 34 $.get(URL_BREAKNEWS_SIT_ATU, function( data ) { 35 let dados1=data; 36 $.get(URL_BREAKNEWS_RIO, function( data ) { 37 let dados2=data; 38 drawBreakNewsNivel(dados2); 39 }); 40 drawBreakNews(dados1); 41 }); 42 }finally{ 43 $.get(URL_BREAKNEWS_SIT_ATU, function( data ) { 44 //let dados=JSON.parse(data); 45 //let dados = dataToJson(data); 46 let dados = dataToJson(data); 47 downloadBreakNewsNivelRio(); 48 drawBreakNews(dados); 49 }); 50 } 51 52// $.get(URL_BREAKNEWS_SIT_ATU, function( data ) { 53// let dados1=data; 54// $.get(URL_BREAKNEWS_RIO, function( data ) { 55// let dados2=data; 56// drawBreakNewsNivel(dados2); 57// }); 58// drawBreakNews(dados1); 59// }); 60 61 62// $.get(URL_BREAKNEWS_SIT_ATU, function( data ) { 63// let dados=JSON.parse(data); 64// downloadBreakNewsNivelRio(); 65// drawBreakNews(dados); 66// }); 67 68} 69 70var breakNewsCorpo=''; 71var breakNivel=''; 72var breakSituacao=''; 73var breakTemperatura=''; 74 75function downloadBreakNewsNivelRio(){ 76 $.get(URL_BREAKNEWS_RIO, function( data ) { 77 //let dados=JSON.parse(data); 78 let dados = dataToJson(data); 79 drawBreakNewsNivel(dados); 80 }); 81} 82 83function repaintBreakNews(){ 84 breakNewsCorpo='Situação Atual em Blumenau - '+breakNivel+breakSituacao+breakTemperatura; 85 document.getElementById('breaknews_corpo').innerHTML=breakNewsCorpo; 86} 87 88function drawBreakNews(dados){ 89 maximoIndicador(dados); 90 breakSituacao=''; 91 breakSituacao+='Atualização: '+formatDtBr(dados.datahoraAtualizacao)+breakNewsDot(); 92 dados.dados.map(function(umDado) { 93 if(umDado.tipo=='cch'){ 94 breakSituacao+='<i class="fa fa-cloud" aria-hidden="true"></i> ' 95 } 96 if(umDado.tipo=='pes'){ 97 breakSituacao+='<i class="fa fa-industry" aria-hidden="true"></i> '; 98 } 99 100 breakSituacao+=umDado.tipoNome+breakNewsDot(); 101 umDado.sitregioes.map(function(umTipo){ 102 breakSituacao+='Região: '+umTipo.regiao.nome+' '; 103 104 let cond=umTipo.condicao; 105 breakSituacao+='<span class="breaknews_condicao" style="background-color:'+cond.cor_fundo+'; color: '+cond.cor_fonte+'">'+cond.condicao+'</span>'+breakNewsDot(); 106 }); 107 }); 108 109} 110 111function maximoIndicador(dados){ 112 let condicaoMaxima={nivel:0}; 113 dados.dados.map(function(umDado) { 114 breakSituacao+=umDado.tipoNome+breakNewsDot(); 115 umDado.sitregioes.map(function(umTipo){ 116 let cond=umTipo.condicao; 117 if(cond.nivel > condicaoMaxima.nivel){ 118 condicaoMaxima=cond; 119 } 120 }); 121 }); 122 if(condicaoMaxima.nivel>0){ 123 let breaknews_status = document.getElementById('breaknews_status') 124 breaknews_status.style.color = condicaoMaxima.cor_fonte; 125 breaknews_status.style.backgroundColor = condicaoMaxima.cor_fundo; 126 document.getElementById('breaknews_wrap').style.border= 'solid 1px #'+condicaoMaxima.cor_fundo; 127 document.getElementById('breaknews_status').innerHTML = condicaoMaxima.condicao; 128 } 129} 130 131function formatDtBr(umDt){ 132 let dt = new Date(umDt); 133 return dt.toLocaleDateString()+' '+dt.toLocaleTimeString().substr(0,5); 134} 135 136function numeroBR(num){ 137 return (num)?(''+num.toFixed(2)).replace('.',','):''; 138} 139 140function drawBreakNewsNivel(niveis){ 141 let nivel= niveis.niveis[niveis.niveis.length-1].nivel; 142 breakNivel='<i class="fa fa-line-chart" aria-hidden="true"></i> '; 143 breakNivel+='NÃvel do Rio ItajaÃ-Açu em Blumenau: '+numeroBR(nivel)+flechaNivelRio(niveis)+breakNewsDot(); 144 repaintBreakNews(); 145} 146 147function flechaSubiu(){ 148 return '<i class="fa fa-arrow-up" style="color:red;" aria-hidden="true"></i>'; 149} 150 151function flechaDesceu(){ 152 return '<i class="fa fa-arrow-down" style="color:green;" aria-hidden="true"></i>'; 153} 154 155function flechaNivelRio(niveis){ 156 let atual= niveis.niveis[niveis.niveis.length-1].nivel; 157 let anterior= niveis.niveis[niveis.niveis.length-2].nivel; 158 let flecha = ' '; 159 if(atual!=anterior){ 160 flecha=(atual>anterior)?flechaSubiu()+' Subiu '+' ':flechaDesceu()+' Desceu '+' '; 161 } 162 return flecha; 163} 164 165function breakNewsDot(){ 166 return ' <span class="breaknews_dot"></span> '; 167} 168 169function refreshBreakNews(){ 170 downloadBreakNews(); 171 downloadTemperatura(); 172} 173 174function main_BreakNews(){ 175 refreshBreakNews(); 176 setInterval(function(){ refreshBreakNews(); }, 2*60*1000); 177} 178 179main_BreakNews();
180//ANTIGO - VOLTOU --- FIM 181//------------------------------ 182 183/* 184 185//NOVO - REMOVIDO --- INICIO 186 187var breakNewsCorpo = ''; 188var breakNivel = ''; 189var breakSituacao = ''; 190var breakTemperatura = ''; 191 192function dataToJson(data) { 193 let ret = data; 194 try { 195 ret = typeof data === 'string' ? JSON.parse(data) : data; 196 } catch (e) { 197 ret = data; 198 } 199 return ret; 200} 201 202function formatDtBr(umDt) { 203 let dt = new Date(umDt); 204 return dt.toLocaleDateString() + ' ' + dt.toLocaleTimeString().substr(0, 5); 205} 206 207function numeroBR(num) { 208 return (num !== undefined && num !== null) ? ('' + Number(num).toFixed(2)).replace('.', ',') : ''; 209} 210 211function flechaSubiu() { 212 return '<i class="fa fa-arrow-up" style="color:#ef4444; margin-left: 4px;" aria-hidden="true"></i>'; 213} 214 215function flechaDesceu() { 216 return '<i class="fa fa-arrow-down" style="color:#22c55e; margin-left: 4px;" aria-hidden="true"></i>'; 217} 218 219function flechaNivelRio(niveis) { 220 if (!niveis || !niveis.niveis || niveis.niveis.length < 2) return ''; 221 let atual = niveis.niveis[niveis.niveis.length - 1].nivel; 222 let anterior = niveis.niveis[niveis.niveis.length - 2].nivel; 223 if (atual !== anterior) { 224 return (atual > anterior) ? flechaSubiu() : flechaDesceu(); 225 } 226 return ''; 227} 228 229function maximoIndicador(dados) { 230 var $statusTexto = $('#breaknews_status'); 231 var $statusIcon = $('#breaknews_status_icon'); 232 233 if (!$statusTexto.length) return; 234 235 var maiorNivel = 0; 236 var situacaoAtual = 'Normalidade'; 237 var corFundo = '#64EE64'; // Verde padrão do JSON 238 239 // Percorre o JSON para encontrar o maior nÃvel de alerta ativo 240 if (dados && dados.dados && Array.isArray(dados.dados)) { 241 dados.dados.forEach(function(topico) { 242 if (topico.sitregioes && Array.isArray(topico.sitregioes)) { 243 topico.sitregioes.forEach(function(item) { 244 if (item.condicao && item.condicao.nivel > maiorNivel) { 245 maiorNivel = item.condicao.nivel; 246 situacaoAtual = item.condicao.condicao; 247 corFundo = item.condicao.cor_fundo || '#64EE64'; 248 } 249 }); 250 } 251 }); 252 } 253 254 // 1. Atualiza o texto do status geral 255 $statusTexto.text(situacaoAtual).css({ 256 'color': corFundo, 257 'background-color': 'transparent', 258 'background': 'none' 259}); 260 261 // 2. Atualiza o Ãcone e a borda dinamicamente 262 if ($statusIcon.length) { 263 let icone = 'fa-check'; // Padrão Normalidade 264 265 // Define o Ãcone de acordo com o texto da condição 266 var textoLower = situacaoAtual.toLowerCase(); 267 if (textoLower.includes('aten')) { 268 icone = 'fa-exclamation-triangle'; 269 } else if (textoLower.includes('alert') || textoLower.includes('emerg')) { 270 icone = 'fa-exclamation-circle'; 271 } 272 273 $statusIcon.css({ 274 'border-color': corFundo, 275 'color': corFundo, 276 'background-color': 'rgba(255, 255, 255, 0.05)' 277 }).html('<i class="fa ' + icone + '"></i>'); 278 } 279} 280//NOVO - REMOVIDO --- FIM 281*/ 282 283/* 284//OLD - NAO USADO--- INICIO 285function drawBreakNews(dados) { 286 maximoIndicador(dados); 287 breakSituacao = ''; 288 289 if (dados && dados.dados) { 290 dados.dados.forEach(function(umDado) { 291 292 // Define o tópico (Condições Meteorológicas, Risco de Deslizamento...) 293 let tipoTitulo = umDado.tipoNome || 'Situação'; 294 295 // Escolhe o Ãcone de acordo com o tópico que veio do JSON 296 let iconeClasse = 'fa-info-circle'; 297 let nomeLower = tipoTitulo.toLowerCase(); 298 299 if (nomeLower.includes('meteorolog') || nomeLower.includes('tempo')) { 300 iconeClasse = 'fa-cloud'; // Ãcone de nuvem 301 } else if (nomeLower.includes('desliz') || nomeLower.includes('solo') || nomeLower.includes('geolog')) { 302 iconeClasse = 'fa-industry'; // ou 'fa-mountain' / 'fa-exclamation-triangle' 303 } else if (nomeLower.includes('regi')) { 304 iconeClasse = 'fa-map-marker'; // Ãcone de localização 305 } 306 breakSituacao += '<div class="dash-card">'; 307 breakSituacao += ' <div class="dash-card-icon"><i class="fa ' + iconeClasse + '"></i></div>'; 308 breakSituacao += ' <div class="dash-card-info">'; 309 breakSituacao += ' <span class="dash-card-label">' + tipoTitulo + '</span>'; 310 breakSituacao += ' </div>'; 311 breakSituacao += '</div>'; 312 313 if (umDado.sitregioes) {
314 umDado.sitregioes.forEach(function(umTipo) { 315 let cond = umTipo.condicao; 316 let corDot = cond.cor_fundo || '#22c55e'; 317 318 // Nome da região ou tópico(deslizamento e condições meteorológicas) 319 let nomeRegiao = umTipo.regiao ? umTipo.regiao.nome : ''; 320 let labelCompleto = nomeRegiao ? tipoTitulo + ': ' + nomeRegiao : tipoTitulo; 321 322 breakSituacao += '<div class="dash-card">'; 323 breakSituacao += ' <div class="dash-card-icon"><i class="fa fa-map-marker"></i></div>'; 324 breakSituacao += ' <div class="dash-card-info">'; 325 breakSituacao += ' <span class="dash-card-label">' + labelCompleto + '</span>'; 326 breakSituacao += ' <span class="dash-card-status" style="color: #ffffff;">'; 327 breakSituacao += ' <span class="status-dot" style="background-color:' + corDot + ';"></span> '; 328 breakSituacao += cond.condicao; 329 breakSituacao += ' </span>'; 330 breakSituacao += ' </div>'; 331 breakSituacao += '</div>'; 332 }); 333 } 334 }); 335 } 336 repaintBreakNews(); 337//OLD - NAO USADO--- FIM 338}*/ 339 340/* 341//NOVO - REMOVIDO --- INICIO 342function drawBreakNews(dados) { 343 maximoIndicador(dados); 344 breakSituacao = ''; 345 346 if (dados && dados.dados) { 347 dados.dados.forEach(function(umDado) { 348 349 // Define o tópico (Condições Meteorológicas, Risco de Deslizamento) 350 let tipoTitulo = umDado.tipoNome || 'Situação'; 351 352 // Escolhe o Ãcone de acordo com o tópico 353 let iconeClasse = 'fa-info-circle'; 354 // Remove acentos e converte para minúsculas 355 let nomeLower = tipoTitulo.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""); 356 357 // Checa palavras-chave sem se preocupar com acentuação 358 if (nomeLower.includes('meteorolog') || nomeLower.includes('tempo') || nomeLower.includes('clima') || nomeLower.includes('previsao')) { 359 iconeClasse = 'fa-cloud'; // Ãcone de nuvem 360 } else if (nomeLower.includes('desliz') || nomeLower.includes('solo') || nomeLower.includes('geolog')) { 361 iconeClasse = 'fa-industry'; 362 } else if (nomeLower.includes('regi')) { 363 iconeClasse = 'fa-map-marker'; 364} 365 366 // CARD DO TÃPICO PRINCIPAL (adicionada a classe 'label-topico') 367 breakSituacao += '<div class="dash-card">'; 368 breakSituacao += ' <div class="dash-card-icon"><i class="fa ' + iconeClasse + '"></i></div>'; 369 breakSituacao += ' <div class="dash-card-info">'; 370 breakSituacao += ' <span class="dash-card-label label-topico">' + tipoTitulo + '</span>'; 371 breakSituacao += ' </div>'; 372 breakSituacao += '</div>'; 373 374 // CARDS DAS REGIÃES VINCULADAS 375 if (umDado.sitregioes) { 376 umDado.sitregioes.forEach(function(umTipo) { 377 let cond = umTipo.condicao; 378 let corDot = cond.cor_fundo || '#22c55e'; 379 380 let nomeRegiao = umTipo.regiao ? umTipo.regiao.nome : ''; 381 let labelCompleto = nomeRegiao ? tipoTitulo + ': ' + nomeRegiao : tipoTitulo; 382 383 breakSituacao += '<div class="dash-card">'; 384 breakSituacao += ' <div class="dash-card-icon"><i class="fa fa-map-marker"></i></div>'; 385 breakSituacao += ' <div class="dash-card-info">'; 386 breakSituacao += ' <span class="dash-card-label">' + labelCompleto + '</span>'; 387 breakSituacao += ' <span class="dash-card-status">'; 388 breakSituacao += ' <span class="status-dot" style="background-color:' + corDot + ';"></span> '; 389 breakSituacao += cond.condicao; 390 breakSituacao += ' </span>'; 391 breakSituacao += ' </div>'; 392 breakSituacao += '</div>'; 393 }); 394 } 395 }); 396 } 397 repaintBreakNews(); 398} 399 400function drawBreakNewsNivel(niveis) { 401 if (niveis && niveis.niveis && niveis.niveis.length > 0) { 402 let nivel = niveis.niveis[niveis.niveis.length - 1].nivel; 403 breakNivel = '<div class="dash-card">' + 404 ' <div class="dash-card-icon"><i class="fa fa-line-chart"></i></div>' + 405 ' <div class="dash-card-info">' + 406 ' <span class="dash-card-label">NÃvel do Rio ItajaÃ-Açu</span>' + 407 ' <span class="val-rio">' + numeroBR(nivel) + ' m ' + flechaNivelRio(niveis) + '</span>' + 408 ' </div>' + 409 '</div>'; 410 } 411 repaintBreakNews(); 412} 413 414function drawBreakNewsTemp(dados) { 415 if (dados && dados.length > 0) { 416 let temperatura = dados[dados.length - 1]; 417 if (temperatura) { 418 breakTemperatura = '<div class="dash-card">' + 419 ' <div class="dash-card-icon"><i class="fa fa-thermometer-half"></i></div>' + 420 ' <div class="dash-card-info">' + 421 ' <span class="dash-card-label">Temperatura Atual</span>' + 422 ' <span class="val-temp">' + numeroBR(temperatura.valor) + '°C</span>' + 423 ' </div>' + 424 '</div>'; 425 } 426 } 427 repaintBreakNews(); 428} 429 430function downloadBreakNewsNivelRio() { 431 $.get(URL_BREAKNEWS_RIO, function(data) { 432 let dados = dataToJson(data); 433 drawBreakNewsNivel(dados); 434 });
435} 436 437function downloadTemperatura() { 438 $.get(URL_BREAKNEWS_TEMPERATURA, function(data) { 439 let dados = dataToJson(data); 440 drawBreakNewsTemp(dados); 441 }); 442} 443 444function downloadBreakNews() { 445 $.get(URL_BREAKNEWS_SIT_ATU, function(data) { 446 let dados = dataToJson(data); 447 downloadBreakNewsNivelRio(); 448 drawBreakNews(dados); 449 }); 450} 451 452function repaintBreakNews() { 453 let blocoOriginal = breakNivel + breakSituacao + breakTemperatura; 454 455 // Duplica o conteúdo para não ter espaço vazio quando acabar as informações 456 let el = document.getElementById('breaknews_corpo'); 457 if (el) { 458 el.innerHTML = blocoOriginal + blocoOriginal; 459 } 460} 461 462function refreshBreakNews() { 463 downloadBreakNews(); 464 downloadTemperatura(); 465} 466 467// Função para disparar todas as chamadas 468function main_BreakNews() { 469 refreshBreakNews(); 470 setInterval(function() { 471 refreshBreakNews(); 472 }, 2 * 60 * 1000); 473} 474 475// Executa assim que o navegador terminar de carregar o HTML 476$(document).ready(function() { 477 main_BreakNews(); 478}); 479//NOVO - REMOVIDO --- FIM 480*/
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.