-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
97 lines (80 loc) · 3.54 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/* mobile menu */
const hamburger = document.querySelector(".hamburger-btn");
const navMobile = document.querySelector(".navigation");
hamburger.addEventListener("click", () => {
navMobile.classList.toggle("display")
document.body.classList.toggle("overflow-hidden")
if(navMobile.classList.contains("display")) {
hamburger.src = "./assets/shared/icon-close.svg"
} else {
hamburger.src = "./assets/shared/icon-hamburger.svg"
}
});
const url = ("./data.json");
const fetchUrl = fetch(url).then(res => res.json());
/* Destination page */
const destinationPlace = document.querySelector(".destination-place");
const description = document.querySelector(".description");
const destinationImg = document.querySelector(".destination-img");
const distance = document.querySelector(".distance");
const travel = document.querySelector(".travel");
const destinations = document.querySelectorAll(".destination");
destinations.forEach((destination, index) => {
destination.addEventListener("click", (e) => {
fetchUrl
.then(data => {
let dataDestination = data.destinations[index];
destinationPlace.innerHTML = dataDestination.name;
description.innerHTML = dataDestination.description;
destinationImg.src = dataDestination.images.webp;
distance.innerHTML = dataDestination.distance;
travel.innerHTML = dataDestination.travel;
document.querySelector(".active-destination")?.classList.remove("active-destination")
destination.classList.add("active-destination");
})
});
});
/* Crew page */
const members = document.querySelectorAll(".member");
const memberPhoto = document.querySelector(".member-photo");
const memberBio = document.querySelector(".member-bio");
const crewMember = document.querySelector(".crew-member");
const position = document.querySelector(".crew-member-role");
members.forEach((member,index) => {
member.addEventListener("click", (e) => {
fetchUrl
.then(data => {
let dataCrew = data.crew[index]
position.innerHTML = dataCrew.role;
crewMember.innerHTML = dataCrew.name;
memberBio.innerHTML = dataCrew.bio;
memberPhoto.src = dataCrew.images.webp;
document.querySelector(".active-crew")?.classList.remove("active-crew")
member.classList.add("active-crew");
})
});
});
/* Technology page */
const technologies = document.querySelectorAll(".technology-btn");
const technologyType = document.querySelector(".technology-type");
const technologyDescription = document.querySelector(".technology-description");
const technologyImg = document.querySelector(".technology-img");
const technologyImgDesktop = document.querySelector(".technology-img-desktop");
technologies.forEach((technology, index) => {
technology.addEventListener("click", (e) => {
fetchUrl
.then(data => {
let dataTechnology = data.technology[index];
technologyType.innerHTML = dataTechnology.name;
technologyDescription.innerHTML = dataTechnology.description
document.querySelector(".active-tech")?.classList.remove("active-tech")
technology.classList.add("active-tech");
const mediaMatch = window.matchMedia("(min-width: 769px)");
if (mediaMatch.matches) {
technologyImgDesktop.srcset = dataTechnology.images.portrait
} else {
technologyImg.src = dataTechnology.images.landscape
};
})
});
});