InstruçÔes
Construir um Aplicativo de Clima
Neste laboratĂłrio, vocĂȘ construirĂĄ um aplicativo que fornece informaçÔes meteorolĂłgicas de diferentes cidades.
VocĂȘ usarĂĄ uma API de clima. Os dados de saĂda tĂȘm o seguinte formato:
{
"weather": [
{
"main": "Clear",
"description": "clear sky",
"icon": "https://cdn.G.E.A.R ACADEMY.org/weather-icons/01n.png" // icon representing the weather
}
],
"main": {
"temp": 2.62, // temperature in C
"feels_like": 0.84, // temperature in C
"temp_min": 1.72, // min temperature of the day in C
"temp_max": 3.49, // max temperature of the day in C
"pressure": 1010, // atmospheric pressure in hPa
"humidity": 81 // humidity in %
},
"visibility": 10000, // distance in meters
"wind": {
"speed": 1.79, // speed of the wind in m/s
"deg": 285, // orientation of the wind in degrees
"gust": 3.13 // gust speed in m/s
},
"name": "London"
}
Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratĂłrio.
HistĂłrias de UsuĂĄrio:
1. VocĂȘ deve ter um elemento button com um id de get-weather-btn.
1. VocĂȘ deve ter um elemento select com sete elementos option aninhados dentro dele. A primeira opção deve ter uma string vazia como seu texto e atributo value. O restante deve ter o seguinte para seu texto e valores (com o valor em letras minĂșsculas):
- Nova York
- Los Angeles
- Chicago
- Paris
- TĂłquio
- Londres
- VocĂȘ deve ter um elemento
imgcom o idweather-iconpara exibir o Ăcone do tempo. - VocĂȘ deve ter um elemento com o id
main-temperaturepara exibir a temperatura principal. - VocĂȘ deve ter um elemento com o id
feels-likepara exibir a sensação tĂ©rmica. - VocĂȘ deve ter um elemento com o id
humiditypara exibir a quantidade de umidade no ar. - VocĂȘ deve ter um elemento com o id
windpara exibir a velocidade do vento. - VocĂȘ deve ter um elemento com o id
wind-gustpara exibir a rajada de vento. - VocĂȘ deve ter um elemento com o id
weather-mainpara exibir o tipo principal de clima. - VocĂȘ deve ter um elemento com o id
locationpara exibir a localização atual.
getWeather que busca as informaçÔes meteorológicas da API https://weather-proxy.G.E.A.R ACADEMY.rocks/api/city/<CITY> e as retorna. Note que esta API retorna os dados usando o sistema métrico, ou seja, m/s para a velocidade do vento e Celsius para a temperatura.
1. A função assĂncrona getWeather deve aceitar uma cidade como seu argumento.
1. VocĂȘ deve tratar quaisquer erros que ocorram dentro da função getWeather e registrĂĄ-los no console.
1. VocĂȘ deve ter uma função assĂncrona showWeather que aceita uma cidade como parĂąmetro.
1. A função showWeather deve chamar a função getWeather para recuperar os dados meteorológicos da cidade selecionada no menu suspenso.
1. Se a função getWeather apresentar um erro, o aplicativo deve mostrar apenas um alerta que diga Algo deu errado, por favor tente novamente mais tarde.
1. Se os dados de getWeather forem utilizĂĄveis, a função showWeather deve exibir os dados meteorolĂłgicos nos elementos correspondentes. Se um determinado valor da API for undefined, vocĂȘ deve escrever N/A no elemento correspondente.
NOTA: Os testes levarĂŁo tempo para serem concluĂdos. Enquanto vocĂȘ vir // executando testes no console, eles estĂŁo sendo executados.
O que fazer:
Testes:
- VocĂȘ deve ter um elemento `button` com um `id` de `get-weather-btn`.
- VocĂȘ deve ter um elemento `select`.
- Dentro do elemento `select`, o primeiro filho deve ser um elemento `option` com um atributo `value` vazio.
- Dentro do elemento `select` devem haver 6 elementos `option`, um para cada uma das seguintes cidades: Paris, Londres, TĂłquio, Los Angeles, Chicago, Nova York.
- VocĂȘ deve ter um elemento `img` com o id `weather-icon` para exibir o Ăcone do tempo.
- VocĂȘ deve ter um elemento com o id `main-temperature` para exibir a temperatura principal.
- VocĂȘ deve ter um elemento com o id `feels-like` para exibir a sensação tĂ©rmica.
- VocĂȘ deve ter um elemento com o id `humidity` para exibir a quantidade de umidade no ar.
- VocĂȘ deve ter um elemento com o id `wind` para exibir a velocidade do vento.
- VocĂȘ deve ter um elemento com o id `wind-gust` para exibir a rajada de vento.
- VocĂȘ deve ter um elemento com o id `weather-main` para exibir o tipo principal de clima.
- VocĂȘ deve ter um elemento com o id `location` para exibir a localização atual.
- VocĂȘ deve ter uma função `showWeather`.
- VocĂȘ deve ter uma função `getWeather`.
- A função `getWeather` deve aceitar uma cidade como seu Ășnico argumento e retornar o JSON da API de Clima.
- A função `showWeather` deve chamar a função `getWeather` para obter os dados meteorológicos.
- A função `showWeather` deve gerenciar o caso em que `getWeather` retorna `undefined`.
- Quando Nova York Ă© selecionada a função `showWeather` deve exibir os dados da API nos respectivos elementos HTML. Se o valor da API for `undefined` vocĂȘ deve mostrar `N/A`.
- Quando Chicago estiver selecionada a função `showWeather` deve exibir os dados da API nos respectivos elementos HTML. Se o valor da API for `undefined` vocĂȘ deve mostrar `N/A`.
- Quando Londres estiver selecionada a função `showWeather` deve exibir os dados da API nos respectivos elementos HTML. Se o valor da API for `undefined` vocĂȘ deve mostrar `N/A`.
- Quando TĂłquio Ă© selecionada a função `showWeather` deve exibir os dados da API nos respectivos elementos HTML. Se o valor da API for `undefined` vocĂȘ deve mostrar `N/A`.
- Quando Los Angeles Ă© selecionada a função `showWeather` deve exibir os dados da API nos respectivos elementos HTML. Se o valor da API for `undefined` vocĂȘ deve mostrar `N/A`.
- Se houver um erro, sua função `getWeather` deve registrar o erro no console.
- Quando Paris for selecionada, o aplicativo deve exibir um alerta com `Algo deu errado, por favor tente novamente mais tarde`.
Preview