// Экранирование данных перед вставкой в HTML (данные приходят из общего учебного API)
function esc(value) {
return String(value ?? '')
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
const selectedDishes = {
soup: null,
'main-course': null,
drink: null
};
function sortDishes() {
dishes.sort(function(a, b) {
return a.name.localeCompare(b.name, 'ru');
});
}
function displayDishes() {
const soupSection = document.getElementById('soup-section');
const mainCourseSection = document.getElementById('main-course-section');
const drinkSection = document.getElementById('drink-section');
soupSection.innerHTML = '';
mainCourseSection.innerHTML = '';
drinkSection.innerHTML = '';
dishes.forEach(function(dish) {
const dishCard = createDishCard(dish);
if (dish.category === 'soup') {
soupSection.insertAdjacentHTML('beforeend', dishCard);
} else if (dish.category === 'main-course') {
mainCourseSection.insertAdjacentHTML('beforeend', dishCard);
} else if (dish.category === 'drink') {
drinkSection.insertAdjacentHTML('beforeend', dishCard);
}
});
addDishClickHandlers();
}
function createDishCard(dish) {
return `
${esc(dish.price)} руб.
${esc(dish.name)}
${esc(dish.count)}
`;
}
function addDishClickHandlers() {
const dishCards = document.querySelectorAll('.dish-card');
dishCards.forEach(function(card) {
card.addEventListener('click', function() {
const keyword = this.dataset.dish;
const dish = dishes.find(function(d) {
return d.keyword === keyword;
});
if (dish) {
selectDish(dish);
}
});
});
}
function selectDish(dish) {
selectedDishes[dish.category] = dish;
updateOrderSummary();
}
function updateOrderSummary() {
const orderSummary = document.getElementById('order-summary');
const hasSelection = selectedDishes.soup ||
selectedDishes['main-course'] ||
selectedDishes.drink;
if (!hasSelection) {
orderSummary.innerHTML = 'Ничего не выбрано
';
return;
}
let summaryHTML = '';
let totalPrice = 0;
if (selectedDishes.soup) {
summaryHTML += `
Суп
${esc(selectedDishes.soup.name)}
${esc(selectedDishes.soup.price)} руб.
`;
totalPrice += selectedDishes.soup.price;
} else {
summaryHTML += `
`;
}
if (selectedDishes['main-course']) {
summaryHTML += `
Главное блюдо
${esc(selectedDishes['main-course'].name)}
${esc(selectedDishes['main-course'].price)} руб.
`;
totalPrice += selectedDishes['main-course'].price;
} else {
summaryHTML += `
Главное блюдо
Блюдо не выбрано
`;
}
if (selectedDishes.drink) {
summaryHTML += `
Напиток
${esc(selectedDishes.drink.name)}
${esc(selectedDishes.drink.price)} руб.
`;
totalPrice += selectedDishes.drink.price;
} else {
summaryHTML += `
Напиток
Напиток не выбран
`;
}
summaryHTML += `
Стоимость заказа
${totalPrice} руб.
`;
orderSummary.innerHTML = summaryHTML;
}
document.addEventListener('DOMContentLoaded', function() {
sortDishes();
displayDishes();
});