feat: Улучшен календарный фильтр заказов - расширен до 19 дней и обновлён дизайн

- Расширен календарь с 9 до 19 дней (±9 от центра)
- Календарь теперь занимает всю ширину страницы
- Исправлены метки "Вчера/Сегодня/Завтра" - теперь привязаны к реальным датам, а не к позициям в ленте
- Добавлена автоматическая отправка формы при выборе даты
- Обновлён дизайн:
  * Сегодняшний день выделен светло-голубым цветом (более мягкий оттенок)
  * Выбранная дата обведена красной рамкой (как на настенном календаре)
- Добавлен блок extra_css в base.html для подключения дополнительных стилей

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-07 18:55:50 +03:00
parent 1f0821efbe
commit a271bfa809
5 changed files with 49 additions and 24 deletions

View File

@@ -1,5 +1,5 @@
/**
* Календарная лента с 9 днями для фильтрации заказов
* Календарная лента с 19 днями для фильтрации заказов
* Сегодня в центре, навигация стрелками
*/
@@ -43,7 +43,7 @@ class DateCarousel {
}
/**
* Генерация и отображение 9 дней
* Генерация и отображение 19 дней
*/
render() {
this.container.innerHTML = '';
@@ -56,12 +56,12 @@ class DateCarousel {
}
/**
* Генерация массива из 9 дней (±4 от центральной даты)
* Генерация массива из 19 дней (±9 от центральной даты)
*/
generateDays() {
const days = [];
for (let i = -4; i <= 4; i++) {
for (let i = -9; i <= 9; i++) {
const date = new Date(this.centerDate);
date.setDate(date.getDate() + i);
date.setHours(0, 0, 0, 0);
@@ -81,9 +81,17 @@ class DateCarousel {
* Определение текстовой метки для даты
*/
getDateLabel(date, offset) {
if (offset === -1) return 'Вчера';
if (offset === 0 && date.getTime() === this.today.getTime()) return 'Сегодня';
if (offset === 1 && date.getTime() === new Date(this.today.getTime() + 86400000).getTime()) return 'Завтра';
const yesterday = new Date(this.today);
yesterday.setDate(yesterday.getDate() - 1);
yesterday.setHours(0, 0, 0, 0);
const tomorrow = new Date(this.today);
tomorrow.setDate(tomorrow.getDate() + 1);
tomorrow.setHours(0, 0, 0, 0);
if (date.getTime() === yesterday.getTime()) return 'Вчера';
if (date.getTime() === this.today.getTime()) return 'Сегодня';
if (date.getTime() === tomorrow.getTime()) return 'Завтра';
return '';
}
@@ -170,6 +178,12 @@ class DateCarousel {
this.render();
console.log(`Selected date: ${formattedDate}`);
// Автоматическая отправка формы
const form = this.minInput.closest('form');
if (form) {
form.submit();
}
}
/**