diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-06-03 13:57:57 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-06-03 13:57:57 +0200 |
| commit | 47d696ef4e350a69ad5156f57dd5c9b0c40ba409 (patch) | |
| tree | 9b499aa62c82586531ebccd7439ee8d8f118ca6c /addons/base/static/src | |
| parent | 8c9d79e1325da5251915224d4d37fed27099204d (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.js | 25 |
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); + }); }; |
