https://github.com/fernandozuchi/pratica27-08
Repositório template para as práticas da mentoria do dia 27/08 - Tema - HTML / CSS / JS - OBS: Repositório supervisionado via Github classroom
https://github.com/fernandozuchi/pratica27-08
Last synced: 4 months ago
JSON representation
Repositório template para as práticas da mentoria do dia 27/08 - Tema - HTML / CSS / JS - OBS: Repositório supervisionado via Github classroom
- Host: GitHub
- URL: https://github.com/fernandozuchi/pratica27-08
- Owner: FernandoZuchi
- Created: 2024-08-26T13:44:32.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-26T15:14:58.000Z (almost 2 years ago)
- Last Synced: 2025-12-26T19:37:20.124Z (7 months ago)
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Prática da semana - Calculadora de Bitcoin
Bem-vindo a este projeto divertido e prático onde construiremos uma calculadora que converte Bitcoin em USD. Você aprenderá sobre como buscar dados de uma API, manipulação do DOM, e uso de localStorage, além de utilizar um pouco de matemática básica ao longo do caminho.
Ao final deste tutorial, você terá uma calculadora de preços de Bitcoin funcional que busca o preço atual do Bitcoin, permite calcular o valor de suas posses em Bitcoin, e salva seus dados localmente.
Este é um projeto amigável para iniciantes, adequado para aqueles que entendem o básico de HTML, CSS e JavaScript puro.
## Configuração do Projeto
Crie uma nova pasta e dê um nome relevante ao projeto, como btc-usd-calc. Crie um arquivo chamado index.html na pasta do seu projeto.
Comece escrevendo o HTML. A página deve conter essencialmente:
- Um título
- O preço atual do Bitcoin
- Um campo de texto para o usuário inserir suas posses em Bitcoin
- Um botão para calcular o valor de suas posses em Bitcoin
- O valor calculado
```html
Calculadora de Bitcoin
Calculadora de Bitcoin
Preço mais recente:
$ USD (Dólar)
Quantos Bitcoins você possui?
Calcular
```
## Buscando dados da API
Agora, no mesmo diretório do index.html, crie um novo arquivo chamado script.js.
No script.js, defina uma constante para a URL da API:
```javascript
const API_URL = "https://api.coindesk.com/v1/bpi/currentprice.json";
```
A próxima coisa a fazer é adicionar um event listener para chamar a API assim que o conteúdo da página for carregado. Você pode fazer isso adicionando o código abaixo diretamente abaixo da constante API_URL:
```javascript
document.addEventListener("DOMContentLoaded", async () => {
// Executa uma função assíncrona assim que o conteúdo do DOM for carregado
let precoBitcoin; // Inicializa a variável
try {
const response = await fetch(API_URL);
// Aguarda uma resposta da solicitação HTTP enviada à URL da API
const data = await response.json();
// Aguarda o conteúdo JSON da resposta
precoBitcoin = data.bpi.USD.rate_float.toFixed(2);
// Atribui à variável bitcoinPrice o valor em USD do Bitcoin, arredondado para 2 casas decimais.
} catch {
console.log("erro!"); // Em caso de erro
}
console.log(precoBitcoin); // Exibe o preço no console
});
```
Em caso de algum erro, o programa nos avisará no console. Caso contrário, o preço do Bitcoin será exibido no console. Você pode testar agora e ver se consegue obter o preço atual do Bitcoin!
## Como Implementar o localStorage
Fundamentalmente, o localStorage é um recurso presente na maioria dos navegadores que salvam informações para que sejam mantidas na memória do navegador mesmo após a página ou o navegador serem fechados.
Vamos começar editando algumas linhas:
```javascript
const API_URL = "https://api.coindesk.com/v1/bpi/currentprice.json";
document.addEventListener("DOMContentLoaded", async () => {
// Executa uma função assíncrona assim que o conteúdo do DOM for carregado
let precoBitcoin = localStorage.getItem("precoBitcoin"); // Inicializa a variável
try {
const response = await fetch(API_URL);
// Aguarda uma resposta da solicitação HTTP enviada à URL da API
const data = await response.json();
// Aguarda o conteúdo JSON da resposta
precoBitcoin = data.bpi.USD.rate_float.toFixed(2);
localStorage.setItem("precoBitcoin", precoBitcoin);
// Atribui à variável precoBitcoin o valor em USD do Bitcoin, arredondado para 2 casas decimais.
} catch {
console.log("erro!"); // Em caso de erro
}
console.log(precoBitcoin); // Exibe o preço no console
});
```
## Como Implementar Manipulação do DOM
O Document Object Model (DOM) é uma interface que permite interações de programação com documentos web. Essencialmente, a manipulação do DOM com JavaScript nos permite atualizar certas partes ou todo um documento.
Neste projeto, usaremos o DOM para mostrar o preço atual do Bitcoin e o valor calculado. Também usaremos para recuperar o valor inserido pelo usuário no campo de texto #bitcoinAmount quando o botão de cálculo for clicado.
Vamos implementar a manipulação do DOM:
```javascript
const API_URL = "https://api.coindesk.com/v1/bpi/currentprice.json";
document.addEventListener("DOMContentLoaded", async () => {
const main = document.getElementById("main");
const elementoPreco = document.getElementById("precoBitcoin");
const qtadeBitcoinInput = document.getElementById("qtadeBitcoin");
const btnCalcular = document.getElementById("calcularBitcoin");
const qtadeDolar = document.getElementById("qtadeUSD");
// Executa uma função assíncrona assim que o conteúdo do DOM for carregado
let precoBitcoin = localStorage.getItem("precoBitcoin"); // Inicializa a variável
try {
const response = await fetch(API_URL);
// Aguarda uma resposta da solicitação HTTP enviada à URL da API
const data = await response.json();
// Aguarda o conteúdo JSON da resposta
precoBitcoin = data.bpi.USD.rate_float.toFixed(2);
localStorage.setItem("precoBitcoin", precoBitcoin);
// Atribui à variável precoBitcoin o valor em USD do Bitcoin, arredondado para 2 casas decimais.
} catch {
if(precoBitcoin) {
// Se houver um preço de bitcoin existente no localStorage
elementoPreco.textContent = precoBitcoin; // Exibe o que está salvo lá
}
else {
main.innerHTML = "
Não foi possível buscar o preço do bitcoin
"
}
}
console.log(precoBitcoin); // Exibe o preço no console
});
```
## Como Calcular o Valor Atual da Carteira
Agora, o objetivo de uma calculadora de Bitcoin é calcular quanto vale a carteira de Bitcoin de alguém, não necessariamente qual é o preço atual.
Por exemplo, o preço atual do Bitcoin pode ser $60.000 USD. Se você possui 2 Bitcoins, sua carteira vale $120.000 USD. Se você possui metade (0,5) de um Bitcoin, sua carteira vale $30.000 USD.
Vamos obter a quantidade de Bitcoin que o usuário possui (bitcoinAmount) do localStorage.
```javascript
// continue após console.log(precoBitcoin);
let qtadeBitcoin = localStorage.getItem("qtadeBitcoin");
```
Calcule o valor em USD com esta função:
```javascript
const calcularMontanteUSD = () => {
qtadeBitcoin = qtadeBitcoinInput.value || 0;
// qtadeBitcoin será reatribuído para o que estiver no input no front-end, caso contrário, seu valor padrão será zero
const totalUSD = qtadeBitcoin * precoBitcoin;
// Suponha que você tenha 2 Bitcoins e o preço seja 60000.
// 2 * 60000 = 120000
qtadeDolar.innerHTML = `$${totalUSD.toFixed(
2
)} USD em Bitcoin.`;
// Arredonde para as duas casas decimais mais próximas e exiba
};
```
Vamos verificar a existência de um valor inserido pelo usuário, e calcular em cima disso
```javascript
if (qtadeBitcoinInput.value) {
calcularMontanteUSD()
}
```
Para que o usuário atualize seu bitcoinAmount, vamos adicionar um event listener quando o botão calculateBtn for clicado:
```javascript
btnCalcular.addEventListener("click", () => {
localStorage.setItem("qtadeBitcoin", qtadeBitcoinInput.value);
calcularMontanteUSD();
});
```
Todo o JavaScript agora deve estar completo.
## Código Completo em JavaScript
Seu código completo deve ser semelhante a este (além dos comentários e formatação):
```javascript
const API_URL = "https://api.coindesk.com/v1/bpi/currentprice.json";
document.addEventListener("DOMContentLoaded", async () => {
let main = document.getElementById("main");
let elementoPreco = document.getElementById("precoBitcoin");
let qtadeBitcoinInput = document.getElementById("qtadeBitcoin");
let btnCalcular = document.getElementById("calcularBitcoin");
let qtadeDolar = document.getElementById("qtadeUSD");
// Executa uma função assíncrona assim que o conteúdo do DOM for carregado
let precoBitcoin = localStorage.getItem("precoBitcoin"); // Inicializa a variável
try {
const response = await fetch(API_URL);
// Aguarda uma resposta da solicitação HTTP enviada à URL da API
const data = await response.json();
// Aguarda o conteúdo JSON da resposta
precoBitcoin = data.bpi.USD.rate_float.toFixed(2);
localStorage.setItem("precoBitcoin", precoBitcoin);
// Atribui à variável precoBitcoin o valor em USD do Bitcoin, arredondado para 2 casas decimais.
} catch {
if (precoBitcoin) {
// Se houver um preço de bitcoin existente no localStorage
elementoPreco.textContent = precoBitcoin; // Exibe o que está salvo lá
}
else {
main.innerHTML = "
Não foi possível buscar o preço do bitcoin
"
}
}
console.log(precoBitcoin); // Exibe o preço no console
qtadeBitcoin = localStorage.getItem("qtadeBitcoin");
const calcularMontanteUSD = () => {
qtadeBitcoin = parseFloat(qtadeBitcoinInput.value) || 0;
// qtadeBitcoin será reatribuído para o que estiver no input no front-end, caso contrário, seu valor padrão será zero
const totalUSD = qtadeBitcoin * precoBitcoin;
// Suponha que você tenha 2 Bitcoins e o preço seja 60000.
// 2 * 60000 = 120000
qtadeDolar.innerHTML = `$${totalUSD.toFixed(
2
)} USD em Bitcoin.`;
// Arredonde para as duas casas decimais mais próximas e exiba
};
if (qtadeBitcoinInput.value) {
calcularMontanteUSD()
}
btnCalcular.addEventListener("click", () => {
localStorage.setItem("qtadeBitcoin", qtadeBitcoinInput.value);
calcularMontanteUSD();
});
});
```
Com isso, sua calculadora estará pronta! Agora, teste a página em seu navegador e verifique se tudo está funcionando como esperado.
## Estilização do Projeto (CSS)
Vamos aplicar um estilo básico para melhorar a aparência do projeto. Adicione o código CSS a seguir:
```css
body {
font-family: Arial, sans-serif;
background: #f0f0f0;
color: #333;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.container {
background: white;
padding: 2rem;
border-radius: 8px;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.1);
width: 300px;
text-align: center;
}
input {
margin-top: 0.5rem;
padding: 0.5rem;
font-size: 1rem;
width: 100%;
box-sizing: border-box;
}
button {
margin-top: 1rem;
padding: 0.5rem;
font-size: 1rem;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
```
## Conclusão
Parabéns! Você agora tem uma calculadora de Bitcoin que não só busca o preço atual de Bitcoin, mas também calcula e exibe o valor em USD das posses de Bitcoin que o usuário insere. Além disso, você aprendeu a usar o localStorage para armazenar dados localmente e a manipular o DOM com JavaScript puro.
Agora é hora de adicionar funcionalidades ou personalizações ao projeto! Por exemplo, você pode adicionar um seletor de moeda ou exibir gráficos de preços históricos. As possibilidades são infinitas!