;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Coluna

Campo Livre


Campo Livre

José Cruz: Governo ignora a importância do esporte para a economia do país

José Cruz

18/07/2019 04h00

Depois do impacto da drástica redução de verbas públicas para o alto rendimento, quebrando uma rotina de facilidades financeiras que durou 15 anos, o esporte olímpico viaja para os Jogos Pan-Americanos de Lima com o caixa em baixa. A partir do dia 26, o Pan é o primeiro grande teste esportivo da era governamental do capitão-presidente.

Fora os tradicionais favoritos, Estados Unidos, Cuba e Canadá, os demais países não assustam os brasileiros, no geral. E os resultados nas diferentes modalidades ajudarão a projetar o desempenho brasileiro nos Jogos Olímpicos de Tóquio, no ano que vem, para aí sim termos o grande balanço pós-Rio 2016.

Enquanto isso...

Sete meses depois do início do atual governo, faltam informações oficiais sobre os rumos do esporte no Brasil. Temos uma secretaria, algumas autoridades nomeadas, mas faltam rumos quanto às prioridades, por exemplo. E, principalmente, uma definição se o alto rendimento continuará sendo uma responsabilidade do Governo, como foi até dezembro de 2018.

Na falta de definições, dirigentes ficam perdidos, enquanto atletas se multiplicam pelas ruas do país esmolando trocados para viajar e competir. Para um país que sediou megaeventos, é uma vergonha apresentar-se como mendigo do esporte.

Historicamente, as forças armadas têm a prática esportiva em suas rotinas. Por isso, estranha-se tanto silêncio num governo de militares, logo nesse segmento que bem conhecem e sabem que não é espaço de lazer, mas de profissionalismo puro.

No dizer do saudoso professor Manoel José Gomes Tubino, ao propor uma Política Nacional de Esporte: "O esporte, ao deixar de ser entendido unicamente na perspectiva do rendimento e ar a ser percebido também na perspectiva do social (esporte educacional, para deficientes, para a terceira idade, etc) ou a intervir efetivamente na saúde, na educação e no lazer das pessoas. É evidente que esta abrangência ampliada do alcance do esporte no país fez com que o mesmo fosse gradualmente se tornando uma prioridade de Estado".

Ao silenciar sobre o assunto, o governo ignora a importância do segmento do esporte na economia do país. Segundo a Fundação Getúlio Vargas, a indústria esportiva brasileira movimenta cerca de R$ 67 bilhões anuais (dado de 2017).

Mas de nada valerão as decisões do governo para o setor se não tivermos um diagnóstico do esporte. O que representaram os megaeventos? O que ficou de legado efetivo e, principalmente, humano em todos os seus setores?

Mais uma vez é oportuno repetir o professor Tubino: "Não existe planejamento sem um diagnóstico precedente, com indicadores que evidenciam os pontos fortes e os pontos fracos da área a ser planejada".

Nesse panorama, o nosso atraso é enorme. Tão grande quanto o silêncio do governo, que aumentando também os desperdícios nos campos social e econômico.

A coluna voltará em 8 de agosto

Campo Livre