From 1efca8d0738a259fbb7ebc12738e088908f53542 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Thu, 27 Jul 2017 15:06:43 +0200 Subject: [PATCH] [FIX] web_kanban_gauge: correctly render gauge widget Before this rev., nothing was rendered when the 'gauge' widget was set on a field (e.g. Sales > Leads Management > Team Assignation), because the API of the fields in web evolved a lot recently, and the rendering should now be done in a private function called '_render', not 'render'. --- .../static/src/js/kanban_gauge.js | 14 +++++- .../static/tests/gauge_tests.js | 49 +++++++++++++++++++ .../views/web_kanban_gauge_templates.xml | 6 +++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 addons/web_kanban_gauge/static/tests/gauge_tests.js diff --git a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js index 84f5ada2f85..93dc6d746f0 100644 --- a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js +++ b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js @@ -6,7 +6,7 @@ var field_registry = require('web.field_registry'); var utils = require('web.utils'); /** - * Kanban widgets: GaugeWidget + * Field widget: GaugeWidget * options * - max_value: maximum value of the gauge [default: 100] * - max_field: get the max_value from the field that must be present in the @@ -26,7 +26,15 @@ var utils = require('web.utils'); var GaugeWidget = AbstractField.extend({ className: "oe_gauge", - render: function() { + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @override + * @private + */ + _render: function () { // parameters var max_value = this.nodeOptions.max_value || 100; if (this.nodeOptions.max_field) { @@ -124,4 +132,6 @@ var GaugeWidget = AbstractField.extend({ field_registry.add("gauge", GaugeWidget); +return GaugeWidget; + }); diff --git a/addons/web_kanban_gauge/static/tests/gauge_tests.js b/addons/web_kanban_gauge/static/tests/gauge_tests.js new file mode 100644 index 00000000000..e494d5391e5 --- /dev/null +++ b/addons/web_kanban_gauge/static/tests/gauge_tests.js @@ -0,0 +1,49 @@ +odoo.define('web_kanban_gauge.gauge_tests', function (require) { +"use strict"; + +var KanbanView = require('web.KanbanView'); +var testUtils = require('web.test_utils'); + +var createView = testUtils.createView; + +QUnit.module('fields', {}, function () { + +QUnit.module('basic_fields', { + beforeEach: function () { + this.data = { + partner: { + fields: { + int_field: {string: "int_field", type: "integer", sortable: true}, + }, + records: [ + {id: 1, int_field: 10}, + {id: 2, int_field: 4}, + ] + }, + }; + } +}, function () { + + QUnit.module('gauge widget'); + + QUnit.test('basic rendering', function (assert) { + assert.expect(1); + + var kanban = createView({ + View: KanbanView, + model: 'partner', + data: this.data, + arch: '' + + '
' + + '
', + }); + + assert.strictEqual(kanban.$('.o_kanban_record:first .oe_gauge svg').length, 1, + "should render the gauge widget"); + + kanban.destroy(); + }); + +}); +}); +}); diff --git a/addons/web_kanban_gauge/views/web_kanban_gauge_templates.xml b/addons/web_kanban_gauge/views/web_kanban_gauge_templates.xml index 93ac6cf2653..fbba1de789b 100644 --- a/addons/web_kanban_gauge/views/web_kanban_gauge_templates.xml +++ b/addons/web_kanban_gauge/views/web_kanban_gauge_templates.xml @@ -5,4 +5,10 @@ + +