diff --git a/addons/web_mobile/static/src/js/form_mobile.js b/addons/web_mobile/static/src/js/form_mobile.js index 017896affdd..826bee2e929 100644 --- a/addons/web_mobile/static/src/js/form_mobile.js +++ b/addons/web_mobile/static/src/js/form_mobile.js @@ -1,9 +1,16 @@ openerp.web_mobile.form_mobile = function (openerp) { openerp.web_mobile.FormView = openerp.base.Widget.extend({ + init: function(session, element_id, list_id, action) { this._super(session, element_id); this.list_id = list_id; this.action = action; + this.content_expanded_class = "ui-collapsible-content ui-collapsible-content-expanded"; + this.content_collapsed_class = "ui-collapsible-content ui-collapsible-content-collapsed"; + this.expanded_class = "ui-collapsible-content-expanded"; + this.collapsed_class = "ui-collapsible-content-collapsed"; + this.plus_class = "ui-icon-plus"; + this.minus_class = "ui-icon-minus"; }, start: function() { var self = this; @@ -13,7 +20,7 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ this.dataset = new openerp.base.DataSetSearch(this, this.action.res_model, null, null); this.dataset.read_slice([],function (result) { - for (var i = 0; i < result.length; i++) { + for (var i = 0; i < result.length; i++) { if (result[i].id == id) { var data = result[i]; } @@ -29,6 +36,7 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ var notebooks = view_fields[j]; } } + $("#oe_header").find("h1").html(result.fields_view.arch.attrs.string); self.$element.html(QWeb.render("FormView", {'get_fields': get_fields, 'notebooks': notebooks || false, 'fields' : fields, 'values' : data })); @@ -43,12 +51,7 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ var text = $(this).find('.ui-btn-text').text(); var next = $(this).next(); var span = $(this).find('span .ui-icon'); - var content_expanded_class = "ui-collapsible-content ui-collapsible-content-expanded"; - var content_collapsed_class = "ui-collapsible-content ui-collapsible-content-collapsed"; - var expanded_class = "ui-collapsible-content-expanded"; - var collapsed_class = "ui-collapsible-content-collapsed"; - var plus_class = "ui-icon-plus"; - var minus_class = "ui-icon-minus"; + if (notebooks.children[k].attrs.string == $.trim(text)) { get_fields = self.get_fields(notebooks.children[k].children); @@ -56,42 +59,52 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ $(this).parents().find('form').find('div').each( function() { var prev = $(this).prev(); var trim_class = $.trim($(this).attr('class')); - if (trim_class == content_expanded_class || trim_class == content_collapsed_class) { + + if (trim_class == self.content_expanded_class || trim_class == self.content_collapsed_class) { prev.removeClass('ui-btn-active'); if ($.trim(prev.find('.ui-btn-text').text()) != notebooks.children[k].attrs.string) { - prev.find('span .ui-icon').removeClass(minus_class); - prev.find('span .ui-icon').addClass(plus_class); - $(this).removeClass(expanded_class); - $(this).addClass(collapsed_class); + self.expanded($(this),prev.find('span .ui-icon')); } } }); - if (next.hasClass(content_collapsed_class)) { - span.removeClass(plus_class); - span.addClass(minus_class); - next.removeClass(collapsed_class); - next.addClass(expanded_class); + if (next.hasClass(self.content_collapsed_class)) { + self.collapsed(next,span); } - else if (next.hasClass(content_expanded_class)) { - span.removeClass(minus_class); - span.addClass(plus_class); - next.removeClass(expanded_class); - next.addClass(collapsed_class); + else if (next.hasClass(self.content_expanded_class)) { + self.expanded(next,span); } if (!next.find('.detail').html().length) { for (var i = 0; i < get_fields.length; i++) { - if (fields[get_fields[i].attrs.name].type == 'one2many'){ var get_fields_test = self.get_fields(fields[get_fields[i].attrs.name].views.form.arch.children); var fields_test = fields[get_fields[i].attrs.name]['views'].form.fields; - next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields_test,'fields' : fields_test, 'values' : data })); + var notebook=fields[get_fields[i].attrs.name].views.form.arch; } } - next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields_view.fields, 'values' : data })); + if(notebook){ + next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields_view.fields, 'values' : data,'til': notebook.attrs.string })); + }else{ + next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields_view.fields, 'values' : data })); + } + } + next.find('.detail').find('a').click(function(){ + if(next.find('.detail').find('a').next().find('.detail').html().length){ + if (next.find('.detail').find('a').next().hasClass(self.content_collapsed_class)) { + self.collapsed(next.find('.detail').find('a').next(),next.find('.detail').find('a').find('span .ui-icon')); + } + else if (next.find('.detail').find('a').next().hasClass(self.content_expanded_class)) { + self.expanded(next.find('.detail').find('a').next(),next.find('.detail').find('a').find('span .ui-icon')); + } + } + if(!next.find('.detail').find('a').next().find('.detail').html().length){ + next.find('.detail').find('a').next().find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields_test,'fields' : fields_test, 'values' : data })); + self.collapsed(next.find('.detail').find('a').next(),next.find('.detail').find('a').find('span .ui-icon')); + } + }); } } @@ -113,6 +126,19 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ } } return this.fields; + }, + collapsed: function(next,span) { + span.removeClass(this.plus_class); + span.addClass(this.minus_class); + next.removeClass(this.collapsed_class); + next.addClass(this.expanded_class); + + }, + expanded: function(next,span) { + span.removeClass(this.minus_class); + span.addClass(this.plus_class); + next.removeClass(this.expanded_class); + next.addClass(this.collapsed_class); } }); } \ No newline at end of file diff --git a/addons/web_mobile/static/src/xml/web_mobile.xml b/addons/web_mobile/static/src/xml/web_mobile.xml index b16beee47e0..beb206b7ef5 100644 --- a/addons/web_mobile/static/src/xml/web_mobile.xml +++ b/addons/web_mobile/static/src/xml/web_mobile.xml @@ -97,13 +97,14 @@