Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Ime i prezime: Vlado Prpić
- // Napomene: Vrijeme trajanja testa je 1 sat i 45 minuta. Prolaz je 50%. Dopušteno je korištenje
- // interneta i materijala s predavanja, ali nije dopušten nikakav oblik varanja,
- // uključujući prepisivanje od drugih.
- // Zadatak 1. (5 bodova)
- // Napraviti funkciju za asinkroni dohvat podataka. Funkcija ima 2 parametra "url" i
- // "callback". Dohvatiti JSON sa linka https://api.myjson.com/bins/1fqs01 i pozvati callback
- // (funkcija za obradu podataka).
- function loadXMLDoc(url, callback) {
- var xmlhttp = new XMLHttpRequest();
- xmlhttp.onreadystatechange = function() {
- if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
- callback(xmlhttp);
- }
- };
- xmlhttp.open("GET", url, true);
- xmlhttp.send();
- }
- function main() {
- loadXMLDoc('https://api.myjson.com/bins/1fqs01', function(data) {
- data = JSON.parse(data.response);
- console.log('\n Zadatak 2');
- names(data);
- console.log('\n Zadatak 3');
- notReleased(data);
- console.log('\n Zadatak 4: Detalji igre id 0');
- gameInfo(data[0]);
- console.log('\n Zadatak 5');
- reviewInfo(data);
- });
- }
- main();
- // Zadatak 2. (5 bodova)
- // Napišite funkciju koja će proći kroz igre i ispisati ime igre i vrijeme izlaska
- // ( u obliku: ime igre - vrijeme izlaska)
- function names(data) {
- for (var i = 0; i < data.length; i++) {
- console.log(`${data[i].name} - ${data[i].additional.release_date}`);
- }
- }
- // Zadatak 3. (20 bodova)
- // a. Napisati funkciju koja će proći kroz sve igre i ispisati one koje još nisu izašle (10 bodova)
- // b. Izračunati koliko je još dana preostalo do izlaska igara koje nisu izašle (10 bodova)
- function notReleased(data) {
- var now = new Date();
- var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
- for (var i = 0; i < data.length; i++) {
- var gameDate = new Date(data[i].additional.release_date);
- if (now <= gameDate) {
- var diffDays = Math.round(Math.abs((now.getTime() - gameDate.getTime()) / (oneDay)));
- console.log(`Igra: ${data[i].name} - Preostalo do izlaska: ${diffDays} dana`);
- }
- }
- }
- // Zadatak 4. (10 bodova)
- // Napisati funkciju koja će primati po jedan objekat "game" te ispisati ime, broj platformi na kojima igra izlazi,
- // te nazive tih platformi. Objekte igara proslijeđivati iz glavnog programa (funkcija za obradu podataka).
- function gameInfo(game) {
- console.log(`Naziv: ${game.name}, Broj platformi: ${game.platform.length}`);
- console.log(`Platforme: ${game.platform.join(',')}`);
- }
- // 5. Zadatak (20 bodova)
- // a. Napisati funkciju koja je će proći kroz sve igre, za svaku igru ispisati koliko ukupno ima review-ova,
- // te u postotku koliko pozitivnih a koliko negativnih (15 bodova)
- // b. Ispisati igru koja je po review-ovima najbolje ocjenjena po postotku (5 bodova)
- function reviewInfo(data) {
- var bestGamePercentage = 0;
- var bestGameId = 0;
- for (var i = 0; i < data.length; i++) {
- var review = data[i].reviews;
- var total = review.positive + review.negative;
- var positive = (review.positive / total) * 100;
- var negative = (review.negative / total) * 100;
- if (positive > bestGamePercentage) {
- bestGamePercentage = positive;
- bestGameId = i;
- }
- console.log(`Naziv: ${data[i].name}, Ukupno reviewa: ${total} (Poz: ${positive}% | Neg: ${negative}%)`);
- }
- console.log(`Najbolje ocjenjena igra: ${data[bestGameId].name}`);
- }
- // 6. Zadatak (20 bodova)
- // Napisati funkciju koja će izračunati koliko koja platforma ima igara koje će izaći na njoj.
- // Ispisati platforme sortirane od najmanje zastupljenije do najzastupljenije
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement