summaryrefslogtreecommitdiff
path: root/addons/base/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-06-03 13:57:57 +0200
committerXavier Morel <xmo@openerp.com>2011-06-03 13:57:57 +0200
commit47d696ef4e350a69ad5156f57dd5c9b0c40ba409 (patch)
tree9b499aa62c82586531ebccd7439ee8d8f118ca6c /addons/base/static/src
parent8c9d79e1325da5251915224d4d37fed27099204d (diff)
[IMP] awful hack to hide the value but not the cell itself in editable row cells when it is invisible from an attrs evaluation rather than from @invisible
bzr revid: xmo@openerp.com-20110603115757-4z67r08g1sfogfgw
Diffstat (limited to 'addons/base/static/src')
-rw-r--r--addons/base/static/src/js/list-editable.js25
1 files changed, 24 insertions, 1 deletions
diff --git a/addons/base/static/src/js/list-editable.js b/addons/base/static/src/js/list-editable.js
index 5bf6021f341..8c66dd71dd5 100644
--- a/addons/base/static/src/js/list-editable.js
+++ b/addons/base/static/src/js/list-editable.js
@@ -68,7 +68,30 @@ openerp.base.list.editable = function (openerp) {
openerp.base.list.form.WidgetFrame = openerp.base.form.WidgetFrame.extend({
template: 'ListView.row.frame'
});
- openerp.base.list.form.widgets = openerp.base.form.widgets.clone({
+ var form_widgets = openerp.base.form.widgets;
+ openerp.base.list.form.widgets = form_widgets.clone({
'frame': 'openerp.base.list.form.WidgetFrame'
});
+ // All form widgets inherit a problematic behavior from
+ // openerp.base.form.WidgetFrame: the cell itself is removed when invisible
+ // whether it's @invisible or @attrs[invisible]. In list view, only the
+ // former should completely remove the cell. We need to override update_dom
+ // on all widgets since we can't just hit on widget itself (I think)
+ var list_form_widgets = openerp.base.list.form.widgets;
+ _(list_form_widgets.map).each(function (widget_path, key) {
+ if (key === 'frame') { return; }
+ var new_path = 'openerp.base.list.form.' + key;
+
+ openerp.base.list.form[key] = (form_widgets.get_object(key)).extend({
+ update_dom: function () {
+ this.$element.children().css('visibility', '');
+ if (this.invisible && this.node.attrs.invisible !== '1') {
+ this.$element.children().css('visibility', 'hidden');
+ } else {
+ this._super();
+ }
+ }
+ });
+ list_form_widgets.add(key, new_path);
+ });
};