Skip to content

Commit

Permalink
Change assignment to new CoinmarketCap API
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffrySteegmans committed Dec 13, 2020
1 parent 0dea39b commit 923d388
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 115 deletions.
37 changes: 17 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@
Bouw een applicatie die Crypto data ophaalt van [CoinmarketCap API documentatie](https://coinmarketcap.com/api/documentation/v1/).
Hiervoor dien je eerst een API key te genereren op [CoinmarketCap](https://accounts.coinmarketcap.com/signup?r=https%3A%2F%2Fcoinmarketcap.com%2F&utm_source=coinmarketcap&utm_content=nav)

> Aangezien coinmarketCap geen CORS requests toelaat kan je gebruik maken van de proxy op de url:
>
> - <http://steegmans.synology.me/cryptowatcher/listings.php?CMC_PRO_API_KEY=##API-KEY##&slug=##SLUG##>
> - <http://steegmans.synology.me/cryptowatcher/quote.php?CMC_PRO_API_KEY=##API-KEY##>
>
> **Hiervoor heb je nog steeds je eigen API-key nodig!**
Hou rekening met de volgende eigenschappen:

- Bij het opstarten van de applicatie moeten de volgende stappen uitgevoerd worden
- De div met **ID="card"** moet verborgen worden
- De div met **ID="top10"** moet getoond worden
- De tabel met top 10 munten moet gecreëerd en getoond worden (https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?CMC_PRO_API_KEY=##API-KEY##&limit=10&convert=eur)
- De tabel met top 10 munten moet gecreëerd en getoond worden
Hiervoor dien je per coin het volgende sjabloon toe te voegen aan ```<tbody>```

```html
Expand All @@ -21,28 +26,20 @@ Hou rekening met de volgende eigenschappen:
<td>€ 103.86</td>
<td>€ 674197999.62</td>
<td class="down">-28.82%</td>
<td><img src="/img/info-circle-solid.svg" alt="Klik voor meer details" /></td>
</tr>
```

- Op de knop **btnTop10** moet een eventhandler **'click'** gekoppeld worden die de top 10 coins gaat ophalen en tonen in een tabel
- op de volgende knoppen moet een eventhandler **'click'** gekoppeld worden die een **'card'** genereerd
| Button | coin | slug | id |
| ------------- |---------------|---------------| :----:|
| btnBTC | Bitcoin | bitcoin | 1 |
| btnETH | Ethereum | ethereum | 1027 |
| btnLTC | Litecoin | litecoin | 2 |
| btnADA | Cardano | cardano | 2010 |
| btnNEO | Neo | neo | 1376 |
- Bij het genereren van de 'card' moet je de volgende dingen uitvoeren (https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?CMC_PRO_API_KEY=##API-KEY##&convert=eur&id=##ID## of https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?CMC_PRO_API_KEY=##API-KEY##&convert=eur&slug=##SLUG##)
- Het juiste logo weergeven (img/##SYMBOL##.png) & alt text correct invullen
- text in de cardHeader aanpassen
- text van span met **ID="price"** opvullen met de prijs in euro
- text van span met **ID="delta"** opvullen met de change in 24h
- text van span met **ID="priceBTC"** opvullen met de prijs in btc
- Op de image in de laatste kolom moet een **click-handler** gekoppeld worden. Bij het klikken moet de individuele coin data opgehaald worden en getoond in een **modal-venster**.
- Bij het genereren van het 'modal-venster' moet je de volgende dingen uitvoeren
- Het juiste logo weergeven (img/currency/##SYMBOL##.png) & alt text correct invullen
- text in de modalHeader aanpassen
- text van span met **ID="currencyPrice"** opvullen met de prijs in euro
- text van span met **ID="currencyChange"** opvullen met de change in 24h
- text van span met **ID="volume24h"** opvullen met het volume in 24h
- text van span met **ID="marketCap"** opvullen met de market cap in euro
- text van span met **ID="totalSupply"** opvullen met de total supply
- text van span met **ID="maxSupply"** opvullen met de max supply
- href van anchor met **ID="lnkCoinmarketcap"** opvullen met de link naar coinmarketcap (https://coinmarketcap.com/nl/currencies/##SLUG##)
- href van anchor met **ID="lnkCoinmarketcap"** opvullen met de link naar coinmarketcap (<https://coinmarketcap.com/nl/currencies/##SLUG##>)
- De div met **ID="card"** moet getoond worden
- De div met **ID="top10"** moet verborgen worden
- De div met **ID="top10"** moet verborgen worden
52 changes: 25 additions & 27 deletions css/style.css
Original file line number Diff line number Diff line change
@@ -1,44 +1,42 @@
.card {
width: 30em;
}

.card #cardHeader {
text-transform: uppercase;
.down {
color: red;
}

.card .currency-logo-32x32 {
margin-right: 5px;
margin-top: -6px;
.up {
color: green;
}

.card .card-header {
font-size: 2.5em;
font-weight: bold;
.table td:last-child img {
width: 25px;
}

.card .price {
color: black;
text-align: center;
font-size: 3em;
.table td:last-child img:hover {
cursor: pointer;
}

.card .timeSpan {
font-weight: bold;
.modal-title {
display: flex;
align-items: center;
}

.card .delta {
font-size: 0.65em;
font-style: italic;
.modal-title img {
margin-right: .5em;
}

.card .card-subtitle {
font-size: 0.75em;
.modal-body {
display: flex;
flex-direction: column;
}

.down {
color: red;
.price {
text-align: center;
font-size: 4em;
font-weight: bold;
}

.up {
color: green;
.change {
text-align: center;
font-size: .7em;
font-style: italic;
margin-bottom: .7em;
}
128 changes: 60 additions & 68 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<head>
<meta charset="utf-8">
<title>Crypto watcher</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
Expand All @@ -15,97 +16,88 @@
integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx"
crossorigin="anonymous"></script>
<script src="/js/helpers.js"></script>
<script src="/js/cryptowatcher.js"></script>
</head>

<body>
<main class="container-fluid">
<div class="row">
<div class="col">
<h1>Crypto watcher</h1>
<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
<div class="btn-group mr-2" role="group" aria-label="First group">
<button id="btnTop10" type="button" class="btn btn-secondary">Top 10</button>
</div>
<div class="btn-group" role="group" aria-label="Second group">
<button id="btnBTC" type="button" class="btn btn-secondary">bitcoin</button>
<button id="btnETH" type="button" class="btn btn-secondary">ethereum</button>
<button id="btnLTC" type="button" class="btn btn-secondary">litecoin</button>
<button id="btnADA" type="button" class="btn btn-secondary">cardano</button>
<button id="btnNEO" type="button" class="btn btn-secondary">neo</button>
</div>
</div>
</div>
</div>
<div id="top10" class="row">
<div class="col pt-5">
<table id="tblTop10" class="table table-hover">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Market Cap</th>
<th scope="col">Price</th>
<th scope="col">Volume (24h)</th>
<th scope="col">Change (24h)</th>
<th>#</th>
<th>Name</th>
<th>Market Cap</th>
<th>Price</th>
<th>Volume (24h)</th>
<th colspan="2">Change (24h)</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
<div id="card" class="row">
<div class="col pt-5">
<div class="card mx-auto">
<div class="card-header">
<img id="currencyLogo" src="img/btc.png" class="currency-logo-32x32" /><span id="cardHeader">Bitcoin</span>
</div>
<div class="card-body">
<h5 class="card-title"><span id="price" class="price">€ 1000.00</span> <span id="delta"
class="delta down">(-17,76%)</span></h5>
<h6 id="priceBTC" class="card-subtitle mb-2 text-muted">1,0 BTC</h6>
<table class="table">
<tr>
<th>
Volume (24h)
</th>
<td id="volume24h" class="text-right">
&euro; 6425023877,82
</td>
</tr>
<tr>
<th>
Market cap
</th>
<td id="marketCap" class="text-right">
&euro; 96418467361
</td>
</tr>
<tr>
<th>
Total supply
</th>
<td id="totalSupply" class="text-right">
16848037.0
</td>
</tr>
<tr>
<th>
Max supply
</th>
<td id="maxSupply" class="text-right">
21000000.0
</td>
</tr>
</table>
</div>
<div class="card-footer text-muted text-right">
<a id="lnkCoinmarketcap" href="https://coinmarketcap.com/currencies/bitcoin" target="_blank"
class="card-link">more details on coinmarketcap &raquo;</a>
</div>
</main>

<div id="coinDetail" class="modal fade" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 id="currencyHeader" class="modal-title">
##HEADER##
</h5>
</div>
<div class="modal-body">
<span id="currencyPrice" class="price">€1</span>
<span id="currencyChange" class="change">1.05%</span>
<table class="table">
<tr>
<th>
Volume (24h)
</th>
<td id="volume24h" class="text-right">
##VOLUME24H##
</td>
</tr>
<tr>
<th>
Market cap
</th>
<td id="marketCap" class="text-right">
##MARKETCAP##
</td>
</tr>
<tr>
<th>
Total supply
</th>
<td id="totalSupply" class="text-right">
##TOTALSUPPLY##
</td>
</tr>
<tr>
<th>
Max supply
</th>
<td id="maxSupply" class="text-right">
##MAXSUPPLY##
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<a href="#" id="lnkCoinmarketcap" class="btn btn-secondary" target="_blank">Meer details</a>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</main>
</div>
</body>

</html>
4 changes: 4 additions & 0 deletions js/helpers.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
function formatEuro(value) {
return Math.round(value * 100) / 100;
}

function getFirstProperty(obj){
return obj[Object.keys(obj)[0]];
}

0 comments on commit 923d388

Please sign in to comment.