[IMP] Calendar Performance

This commit is contained in:
Alexandre Díaz
2019-01-13 02:10:33 +01:00
parent 03457f2228
commit 279675e2ae
10 changed files with 181 additions and 178 deletions

View File

@@ -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(),

View File

@@ -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');
},

View File

@@ -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');

View File

@@ -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,
});
},

View File

@@ -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);
}
},