Advertisement
petarm10

spark 2

Feb 28th, 2020
478
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. // Web programiranje test - 06.11.2019.
  2. // GRUPA A
  3. // Ime i prezime: [Josip Pinjuh]
  4.  
  5. // 1. Napišite funkciju za asinkroni dohvat podataka sa servera.
  6. // Dohvatite JSON sa linka: https://api.myjson.com/bins/78k40 - 5 bodova
  7.  
  8. function loadData(url, cb) {
  9. var xmlhttp = new XMLHttpRequest();
  10. xmlhttp.onreadystatechange = function() {
  11. if (this.readyState == 4 && this.status == 200) {
  12. cb(JSON.parse(this.responseText));
  13. }
  14. };
  15. xmlhttp.open("GET", url, true);
  16. xmlhttp.send();
  17. }
  18.  
  19. function parseData(data) {
  20. console.log('\n2. zadatak\n');
  21. mainCity(data);
  22. console.log('\n3. zadatak\n');
  23. tripDistance(data);
  24. console.log('\n4. zadatak\n');
  25. tripDay(data);
  26. choosenCountry(data);
  27. }
  28.  
  29. loadData("https://api.myjson.com/bins/78k40", parseData);
  30.  
  31. // 2. Napravite funkciju koja prima podatke koje ste dohvatili sa servera.
  32. // Funkcija treba za svako putovanje ispisati dinamicki koliko glavniGrad ima samoglasnika, te ako ime glavnog grada pocinje slovom "H" ispisati ga jos jednom u formatu "Glavni grad koji pocinje sa slovom H je {glavniGrad}" - 15 bodova
  33.  
  34. function mainCity(data){
  35. data.putovanja.forEach(key =>{
  36. var count = Array.from(key.glavniGrad).filter(letter => 'AEIOUaeiou'.includes(letter)).length;
  37. console.log(key.glavniGrad + ' ima ' + count + ' samoglasnika');
  38. if(key.glavniGrad[0] === 'H'){
  39. console.log('Glavni grad koji poèinje sa slovom H je ' + key.glavniGrad);
  40. }
  41. });
  42. }
  43.  
  44. // 3. Napravite funkciju koja prima podatke koje ste dohvatili sa servera.
  45. // Funkcija treba sortirati dobijene podatke ("putovanja") po udaljenosti(gledajuci property "udaljenost"), od najudaljenijeg putovanja prema najblizem i ispisati tekst, nakon sortiranja, (za svako putovanje) u obliku "ime drzave - glavni grad - udaljenost" (imena drzava se nalaze u propertiju "imenaDrzava" i svaki key imena drzave odgovara id-u iz objekata putovanja) - 15 bodova
  46.  
  47. function tripDistance(data){
  48. data.putovanja.forEach(key =>{
  49. var x = parseInt(key.udaljenost.split(' ')[0]);
  50. key.distance = x;
  51. });
  52.  
  53. data.putovanja.sort((a,b) => b.distance - a.distance);
  54.  
  55. data.putovanja.forEach(key => {
  56. console.log(data.imenaDrzava[key.id] + ' - ' + key.glavniGrad + ' - ' + key.udaljenost);
  57. });
  58. }
  59.  
  60. // 4. Napraviti funkciju koja æe za svako putovanje napisati na koji dan u tjednu je polazak(Format ispisa: glavniGrad: datumPolaska - dan u tjednu ). Nakon toga ispisati za svaki dan u tjednu koliko putovanja polazi na taj dan(Primjer: Nedjelja - 1, Ponedjeljak - 2, Utorak - 0 itd.) - 20 bodova
  61.  
  62. function tripDay(data){
  63. var daysCount = {};
  64. data.putovanja.forEach(key => {
  65. var day = new Date(key.datumPolaska).toLocaleString("hr-HR", {weekday: 'long'});
  66. console.log(key.glavniGrad + ': ' + key.datumPolaska + ' - ' + day);
  67. if(!daysCount[day]) daysCount[day] = 0;
  68. daysCount[day]++;
  69. });
  70.  
  71. Object.keys(daysCount).forEach(day => {
  72. console.log(day + ' - ' + daysCount[day]);
  73. });
  74. }
  75.  
  76. // 5. Napraviti novi objekt mojePutovanje. Dodati mu metodu izracunajNajduzePutovanje koja ce primati niz putovanja, iz niza izracunati najduze potovanje po property-u "vrijemeLetenja" (property "vrijemeLetenja" je u formatu h:mm) te vratiti to putovanje.
  77. // Zatim dodati objektu mojePutovanje novi property odabranaDrzava u koju cete upisati ime drzave vracenog najduzeg putovanja te nakon toga ispisati objekt mojePutovanje - 25 bodova
  78.  
  79. var mojePutovanje = {
  80. izracunajNajduzePutovanje: function(data){
  81. data.forEach(key => {
  82. var x = (key.vrijemeLetenja).split(':')
  83. var minutes = parseInt(x[0])*60 + parseInt(x[1]);
  84. key.flightLengthInMinutes = minutes;
  85. });
  86. data.sort((a,b) => b.flightLengthInMinutes - a.flightLengthInMinutes);
  87. return data[0];
  88. }
  89. }
  90.  
  91. function choosenCountry(data) {
  92. var x = mojePutovanje.izracunajNajduzePutovanje(data.putovanja);
  93. mojePutovanje.odabranaDrzava = data.imenaDrzava[x.id];
  94. }
  95.  
  96. console.log('\n5. zadatak\n');
  97. console.log(mojePutovanje);
  98.  
  99.  
  100. // 6. Koristeæi se HTML-om, napravite jedan div element. Div element nek sadrzi text Random putovanje. Napravite button koji ce imati tekst Generiraj random putovanje.
  101. // Na klik buttona postavite funkciju koja æe dinamièki odabrati random putovanje iz dohvacenih putovanja, i upisati ime drzave i njen glavni grad unutar div elementa - 20 bodova
  102. function generateRandomTrip(data){
  103. var randIndex = Math.floor(Math.random()*data.putovanja.length),
  104. x = data.putovanja[randIndex],
  105. div = document.querySelector('.box');
  106.  
  107. div.innerHTML = data.imenaDrzava[x.id] + ' - ' + x.glavniGrad;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement