diff --git a/hotel_calendar/models/inherited_hotel_reservation.py b/hotel_calendar/models/inherited_hotel_reservation.py index e84a8f5ac..fdb217034 100644 --- a/hotel_calendar/models/inherited_hotel_reservation.py +++ b/hotel_calendar/models/inherited_hotel_reservation.py @@ -144,6 +144,16 @@ class HotelReservation(models.Model): }) return json_rooms + @api.model + def _hcalendar_calendar_data(self, calendars): + json_calendars = [] + for calendar in calendars: + json_calendars.append({ + 'id': calendar.id, + 'name': calendar.name, + }) + return json_calendars + @api.model def _hcalendar_event_data(self, events): json_events = [] @@ -310,6 +320,7 @@ class HotelReservation(models.Model): raise ValidationError(_('Input Error: No dates defined!')) rooms = self.env['hotel.room'].search([], order='hcal_sequence ASC') + calendars = self.env['hotel.calendar'].search([]) json_res, json_res_tooltips = self.get_hcalendar_reservations_data( dfrom, dto, rooms) @@ -320,6 +331,7 @@ class HotelReservation(models.Model): 'pricelist': self.get_hcalendar_pricelist_data(dfrom, dto), 'restrictions': self.get_hcalendar_restrictions_data(dfrom, dto), 'events': self.get_hcalendar_events_data(dfrom, dto), + 'calendars': self._hcalendar_calendar_data(calendars) } return vals diff --git a/hotel_calendar/static/src/css/view.css b/hotel_calendar/static/src/css/view.css index 4fa4e944c..cd1c21ffe 100644 --- a/hotel_calendar/static/src/css/view.css +++ b/hotel_calendar/static/src/css/view.css @@ -67,6 +67,13 @@ padding: 0.1em; } +.warn-message { + text-align: center; + line-height: 100vh; + font-size: xx-large; + color: gray; +} + /** SELECT 2 **/ #pms-search .select2-search-choice { padding-top: 1px !important; diff --git a/hotel_calendar/static/src/js/views/calendar/hotel_calendar_controller.js b/hotel_calendar/static/src/js/views/calendar/hotel_calendar_controller.js index 5917e1c59..a33cfa9c5 100644 --- a/hotel_calendar/static/src/js/views/calendar/hotel_calendar_controller.js +++ b/hotel_calendar/static/src/js/views/calendar/hotel_calendar_controller.js @@ -90,7 +90,14 @@ var PMSCalendarController = AbstractController.extend({ _onLoadCalendarSettings: function (ev) { var self = this; return this.model.get_hcalendar_settings().then(function(options){ - self.renderer.load_hcalendar_options(options); + self._view_options = options; + var date_begin = moment().startOf('day'); + if (['xs', 'md'].indexOf(self._find_bootstrap_environment()) >= 0) { + self._view_options['days'] = 7; + } else { + self._view_options['days'] = (self._view_options['days'] !== 'month')?parseInt(self._view_options['days']):date_begin.daysInMonth(); + } + self.renderer.load_hcalendar_options(self._view_options); }); }, @@ -104,9 +111,8 @@ var PMSCalendarController = AbstractController.extend({ hcal_dates[1].format(HotelConstants.ODOO_DATETIME_MOMENT_FORMAT) ]; this.model.get_calendar_data(oparams).then(function(results){ - - self.renderer._days_tooltips = results['events']; - self.renderer._reserv_tooltips = results['tooltips']; + self.renderer._multi_calendar._days_tooltips = results['events']; + self.renderer._multi_calendar._reserv_tooltips = results['tooltips']; var rooms = []; for (var r of results['rooms']) { var nroom = new HRoom( @@ -127,7 +133,23 @@ var PMSCalendarController = AbstractController.extend({ rooms.push(nroom); } - self.renderer.create_calendar('#hcal_widget', rooms, results['pricelist'], results['restrictions']); + var options = { + startDate: HotelCalendar.toMomentUTC(self.renderer._last_dates[0], HotelConstants.ODOO_DATETIME_MOMENT_FORMAT), + days: self.renderer._view_options['days'] + 1, + rooms: rooms, + endOfWeek: parseInt(self.renderer._view_options['eday_week']) || 6, + divideRoomsByCapacity: self.renderer._view_options['divide_rooms_by_capacity'] || false, + allowInvalidActions: self.renderer._view_options['allow_invalid_actions'] || false, + assistedMovement: self.renderer._view_options['assisted_movement'] || false, + showPricelist: self.renderer._view_options['show_pricelist'] || false, + showAvailability: self.renderer._view_options['show_availability'] || false, + showNumRooms: self.renderer._view_options['show_num_rooms'] || 0, + endOfWeekOffset: self.renderer._view_options['eday_week_offset'] || 0 + }; + + for (var calendar of results['calendars']) { + self.renderer._multi_calendar.create_calendar(calendar['name'], options, results['pricelist'], results['restrictions'], self.renderer.$el[0]); + } // TODO: Not read this... do the change!! var reservs = []; @@ -338,6 +360,22 @@ var PMSCalendarController = AbstractController.extend({ } }, + _find_bootstrap_environment: function() { + var envs = ['xs', 'sm', 'md', 'lg']; + + var $el = $('
NO CALENDAR DEFINED!
"); + this._create_tabs_panel(); + }, + + _create_tab: function(name, id) { + // '+' Tab + var $tab = $('', { + id: name, + href: `#${id}`, + text: name, + }).appendTo($('').prependTo(this.$tabs)); + $tab[0].dataset.toggle = 'tab'; + var $pane = $('', { + id: id, + class: 'tab-pane', + }).appendTo(this.$tabs_content); + + return $pane; + }, + + _create_tabs_panel: function() { + this.$el.empty(); + this.$tabs = $('