diff --git a/index.html b/index.html index 9c1d5ea..a8c5c43 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,12 @@ +
+

Loading data from Twitch

+
+
+
+
diff --git a/scripts.js b/scripts.js index c2c14e9..666265f 100644 --- a/scripts.js +++ b/scripts.js @@ -2,6 +2,7 @@ const app = document.getElementById('root'); var clientID = 'xxxxxx'; // Hide this for github, it's my application's Client ID var streamDataSet = []; +var finalData = []; async function getTopGamesAsync(){ console.log('--> getTopGamesAsync'); @@ -73,43 +74,49 @@ async function consolidateDataSet() { return topGames; } +function displayData() { + // Display logic + const appContainer = document.createElement('div'); + appContainer.setAttribute('class', 'appContainer'); + + app.appendChild(appContainer); + + finalData = streamDataSet.slice(0,21); // Set to first 21 for testing purposes + + finalData.forEach(game => { + const card = document.createElement('div'); + card.setAttribute('class', 'card'); + + const img = document.createElement('img'); + img.setAttribute('style', 'width:100%'); + img.src = game.box_art_url.replace('{width}', '376').replace('{height}', '500'); + + const container = document.createElement('div'); + container.setAttribute('class', 'container'); + + const h4 = document.createElement('h4'); + h4.textContent = game.name; + + // Show number of viewers for game, number of streamers and average number of viewers per streamer + const p = document.createElement('p'); + p.textContent = 'Info here'; + + appContainer.appendChild(card); + card.appendChild(img); + card.appendChild(container); + container.appendChild(h4); + container.appendChild(p); + }) +} + + consolidateDataSet().then((result) => { console.log('--> streamDataSet is ready for analysis'); streamDataSet = result; console.log(streamDataSet); -}); - - - - - - - - - -// Display logic -const container = document.createElement('div'); -container.setAttribute('class', 'container'); - -app.appendChild(container); - - - -// finalData.forEach(game => { -// const card = document.createElement('div'); -// card.setAttribute('class', 'card'); - -// const h1 = document.createElement('h1'); -// h1.textContent = game.name; -// // use game.box_art_url to get the image for each game - -// // Show number of viewers for game, number of streamers and average number of viewers per streamer -// const p = document.createElement('p'); -// p.textContent = ''; - -// container.appendChild(card); -// card.appendChild(h1); -// card.appendChild(p); -// }) \ No newline at end of file +}).then(() => { + document.getElementsByClassName('spinner')[0].style.display = 'none'; + displayData(); +}); \ No newline at end of file diff --git a/style.css b/style.css index ac4fe0d..0ca4012 100644 --- a/style.css +++ b/style.css @@ -1,16 +1,81 @@ +/* ----------- Spinner ----------- */ +.spinner { + margin: 100px auto 0; + width: 70px; + text-align: center; +} + +.spinner > div { + width: 18px; + height: 18px; + background-color: #6441a5; /* Twitch colour */ + + border-radius: 100%; + display: inline-block; + -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both; + animation: sk-bouncedelay 1.4s infinite ease-in-out both; +} + +.spinner .bounce1 { + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; +} + +.spinner .bounce2 { + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; +} + +@-webkit-keyframes sk-bouncedelay { + 0%, 80%, 100% { -webkit-transform: scale(0) } + 40% { -webkit-transform: scale(1.0) } +} + +@keyframes sk-bouncedelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); + } 40% { + -webkit-transform: scale(1.0); + transform: scale(1.0); + } +} + +/* ----------- App ----------- */ + #root { max-width: 1200px; margin: 0 auto; } -.container { +.appContainer { display: flex; flex-wrap: wrap; } .card { margin: 1rem; - border: 1px solid gray; + + /* Add shadows to create the "card" effect */ + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); + transition: 0.3s; + + border-radius: 5px; /* 5px rounded corners */ +} + +/* On mouse-over, add a deeper shadow */ +.card:hover { + box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); +} + +/* Add some padding inside the card container */ +.container { + padding: 2px 16px; +} + +/* Add rounded corners to the top left and the top right corner of the image */ +img { + border-radius: 5px 5px 0 0; } @media screen and (min-width: 600px) {