diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 98c8cd75267..3b55b86a471 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -8,6 +8,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV * view should be displayed (if there is one active). */ searchable: false, + template: "FormView", /** * @constructs * @param {openerp.base.Session} session the current openerp session @@ -42,7 +43,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV var frame = new openerp.base.form.WidgetFrame(this, this.fields_view.arch); - this.$element.html(QWeb.render("FormView", { 'frame': frame, 'view': this })); + this.$element.html(QWeb.render(this.template, { 'frame': frame, 'view': this })); _.each(this.widgets, function(w) { w.start(); }); @@ -449,6 +450,9 @@ openerp.base.form.Widget = openerp.base.Controller.extend({ } }, update_dom: function() { + if (this.attrs.name === 'someval') { + console.log(this.invisible); + } this.$element.toggle(!this.invisible); }, render: function() { diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index a64cb0c0021..e7922df67eb 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -532,8 +532,9 @@ openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List * @constructs * @param {Object} opts display options, identical to those of :js:class:`openerp.base.ListView` */ - init: function (opts) { + init: function (group, opts) { var self = this; + this.group = group; this.options = opts.options; this.columns = opts.columns; @@ -563,11 +564,18 @@ openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List }) .delegate('tr', 'click', function (e) { e.stopPropagation(); - $(self).trigger( - 'row_link', - [self.row_position(e.currentTarget), - self.row_id(e.currentTarget), - self.dataset]); + var index = self.row_position(e.currentTarget); + self.dataset.index = index; + if (self.options.editable) { + self.render_row_as_form( + index, e.currentTarget); + } else { + $(self).trigger( + 'row_link', + [index, + self.rows[index].data.id.value, + self.dataset]); + } }); }, render: function () { @@ -577,6 +585,41 @@ openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List this.$current = this.$_element.clone(true); this.$current.empty().append($(QWeb.render('ListView.rows', this))); }, + get_fields_view: function () { + // deep copy of view + var view = $.extend(true, {}, this.group.view.fields_view); + _(view.arch.children).each(function (widget) { + widget.attrs.nolabel = true; + if (widget.tag === 'button') { + delete widget.attrs.string; + } + }); + view.arch.attrs.col = 2 * view.arch.children.length; + return view; + }, + render_row_as_form: function (row_num, row) { + var $new_row = $('