From ee52f87a36920ff9f997cbb933520558c36fb912 Mon Sep 17 00:00:00 2001 From: "Bastien (bvdn)" Date: Thu, 3 Aug 2023 15:58:30 +0200 Subject: [PATCH] [IMP] web: add hooks to calendar controler, fix css for filterPanel - For the Planning app calendar we now need to be able to fetch specific fields from the filters record we don't want to inherit the whole loadDynamicFilterSection method so we created an addFilterFields method used to fetch specific fields from the record accroding to the filterInfo () - we also need to display specific text when creating a new record from the calendar view, for exemple in calendar 'New Shift' rather than 'New event' but we don't need to override the whole editRecord() method so we created a getter: editRecordDefaultDisplayText() - For the css files, we lowered a bit the checkmark icon in the filters, and we added a new class that prevents the icons background to become invisible when the filter checkmark isn't changed Task-3251698 Part-of: odoo/odoo#126358 --- .../src/views/calendar/calendar_controller.js | 8 ++++- .../views/calendar/calendar_controller.scss | 5 +++- .../src/views/calendar/calendar_model.js | 10 ++++++- .../src/views/calendar/calendar_renderer.scss | 2 +- .../filter_panel/calendar_filter_panel.xml | 2 +- .../views/calendar/calendar_view_tests.js | 30 +++++++++++++++++++ 6 files changed, 52 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/views/calendar/calendar_controller.js b/addons/web/static/src/views/calendar/calendar_controller.js index 848e16fad09..5c90bbf7723 100644 --- a/addons/web/static/src/views/calendar/calendar_controller.js +++ b/addons/web/static/src/views/calendar/calendar_controller.js @@ -116,6 +116,10 @@ export class CalendarController extends Component { return this.props.className; } + get editRecordDefaultDisplayText() { + return _t("New Event"); + } + getQuickCreateProps(record) { return { record, @@ -174,7 +178,9 @@ export class CalendarController extends Component { resModel: this.model.resModel, resId: record.id || false, context, - title: record.id ? _t("Open: %s", record.title) : _t("New Event"), + title: record.id + ? _t("Open: %s", record.title) + : this.editRecordDefaultDisplayText, viewId: this.model.formViewId, onRecordSaved: () => this.model.load(), }, diff --git a/addons/web/static/src/views/calendar/calendar_controller.scss b/addons/web/static/src/views/calendar/calendar_controller.scss index b018c09f33d..2df90e64f98 100644 --- a/addons/web/static/src/views/calendar/calendar_controller.scss +++ b/addons/web/static/src/views/calendar/calendar_controller.scss @@ -193,11 +193,14 @@ $o-cw-filter-avatar-size: 20px; height: $o-cw-filter-avatar-size; border-radius: 2px; object-fit: cover; + align-items: center; } } input:not(:checked) + label .o_cw_filter_input_bg { - background: transparent !important; + &:not(.o_cw_filter_avatar) { + background: transparent !important; + } i.fa { visibility: hidden; diff --git a/addons/web/static/src/views/calendar/calendar_model.js b/addons/web/static/src/views/calendar/calendar_model.js index e73b3d9fd7f..1209a355bb1 100644 --- a/addons/web/static/src/views/calendar/calendar_model.js +++ b/addons/web/static/src/views/calendar/calendar_model.js @@ -554,6 +554,14 @@ export class CalendarModel extends Model { }; } + /** + * @protected + */ + addFilterFields(record, filterInfo) { + return { + colorIndex: record.colorIndex, + }; + } //-------------------------------------------------------------------------- /** @@ -662,7 +670,7 @@ export class CalendarModel extends Model { filters.push({ id: value, [fieldName]: rawValue, - colorIndex: record.colorIndex, + ...this.addFilterFields(record, filterInfo), }); } } diff --git a/addons/web/static/src/views/calendar/calendar_renderer.scss b/addons/web/static/src/views/calendar/calendar_renderer.scss index 6fe718f55d0..232c9bf09fb 100644 --- a/addons/web/static/src/views/calendar/calendar_renderer.scss +++ b/addons/web/static/src/views/calendar/calendar_renderer.scss @@ -617,7 +617,7 @@ } .o_cw_filter_color_#{$i - 1} { - .o_cw_filter_input_bg { + .o_cw_filter_input_bg:not(.no_filter_color) { border-color: $color; background: $color; color: color-contrast($color); diff --git a/addons/web/static/src/views/calendar/filter_panel/calendar_filter_panel.xml b/addons/web/static/src/views/calendar/filter_panel/calendar_filter_panel.xml index dd78f971a26..7ca38926481 100644 --- a/addons/web/static/src/views/calendar/filter_panel/calendar_filter_panel.xml +++ b/addons/web/static/src/views/calendar/filter_panel/calendar_filter_panel.xml @@ -87,7 +87,7 @@ t-attf-for="o_calendar_filter_item_{{filterId}}" > diff --git a/addons/web/static/tests/views/calendar/calendar_view_tests.js b/addons/web/static/tests/views/calendar/calendar_view_tests.js index dc79d67790d..55c85799f1d 100644 --- a/addons/web/static/tests/views/calendar/calendar_view_tests.js +++ b/addons/web/static/tests/views/calendar/calendar_view_tests.js @@ -4779,4 +4779,34 @@ QUnit.module("Views", ({ beforeEach }) => { assert.verifySteps(["onWillStartModel", "render"]); }); + + QUnit.test("check apply default record label", async (assert) => { + assert.expect(1); + class TestCalendarController extends CalendarController { + get editRecordDefaultDisplayText() { + return "Test Display"; + } + } + + viewRegistry.add("test_calendar_view", { + ...calendarView, + Controller: TestCalendarController, + }); + + await makeView({ + type: "calendar", + resModel: "event", + serverData, + arch: ` + + `, + }); + + await clickDate(target, "2016-12-13"); + assert.strictEqual( + target.querySelector(".modal-title").textContent, + "Test Display", + "The text in the title should be Test Display" + ); + }); });