[IMP] web: Add support to display unusual days in green

Purpose
=======

Allow to add an attribute ``show_unusual_days="True"`` to display
some days in green, according to a linked method ``get_unusual_days``
that should be defined on the related model to return all the
concerned days for a given period.
This commit is contained in:
jbm-odoo
2019-11-06 10:48:52 +00:00
committed by Yannick Tivisse
parent 6b67174063
commit 3fbd67f265
4 changed files with 32 additions and 0 deletions
@@ -51,6 +51,7 @@ var CalendarController = AbstractController.extend({
this.quickAddPop = params.quickAddPop;
this.disableQuickCreate = params.disableQuickCreate;
this.eventOpenPopup = params.eventOpenPopup;
this.showUnusualDays = params.showUnusualDays;
this.formViewId = params.formViewId;
this.readonlyFormViewId = params.readonlyFormViewId;
this.mapping = params.mapping;
@@ -154,6 +155,31 @@ var CalendarController = AbstractController.extend({
this.model[to]();
return this.reload();
},
/**
* @override
* @private
*/
_update: function () {
var self = this;
if (!this.showUnusualDays) {
return this._super.apply(this, arguments);
}
return this._super.apply(this, arguments).then(function () {
self._rpc({
model: self.modelName,
method: 'get_unusual_days',
args: [self.model.data.start_date.format('YYYY-MM-DD'), self.model.data.end_date.format('YYYY-MM-DD')],
context: self.context,
}).then(function (data) {
_.each(self.$el.find('td.fc-day'), function (td) {
var $td = $(td);
if (data[$td.data('date')]) {
$td.addClass('o_calendar_disabled');
}
});
});
});
},
/**
* @private
* @param {Object} record
@@ -131,6 +131,7 @@ var CalendarView = AbstractView.extend({
}
this.controllerParams.eventOpenPopup = utils.toBoolElse(attrs.event_open_popup || '', false);
this.controllerParams.showUnusualDays = utils.toBoolElse(attrs.show_unusual_days || '', false);
this.controllerParams.mapping = mapping;
this.controllerParams.context = params.context || {};
this.controllerParams.displayName = params.action && params.action.name;
@@ -98,6 +98,10 @@ $o-cw-filter-avatar-size: 20px;
color: white;
}
.o_calendar_disabled {
background-color: $gray-200;
border-color: white !important;
}
// ====== Specific agenda types ======
// ====================================
+1
View File
@@ -18,6 +18,7 @@
<rng:optional><rng:attribute name="quick_add" /></rng:optional>
<rng:optional><rng:attribute name="color" /></rng:optional>
<rng:optional><rng:attribute name="event_open_popup" /></rng:optional>
<rng:optional><rng:attribute name="show_unusual_days" /></rng:optional>
<rng:optional><rng:attribute name="js_class"/></rng:optional>
<rng:optional><rng:attribute name="hide_time"/></rng:optional>
<rng:optional><rng:attribute name="hide_date"/></rng:optional>