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

EU, AGEIRO

Os perrengues e apertos de quem gasta 5 h por dia no transporte público em São Paulo

Juliana Sayuri Do UOL, em São Paulo

5h41. O dia nem amanheceu e o analista de TI Vitor Gonçalves, 24, já está na rua.

"Todo santo dia" ele sobe uma ruazinha íngreme até uma avenida do Grajaú, periferia da zona sul de São Paulo, onde pega um ônibus até a estação Grajaú, na linha 9-Esmeralda, operada pela ViaMobilidade (do grupo CCR).

5h50. Vitor a na catraca do ônibus, tão lotado que a porta mal se fecha.

"É dureza, mas se não sair a essa hora, não dá tempo de chegar ao trabalho", diz ele, que é de Santos e há cerca de dois anos veio morar em São Paulo.

Fora o trajeto que faz de segunda a sexta ao trabalho, nos fins de semana também pega transporte público. "Domingo, por exemplo, se quero ir ao teatro ou procurar outra atividade de lazer — não tem perto, tem que ir pra longe."

6h07. Vitor e um punhado de ageiros am na catraca da estação Grajaú da linha 9, descendo as escadas (sempre deixando a esquerda livre) para pegar o trem cujo destino final é Osasco.

"ageiro, por favor, libere as portas do trem", diz uma voz no alto-falante no comboio, um dos vermelhinhos que a ViaMobilidade pegou emprestado da TM.

Vitor diz que a linha mudou após a concessão. Antes, ele não precisava esperar tanto para embarcar e se sentava com tranquilidade; hoje, os trens andam lotados e operando com velocidade reduzida, relata.

Foi nessa linha que uma vez, voltando para casa, no início de 2022, Vitor viu uma confusão: o trem parou e começou a dar marcha à ré. Ninguém entendeu nada e os ageiros desceram revoltados, lembra ele.

Tempos depois, ele abriu a conta "Via'I'Mobilidade" no X (antigo Twitter) e no Instagram, onde publica vídeos de trens lotados, relatos de atrasos, acidentes e outras situações do ponto de vista dos ageiros.

O perfil com cerca de 15 mil seguidores (somando as duas contas) levou "block" do governador Tarcísio de Freitas (Republicanos).

6h32. Foram quase 30 minutos no trajeto de seis paradas entre as estações Grajaú e Santo Amaro, onde Vitor desce para baldear para a linha 5-Lilás do Metrô (a ViaMobilidade assumiu as operações em agosto de 2018).

Embora a plataforma esteja apinhada, Vitor considera a linha 5 "até tranquila". Ele explica, citando detalhes do que vê no dia a dia nas linhas 8 e 9, que usa mais: seguranças empurrando ageiros para dentro dos vagões e forçando o fechamento das portas, ar-condicionado desligado, atrasos e acidentes.

Vitor conta que estava na estação Domingos de Moraes, na linha 8 (a que usava para ir ao trabalho na época), no dia em que um trem descarrilou, no fim de 2022. "Todo mundo ficou assustado, imagina: você está esperando e de repente vem um trem fora do trilho."

Ele foi uma das testemunhas do Ministério Público de São Paulo, que fez uma investigação para apurar falhas na condução das linhas 8 e 9 pela ViaMobilidade. Sete meses depois, o MPSP e a ViaMobilidade fizeram um acordo: a empresa assinou um termo de ajuste de conduta e se comprometeu a pagar R$ 150 milhões em indenização ao Estado.

Por volta das 7h. Doze estações depois, Vitor desce na Chácara Klabin, onde troca a linha 5-Lilás pela linha 2-Verde (operada pelo Metrô).

"Agora, sim", diz ele, em pé em um vagão longe de lotado, onde conta três estações até desembarcar no Tamanduateí, no Ipiranga.

Às vezes, espia o celular, para ver notificações do Via'I'Mobilidade — o perfil foi aberto por Vitor, mas hoje também tem postagens feitas por ativistas da ONG Minha Sampa. Ele, entretanto, não se considera ativista. "Sou só um ageiro."

Ele tem sido convidado a participar de lives e assembleias de sindicalistas da TM e do Metrô. Entre eles, é tratado como "companheiro" Vitor.

7h20. Depois do trajeto no Metrô, ele pega mais um ônibus para chegar ao trabalho.

Naquela quarta-feira, 9 de agosto, o ônibus atrasou um pouco. "Por isso é bom sair cedo de casa, por causa dos imprevistos", pondera.

Ida e volta, ele a cerca de 5 horas no transporte público — mais que o dobro da maioria dos paulistanos (2 horas), de acordo com a pesquisa Viver em São Paulo: Mobilidade Urbana, feita pela Rede Nossa São Paulo.

Muitas vezes, volta tão cansado para casa, depois das 20h30, que só quer dormir, pensando em enfrentar o dia seguinte.

Quase às 8h. Depois de dois ônibus, um trem e dois metrôs, cruzando mais de 30 km, Vitor desembarca perto da rua Comandante Taylor, no Ipiranga. Ainda dá tempo de pegar um café rápido antes de entrar no trabalho.

No dia seguinte, 10 de agosto, não foi assim: devido a uma falha na madrugada, os trens da linha 9 tiveram velocidade reduzida desde as 4h30.

Vitor conta que precisou esperar muito tempo — os ageiros estavam espremidos na plataforma, os trens demoravam e não dava para todo mundo embarcar.

A certo ponto, foi para o outro lado, pegou o trem na direção oposta (o ponto final, a estação Mendes - Vila Natal) e aí embarcou destino Osasco. Conseguiu chegar ao trabalho atrasado, às 9h30. "A desigualdade", diz ele, "a gente vê no jeito que funciona a cidade".

Topo