From 4f94db912d73b8bd898d1d62e7c5f03559cc2735 Mon Sep 17 00:00:00 2001 From: Pablo Date: Fri, 26 Jul 2019 12:27:54 +0200 Subject: [PATCH] [UPD] Task 986 - Fix calendar revenue interface --- .../hotel_calendar_management_renderer.js | 109 ++++++++---------- .../xml/hotel_calendar_management_view.xml | 21 ++-- 2 files changed, 60 insertions(+), 70 deletions(-) diff --git a/hotel_calendar/static/src/js/views/calendar_management/hotel_calendar_management_renderer.js b/hotel_calendar/static/src/js/views/calendar_management/hotel_calendar_management_renderer.js index 67fad2e47..be035d910 100644 --- a/hotel_calendar/static/src/js/views/calendar_management/hotel_calendar_management_renderer.js +++ b/hotel_calendar/static/src/js/views/calendar_management/hotel_calendar_management_renderer.js @@ -154,15 +154,9 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ var self = this; this._hcalendar.addEventListener('hcOnChangeDate', function(ev){ var date_begin = moment(ev.detail.newDate); - var days = self._hcalendar.getOptions('days')-1; - var date_end = date_begin.clone().add(days, 'd'); - var $dateTimePickerBegin = self.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = self.$el.find('#mpms-search #date_end'); $dateTimePickerBegin.data("ignore_onchange", true); $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - $dateTimePickerEnd.data("DateTimePicker").date(date_end); - self.reload_hcalendar_management(); }); this._hcalendar.addEventListener('hcmOnInputChanged', function(ev){ @@ -257,89 +251,76 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ format : HotelConstants.L10N_DATE_MOMENT_FORMAT, //disabledHours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 18, 19, 20, 21, 22, 23] }; + var $dateTimePickerBegin = this.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = this.$el.find('#mpms-search #date_end'); $dateTimePickerBegin.datetimepicker(DTPickerOptions); - $dateTimePickerEnd.datetimepicker($.extend({}, DTPickerOptions, { 'useCurrent': false })); $dateTimePickerBegin.on("dp.change", function (e) { - $dateTimePickerEnd.data("DateTimePicker").minDate(e.date.clone().add(3,'d')); - $dateTimePickerEnd.data("DateTimePicker").maxDate(e.date.clone().add(2,'M')); $dateTimePickerBegin.data("DateTimePicker").hide(); // TODO: Odoo uses old datetimepicker version self.on_change_filter_date(e, true); }); - $dateTimePickerEnd.on("dp.change", function (e) { - $dateTimePickerEnd.data("DateTimePicker").hide(); // TODO: Odoo uses old datetimepicker version - self.on_change_filter_date(e, false); + + var $dateEndDays = this.$el.find('#mpms-search #date_end_days'); + $dateEndDays.select2({ + data: [ + {id:7, text: '1w'}, + {id:12, text: '2w'}, + {id:21, text: '3w'}, + {id:'month', text: '1m'}, + {id:60, text: '2m'}, + {id:90, text: '3m'}, + ], + allowClear: true, + minimumResultsForSearch: -1 }); - // var date_begin = moment().startOf('day'); - // var date_end = date_begin.clone().add(this._view_options['days'], 'd').endOf('day'); - // $dateTimePickerBegin.data("ignore_onchange", true); - // $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - // $dateTimePickerEnd.data("DateTimePicker").date(date_end); - // this._last_dates = this.generate_params()['dates']; + $dateEndDays.on("change", function (e) { + self.on_change_filter_date(); + }); // View Events this.$el.find("#mpms-search #cal-pag-prev-plus").on('click', function(ev){ // FIXME: Ugly repeated code. Change place. var $dateTimePickerBegin = self.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = self.$el.find('#mpms-search #date_end'); - //var days = moment($dateTimePickerBegin.data("DateTimePicker").date()).clone().local().daysInMonth(); var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().subtract(14, 'd'); - var date_end = $dateTimePickerEnd.data("DateTimePicker").date().subtract(14, 'd'); $dateTimePickerBegin.data("ignore_onchange", true); $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - $dateTimePickerEnd.data("DateTimePicker").date(date_end); - + self.on_change_filter_date(ev, true); ev.preventDefault(); }); this.$el.find("#mpms-search #cal-pag-prev").on('click', function(ev){ // FIXME: Ugly repeated code. Change place. var $dateTimePickerBegin = self.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = self.$el.find('#mpms-search #date_end'); var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().subtract(7, 'd'); - var date_end = $dateTimePickerEnd.data("DateTimePicker").date().subtract(7, 'd'); $dateTimePickerBegin.data("ignore_onchange", true); $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - $dateTimePickerEnd.data("DateTimePicker").date(date_end); - + self.on_change_filter_date(ev, true); ev.preventDefault(); }); this.$el.find("#mpms-search #cal-pag-next-plus").on('click', function(ev){ // FIXME: Ugly repeated code. Change place. var $dateTimePickerBegin = self.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = self.$el.find('#mpms-search #date_end'); - //var days = moment($dateTimePickerBegin.data("DateTimePicker").date()).clone().local().daysInMonth(); var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().add(14, 'd'); - var date_end = $dateTimePickerEnd.data("DateTimePicker").date().add(14, 'd'); $dateTimePickerBegin.data("ignore_onchange", true); $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - $dateTimePickerEnd.data("DateTimePicker").date(date_end); - + self.on_change_filter_date(ev, true); ev.preventDefault(); }); this.$el.find("#mpms-search #cal-pag-next").on('click', function(ev){ // FIXME: Ugly repeated code. Change place. var $dateTimePickerBegin = self.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = self.$el.find('#mpms-search #date_end'); var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().add(7, 'd'); - var date_end = $dateTimePickerEnd.data("DateTimePicker").date().add(7, 'd'); $dateTimePickerBegin.data("ignore_onchange", true); $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - $dateTimePickerEnd.data("DateTimePicker").date(date_end); - + self.on_change_filter_date(ev, true); ev.preventDefault(); }); this.$el.find("#mpms-search #cal-pag-selector").on('click', function(ev){ // FIXME: Ugly repeated code. Change place. var $dateTimePickerBegin = self.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = self.$el.find('#mpms-search #date_end'); var date_begin = moment().startOf('day'); - var date_end = date_begin.clone().add(self._view_options['days'], 'd').endOf('day'); $dateTimePickerBegin.data("ignore_onchange", true); $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - $dateTimePickerEnd.data("DateTimePicker").date(date_end); - + self.on_change_filter_date(ev, true); ev.preventDefault(); }); @@ -356,7 +337,6 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ /** RENDER CALENDAR **/ this.trigger_up('onLoadCalendarSettings'); - }, setHCalendarSettings: function (results) { @@ -367,15 +347,15 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ } else { this._view_options['days'] = (this._view_options['days'] !== 'month')?parseInt(this._view_options['days']):date_begin.daysInMonth(); } - var date_end = date_begin.clone().add(this._view_options['days'], 'd').endOf('day'); - var $dateTimePickerBegin = this.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = this.$el.find('#mpms-search #date_end'); - //$dateTimePickerBegin.data("ignore_onchange", true); - $dateTimePickerBegin.data("DateTimePicker").date(date_begin); - //$dateTimePickerEnd.data("ignore_onchange", true); - $dateTimePickerEnd.data("DateTimePicker").date(date_end); - this._last_dates = this.generate_params()['dates']; + var $dateTimePickerBegin = this.$el.find('#mpms-search #date_begin'); + $dateTimePickerBegin.data("DateTimePicker").date(date_begin); + + var $dateEndDays = this.$el.find('#mpms-search #date_end_days'); + $dateEndDays.val('month'); + $dateEndDays.trigger('change'); + + this._last_dates = this.generate_params()['dates']; this.trigger_up('onLoadCalendar'); }, @@ -383,25 +363,23 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ var self = this; isStartDate = isStartDate || false; var $dateTimePickerBegin = this.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = this.$el.find('#mpms-search #date_end'); + var $dateEndDays = this.$el.find('#mpms-search #date_end_days'); // FIXME: Hackish onchange ignore (Used when change dates from code) - if ($dateTimePickerBegin.data("ignore_onchange") || $dateTimePickerEnd.data("ignore_onchange")) { + if ($dateTimePickerBegin.data("ignore_onchange") || $dateEndDays.data("ignore_onchange")) { $dateTimePickerBegin.data("ignore_onchange", false); - $dateTimePickerEnd.data("ignore_onchange", false) + $dateEndDays.data("ignore_onchange", false); return true; } var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().set({'hour': 0, 'minute': 0, 'second': 0}).clone(); if (this._hcalendar && date_begin) { - if (isStartDate) { - var ndate_end = date_begin.clone().add(this._view_options['days'], 'd'); - $dateTimePickerEnd.data("ignore_onchange", true); - $dateTimePickerEnd.data("DateTimePicker").date(ndate_end.local()); + var days = $dateEndDays.val(); + if (days === 'month') { + days = date_begin.daysInMonth(); } - - var date_end = $dateTimePickerEnd.data("DateTimePicker").date().set({'hour': 23, 'minute': 59, 'second': 59}).clone(); + var date_end = date_begin.set({'hour': 23, 'minute': 59, 'second': 59}).clone().add(days, 'd'); this._check_unsaved_changes(function(){ self._hcalendar.setStartDate(date_begin, self._hcalendar.getDateDiffDays(date_begin, date_end)); @@ -420,11 +398,15 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ var restrictions = this.$el.find('#mpms-search #restriction_list').val(); var $dateTimePickerBegin = this.$el.find('#mpms-search #date_begin'); - var $dateTimePickerEnd = this.$el.find('#mpms-search #date_end'); + var $dateEndDays = this.$el.find('#mpms-search #date_end_days'); - var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().set({'hour': 0, 'minute': 0, 'second': 0}).clone().utc().format(HotelConstants.ODOO_DATE_MOMENT_FORMAT); - var date_end = $dateTimePickerEnd.data("DateTimePicker").date().set({'hour': 23, 'minute': 59, 'second': 59}).clone().utc().format(HotelConstants.ODOO_DATE_MOMENT_FORMAT); + var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().set({'hour': 0, 'minute': 0, 'second': 0}).clone(); + var days = $dateEndDays.val(); + if (days === 'month') { + days = date_begin.daysInMonth(); + } + var date_end = date_begin.set({'hour': 23, 'minute': 59, 'second': 59}).clone().add(days, 'd'); return { 'dates': [date_begin, date_end], 'prices': prices, @@ -437,6 +419,7 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ var btn_save = this.$el.find("#btn_save_changes"); if (!btn_save.hasClass('need-save')) { btn_save.removeClass('need-save'); + document.getElementById("btn_save_changes").disabled = true; fnCallback(); return; } @@ -449,6 +432,7 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ classes: 'btn-primary', close: true, click: function() { + document.getElementById("btn_save_changes").disabled = true; self.save_changes(); fnCallback(); } @@ -458,6 +442,7 @@ var HotelCalendarManagementView = AbstractRenderer.extend({ close: true, click: function() { btn_save.removeClass('need-save'); + document.getElementById("btn_save_changes").disabled = true; fnCallback(); } } diff --git a/hotel_calendar/static/src/xml/hotel_calendar_management_view.xml b/hotel_calendar/static/src/xml/hotel_calendar_management_view.xml index 2e131f5b5..c75e7ee68 100644 --- a/hotel_calendar/static/src/xml/hotel_calendar_management_view.xml +++ b/hotel_calendar/static/src/xml/hotel_calendar_management_view.xml @@ -22,22 +22,27 @@ - FROM
+ FROM
+ - TO
-
- - - - -
+ RANGE +
+ +
+ + + + + + +