diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index a137dd76051..18e1b71b72d 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -997,7 +997,7 @@ var FieldDateTime = FieldDate.extend({ }, }); -const RemainingDays = FieldDate.extend({ +const RemainingDays = AbstractField.extend({ description: _lt("Remaining Days"), supportedFieldTypes: ['date', 'datetime'], @@ -1012,7 +1012,7 @@ const RemainingDays = FieldDate.extend({ * * @override */ - _renderReadonly() { + _render() { if (this.value === false) { this.$el.removeClass('text-bf text-danger text-warning'); return; diff --git a/addons/web/static/src/scss/list_view_extra.scss b/addons/web/static/src/scss/list_view_extra.scss index ef51cfd65e0..2806940c8a5 100644 --- a/addons/web/static/src/scss/list_view_extra.scss +++ b/addons/web/static/src/scss/list_view_extra.scss @@ -12,7 +12,7 @@ } } - .o_list_table .o_data_row.o_selected_row > .o_data_cell:not(.o_readonly_modifier):not(.o_invisible_modifier) { + .o_list_table .o_data_row.o_selected_row > .o_data_cell:not(.o_readonly_modifier):not(.o_invisible_modifier):not(.o_remaining_days_cell) { padding: .15rem; .o_input { border: none; diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js index 9a0702fdf2b..192859fb877 100644 --- a/addons/web/static/tests/fields/basic_fields_tests.js +++ b/addons/web/static/tests/fields/basic_fields_tests.js @@ -4662,20 +4662,20 @@ QUnit.module('basic_fields', { assert.strictEqual(list.$('.o_data_cell:nth(0) .o_field_widget').attr('title'), '10/08/2017'); - assert.hasClass(list.$('.o_data_cell:nth(0) span'), 'text-bf text-warning'); - assert.doesNotHaveClass(list.$('.o_data_cell:nth(1) span'), 'text-bf text-warning text-danger'); - assert.hasClass(list.$('.o_data_cell:nth(2) span'), 'text-bf text-danger'); - assert.doesNotHaveClass(list.$('.o_data_cell:nth(3) span'), 'text-bf text-warning text-danger'); - assert.hasClass(list.$('.o_data_cell:nth(4) span'), 'text-bf text-danger'); - assert.doesNotHaveClass(list.$('.o_data_cell:nth(5) span'), 'text-bf text-warning text-danger'); - assert.hasClass(list.$('.o_data_cell:nth(6) span'), 'text-bf text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(0) div'), 'text-bf text-warning'); + assert.doesNotHaveClass(list.$('.o_data_cell:nth(1) div'), 'text-bf text-warning text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(2) div'), 'text-bf text-danger'); + assert.doesNotHaveClass(list.$('.o_data_cell:nth(3) div'), 'text-bf text-warning text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(4) div'), 'text-bf text-danger'); + assert.doesNotHaveClass(list.$('.o_data_cell:nth(5) div'), 'text-bf text-warning text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(6) div'), 'text-bf text-danger'); list.destroy(); unpatchDate(); }); QUnit.test('remaining_days widget on a date field in form view', async function (assert) { - assert.expect(6); + assert.expect(4); const unpatchDate = patchDate(2017, 9, 8, 15, 35, 11); // October 8 2017, 15:35:11 this.data.partner.records = [ @@ -4693,16 +4693,11 @@ QUnit.module('basic_fields', { assert.strictEqual(form.$('.o_field_widget').text(), 'Today'); assert.hasClass(form.$('.o_field_widget'), 'text-bf text-warning'); - // in edit mode, this widget should behave like a regular date(time) widget + // in edit mode, this widget should not be editable. await testUtils.form.clickEdit(form); assert.hasClass(form.$('.o_form_view'), 'o_form_editable'); - assert.containsOnce(form, '.o_datepicker'); - assert.strictEqual(form.$('.o_datepicker_input').val(), '10/08/2017'); - - await testUtils.dom.openDatepicker(form.$('.o_datepicker')); - - assert.containsOnce(document.body, '.bootstrap-datetimepicker-widget:visible'); + assert.containsOnce(form, 'div.o_field_widget[name=date]'); form.destroy(); unpatchDate(); @@ -4744,13 +4739,13 @@ QUnit.module('basic_fields', { assert.strictEqual(list.$('.o_data_cell:nth(0) .o_field_widget').attr('title'), '10/08/2017'); - assert.hasClass(list.$('.o_data_cell:nth(0) span'), 'text-bf text-warning'); - assert.doesNotHaveClass(list.$('.o_data_cell:nth(1) span'), 'text-bf text-warning text-danger'); - assert.hasClass(list.$('.o_data_cell:nth(2) span'), 'text-bf text-danger'); - assert.doesNotHaveClass(list.$('.o_data_cell:nth(3) span'), 'text-bf text-warning text-danger'); - assert.hasClass(list.$('.o_data_cell:nth(4) span'), 'text-bf text-danger'); - assert.doesNotHaveClass(list.$('.o_data_cell:nth(5) span'), 'text-bf text-warning text-danger'); - assert.hasClass(list.$('.o_data_cell:nth(6) span'), 'text-bf text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(0) div'), 'text-bf text-warning'); + assert.doesNotHaveClass(list.$('.o_data_cell:nth(1) div'), 'text-bf text-warning text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(2) div'), 'text-bf text-danger'); + assert.doesNotHaveClass(list.$('.o_data_cell:nth(3) div'), 'text-bf text-warning text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(4) div'), 'text-bf text-danger'); + assert.doesNotHaveClass(list.$('.o_data_cell:nth(5) div'), 'text-bf text-warning text-danger'); + assert.hasClass(list.$('.o_data_cell:nth(6) div'), 'text-bf text-danger'); list.destroy(); unpatchDate(); diff --git a/doc/reference/javascript_reference.rst b/doc/reference/javascript_reference.rst index 638332cf2d8..d6d006cd398 100644 --- a/doc/reference/javascript_reference.rst +++ b/doc/reference/javascript_reference.rst @@ -1705,8 +1705,9 @@ daterange (FieldDateRange) remaining_days (RemainingDays) This widget can be used on date and datetime fields. In readonly, it displays - the delta (in days) between the value of the field and today. It edit, it - behaves like a regular date(time) widget. + the delta (in days) between the value of the field and today. The widget is + intended to be used for informative purpose: therefore the value cannot be + modified in edit mode. - Supported field types: *date*, *datetime*