diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-05-10 17:23:35 +0200 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-05-10 17:23:35 +0200 |
| commit | 8c0c6c1bd7ac5adc8fd2fadec7e11b2160d388c8 (patch) | |
| tree | b8d0f403a34d609beea1a2ba5ce2a89fb650d5ef /addons/web/static/src | |
| parent | d08ad3bab3d3ff48d2d9624989546b926c624964 (diff) | |
| parent | b1e48d1b6a20909dd816ef13d5e524bdb6d78b66 (diff) | |
[imp] improvements for future functionality
bzr revid: nicolas.vanhoren@openerp.com-20120510152335-2xhs5m1xvoo97d4h
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 198b3d4ff85..27606a564be 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1118,8 +1118,6 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt // invisibility transfer var field_modifiers = JSON.parse($child.attr('modifiers') || '{}'); var invisible = field_modifiers.invisible; - field_modifiers.invisible = undefined; - $child.attr('modifiers', JSON.stringify(field_modifiers)); self.handle_common_properties($td, $("<dummy>").attr("modifiers", JSON.stringify({invisible: invisible}))); $tr.append($td.append($child)); @@ -1371,17 +1369,27 @@ instance.web.form.InvisibilityChangerMixin = { instance.web.form.compute_domain(this._ic_invisible_modifier, this._ic_field_manager.fields); this.set({"invisible": result}); }); - this.set({invisible: this._ic_invisible_modifier === true}); + this.set({invisible: this._ic_invisible_modifier === true, force_invisible: false}); + var check = function() { + if (this.get("invisible") || this.get('force_invisible')) { + this.set({"effective_invisible": true}); + } else { + this.set({"effective_invisible": false}); + } + }; + this.on('change:invisible', this, check); + this.on('change:force_invisible', this, check); + _.bind(check, this)(); }, start: function() { var check_visibility = function() { - if (this.get("invisible")) { + if (this.get("effective_invisible")) { this.$element.hide(); } else { this.$element.show(); } }; - this.on("change:invisible", this, check_visibility); + this.on("change:effective_invisible", this, check_visibility); _.bind(check_visibility, this)(); }, }; |
