Spaces:
Sleeping
Sleeping
Update static/script.js
Browse files- static/script.js +35 -7
static/script.js
CHANGED
|
@@ -341,19 +341,47 @@ fetchData('/api/hobbies', 'hobbies-grid', (data, container) => {
|
|
| 341 |
}
|
| 342 |
reviews.forEach(review => {
|
| 343 |
const reviewDiv = document.createElement('div');
|
| 344 |
-
reviewDiv.className = 'glassmorphic p-4 rounded-xl';
|
| 345 |
reviewDiv.innerHTML = `
|
| 346 |
-
<div
|
| 347 |
-
<
|
| 348 |
-
|
| 349 |
-
|
| 350 |
-
|
|
|
|
|
|
|
| 351 |
</div>
|
|
|
|
| 352 |
</div>
|
| 353 |
-
<
|
|
|
|
|
|
|
| 354 |
`;
|
| 355 |
reviewsContainer.appendChild(reviewDiv);
|
| 356 |
gsap.from(reviewDiv, { opacity: 0, y: 20, duration: 0.8, ease: 'power3.out' });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 357 |
});
|
| 358 |
})
|
| 359 |
.catch(error => {
|
|
|
|
| 341 |
}
|
| 342 |
reviews.forEach(review => {
|
| 343 |
const reviewDiv = document.createElement('div');
|
| 344 |
+
reviewDiv.className = 'glassmorphic p-4 rounded-xl flex justify-between items-start';
|
| 345 |
reviewDiv.innerHTML = `
|
| 346 |
+
<div>
|
| 347 |
+
<div class="flex items-center mb-2">
|
| 348 |
+
<span class="font-orbitron text-primary-blue glow mr-2">${review.name}</span>
|
| 349 |
+
<div class="text-primary-blue flex">
|
| 350 |
+
${'<i class="fas fa-star glow"></i>'.repeat(review.rating)}
|
| 351 |
+
${'<i class="far fa-star text-gray-400"></i>'.repeat(5 - review.rating)}
|
| 352 |
+
</div>
|
| 353 |
</div>
|
| 354 |
+
<p class="text-gray-300 text-sm">${review.description}</p>
|
| 355 |
</div>
|
| 356 |
+
<button class="delete-review text-red-500 hover:text-red-700 glow" data-id="${review.id}">
|
| 357 |
+
<i class="fas fa-trash-alt"></i>
|
| 358 |
+
</button>
|
| 359 |
`;
|
| 360 |
reviewsContainer.appendChild(reviewDiv);
|
| 361 |
gsap.from(reviewDiv, { opacity: 0, y: 20, duration: 0.8, ease: 'power3.out' });
|
| 362 |
+
|
| 363 |
+
// Add event listener for delete button
|
| 364 |
+
reviewDiv.querySelector('.delete-review').addEventListener('click', () => {
|
| 365 |
+
const confirmDelete = confirm(`Are you sure you want to delete the review by ${review.name}?`);
|
| 366 |
+
if (confirmDelete) {
|
| 367 |
+
fetch(`/api/reviews/delete/${review.id}`, {
|
| 368 |
+
method: 'DELETE'
|
| 369 |
+
})
|
| 370 |
+
.then(response => response.json())
|
| 371 |
+
.then(data => {
|
| 372 |
+
if (data.message) {
|
| 373 |
+
alert(data.message);
|
| 374 |
+
fetchReviews(reviewsContainer); // Refresh reviews
|
| 375 |
+
} else {
|
| 376 |
+
alert('Error deleting review: ' + (data.error || 'Unknown error'));
|
| 377 |
+
}
|
| 378 |
+
})
|
| 379 |
+
.catch(error => {
|
| 380 |
+
console.error('Error deleting review:', error);
|
| 381 |
+
alert('Error deleting review. Please try again later.');
|
| 382 |
+
});
|
| 383 |
+
}
|
| 384 |
+
});
|
| 385 |
});
|
| 386 |
})
|
| 387 |
.catch(error => {
|