[8.0] render axis values in received order

pull/495/head
Cédric Pigeon 2016-11-23 15:19:00 +01:00
parent a3247c93e5
commit 62539e36f9
2 changed files with 11 additions and 2 deletions

View File

@ -28,6 +28,7 @@ result could look like this:
The beauty of this is that you have an arbitrary amount of columns with this The beauty of this is that you have an arbitrary amount of columns with this
widget, trying to get this in standard x2many lists involves some quite ugly widget, trying to get this in standard x2many lists involves some quite ugly
hacks. hacks.
Note: The order of axis values depends on their order in the matrix you provide.
Usage Usage
===== =====

View File

@ -14,6 +14,8 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
// those will be filled with rows from the dataset // those will be filled with rows from the dataset
by_x_axis: {}, by_x_axis: {},
by_y_axis: {}, by_y_axis: {},
by_x_axis_sorted: [],
by_y_axis_sorted: [],
by_id: {}, by_id: {},
// configuration values // configuration values
field_x_axis: 'x', field_x_axis: 'x',
@ -76,6 +78,8 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
var self = this, var self = this,
result = this._super.apply(this, arguments); result = this._super.apply(this, arguments);
self.by_x_axis_sorted = []
self.by_y_axis_sorted = []
self.by_x_axis = {}; self.by_x_axis = {};
self.by_y_axis = {}; self.by_y_axis = {};
self.by_id = {}; self.by_id = {};
@ -206,6 +210,10 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
} }
return true; return true;
}); });
if(this.by_x_axis_sorted.indexOf(x) == -1)
this.by_x_axis_sorted.push(x)
if(this.by_y_axis_sorted.indexOf(y) == -1)
this.by_y_axis_sorted.push(y)
this.by_x_axis[x] = this.by_x_axis[x] || {}; this.by_x_axis[x] = this.by_x_axis[x] || {};
this.by_y_axis[y] = this.by_y_axis[y] || {}; this.by_y_axis[y] = this.by_y_axis[y] || {};
this.by_x_axis[x][y] = row; this.by_x_axis[x][y] = row;
@ -216,13 +224,13 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
// get x axis values in the correct order // get x axis values in the correct order
get_x_axis_values: function() get_x_axis_values: function()
{ {
return _.keys(this.by_x_axis); return this.by_x_axis_sorted
}, },
// get y axis values in the correct order // get y axis values in the correct order
get_y_axis_values: function() get_y_axis_values: function()
{ {
return _.keys(this.by_y_axis); return this.by_y_axis_sorted
}, },
// get the label for a value on the x axis // get the label for a value on the x axis