cmdalbem / ciclomapa

Beautiful, interactive & open bike maps of Brazilian cities. Powered by OpenStreetMap.
https://ciclomapa.org.br
GNU General Public License v3.0
76 stars 7 forks source link

Atualizador recorrente automático de dados #6

Open cmdalbem opened 4 years ago

cmdalbem commented 4 years ago

Hoje em dia para atualizar o banco de dados com os dados mais recentes do OSM o usuário deve manualmente clicar no botão de "Atualizar".

image

Idealmente gostaríamos que essas atualizações fossem automáticas e ocorressem o mais frequentemente possível (digamos, a cada 5 minutos).

Pra inspiração, o script abaixo pode ser rodado no console e ele irá atualizar as cidades listadas no array de cities:

const cities = [
    'Aracaju, Sergipe, Brasil',
    'Belém, Pará, Brasil',
    'Belo Horizonte, Minas Gerais, Brasil',
    'Boa Vista, Roraima, Brasil',
    'Brasília, Distrito Federal, Brasil',
    'Campo Grande, Mato Grosso do Sul, Brasil',
    'Cuiabá, Mato Grosso, Brasil',
    'Curitiba, Paraná, Brasil',
    'Florianópolis, Santa Catarina, Brasil',
    'Fortaleza, Ceará, Brasil',
    'Goiânia, Goiás, Brasil',
    'João Pessoa, Paraíba, Brasil',
    'Macapá, Amapá, Brasil',
    'Maceió, Alagoas, Brasil',
    'Manaus, Amazonas, Brasil',
    'Natal, Rio Grande do Norte, Brasil',
    'Olinda, Pernambuco, Brasil',
    'Palmas, Tocantins, Brasil',
    'Paulista, Pernambuco, Brasil',
    'Porto Alegre, Rio Grande do Sul, Brasil',
    'Porto Velho, Rondônia, Brasil',
    'Recife, Pernambuco, Brasil',
    'Rio Branco, Acre, Brasil',
    'Rio de Janeiro, Rio de Janeiro, Brasil',
    'Salvador, Bahia, Brasil',
    'Sao Luis, Maranhão, Brasil',
    'São Paulo, São Paulo, Brasil',
    'Teresina, Piauí, Brasil',
    'Vitória, Espírito Santo, Brasil',
]

// Task that retrieves and processes data from OSM
const task = name => {
    ciclomapa.setState({ loading: true });
    return ciclomapa.getDataFromOSM({areaName: name});
}

// Apply the task iteratively to the cities in the array
cities.reduce((promiseChain, name) => {
    return promiseChain.then(chainResults =>
        task(name).then(currentResult =>
            [...chainResults, currentResult]
        )
    );
}, Promise.resolve([])).then(arrayOfResults => {
    console.log('All done!');
});
nighto commented 3 years ago

Não vejo o botão para atualizar, a opção foi removida? Fiz umas correções no Centro e Norte de Niterói.

cmdalbem commented 3 years ago

Oi @nighto não tiramos o botão, ele permanece no mesmo lugar de sempre! Mas tivemos umas pequenas mudanças no design, talvez vc não achou por isso. Basta passar o mouse no textinho na parte superior da tela que vc verá esta popup:

image