diff --git a/hotel_calendar/static/src/lib/hcalendar/js/hcalendar.js b/hotel_calendar/static/src/lib/hcalendar/js/hcalendar.js index 554ea291a..9ac4953ae 100644 --- a/hotel_calendar/static/src/lib/hcalendar/js/hcalendar.js +++ b/hotel_calendar/static/src/lib/hcalendar/js/hcalendar.js @@ -47,6 +47,8 @@ function HotelCalendar(/*String*/querySelector, /*Dictionary*/options, /*List*/p startDate: now_utc, days: now_utc.daysInMonth(), rooms: [], + room_types: [], + room_classes: [], allowInvalidActions: false, assistedMovement: false, endOfWeek: 6, @@ -67,7 +69,6 @@ function HotelCalendar(/*String*/querySelector, /*Dictionary*/options, /*List*/p this.options.orig_days = this.options.days; this.options.days = this.parseDays(this.options.days) + 1; this.options.rooms = _.map(this.options.rooms, function(item){ return item.clone(); }); - // Check correct values if (this.options.rooms.length > 0 && !(this.options.rooms[0] instanceof HRoom)) { this.options.rooms = []; @@ -599,15 +600,29 @@ HotelCalendar.prototype = { //==== ROOMS _filterRooms: function() { // Two-Step filter: Scrollbar mistake - // 1. Filter rooms + this.options.room_classes = []; + this.options.room_types = []; + // 1.1 Filter rooms for (var r of this.options.rooms) { r._active = this._in_domain(r, this._domains[HotelCalendar.DOMAIN.ROOMS]); if (r._active) { r._html.classList.remove('hcal-hidden'); + // 1.2 Filter room classes used in occupation rows + if (this.options.room_classes.indexOf(r.type) === -1) { + this.options.room_classes.push(r.type); + } + // 1.3 Filter room types used in pricelist rows + if (this.options.room_types.indexOf(r._userData.room_type_id) === -1) { + this.options.room_types.push(r._userData.room_type_id); + } } else { r._html.classList.add('hcal-hidden'); } } + // Hide all the rows corresponding to occupation and prices + $("[id^=ROW_DETAIL_FREE_TYPE]").addClass('hcal-hidden'); + $("[id^=ROW_DETAIL_PRICE_ROOM]").addClass('hcal-hidden'); + // TODO: update OCCUPATION this._calcViewHeight(); @@ -621,6 +636,20 @@ HotelCalendar.prototype = { } } } + // 2.2 Update room classes + for (var room_class of self.options.room_classes) + { + var tr_name = self._sanitizeId(`ROW_DETAIL_FREE_TYPE_${room_class}`); + var x = _.findWhere(self.edtable.rows, {id: tr_name}); + x.classList.remove('hcal-hidden'); + } + // 2.3 Update room types + for (var room_type of self.options.room_types) + { + var tr_name = self._sanitizeId(`ROW_DETAIL_PRICE_ROOM_${self._pricelist_id}_${room_type}`); + var x = _.findWhere(self.edtable.rows, {id: tr_name}); + x.classList.remove('hcal-hidden'); + } }, this); //_.defer(function(){ this._updateReservationOccupation() }.bind(this)); },