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

Esse conteúdo é antigo

Em fase emergencial, SP antecipa recesso de escolas entre os dias 15 e 28/3

Leonardo Martins, Lucas Borges Teixeira, Rafael Bragança e Allan Brito

Do UOL e colaboração para o UOL, em São Paulo

11/03/2021 13h41

O governo de São Paulo anunciou hoje que vai antecipar o recesso escolar na rede estadual de ensino para suspender as atividades letivas presenciais no período de duração da fase emergencial do Plano São Paulo, determinada pelo governador João Doria (PSDB). Com isso, as escolas não terão atividades letivas do dia 15 ao 28.

As unidades da rede estadual de ensino, que têm 3,3 milhões de alunos matriculados, permaneciam abertas desde o dia 8 de fevereiro, mas tinham capacidade reduzida a 35% por causa da fase vermelha em vigor em todo o estado desde o último sábado (6).

Mesmo sem o ensino presencial, o secretário estadual de Educação, Rossieli Soares, explicou que as escolas estaduais poderão abrir para o fornecimento de merenda e também para a distribuição de materiais didáticos e chips de o à internet, fundamental para o ensino remoto. Os atendimentos serão feitos com horário marcado.

"Nesse momento, na rede estadual, estamos falando de escolas aberturas para a alimentação e distribuição de materiais e chips. Sempre tudo com agendamento prévio", afirmou Soares durante entrevista coletiva da gestão de Doria sobre o anúncio de novas medidas de combate à pandemia de covid-19.

Para as redes municipais e privada do estado, a antecipação dos recessos de abril e outubro servirá como recomendação. Apesar de a decisão final ser dos municípios, a intenção do governo estadual é de que não haja atividades presenciais pelas próximas duas semanas.

"Recomendamos para todos os municípios e redes privadas que atividades sejam o mínimo possível. Só o que é necessário. Escola está autorizada, mas se ela [criança] puder ficar em casa e fazer à distância, faça à distância. A gente vai discutir isso com cada município para que antecipem recessos", disse o secretário.

Prioridade para a educação

Após ficar com as aulas presenciais suspensas desde março em 2020, a gestão de Doria vem propagando neste ano que a educação ficará entre as prioridades do governo caso precise adotar medidas restritivas de controle da pandemia. Para isso, o Plano São Paulo, que coordena a adoção dessas medidas, foi remodelado e as atividades nas escolas foram permitidas mesmo na fase vermelha, mais restritiva.

Hoje, porém, o governo paulista decidiu criar uma nova fase, que não estava prevista no plano. Como solução para a educação, a antecipação dos recessos fará com que as escolas não recebam alunos em sala de aula até o próximo dia 30, para quando está marcado o fim da fase emergencial no estado.

Na prática, as atividades letivas presenciais já não poderiam acontecer porque nesta semana a Justiça de São Paulo decidiu que professores e demais servidores da educação não podem ser convocados para as aulas nas escolas, permanecendo apenas em regime de trabalho remoto. A decisão vale para escolas públicas e privadas de regiões que estejam nas fases vermelha e laranja.