summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/fields/field_utils.js2
-rw-r--r--addons/web/static/src/js/views/graph/graph_renderer.js4
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_renderer.js3
-rw-r--r--addons/web/static/src/js/widgets/pie_chart.js1
-rw-r--r--addons/web/static/src/xml/pie_chart.xml2
-rw-r--r--addons/web/static/tests/fields/field_utils_tests.js30
-rw-r--r--addons/web/static/tests/views/kanban_tests.js39
7 files changed, 76 insertions, 5 deletions
diff --git a/addons/web/static/src/js/fields/field_utils.js b/addons/web/static/src/js/fields/field_utils.js
index bbdee83c4f9..ec99f4fa0f6 100644
--- a/addons/web/static/src/js/fields/field_utils.js
+++ b/addons/web/static/src/js/fields/field_utils.js
@@ -363,7 +363,7 @@ function formatPercentage(value, field, options) {
if (options.humanReadable && options.humanReadable(value * 100)) {
return result + "%";
}
- return parseFloat(result) + "%";
+ return (parseFloat(result) + "%").replace('.', _t.database.parameters.decimal_point);
}
/**
* Returns a string representing the value of the selection.
diff --git a/addons/web/static/src/js/views/graph/graph_renderer.js b/addons/web/static/src/js/views/graph/graph_renderer.js
index 38c2f02351e..856882a303b 100644
--- a/addons/web/static/src/js/views/graph/graph_renderer.js
+++ b/addons/web/static/src/js/views/graph/graph_renderer.js
@@ -215,6 +215,10 @@ return AbstractRenderer.extend({
margin: {left: 80, bottom: 100, top: 80, right: 0},
delay: 100,
transition: 10,
+ controlLabels: {
+ 'grouped': _t('Grouped'),
+ 'stacked': _t('Stacked'),
+ },
showLegend: _.size(data) <= MAX_LEGEND_LENGTH,
showXAxis: true,
showYAxis: true,
diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js
index 32101d0cd00..cfb05792d4c 100644
--- a/addons/web/static/src/js/views/kanban/kanban_renderer.js
+++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js
@@ -440,7 +440,8 @@ var KanbanRenderer = BasicRenderer.extend({
_setState: function (state) {
this.state = state;
- var groupByField = state.groupedBy[0];
+ // split groupedBy field with ':' as it can be date/datetime field
+ var groupByField = state.groupedBy.length && state.groupedBy[0].split(":")[0];
var groupByFieldAttrs = state.fields[groupByField];
var groupByFieldInfo = state.fieldsInfo.kanban[groupByField];
// Deactivate the drag'n'drop if the groupedBy field:
diff --git a/addons/web/static/src/js/widgets/pie_chart.js b/addons/web/static/src/js/widgets/pie_chart.js
index 30944d69584..1054360b3fd 100644
--- a/addons/web/static/src/js/widgets/pie_chart.js
+++ b/addons/web/static/src/js/widgets/pie_chart.js
@@ -31,6 +31,7 @@ var PieChart = Widget.extend({
Domain.prototype.stringToArray(modifiers.domain || '[]'));
var arch = qweb.render('web.PieChart', {
modifiers: modifiers,
+ title: node.attrs.title || modifiers.title || modifiers.measure,
});
this.subViewParams = {
diff --git a/addons/web/static/src/xml/pie_chart.xml b/addons/web/static/src/xml/pie_chart.xml
index 5c3411bc882..d45bef7af6f 100644
--- a/addons/web/static/src/xml/pie_chart.xml
+++ b/addons/web/static/src/xml/pie_chart.xml
@@ -1,7 +1,7 @@
<template>
<t t-name="web.PieChart">
- <graph type="pie" t-att-title="modifiers.title || modifiers.measure">
+ <graph type="pie" t-att-title="title">
<field t-att-name="modifiers.groupby.split(':')[0]" t-att-interval="modifiers.groupby.split(':')[1]"/>
<field t-if="modifiers.measure" t-att-name="modifiers.measure" type="measure"/>
</graph>
diff --git a/addons/web/static/tests/fields/field_utils_tests.js b/addons/web/static/tests/fields/field_utils_tests.js
index 6b7cda13264..940f5674780 100644
--- a/addons/web/static/tests/fields/field_utils_tests.js
+++ b/addons/web/static/tests/fields/field_utils_tests.js
@@ -135,7 +135,9 @@ QUnit.test('format binary', function (assert) {
});
QUnit.test('format percentage', function (assert) {
- assert.expect(9);
+ assert.expect(11);
+
+ var originalParameters = _.clone(core._t.database.parameters);
assert.strictEqual(fieldUtils.format.percentage(0), '0%');
assert.strictEqual(fieldUtils.format.percentage(0.5), '50%');
@@ -151,6 +153,16 @@ QUnit.test('format percentage', function (assert) {
assert.strictEqual(fieldUtils.format.percentage(50, null,
{humanReadable: function (val) {return true;}}), '5k%'
);
+
+ _.extend(core._t.database.parameters, {
+ grouping: [3, 0],
+ decimal_point: ',',
+ thousands_sep: '.'
+ });
+ assert.strictEqual(fieldUtils.format.percentage(0.125), '12,5%');
+ assert.strictEqual(fieldUtils.format.percentage(0.666666), '66,67%');
+
+ core._t.database.parameters = originalParameters;
});
QUnit.test('parse float', function(assert) {
@@ -262,7 +274,9 @@ QUnit.test('parse monetary', function(assert) {
});
QUnit.test('parse percentage', function(assert) {
- assert.expect(7);
+ assert.expect(9);
+
+ var originalParameters = _.clone(core._t.database.parameters);
assert.strictEqual(fieldUtils.parse.percentage(""), 0);
assert.strictEqual(fieldUtils.parse.percentage("0"), 0);
@@ -271,6 +285,18 @@ QUnit.test('parse percentage', function(assert) {
assert.strictEqual(fieldUtils.parse.percentage("1"), 1);
assert.strictEqual(fieldUtils.parse.percentage("2%"), 0.02);
assert.strictEqual(fieldUtils.parse.percentage("100%"), 1);
+
+ _.extend(core._t.database.parameters, {
+ grouping: [3, 0],
+ decimal_point: ',',
+ thousands_sep: '.'
+ });
+
+ assert.strictEqual(fieldUtils.parse.percentage("0,04"), 0.04);
+ assert.strictEqual(fieldUtils.parse.percentage("6,02%"), 0.0602);
+
+ core._t.database.parameters = originalParameters;
+
})
});
diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js
index 6702a9bee37..86538ab5eb0 100644
--- a/addons/web/static/tests/views/kanban_tests.js
+++ b/addons/web/static/tests/views/kanban_tests.js
@@ -2580,6 +2580,45 @@ QUnit.module('Views', {
kanban.destroy();
});
+ QUnit.test('prevent drag and drop if grouped by date/datetime field', function (assert) {
+ assert.expect(5);
+
+ this.data.partner.records[0].date = '2017-01-08';
+ this.data.partner.records[1].date = '2017-01-09';
+ this.data.partner.records[2].date = '2017-02-08';
+ this.data.partner.records[3].date = '2017-02-10';
+
+ var kanban = createView({
+ View: KanbanView,
+ model: 'partner',
+ data: this.data,
+ arch: '<kanban class="o_kanban_test">' +
+ '<field name="bar"/>' +
+ '<templates><t t-name="kanban-box">' +
+ '<div><field name="foo"/></div>' +
+ '</t></templates></kanban>',
+ groupBy: ['date:month'],
+ });
+
+ assert.strictEqual(kanban.$('.o_kanban_group').length, 2, "should have 2 columns");
+ assert.strictEqual(kanban.$('.o_kanban_group:nth-child(1) .o_kanban_record').length, 2,
+ "1st column should contain 2 records of January month");
+ assert.strictEqual(kanban.$('.o_kanban_group:nth-child(2) .o_kanban_record').length , 2,
+ "2nd column should contain 2 records of February month");
+
+ // drag&drop a record in another column
+ var $record = kanban.$('.o_kanban_group:nth-child(1) .o_kanban_record:first');
+ var $group = kanban.$('.o_kanban_group:nth-child(2)');
+ testUtils.dragAndDrop($record, $group);
+
+ // should not drag&drop record
+ assert.strictEqual(kanban.$('.o_kanban_group:nth-child(1) .o_kanban_record').length , 2,
+ "Should remain same records in first column(2 records)");
+ assert.strictEqual(kanban.$('.o_kanban_group:nth-child(2) .o_kanban_record').length , 2,
+ "Should remain same records in 2nd column(2 record)");
+ kanban.destroy();
+ });
+
QUnit.test('kanban view with default_group_by', function (assert) {
assert.expect(7);
this.data.partner.records.product_id = 1;