Отзывы
This commit is contained in:
@@ -344,16 +344,6 @@
|
||||
<div class="abkhazian-pattern"></div>
|
||||
</div>
|
||||
|
||||
<div class="reviews-stats" id="reviewsStats" style="display: none;">
|
||||
<div class="reviews-avg">
|
||||
<div class="reviews-avg-number" id="reviewsAvgNumber">0.0</div>
|
||||
<div>
|
||||
<div class="reviews-avg-stars" id="reviewsAvgStars"></div>
|
||||
<div class="reviews-avg-count" id="reviewsAvgCount"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="reviews-grid" id="reviewsGrid"></div>
|
||||
|
||||
<div class="reviews-empty" id="reviewsEmpty" style="display: none;">
|
||||
@@ -373,8 +363,8 @@
|
||||
<section class="section section-light" id="host">
|
||||
<div class="container">
|
||||
<div class="section-header animate-on-scroll">
|
||||
<div class="section-badge">Ваш хозяин</div>
|
||||
<h2 class="section-title">Рауф Алексеевич — душа Hotel 777</h2>
|
||||
<div class="section-badge">Хозяин Hotel 777</div>
|
||||
<h2 class="section-title">Рауф Алексеевич</h2>
|
||||
<div class="abkhazian-pattern"></div>
|
||||
</div>
|
||||
<div class="host-card animate-on-scroll">
|
||||
@@ -385,7 +375,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="host-body">
|
||||
<h3>Рауф Алексеевич</h3>
|
||||
<p style="font-size: 1.1rem; color: var(--gold); font-weight: 600; margin-bottom: 20px; font-style: italic;">
|
||||
«Абхазское гостеприимство — это не работа, это образ жизни»
|
||||
</p>
|
||||
@@ -393,7 +382,7 @@
|
||||
Рауф Алексеевич — настоящий хозяин и душа Hotel 777. Он встречает каждого гостя с теплотой и заботой, как родного человека. Всегда подскажет лучшие маршруты по Абхазии, организует экскурсии к самым красивым местам — Новоафонскому монастырю, озеру Рица, Гагрскому парку.
|
||||
</p>
|
||||
<p style="font-size: 1rem; color: #666; line-height: 1.7; margin-bottom: 25px;">
|
||||
Домашняя кухня Рауфа Алексеевича — отдельная достопримечательность гостиницы. Свежие местные продукты, абхазские и русские блюда, приготовленные с душой — абиц, ачапа, хачапури, шашлык и многое другое. Чистые номера, искренняя улыбка и внимание к каждой детали — это то, что делает Hotel 777 особенным.
|
||||
Домашняя кухня — отдельная достопримечательность гостиницы. Свежие местные продукты, абхазские и русские блюда, приготовленные с душой — абиц, ачапа, хачапури, шашлык и многое другое. Чистые номера, искренняя улыбка и внимание к каждой детали — это то, что делает Hotel 777 особенным.
|
||||
</p>
|
||||
<a href="tel:89409270080" class="host-contact">
|
||||
<i class="fas fa-phone"></i> 8 (940) 927-00-80
|
||||
|
||||
@@ -5,7 +5,7 @@ async function loadReviews() {
|
||||
if (!res.ok) throw new Error('Failed to load reviews');
|
||||
|
||||
const data = await res.json();
|
||||
renderReviews(data.reviews, data.stats);
|
||||
renderReviews(data.reviews);
|
||||
} catch (err) {
|
||||
console.error('Error loading reviews:', err);
|
||||
document.getElementById('reviewsEmpty').style.display = 'block';
|
||||
@@ -44,31 +44,19 @@ async function loadCities(countryCode) {
|
||||
return { popular: [], cities: [] };
|
||||
}
|
||||
|
||||
function renderReviews(reviews, stats) {
|
||||
function renderReviews(reviews) {
|
||||
const grid = document.getElementById('reviewsGrid');
|
||||
const statsEl = document.getElementById('reviewsStats');
|
||||
const emptyEl = document.getElementById('reviewsEmpty');
|
||||
|
||||
if (!grid || !emptyEl) return;
|
||||
|
||||
if (!reviews || reviews.length === 0) {
|
||||
if (statsEl) statsEl.style.display = 'none';
|
||||
grid.innerHTML = '';
|
||||
emptyEl.style.display = 'block';
|
||||
return;
|
||||
}
|
||||
|
||||
emptyEl.style.display = 'none';
|
||||
if (statsEl) statsEl.style.display = 'flex';
|
||||
|
||||
const avgStars = stats.avgStars.toFixed(1);
|
||||
const avgNumEl = document.getElementById('reviewsAvgNumber');
|
||||
const avgStarsEl = document.getElementById('reviewsAvgStars');
|
||||
const avgCountEl = document.getElementById('reviewsAvgCount');
|
||||
|
||||
if (avgNumEl) avgNumEl.textContent = avgStars;
|
||||
if (avgStarsEl) avgStarsEl.innerHTML = I18n.renderStarsStatic(parseFloat(avgStars));
|
||||
if (avgCountEl) avgCountEl.textContent = `${stats.count} ${getReviewWord(stats.count)}`;
|
||||
|
||||
grid.innerHTML = reviews.map(review => {
|
||||
const initials = I18n.getInitials(review.author_name);
|
||||
@@ -79,7 +67,7 @@ function renderReviews(reviews, stats) {
|
||||
const location = countryPart || cityPart ? `${countryPart}${cityPart}` : '';
|
||||
|
||||
return `
|
||||
<div class="review-card animate-on-scroll">
|
||||
<div class="review-card">
|
||||
<div class="review-card-header">
|
||||
<div class="review-author">
|
||||
<div class="review-avatar">${initials}</div>
|
||||
@@ -95,27 +83,9 @@ function renderReviews(reviews, stats) {
|
||||
</div>
|
||||
`;
|
||||
}).join('');
|
||||
|
||||
setTimeout(() => {
|
||||
document.querySelectorAll('.review-card.animate-on-scroll').forEach(el => {
|
||||
el.classList.add('visible');
|
||||
});
|
||||
}, 100);
|
||||
}
|
||||
|
||||
function getReviewWord(count) {
|
||||
const lastTwo = count % 100;
|
||||
const lastOne = count % 10;
|
||||
|
||||
if (I18n.currentLang === 'en') {
|
||||
return lastTwo === 11 ? 'reviews' : lastOne === 1 ? 'review' : 'reviews';
|
||||
}
|
||||
|
||||
if (lastTwo >= 11 && lastTwo <= 14) return 'отзывов';
|
||||
if (lastOne === 1) return 'отзыв';
|
||||
if (lastOne >= 2 && lastOne <= 4) return 'отзыва';
|
||||
return 'отзывов';
|
||||
}
|
||||
|
||||
function escapeHtml(text) {
|
||||
const div = document.createElement('div');
|
||||
|
||||
Reference in New Issue
Block a user