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

Professores de SP conseguem decisão contra aula presencial, mas sem efeito

Ana Paula Bimbati/UOL
Imagem: Ana Paula Bimbati/UOL

Ana Paula Bimbati

Do UOL, em São Paulo

13/05/2021 19h19

A Apeoesp (Sindicato dos Professores do Ensino Oficial do Estado de São Paulo) conseguiu na terça-feira (11) mais uma sentença que proíbe a convocação de professores, associados ou não à entidade, para aulas presenciais nas fases vermelha e laranja do Plano São Paulo, de retomada econômica. A decisão, no entanto, não tem efeito.

Em nota, o TJ-SP (Tribunal de Justiça de São Paulo) informou que a "eficácia da sentença está suspensa", já que uma decisão da presidência do órgão havia determinado a suspensão de liminares concedidas contra o retorno presencial. A decisão do órgão máximo do tribunal foi tomada no dia 14 de abril.

A reabertura das escolas em São Paulo acontece em um cenário de embates judiciais desde o ano ado. Os professores alegam temer a contaminação pelo coronavírus. Recentemente, o UOL mostrou que professores e alunos de escolas particulares têm se movimentado para evitar atividades presenciais.

Antes da decisão publicada na terça-feira, a juíza Simone Gomes Rodrigues Casoretti, da 9ª Vara da Fazenda Pública, já havia proferido uma sentença que proibia a convocação dos professores, mas, na época, a decisão se referia apenas a profissionais vinculados ao sindicato.

"Essa última decisão é o que a gente costuma falar de ganhou, mas não levou, porque não há efeitos", explicou a advogada Vivian Melissa Mendes, especialista em Direito Civil. A sentença favorável aos professores não impede a reabertura das escolas, mas a convocação dos profissionais.

Na avaliação da Apeoesp, a decisão da juíza tem valor. "A versão divulgada pela Secretaria de Educação, por meio das diretorias de ensino, de que as aulas presenciais são legais por ter sido cassada liminar que as proibiam não procede, porque a sentença em vigor é posterior à liminar que foi derrubada", disse a presidente do sindicato e deputada estadual (PT) Maria Izabel Noronha.

Para o advogado Rodrigo Torelly, a nova decisão de convocação dos professores apenas aumenta o alcance. "A sentença a a ter efeito a toda categoria", explicou.

Em nota, a PGE-SP (Procuradoria Geral do Estado de São Paulo) também disse que o despacho "apenas esclareceu" que a decisão abrange toda a categoria. O órgão afirmou ainda que "as liminares que impediam a retomada das aulas em todo o e estado foram suspensas por decisões da Presidência do Tribunal".

As aulas presenciais na capital e em todo estado estão autorizadas desde o dia 12 de abril, quando São Paulo saiu da fase emergencial para vermelha do Plano SP. Antes disso, em março, o governador João Doria (PSDB) publicou um decreto que tornou a educação uma atividade essencial —portanto, poderia funcionar mesmo nas fases mais preocupantes da pandemia.