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

Depois de 329 dias, escolas municipais retomam as aulas presenciais em São Paulo

Movimentação de estudantes na retomada das aulas presenciais em escola em São Paulo - Bruno Rocha/Estadão Conteúdo
Movimentação de estudantes na retomada das aulas presenciais em escola em São Paulo Imagem: Bruno Rocha/Estadão Conteúdo

Mariana Hallal

Em São Paulo

15/02/2021 11h15

As escolas municipais de São Paulo retomam as aulas presenciais nesta segunda-feira, 15, depois de 329 dias de ensino remoto. As instituições de ensino fecharam as portas em março do ano ado e, deste então, só puderam receber alunos para atividades extracurriculares. Professores da rede estão em greve desde a semana ada e pedem que as aulas continuem a distância.

A Secretaria Municipal de Educação estima que cerca de 3,5 mil escolas, 92% do total, vão reabrir no dia marcado. Segundo a pasta, as demais ainda não estão totalmente preparadas e devem retomar as atividades presenciais até o dia 1º de março.

Por enquanto, o retorno às salas de aula é opcional aos mais de um milhão de alunos da rede municipal. Uma consulta feita pela Prefeitura com os responsáveis pelos estudantes mostrou que 66% deles são favoráveis ao retorno das atividades presenciais. Aqueles que preferirem não frequentar o ambiente escolar devem fazer as atividades na plataforma Google Sala de Aula ou em outros meios disponíveis.

As escolas não podem ultraar 35% da capacidade de atendimento de cada turno e, por isso, deve haver revezamento entre os alunos. Essa organização ficará a critério de cada unidade. Nos dias em que o estudante não puder frequentar as aulas presencialmente, deverá fazer as atividades de forma remota.

A Prefeitura informou que vai distribuir kits de higiene pessoal aos alunos com máscaras, caneca e sabonete líquido. A limpeza das instituições de ensino também deve ser reforçada, assim como o distanciamento entre as classes.

Greve

As cinco entidades de representação dos professores da rede municipal - Sindicato dos Professores e Funcionários Municipais de São Paulo (Aprofem); Sindicato dos Educadores da Infância (Sedin); Sindicato dos Servidores Municipais de São Paulo (Sindsep); Sindicato dos Especialistas de Educação do Ensino Público Municipal de São Paulo; e Sindicato dos Profissionais em Educação no Ensino Municipal de São Paulo (Sinpeem) - estão em greve desde o último dia 10.

Os educadores pedem, entre outras coisas, que seu trabalho continue remoto e que haja vacinação para todos os profissionais de educação. Também reivindicam testagem em massa, equipamento de proteção individual "de qualidade" e e social às famílias dos estudantes.