From 1b19b11eb5e6965a9aec878a9f30cbd0b83e86a7 Mon Sep 17 00:00:00 2001 From: Sebastian Kennedy Date: Thu, 17 Nov 2016 16:57:36 -0300 Subject: [PATCH 1/4] [ADD] Possibility to create a non square matrix --- .../static/src/js/web_widget_x2many_2d_matrix.js | 9 +++++++++ .../static/src/xml/web_widget_x2many_2d_matrix.xml | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js b/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js index 88ba1745..850e6058 100644 --- a/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js +++ b/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js @@ -272,6 +272,15 @@ openerp.web_widget_x2many_2d_matrix = function(instance) return vals; }, + row_xy_exists: function(x, y) + { + if( x in this.by_x_axis && y in this.by_x_axis[x] ) { + return true; + } + + return false; + }, + // return the value of a coordinate get_xy_value: function(x, y) { diff --git a/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml b/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml index ca6b687f..a9da6336 100644 --- a/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml +++ b/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml @@ -16,8 +16,10 @@ - - + + + + From 074c83080f7b4a8a4dbe12d2e74d8c8a7af9d330 Mon Sep 17 00:00:00 2001 From: Sebastian Kennedy Date: Mon, 13 Nov 2017 12:38:41 -0300 Subject: [PATCH 2/4] [ADD] Ability to parse * and change boolean True/False --- .../src/js/web_widget_x2many_2d_matrix.js | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js b/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js index a05b6b07..520306a3 100644 --- a/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js +++ b/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js @@ -221,6 +221,12 @@ openerp.web_widget_x2many_2d_matrix = function(instance) this.by_id[row.id] = row; }, + boolean_is_true: function(x, y) + { + return this.get_field_value( + this.by_x_axis[x][y], this.boolean_field_value); + }, + // get x axis values in the correct order get_x_axis_values: function() { @@ -324,6 +330,16 @@ openerp.web_widget_x2many_2d_matrix = function(instance) val, {'type': this.fields[this.field_value].type}); }, + // format a value from the database for display + format_xy_cell_value: function(put_special_caracter,val) + { + if (put_special_caracter) { + val = '*'.concat(val) + } + return instance.web.format_value( + val, {'type': "string"}); + }, + // compute totals compute_totals: function() { @@ -411,10 +427,13 @@ openerp.web_widget_x2many_2d_matrix = function(instance) { var $this = jQuery(e.currentTarget), val = $this.val(); + val_sub = val.substring(1) + val_pre = val.substring(0,1) if(this.validate_xy_value(val)) { var data = {}, value = this.parse_xy_value(val); data[this.field_value] = value; + data[this.boolean_field_value] = false; $this.siblings('.read').text(this.format_xy_value(value)); $this.val(this.format_xy_value(value)); @@ -423,6 +442,17 @@ openerp.web_widget_x2many_2d_matrix = function(instance) $this.parent().removeClass('oe_form_invalid'); this.compute_totals(); } + else if(this.validate_xy_value(val_sub) && val_pre == '*'){ + var data = {}, value = this.parse_xy_value(val_sub); + data[this.field_value] = value; + data[this.boolean_field_value] = true; + + $this.siblings('.read').text(val); + + this.dataset.write($this.data('id'), data); + $this.parent().removeClass('oe_form_invalid'); + this.compute_totals(); + } else { $this.parent().addClass('oe_form_invalid'); From 6ca0a9ad2a88677ba361f6c91177ce5df3872d65 Mon Sep 17 00:00:00 2001 From: Sebastian Kennedy Date: Tue, 14 Nov 2017 12:30:48 -0300 Subject: [PATCH 3/4] [FIX] this.boolean_field_value added in init func --- .../static/src/js/web_widget_x2many_2d_matrix.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js b/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js index 520306a3..a10f00a0 100644 --- a/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js +++ b/web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js @@ -44,6 +44,7 @@ openerp.web_widget_x2many_2d_matrix = function(instance) this.field_label_x_axis = node.attrs.field_label_x_axis || this.field_x_axis; this.field_label_y_axis = node.attrs.field_label_y_axis || this.field_y_axis; this.field_value = node.attrs.field_value || this.field_value; + this.boolean_field_value = node.attrs.boolean_field_value || this.boolean_field_value; for (var property in node.attrs) { if (property.startsWith("field_att_")) { this.fields_att[property.substring(10)] = node.attrs[property]; From 1d25ec1c496c4f7f2db8f6073460cb29bfdfd20d Mon Sep 17 00:00:00 2001 From: Sebastian Kennedy Date: Tue, 14 Nov 2017 13:00:24 -0300 Subject: [PATCH 4/4] [MOD] xml of matrix template --- .../src/xml/web_widget_x2many_2d_matrix.xml | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml b/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml index a9da6336..ebade62c 100644 --- a/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml +++ b/web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml @@ -15,12 +15,23 @@ - - - - + + + + + + + + + - + + + + + + +