-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
172 lines (148 loc) · 5.73 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
document.addEventListener("DOMContentLoaded", function () {
console.log("Sayfa yüklendi!"); // Sayfa yüklendiğinde log basılır
addCars();
filter();
});
const divCars = document.querySelector("#cars");
//****FETCH CARS*/
function fetchCars(url) {
return new Promise((resolve,reject)=>{
fetch(url)
.then(response => response.json())
.then(data => resolve(data))
.catch(err=>reject(err));
})
}
//console.log("fetchCars");
//console.log(fetchCars("carsData.json"));
//*****ADDCARS********/
function addCars() {
fetchCars("carsData.json")
.then(data=> {
//console.log("data");
//console.log(data);
// console.log(typeof data);
data.forEach((item) => {
//console.log(item);
createCarCards(item);
});
})
.catch((err) => console.error(err)); // Hata durumu loglanır
}
//
divCars.addEventListener("click", function (e) {
carCard = e.target.closest("#car-card"); //En yakın car-card elementi seçildi
if (carCard) {
console.log("carCard:" + carCard);
let ID = carCard.dataset.id;
console.log("ID:" + ID);
fetchCarDetails(ID);
}
});
//****************FETCH CAR DETAİLS*********************** */
//FETCH
function fetchCarDetails(ID) {
fetchCars("carsData.json")
.then(data=>{
data.forEach((item) => {
//console.log("item:");
//console.log(item);
// console.log("itemID:" + item.id);
const car = data.find((item) => item.id == ID); // ID eşleşen araba bulunur
// console.log("car:");
// console.log(car);
if (car) {
displayCarDetails(car); // Detaylar gösterilir
}
});
})
.catch((err) => console.error(err)); // Hata durumu loglanır
}
//****************DİSPLAY CAR DETAİLS*********************** */
function displayCarDetails(car) {
const divDetails = document.querySelector("#detailsDiv");
// console.log(divDetails);
let iconDiv = document.querySelector("#iconDiv");
document.querySelector(
"#model"
).innerText = `${car.car_make}-${car.car_model}`;
divDetails.innerHTML = `
<div>
<img src=${car.image} class="img-fluid" id="detailImg" alt="${car.car_make} ${car.car_model}">
</div>
<div class="d-flex flex-column m-auto g-3 px-4 pt-3" id="textDiv" >
<p class="">Model Year:<span class=""> ${car.car_model_year}</span></p>
<p class="">Fuel Type:<span class=""> ${car.fuel_type}</span></p>
<p class="">Transmission:<span class=""> ${car.transmission}</span></p>
<p class="">Seating Capacity:<span class=""> ${car.seats}</span></p>
</div>
`;
divDetails.classList.remove("d-none"); // Detaylar görünür hale getirilir
iconDiv.classList.remove("d-none"); // İkon görünür hale getirilir
window.scrollTo(0, 0); // Sayfa en üste kaydırılır
document.querySelector("#down").classList.add("d-none"); //down butonu gizlenir
}
//*******DETAYLARI GİZLEME*******/
document.querySelector("#closeIcon").addEventListener("click", function () {
document.querySelector("#detailsDiv").classList.add("d-none"); // Detaylar gizlenir
document.querySelector("#iconDiv").classList.add("d-none"); // İkon gizlenir
document.querySelector("#down").classList.remove("d-none"); //down butonu gösterilir
});
//****************UP İŞLEMİ*********/
document.querySelector("#up").addEventListener("click", function () {
window.scrollTo(0, 0); // Sayfa en üste kaydırılır
});
document.querySelector("#down").addEventListener("click", function () {
window.scrollTo(0, document.body.scrollHeight); // Sayfa en alta kaydırılır
});
/*
//********HEADER TEXT COLOR*********/
var colors = ["#C8C5C6", "#7D91A9", "#B5BABF", "#C8C5C6", "#EAECF0"]; // Değişecek renkler
var currentIndex = 0; // Başlangıçta kullanılacak renk dizini
function changeColor() {
var textElement = document.querySelector(".header h3");
textElement.style.color = colors[currentIndex]; // Yazı rengini değiştir
currentIndex = (currentIndex + 1) % colors.length; // Bir sonraki renge geç
}
// Belirli bir aralıkta renk değiştirme fonksiyonunu çağırma
setInterval(changeColor, 1000); //saniyede bir çağır
//****************FİLTER İŞLEMİ*********/
function filter() {
let inputFilter = document.querySelector("#inputFilter");
//console.log(inputFilter);
//input eventi:Kullanıcı bir input alanının değerini değiştirdiğinde tetiklenir
inputFilter.addEventListener("input", function () {
let filterValue = inputFilter.value
.replace(/\s/g, "")
.toLowerCase(); //hatf ve sayı dışındakiler "" ile değiştirilir;
console.log("filtervalue:" + filterValue);
divCars.innerHTML = "";
fetchCars("carsData.json")
.then((data) => {
//console.log(data);
data.forEach((item) => {
//console.log(item);
//console.log(item.car_make);
//console.log(item.car_model);
let makeAndModel = (item.car_make + item.car_model)
.replace(/[^a-zA-Z0-9]/g, "")
.toLowerCase(); //hatf ve sayı dışındakiler "" ile değiştirilir
console.log(makeAndModel);
if (makeAndModel.includes(filterValue)) {
createCarCards(item);
}
});
})
.catch((err) => console.error(err)); // Hata durumu loglanır
});
}
function createCarCards(item) {
divCars.innerHTML += `
<div class="d-flex flex-column justify-content-end bg-white pb-0 rounded-4 mb-2 border border-white border-2 car-card" data-id="${item.id}" style="height:15rem;" id="car-card">
<div class="my-auto">
<img src=${item.image} class="img-fluid" id="img" style="width:16rem; overflow:hidden;" alt="${item.car_make} ${item.car_model}">
</div>
<div class="text-center bg-black mb-0 pt-2 rounded-bottom-4 py-2" id="carModel";> ${item.car_make}-${item.car_model}</div>
</div>
`;
}