From 9dc3f2d69e48fe55b32d37d4c9fd3b5e11e52aca Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Wed, 23 Nov 2022 06:31:30 +0100 Subject: [PATCH] add new parameter `defaultDate` to flatpickr to decide the default value when selector is opened --- .../admin/reports/_date_range_form.html.haml | 4 ++-- .../controllers/flatpickr_controller.js | 20 ++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/views/admin/reports/_date_range_form.html.haml b/app/views/admin/reports/_date_range_form.html.haml index 0bf6fe70ef..cebe2ce8f2 100644 --- a/app/views/admin/reports/_date_range_form.html.haml +++ b/app/views/admin/reports/_date_range_form.html.haml @@ -4,7 +4,7 @@ .row.date-range-filter .alpha.two.columns= label_tag nil, t(:date_range) .omega.fourteen.columns - = f.text_field "#{field}_gt", :class => 'datetimepicker datepicker-from', :placeholder => t(:start), data: { controller: "flatpickr", "flatpickr-enable-time-value": true } + = f.text_field "#{field}_gt", :class => 'datetimepicker datepicker-from', :placeholder => t(:start), data: { controller: "flatpickr", "flatpickr-enable-time-value": true, "flatpickr-default-date-value": "startOfDay" } %span.range-divider %i.icon-arrow-right - = f.text_field "#{field}_lt", :class => 'datetimepicker datepicker-to', :placeholder => t(:stop), data: { controller: "flatpickr", "flatpickr-enable-time-value": true } + = f.text_field "#{field}_lt", :class => 'datetimepicker datepicker-to', :placeholder => t(:stop), data: { controller: "flatpickr", "flatpickr-enable-time-value": true, "flatpickr-default-date-value": "endOfDay" } diff --git a/app/webpacker/controllers/flatpickr_controller.js b/app/webpacker/controllers/flatpickr_controller.js index 072e7d2550..a588c25e68 100644 --- a/app/webpacker/controllers/flatpickr_controller.js +++ b/app/webpacker/controllers/flatpickr_controller.js @@ -17,7 +17,10 @@ import ShortcutButtonsPlugin from "shortcut-buttons-flatpickr"; import labelPlugin from "flatpickr/dist/plugins/labelPlugin/labelPlugin"; export default class extends Flatpickr { - static values = { enableTime: Boolean, mode: String }; + /* + * defaultDate (optional): "startOfDay" | "endOfDay" + */ + static values = { enableTime: Boolean, mode: String, defaultDate: String }; static targets = ["start", "end"]; locales = { ar: ar, @@ -60,6 +63,9 @@ export default class extends Flatpickr { open() { this.fp.element.dispatchEvent(new Event("focus")); + if (!this.fp.selectedDates.length) { + this.setDefaultDateValue(); + } } onChangeEvent(e) { if ( @@ -136,4 +142,16 @@ export default class extends Flatpickr { break; } }; + + setDefaultDateValue() { + if (this.defaultDateValue === "startOfDay") { + this.fp.setDate(moment().startOf("day").format()); + } else if (this.defaultDateValue === "endOfDay") { + /* + * We use "startOf('day')" of tomorrow in order to not lose + * the records between [23:59:00 ~ 23:59:59] of today + */ + this.fp.setDate(moment().add(1, "days").startOf("day").format()); + } + } }