diff options
| author | Bhumi Thakkar (Open ERP) <bth@tinyerp.com> | 2011-08-16 18:32:57 +0530 |
|---|---|---|
| committer | Bhumi Thakkar (Open ERP) <bth@tinyerp.com> | 2011-08-16 18:32:57 +0530 |
| commit | c9d824a1d9a2b03a29ef7d28fabef6e1ff86d3ed (patch) | |
| tree | 31ceb2b23ba573a34553aca4b39def6bd07e7da6 /addons/web_mobile/static/src | |
| parent | 08cf0f2fb08a5d3af57a0aa77e73b5fb9da028e7 (diff) | |
[IMP] One2many fields in formview.
bzr revid: bth@tinyerp.com-20110816130257-bz614pn2722vo1pl
Diffstat (limited to 'addons/web_mobile/static/src')
| -rw-r--r-- | addons/web_mobile/static/src/js/form_mobile.js | 76 | ||||
| -rw-r--r-- | addons/web_mobile/static/src/xml/web_mobile.xml | 86 |
2 files changed, 98 insertions, 64 deletions
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 @@ <form> <t t-foreach="get_fields" t-as="field"> <div data-role="fieldcontain"> - + <t t-if="fields[field.attrs.name].type!='one2many' and fields[field.attrs.name].type!='many2many'" > <label class="ui-input-text"> <span> <t t-if="!(field.attrs.string)" t-esc="fields[field.attrs.name].string"></t> <t t-if="field.attrs.string" t-esc="field.attrs.string"></t> </span>: </label> + </t> <t t-if="fields[field.attrs.name].type == 'char'"> <t t-if="values[field.attrs.name]"> <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> @@ -123,6 +124,30 @@ <t t-if="fields[field.attrs.name].type == 'text'"> <input type="text" style="width: 100%"/><br/> </t> + <t t-if="fields[field.attrs.name].type == 'float'"> + <t t-if="values[field.attrs.name]"> + <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> + </t> + <t t-if="!(values[field.attrs.name])"> + <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> + </t> + </t> + <t t-if="fields[field.attrs.name].type == 'date'"> + <t t-if="values[field.attrs.name]"> + <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> + </t> + <t t-if="!(values[field.attrs.name])"> + <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> + </t> + </t> + <t t-if="fields[field.attrs.name].type == 'datetime'"> + <t t-if="values[field.attrs.name]"> + <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> + </t> + <t t-if="!(values[field.attrs.name])"> + <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> + </t> + </t> <t t-if="fields[field.attrs.name].type == 'selection'"> <div class="ui-select"> <div data-theme="c" class="ui-btn ui-btn-icon-right ui-btn-corner-all ui-shadow ui-btn-up-c"> @@ -176,44 +201,27 @@ </div> </t> <t t-if="fields[field.attrs.name].type == 'one2many'"> - <t t-if="values[field.attrs.name]"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> - </t> - <t t-if="!(values[field.attrs.name])"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> - </t> - </t> - <t t-if="fields[field.attrs.name].type == 'many2many'"> - <t t-if="values[field.attrs.name]"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> - </t> - <t t-if="!(values[field.attrs.name])"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> - </t> - </t> - <t t-if="fields[field.attrs.name].type == 'float'"> - <t t-if="values[field.attrs.name]"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> - </t> - <t t-if="!(values[field.attrs.name])"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> - </t> - </t> - <t t-if="fields[field.attrs.name].type == 'date'"> - <t t-if="values[field.attrs.name]"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> - </t> - <t t-if="!(values[field.attrs.name])"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> - </t> - </t> - <t t-if="fields[field.attrs.name].type == 'datetime'"> - <t t-if="values[field.attrs.name]"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" t-att-value="values[field.attrs.name]"/><br/> - </t> - <t t-if="!(values[field.attrs.name])"> - <input class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c" type="text" value=""/><br/> - </t> + <div class="info ui-collapsible-contain" data-collapsed="true" data-role="collapsible"> + <h1 class="ui-collapsible-heading"> + <a class="ui-collapsible-heading-toggle ui-btn ui-btn-icon-left ui-shadow ui-corner-all ui-btn-up-c" href="#" data-theme="c" t-id="page.attrs.string"> + <span class="ui-btn-inner ui-corner-all"> + <span class="ui-btn-text"> + <t t-esc="til"></t> + <!-- <span class="ui-collapsible-heading-status"></span> --> + </span> + <span data-theme="d" class="ui-btn ui-btn-icon-left ui-btn-corner-all ui-shadow ui-btn-up-d"> + <span class="ui-btn-inner ui-btn-corner-all ui-corner-all"> + <span class="ui-btn-text"></span> + <span class="ui-icon ui-icon-shadow ui-icon-plus"></span> + </span> + </span> + </span> + </a> + <div class="ui-collapsible-content ui-collapsible-content-collapsed" aria-hidden="true"> + <div class="detail"></div> + </div> + </h1> + </div> </t> </div> </t> |
