diff --git a/myproject/orders/static/orders/js/date_filter.js b/myproject/orders/static/orders/js/date_filter.js index 6f8f7ad..2182aeb 100644 --- a/myproject/orders/static/orders/js/date_filter.js +++ b/myproject/orders/static/orders/js/date_filter.js @@ -336,20 +336,34 @@ class DateCarousel { } /** - * Подключение обработчика для кнопки "Сегодня" + * Подключение обработчиков для кнопок "Сегодня", "Завтра" и "Сбросить" * Вынесено в отдельный метод, чтобы можно было вызывать после полной отрисовки компонента */ attachTodayHandler() { - // Ищем кнопку "Сегодня" в общем контейнере фильтра, используя атрибуты данных - const todayBtn = this.container.closest('.date-range-filter').querySelector('.today-btn'); + const filterContainer = this.container.closest('.date-range-filter'); + // Кнопка "Сегодня" + const todayBtn = filterContainer.querySelector('.today-btn'); if (todayBtn) { - todayBtn.removeEventListener('click', this.boundGoToToday); // Удаляем предыдущий обработчик, если был + todayBtn.removeEventListener('click', this.boundGoToToday); this.boundGoToToday = this.goToToday.bind(this); todayBtn.addEventListener('click', this.boundGoToToday); - console.log('Today button handler attached'); - } else { - console.error('Today button not found when trying to attach handler'); + } + + // Кнопка "Завтра" + const tomorrowBtn = filterContainer.querySelector('.tomorrow-btn'); + if (tomorrowBtn) { + tomorrowBtn.removeEventListener('click', this.boundGoToTomorrow); + this.boundGoToTomorrow = this.goToTomorrow.bind(this); + tomorrowBtn.addEventListener('click', this.boundGoToTomorrow); + } + + // Кнопка "Сбросить" + const clearBtn = filterContainer.querySelector('.clear-date-btn'); + if (clearBtn) { + clearBtn.removeEventListener('click', this.boundClearDate); + this.boundClearDate = this.clearDate.bind(this); + clearBtn.addEventListener('click', this.boundClearDate); } } @@ -392,10 +406,50 @@ class DateCarousel { // Автоматическая отправка формы const form = this.minInput.closest('form'); if (form) { - console.log('Submitting form'); form.submit(); - } else { - console.error('Form not found!'); + } + } + + /** + * Переход к завтрашней дате + */ + goToTomorrow() { + const tomorrow = new Date(); + tomorrow.setHours(0, 0, 0, 0); + tomorrow.setDate(tomorrow.getDate() + 1); + + const formattedDate = this.formatDate(tomorrow); + this.minInput.value = formattedDate; + this.maxInput.value = formattedDate; + + this.centerDate = tomorrow; + this.saveCenterDate(); + this.render(); + this.attachTodayHandler(); + + const form = this.minInput.closest('form'); + if (form) { + form.submit(); + } + } + + /** + * Сброс фильтра по дате + */ + clearDate() { + this.minInput.value = ''; + this.maxInput.value = ''; + + // Возвращаем карусель к сегодняшней дате + this.centerDate = new Date(); + this.centerDate.setHours(0, 0, 0, 0); + this.saveCenterDate(); + this.render(); + this.attachTodayHandler(); + + const form = this.minInput.closest('form'); + if (form) { + form.submit(); } } diff --git a/myproject/orders/templates/orders/components/date_range_filter.html b/myproject/orders/templates/orders/components/date_range_filter.html index 6840578..96746b1 100644 --- a/myproject/orders/templates/orders/components/date_range_filter.html +++ b/myproject/orders/templates/orders/components/date_range_filter.html @@ -26,6 +26,18 @@ title="Сегодня"> Сегодня + +