diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-08-01 18:02:29 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-08-01 18:02:29 +0200 |
| commit | 4797627259f2d7202e48a772d5495002182d5392 (patch) | |
| tree | 97c6469927d60dea8c484e3ce0be90260e39a083 /addons/web/static | |
| parent | abbba35598d01d1a11f1b034912608be7c132239 (diff) | |
| parent | 8d9366197e174d33fdf6962364a24ea40a1131b1 (diff) | |
[MERGE] forward port branch saas-11.4 up to 8d9366197e1
Diffstat (limited to 'addons/web/static')
8 files changed, 52 insertions, 15 deletions
diff --git a/addons/web/static/src/css/reset.min.css b/addons/web/static/src/css/reset.min.css index ee21ad74e7d..97c0b78b002 100644 --- a/addons/web/static/src/css/reset.min.css +++ b/addons/web/static/src/css/reset.min.css @@ -48,6 +48,7 @@ ol { ul { list-style: disc; + padding-left: 40px; } ul ul { diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js index 0b18b04172a..1ab4367de4c 100644 --- a/addons/web/static/src/js/chrome/action_manager_act_window.js +++ b/addons/web/static/src/js/chrome/action_manager_act_window.js @@ -704,7 +704,7 @@ ActionManager.include({ var env = ev.data.env; var context = new Context(env.context, actionData.context || {}); var recordID = env.currentID || null; // pyUtils handles null value, not undefined - var def; + var def = $.Deferred(); // determine the action to execute according to the actionData if (actionData.special) { diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 8ac3b49e90e..9d0f62b5ebc 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -1931,7 +1931,7 @@ var StatInfo = AbstractField.extend({ */ _render: function () { var options = { - value: this.value || 0, + value: this._formatValue(this.value || 0), }; if (! this.attrs.nolabel) { if (this.nodeOptions.label_field && this.recordData[this.nodeOptions.label_field]) { diff --git a/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js b/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js index 0bfe5027876..1ce13d678f2 100644 --- a/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js +++ b/addons/web/static/src/js/views/kanban/kanban_column_progressbar.js @@ -140,6 +140,7 @@ var KanbanColumnProgressBar = Widget.extend({ } // Display and animate the progress bars + var barNumber = 0; _.each(self.colors, function (val, key) { var $bar = self.$bars[val]; var count = self.subgroupCounts && self.subgroupCounts[key] || 0; @@ -163,7 +164,14 @@ var KanbanColumnProgressBar = Widget.extend({ window.getComputedStyle($bar[0]).getPropertyValue('width'); // Force reflow so that animations work if (count > 0) { $bar.addClass('o_bar_has_records'); + // Make sure every bar that has records has some space + // and that everything adds up to 100% + var minWidth = 6*barNumber; + var maxWidth = 100 - minWidth; + self.$('.progress-bar.o_bar_has_records').css('max-width', maxWidth + '%'); + self.$('.progress-bar.o_bar_has_records').css('min-width', minWidth + '%'); $bar.css('width', (count * 100 / self.groupCount) + '%'); + barNumber++; $bar.attr('aria-valuemin', 0); $bar.attr('aria-valuemax', self.groupCount); $bar.attr('aria-valuenow', count); diff --git a/addons/web/static/src/scss/form_view_extra.scss b/addons/web/static/src/scss/form_view_extra.scss index cadce3f6809..fcf9ac284c1 100644 --- a/addons/web/static/src/scss/form_view_extra.scss +++ b/addons/web/static/src/scss/form_view_extra.scss @@ -72,18 +72,16 @@ max-width: 70%; line-height: 1.2; - .o_stat_value { + > .o_stat_value, > .o_stat_text { @include o-text-overflow(block); + } + + .o_stat_value { font-weight: 700; color: $o-brand-odoo; } .o_stat_text { - @include o-text-overflow(block); font-size: small; - - .o_stat_value { - display: inline; - } } } > span { diff --git a/addons/web/static/src/scss/kanban_column_progressbar.scss b/addons/web/static/src/scss/kanban_column_progressbar.scss index 5f16a222736..d70644f7e4a 100644 --- a/addons/web/static/src/scss/kanban_column_progressbar.scss +++ b/addons/web/static/src/scss/kanban_column_progressbar.scss @@ -72,11 +72,6 @@ margin-bottom: 0; box-shadow: none; cursor: pointer; - - // Be sure that a bar with data has a minimun width - &.o_bar_has_records { - min-width: 10px; - } } .o_kanban_counter_label { diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js index 3b2fdd8686c..58fa6944334 100644 --- a/addons/web/static/tests/fields/basic_fields_tests.js +++ b/addons/web/static/tests/fields/basic_fields_tests.js @@ -4170,6 +4170,40 @@ QUnit.module('basic_fields', { QUnit.module('StatInfo'); + QUnit.test('statinfo widget formats decimal precision', function (assert) { + // sometimes the round method can return numbers such as 14.000001 + // when asked to round a number to 2 decimals, as such is the behaviour of floats. + // we check that even in that eventuality, only two decimals are displayed + assert.expect(2); + + this.data.partner.fields.monetary = {string: "Monetary", type: 'monetary'}; + this.data.partner.records[0].monetary = 9.999999; + this.data.partner.records[0].currency_id = 1; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<button class="oe_stat_button" name="items" icon="fa-gear">' + + '<field name="qux" widget="statinfo"/>' + + '</button>' + + '<button class="oe_stat_button" name="money" icon="fa-money">' + + '<field name="monetary" widget="statinfo"/>' + + '</button>' + + '</form>', + res_id: 1, + }); + + // formatFloat renders according to this.field.digits + assert.strictEqual(form.$('.oe_stat_button .o_field_widget.o_stat_info .o_stat_value').eq(0).text(), + '0.4', "Default precision should be [16,1]"); + assert.strictEqual(form.$('.oe_stat_button .o_field_widget.o_stat_info .o_stat_value').eq(1).text(), + '10.00', "Currency decimal precision should be 2"); + + form.destroy(); + }); + QUnit.test('statinfo widget in form view', function (assert) { assert.expect(9); diff --git a/addons/web/static/tests/helpers/test_utils.js b/addons/web/static/tests/helpers/test_utils.js index c460bf95673..a1b2718fc1a 100644 --- a/addons/web/static/tests/helpers/test_utils.js +++ b/addons/web/static/tests/helpers/test_utils.js @@ -552,10 +552,11 @@ function dragAndDrop($el, $to, options) { var toOffset = $to.offset(); toOffset.top += $to.outerHeight()/2; toOffset.left += $to.outerWidth()/2; + var vertical_offset = (toOffset.top < elementCenter.top) ? -1 : 1; if (position === 'top') { - toOffset.top -= $to.outerHeight()/2; + toOffset.top -= $to.outerHeight()/2 + vertical_offset; } else if (position === 'bottom') { - toOffset.top += $to.outerHeight()/2; + toOffset.top += $to.outerHeight()/2 - vertical_offset; } else if (position === 'left') { toOffset.left -= $to.outerWidth()/2; } else if (position === 'right') { |
