From 54f362eb23cf8507a63bc719c5fb21ba8565c998 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Mon, 29 Dec 2025 01:36:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=B4=D0=B0=D1=82=D1=8B=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BB=D0=B5=D0=BD=D0=B4=D0=B0=D1=80=D1=8C=20=D0=B2?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=20?= =?UTF-8?q?=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=B4=D0=B8=D0=B0=D0=BF=D0=B0=D0=B7=D0=BE=D0=BD?= =?UTF-8?q?=D1=83=20=D0=B4=D0=B0=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orders/static/orders/js/date_filter.js | 44 +++++++++++++++++++ .../orders/components/date_range_filter.html | 8 ++++ 2 files changed, 52 insertions(+) diff --git a/myproject/orders/static/orders/js/date_filter.js b/myproject/orders/static/orders/js/date_filter.js index 2182aeb..c950165 100644 --- a/myproject/orders/static/orders/js/date_filter.js +++ b/myproject/orders/static/orders/js/date_filter.js @@ -365,6 +365,50 @@ class DateCarousel { this.boundClearDate = this.clearDate.bind(this); clearBtn.addEventListener('click', this.boundClearDate); } + + // Календарный выбор даты + const calendarBtn = filterContainer.querySelector('.calendar-picker-btn'); + const calendarInput = filterContainer.querySelector('.calendar-picker-input'); + if (calendarBtn && calendarInput) { + calendarBtn.removeEventListener('click', this.boundOpenCalendar); + this.boundOpenCalendar = () => { + if (calendarInput.showPicker) { + calendarInput.showPicker(); + } else { + calendarInput.click(); + } + }; + calendarBtn.addEventListener('click', this.boundOpenCalendar); + + calendarInput.removeEventListener('change', this.boundCalendarSelect); + this.boundCalendarSelect = this.selectFromCalendar.bind(this); + calendarInput.addEventListener('change', this.boundCalendarSelect); + } + } + + /** + * Выбор даты через календарь + */ + selectFromCalendar(event) { + const selectedDate = event.target.value; + if (!selectedDate) return; + + const date = new Date(selectedDate); + date.setHours(0, 0, 0, 0); + + const formattedDate = this.formatDate(date); + this.minInput.value = formattedDate; + this.maxInput.value = formattedDate; + + this.centerDate = date; + 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 96746b1..d9ec9fb 100644 --- a/myproject/orders/templates/orders/components/date_range_filter.html +++ b/myproject/orders/templates/orders/components/date_range_filter.html @@ -32,6 +32,14 @@ title="Завтра"> Завтра + +