Добавлено подключение обработчиков для кнопок "Сегодня", "Завтра" и "Сбросить" в компоненте фильтрации по датам
This commit is contained in:
@@ -336,20 +336,34 @@ class DateCarousel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Подключение обработчика для кнопки "Сегодня"
|
* Подключение обработчиков для кнопок "Сегодня", "Завтра" и "Сбросить"
|
||||||
* Вынесено в отдельный метод, чтобы можно было вызывать после полной отрисовки компонента
|
* Вынесено в отдельный метод, чтобы можно было вызывать после полной отрисовки компонента
|
||||||
*/
|
*/
|
||||||
attachTodayHandler() {
|
attachTodayHandler() {
|
||||||
// Ищем кнопку "Сегодня" в общем контейнере фильтра, используя атрибуты данных
|
const filterContainer = this.container.closest('.date-range-filter');
|
||||||
const todayBtn = this.container.closest('.date-range-filter').querySelector('.today-btn');
|
|
||||||
|
|
||||||
|
// Кнопка "Сегодня"
|
||||||
|
const todayBtn = filterContainer.querySelector('.today-btn');
|
||||||
if (todayBtn) {
|
if (todayBtn) {
|
||||||
todayBtn.removeEventListener('click', this.boundGoToToday); // Удаляем предыдущий обработчик, если был
|
todayBtn.removeEventListener('click', this.boundGoToToday);
|
||||||
this.boundGoToToday = this.goToToday.bind(this);
|
this.boundGoToToday = this.goToToday.bind(this);
|
||||||
todayBtn.addEventListener('click', this.boundGoToToday);
|
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');
|
const form = this.minInput.closest('form');
|
||||||
if (form) {
|
if (form) {
|
||||||
console.log('Submitting form');
|
|
||||||
form.submit();
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,18 @@
|
|||||||
title="Сегодня">
|
title="Сегодня">
|
||||||
Сегодня
|
Сегодня
|
||||||
</button>
|
</button>
|
||||||
|
<button type="button" class="btn btn-sm btn-outline-primary ms-1 tomorrow-btn"
|
||||||
|
data-min-input="{{ field_after.id_for_label }}"
|
||||||
|
data-max-input="{{ field_before.id_for_label }}"
|
||||||
|
title="Завтра">
|
||||||
|
Завтра
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn btn-sm btn-outline-secondary ms-1 clear-date-btn"
|
||||||
|
data-min-input="{{ field_after.id_for_label }}"
|
||||||
|
data-max-input="{{ field_before.id_for_label }}"
|
||||||
|
title="Сбросить дату">
|
||||||
|
<i class="bi bi-x-lg"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Скрытые поля для хранения дат -->
|
<!-- Скрытые поля для хранения дат -->
|
||||||
|
|||||||
Reference in New Issue
Block a user