;(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

RJ: guardas municipais decidem paralisar no Carnaval; corporação nega greve

Marcela Lemos

Colaboração para o UOL, no Rio

20/02/2020 19h40

Uma assembleia de guardas municipais do Rio de Janeiro decidiu na tarde de hoje por uma paralisação entre sábado (22) e terça-feira (25), período que compreende o Carnaval. A decisão foi tomada em frente à sede da corporação, em São Cristóvão, na zona norte do Rio. O comando da GM (Guarda Municipal) minimizou o movimento e disse que o grupo não representa a categoria.

A Associação Frente Manifestante disse que o primeiro ato da manifestação ocorrerá a partir de doação de sangue, no Hemorio, no centro, e afirmou que será mantido o percentual constitucional de 30% do efetivo trabalhando. A Guarda Municipal do Rio conta com 7.500 profissionais.

"Os guardas municipais reivindicam o cumprimento das promoções por plano de carreira (determinadas pelas Leis Complementares 100/2009 e 135/2014), que não acontecem; o reajusta do ticket-alimentação, que permanece no mesmo valor de R$ 360 desde 2012; e a convocação dos concursados de 2012, entre outros pleitos", informou a associação.

Questionada pelo UOL, a Frente Manifestante disse que os guardas estavam previstos para atuar nas regiões onde ocorrerão os blocos de rua da cidade. Uma estimativa do número de agentes que pode aderir ao movimento não foi informada.

O governo de Marcelo Crivella (Republicanos) anunciou medidas para coibir blocos de rua não oficiais, como multas com base no volume de lixo gerado. Lideranças dessas agremiações dizem que a ação visa reprimir e pode descaracterizar o Carnaval de rua carioca.

Comando da Guarda Municipal não crê em paralisação

Por meio de nota, a GM afirma que o movimento Frente Manifestante não é uma entidade sindical e que ele não representa a maioria do efetivo. Segundo a corporação, alguns pleitos da categoria já foram atendidos, como regulamentação da escala de trabalho, reajuste salarial do funcionalismo em 8,17%, entre outros.

"Os Guardas Municipais sabem da importância das ações da instituição nas ruas durante o período de carnaval no Rio, um dos momentos em que a cidade mais precisa dos agentes. Por isso, e em respeito ao cidadão carioca e aos turistas, o comando da Guarda Municipal confia de forma firme nos servidores e está aberto ao diálogo permanente e novos avanços serão implementados", declarou a GM, enfatizando ainda o cumprimento da Lei de Responsabilidade Fiscal, que estabelece limitações para despesas.