summaryrefslogtreecommitdiff
path: root/addons/web_mobile/static/src
diff options
context:
space:
mode:
authorBhumi Thakkar (Open ERP) <bth@tinyerp.com>2011-08-16 18:32:57 +0530
committerBhumi Thakkar (Open ERP) <bth@tinyerp.com>2011-08-16 18:32:57 +0530
commitc9d824a1d9a2b03a29ef7d28fabef6e1ff86d3ed (patch)
tree31ceb2b23ba573a34553aca4b39def6bd07e7da6 /addons/web_mobile/static/src
parent08cf0f2fb08a5d3af57a0aa77e73b5fb9da028e7 (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.js76
-rw-r--r--addons/web_mobile/static/src/xml/web_mobile.xml86
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>