diff options
| author | jbm-odoo <jbm@odoo.com> | 2019-11-06 10:45:53 +0000 |
|---|---|---|
| committer | Yannick Tivisse <yti@odoo.com> | 2019-11-06 10:48:52 +0000 |
| commit | 3fbd67f265c47035cc66af46ffaaadb2ea2e469c (patch) | |
| tree | 97ed05cf878f440d1755f75a7750584268affc3a /addons/web | |
| parent | 6b6717406347509577c73f9064c24663ddd4eed6 (diff) | |
[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.
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/static/src/js/views/calendar/calendar_controller.js | 26 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/calendar/calendar_view.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/scss/web_calendar.scss | 4 |
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 ====== // ==================================== |
