summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_controller.js26
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_view.js1
-rw-r--r--addons/web/static/src/scss/web_calendar.scss4
3 files changed, 31 insertions, 0 deletions
diff --git a/addons/web/static/src/js/views/calendar/calendar_controller.js b/addons/web/static/src/js/views/calendar/calendar_controller.js
index edb8e54e0b7..37ee9f94fb7 100644
--- a/addons/web/static/src/js/views/calendar/calendar_controller.js
+++ b/addons/web/static/src/js/views/calendar/calendar_controller.js
@@ -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;
@@ -155,6 +156,31 @@ var CalendarController = AbstractController.extend({
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
* @param {integer} record.id
diff --git a/addons/web/static/src/js/views/calendar/calendar_view.js b/addons/web/static/src/js/views/calendar/calendar_view.js
index 1b081316f20..b1a6ea7be13 100644
--- a/addons/web/static/src/js/views/calendar/calendar_view.js
+++ b/addons/web/static/src/js/views/calendar/calendar_view.js
@@ -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;
diff --git a/addons/web/static/src/scss/web_calendar.scss b/addons/web/static/src/scss/web_calendar.scss
index ed99c4fcd6f..759dfa94ad0 100644
--- a/addons/web/static/src/scss/web_calendar.scss
+++ b/addons/web/static/src/scss/web_calendar.scss
@@ -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 ======
// ====================================