mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP] Calendar Performance
This commit is contained in:
@@ -104,7 +104,7 @@ var PMSCalendarController = AbstractController.extend({
|
||||
/** DO MAGIC **/
|
||||
var hcal_dates = this.renderer.get_view_filter_dates();
|
||||
var oparams = [
|
||||
hcal_dates[0].format(HotelConstants.ODOO_DATETIME_MOMENT_FORMAT),
|
||||
hcal_dates[0].subtract(1, 'd').format(HotelConstants.ODOO_DATETIME_MOMENT_FORMAT),
|
||||
hcal_dates[1].format(HotelConstants.ODOO_DATETIME_MOMENT_FORMAT)
|
||||
];
|
||||
|
||||
@@ -192,7 +192,7 @@ var PMSCalendarController = AbstractController.extend({
|
||||
self._view_options['days'] = 7;
|
||||
}
|
||||
|
||||
var date_begin = moment().startOf('day');
|
||||
var date_begin = moment().local().startOf('day');
|
||||
var days = self._view_options['days'];
|
||||
if (self._view_options['days'] === 'month') {
|
||||
days = date_begin.daysInMonth();
|
||||
@@ -206,7 +206,6 @@ var PMSCalendarController = AbstractController.extend({
|
||||
$dateTimePickerBegin.data("DateTimePicker").date(date_begin);
|
||||
$dateEndDays.val(self._view_options['days']);
|
||||
|
||||
//self.renderer.init_calendar_view();
|
||||
self._load_calendars();
|
||||
self._assign_view_events();
|
||||
});
|
||||
@@ -214,23 +213,24 @@ var PMSCalendarController = AbstractController.extend({
|
||||
|
||||
_reload_active_calendar: function() {
|
||||
var self = this;
|
||||
var filterDates = this.renderer.get_view_filter_dates();
|
||||
var active_calendar = this._multi_calendar.get_active_calendar();
|
||||
var filterDates = active_calendar.getDates();
|
||||
// Clip dates
|
||||
var dfrom = filterDates[0].clone(),
|
||||
dto = filterDates[1].clone();
|
||||
|
||||
if (filterDates[0].isBetween(this._last_dates[0], this._last_dates[1], 'days') && filterDates[1].isAfter(this._last_dates[1], 'day')) {
|
||||
dfrom = this._last_dates[1].clone().local().startOf('day').utc();
|
||||
dfrom = this._last_dates[1].clone();
|
||||
} else if (this._last_dates[0].isBetween(filterDates[0], filterDates[1], 'days') && this._last_dates[1].isAfter(filterDates[0], 'day')) {
|
||||
dto = this._last_dates[0].clone().local().endOf('day').utc();
|
||||
dto = this._last_dates[0].clone();
|
||||
}
|
||||
|
||||
var oparams = [
|
||||
dfrom.format(HotelConstants.ODOO_DATETIME_MOMENT_FORMAT),
|
||||
dfrom.subtract(1, 'd').format(HotelConstants.ODOO_DATETIME_MOMENT_FORMAT),
|
||||
dto.format(HotelConstants.ODOO_DATETIME_MOMENT_FORMAT),
|
||||
false
|
||||
];
|
||||
|
||||
this.model.get_calendar_data(oparams).then(function(results){
|
||||
var reservs = [];
|
||||
for (var r of results['reservations']) {
|
||||
@@ -750,7 +750,6 @@ var PMSCalendarController = AbstractController.extend({
|
||||
'checkout_day_of_week': HotelCalendar.toMomentUTC(tp['checkout'], '').format("dddd"),
|
||||
'arrival_hour': tp['arrival_hour'],
|
||||
'departure_hour': tp['departure_hour'],
|
||||
'num_split': tp['num_split'],
|
||||
'amount_total': Number(tp['amount_total']).toLocaleString(),
|
||||
'pending_amount': Number(tp['pending_amount']).toLocaleString(),
|
||||
'amount_paid': Number(tp['amount_paid']).toLocaleString(),
|
||||
|
||||
@@ -31,7 +31,7 @@ return AbstractModel.extend({
|
||||
|
||||
get_calendar_data: function(oparams) {
|
||||
var dialog = bootbox.dialog({
|
||||
message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Downloading Calendar Data...</div>',
|
||||
message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Getting Calendar Data From Server...</div>',
|
||||
onEscape: false,
|
||||
closeButton: false,
|
||||
size: 'small',
|
||||
@@ -43,6 +43,16 @@ return AbstractModel.extend({
|
||||
args: oparams,
|
||||
context: Session.user_context,
|
||||
}, {
|
||||
xhr: function () {
|
||||
var xhr = new window.XMLHttpRequest();
|
||||
//Download progress
|
||||
xhr.addEventListener("readystatechange", function() {
|
||||
if (this.readyState == this.DONE) {
|
||||
console.log(`[HotelCalendar] Downloaded ${(parseInt(xhr.getResponseHeader("Content-Length"), 10)/1024).toFixed(3)}KiB of data`);
|
||||
}
|
||||
}, false);
|
||||
return xhr;
|
||||
},
|
||||
success: function() {
|
||||
dialog.modal('hide');
|
||||
},
|
||||
|
||||
@@ -48,13 +48,12 @@ var HotelCalendarView = AbstractRenderer.extend({
|
||||
get_view_filter_dates: function () {
|
||||
var $dateTimePickerBegin = this.$el.find('#pms-menu #date_begin');
|
||||
var $dateEndDays = this.$el.find('#pms-menu #date_end_days');
|
||||
var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().set({'hour': 0, 'minute': 0, 'second': 0}).clone().utc();
|
||||
var date_begin = $dateTimePickerBegin.data("DateTimePicker").date().clone();
|
||||
var days = $dateEndDays.val();
|
||||
if (days === 'month') {
|
||||
days = date_begin.daysInMonth();
|
||||
}
|
||||
var date_end = date_begin.clone().add(days+1, 'd').set({'hour': 23, 'minute': 59, 'second': 59}).clone().utc();
|
||||
|
||||
var date_end = date_begin.clone().add(days+1, 'd');
|
||||
return [date_begin, date_end];
|
||||
},
|
||||
|
||||
@@ -113,6 +112,10 @@ var HotelCalendarView = AbstractRenderer.extend({
|
||||
//language : moment.locale(),
|
||||
locale : moment.locale(),
|
||||
format : HotelConstants.L10N_DATE_MOMENT_FORMAT,
|
||||
widgetPositioning:{
|
||||
horizontal: 'auto',
|
||||
vertical: 'bottom'
|
||||
}
|
||||
};
|
||||
var $dateTimePickerBegin = this.$el.find('#pms-menu #date_begin');
|
||||
var $dateEndDays = this.$el.find('#pms-menu #date_end_days');
|
||||
|
||||
@@ -21,12 +21,12 @@ return AbstractModel.extend({
|
||||
},
|
||||
|
||||
save_changes: function (params) {
|
||||
params.splice(0, 0, false); // FIXME: ID=False because first parameter its an integer
|
||||
//params.splice(0, 0, false); // FIXME: ID=False because first parameter its an integer
|
||||
return this._rpc({
|
||||
model: this.modelName,
|
||||
method: 'save_changes',
|
||||
args: params,
|
||||
context: Session.user_context,
|
||||
//context: Session.user_context,
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@@ -97,12 +97,8 @@ odoo.define('hotel_calendar.MultiCalendar', function(require) {
|
||||
var active_calendar = this.get_active_calendar();
|
||||
if (active_calendar) {
|
||||
setTimeout(function(calendar){
|
||||
for (var reserv of calendar._reservations) {
|
||||
var style = window.getComputedStyle(reserv._html, null);
|
||||
if (parseInt(style.width, 10) < 15 || parseInt(style.height, 10) < 15 || parseInt(style.top, 10) === 0) {
|
||||
this.get_active_calendar()._updateReservation(reserv);
|
||||
}
|
||||
}
|
||||
calendar._updateOffsets();
|
||||
calendar._updateReservations(false);
|
||||
}.bind(this, active_calendar), 200);
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user