Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
147 lines (126 loc) · 3.79 KB
/
Copy pathscript.js
File metadata and controls
147 lines (126 loc) · 3.79 KB
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
function animateBlink() {
const icons = document.querySelectorAll('.icon');
icons.forEach((icon, index) => {
setTimeout(() => {
icon.classList.add('blink');
}, index * 500);
});
}
// Panggil fungsi animasi berkedip setelah halaman dimuat
window.addEventListener('load', animateBlink());
// Api list services
async function fetchData() {
try {
let response = await fetch(
'https://6526a485917d673fd76cb35c.mockapi.io/services',
);
let service = await response.json();
return service;
} catch (error) {
throw error;
}
}
// Mengambil data services dari MockAPI
async function getDataServices() {
try {
let service = await fetchData();
let listServices = document.getElementById('list-services');
service.map((item, index) => {
let cardServices = `
<div class="col-md-4 mt-3" data-bs-toggle="modal" data-bs-target="#exampleModal">
<div class="card-services rounded-4" onclick="showModalService(${index})">
<div class="icon-round rounded-4 position-relative mx-auto">
<img
src="${item.imageUrl}"
alt=""
srcset=""
class="img-fluid icon-img position-absolute top-50 start-50 translate-middle" />
</div>
<h3 class="text-primary mt-4 text-center">${item.name}</h3>
<p class="text-white mt-3 text-center">${item.description}</p>
</div>
</div>`;
listServices.innerHTML += cardServices;
});
} catch (error) {
console.log(error);
}
}
getDataServices();
async function showModalService(index) {
let services = await fetchData();
let modalTitle = document.getElementById('modal-title');
let modalContent = document.getElementById('modal-content');
modalTitle.innerHTML = services[index].name;
modalContent.innerHTML = services[index].detailDescription;
}
// ========= Api list Products ========= //
async function fetchDataProducts() {
try {
let response = await fetch(
`https://6526a485917d673fd76cb35c.mockapi.io/products`,
);
let result = await response.json();
return result;
} catch (error) {
console.log(error);
}
}
async function getDataProducts() {
try {
let products = await fetchDataProducts();
let listProducts = document.getElementById('list-products');
products.map((item, index) => {
let cardProducts = `
<div class="col-md-6 mb-4">
<div class="card rounded-4">
<img
src="${item.imgUrl}"
class="card-img-top rounded-4"
alt="..." />
<div class="card-body align-self-center">
<div class="text-section">
<h5 class="card-title">${item.title}</h5>
<p class="card-text">
${item.description}
</p>
<p>${item.price}</p>
<button onclick="showProductsById(${item.id})" class="btn btn-primary w-100">Book now</button>
</div>
</div>
</div>
</div>
`;
listProducts.innerHTML += cardProducts;
});
} catch (error) {
console.log(error);
}
}
getDataProducts();
// Membuat booking berdasarkan id
async function showProductsById(id) {
try {
let productsById = await fetch(
`https://6526a485917d673fd76cb35c.mockapi.io/products/${id}`,
);
let result = await productsById.json();
window.location.href = `./booking/index.html?id=${result.id}&name=${result.title}&price=${result.price}&image=${result.imgUrl}`;
} catch (error) {
console.log(error);
}
}
// Menampilkan user yang sedang login
const loggedInUser = localStorage.getItem('loggedInUser');
if (loggedInUser) {
const user = JSON.parse(loggedInUser);
const loginButton = document.getElementById('btn-login');
const userElement = (document.getElementById('user-login').textContent =
user.Name);
// Sembunyikan tombol login
loginButton.style.display = 'none';
// Tampilkan elemen user
userElement.style.display = 'block';
} else {
alert('Silakan login terlebih dahulu');
}