[IMP] Implement formview fields & notebook with theme.

bzr revid: bth@tinyerp.com-20110915133120-g1pnbvmi9a5tjxpj
This commit is contained in:
Bhumi Thakkar (Open ERP)
2011-09-15 19:01:20 +05:30
parent 063eedcc6f
commit e1268a9168
3 changed files with 187 additions and 94 deletions
@@ -84,7 +84,19 @@ openerp.web_mobile.Login = openerp.web.Widget.extend({
});
}
});
openerp.web_mobile.Notepage = openerp.web.Widget.extend({
init: function(session, element_id) {
this._super(session, element_id);
this.get_fields = this.widget_parent.get_fields;
this.page_fields = this.widget_parent.page_fields;
this.values = this.widget_parent.values;
this.til = this.widget_parent.til;
},
start: function() {
console.log(this.get_fields,this.page_fields,this.values,this.til,this.$element);
this.$element.html(QWeb.render("NotePage", {'get_fields1': this.get_fields,'fields1' : this.page_fields, 'values1' : this.values,'til1': this.til }));
}
});
openerp.web_mobile.Header = openerp.web.Widget.extend({
init: function(session, element_id) {
this._super(session, element_id);
+25 -87
View File
@@ -39,7 +39,7 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
var notebooks = view_fields[j];
}
}
self.$element.html(QWeb.render("FormView", {'get_fields': get_fields, 'notebooks': notebooks || false, 'fields' : fields, 'values' : data }));
self.$element.html(QWeb.render("FormView", {'get_fields': get_fields, 'notebooks': notebooks || false, 'fields' : fields, 'values' : data ,'temp_flag':'1'}));
self.$element.find("[data-role=header]").find('h1').html(self.action.name);
self.$element.find("[data-role=header]").find('#home').click(function(){
@@ -66,85 +66,35 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
self.$element.find('select').change(function(ev){
selection.on_select_option(ev);
});
/*self.$element.find('a').click(function(){
for (var k = 0; k < notebooks.children.length; k++) {
var text = $(this).find('.ui-btn-text').text();
var next = $(this).next();
var span = $(this).find('span .ui-icon');
if (notebooks.children[k].attrs.string == $.trim(text)) {
get_fields = self.get_fields(notebooks.children[k].children);
$(this).parents().find('form').find('div').each( function() {
var prev = $(this).prev();
var trim_class = $.trim($(this).attr('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) {
self.expanded($(this),prev.find('span .ui-icon'));
}
}
});
if (next.hasClass(self.content_collapsed_class)) {
self.collapsed(next,span);
}
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'){
if(fields[get_fields[i].attrs.name].views.form){
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;
var notebook=fields[get_fields[i].attrs.name].views.form.arch;
}
var relational = get_fields[i].attrs.name;
}
}
if(notebook){
next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields, 'values' : data,'til': notebook.attrs.string }));
}else{
next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields, 'values' : data }));
}
} */
//$.mobile.changePage($("#oe_form"), "slide", true, true);
/*next.find('.detail').find('li').click(function(){
if(data[relational]){
var dataset = new openerp.web.DataSetStatic(self, result.fields[relational].relation, result.fields[relational].context);
dataset.domain=[['id', 'in', data[relational]]];
dataset.name_search('', dataset.domain, 'in',false ,function(res){
for(var i=0;i<res.length;i++){
var splited_data = res[i][1].split(',');
res[i][1] = splited_data[0];
}
self.$element.html(QWeb.render("ListView", {'records' : res}));
self.$element.find("#searchid").focus();
self.$element.find("a#list-id").click(function(ev){
dataset = new openerp.web.DataSetSearch(self, dataset.model, null, null);
dataset.read_slice([],{}, function (result_relational) {
for (var i = 0; i < result_relational.length; i++) {
if (result_relational[i].id == $(ev.currentTarget).data('id')) {
var data_relational = result_relational[i];
}
}
self.$element.html(QWeb.render("FormView", {'get_fields': get_fields_test, 'notebooks': false, 'fields' : fields_test, 'values' : data_relational }));
self.$element.find('select').change(function(ev){
selection.on_select_option(ev);
});
});
});
});
self.$element.find('[data-role=collapsible-set]').find('[data-role=collapsible]').each(function(i){
for (var k = 0; k < notebooks.children.length; k++) {
if (notebooks.children[k].attrs.string == $(this).attr('id')) {
get_fields = self.get_fields(notebooks.children[k].children);
for (var i = 0; i < get_fields.length; i++) {
if (fields[get_fields[i].attrs.name].type == 'one2many'){
if(fields[get_fields[i].attrs.name].views.form){
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;
var notebook=fields[get_fields[i].attrs.name].views.form.arch;
}
}
});*/
/*}
}
}
if(notebook){
$(this).find('p').html(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields, 'values' : data,'til': notebook.attrs.string }));
}else{
$(this).find('p').html(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields, 'values' : data }));
}
}
self.$element.find('select').change(function(ev){
selection.on_select_option(ev);
});
});*/
});
self.$element.find('[data-role=collapsible-set]').find('[data-role=collapsible]').find('p').find('[data-role=content]').find('ul').find('li').click(function(){
});
$.mobile.changePage($("#oe_form"), "slide", true, true);
});
//$("#oe_header").find("h1").html(result.arch.attrs.string);
});
},
get_fields: function(view_fields, fields) {
@@ -158,18 +108,6 @@ openerp.web_mobile.FormView = openerp.web.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);
}
});
};
+149 -6
View File
@@ -7,6 +7,7 @@
<div data-role="page" id="oe_login"></div>
<div id="oe_header" />
<div id="oe_footer" />
<div id="oe_notepage" />
<div data-role="page" id="oe_sec_menu"></div>
<div data-role="page" id="oe_sec_menu_new"></div>
<div data-role="page" id="oe_list"></div>
@@ -45,7 +46,7 @@
<div data-role="footer" data-theme="b" data-position="fixed">
<h1>Powered by openerp.com</h1>
</div>
</t>
<t t-name="Header">
@@ -138,9 +139,147 @@
</div>
<t t-call="Footer" />
</t>
<t t-name="NotePage">
<div id="oe_note" data-role="content">
<form>
<t t-foreach="get_fields1" t-as="field1">
<t t-esc="field1.attrs.name" />
<div data-role="fieldcontain">
<t t-if="fields1[field1.attrs.name].type == 'char'">
<label for="">
<t t-if="!(field1.attrs.string)" t-esc="fields1[field1.attrs.name].string"></t>
<t t-if="field1.attrs.string" t-esc="field1.attrs.string"></t>:
</label>
<t t-if="values1[field1.attrs.name]">
<input type="text" id="" t-att-value="values1[field1.attrs.name]"/>
</t>
<t t-if="!(values1[field1.attrs.name])">
<input type="text" value="" id=""/>
</t>
</t>
<t t-if="fields1[field1.attrs.name].type == 'text'">
<label for="">
<t t-if="!(field1.attrs.string)" t-esc="fields1[field1.attrs.name].string"></t>
<t t-if="field1.attrs.string" t-esc="field1.attrs.string"></t>:
</label>
<textarea name="" id=""></textarea>
</t>
<t t-if="fields1[field1.attrs.name].type == 'float'">
<label for="">
<t t-if="!(field1.attrs.string)" t-esc="fields1[field1.attrs.name].string"></t>
<t t-if="field1.attrs.string" t-esc="field1.attrs.string"></t>:
</label>
<t t-if="values[field1.attrs.name]">
<input id="" type="text" t-att-value="values1[field1.attrs.name]"/>
</t>
<t t-if="!(values1[field1.attrs.name])">
<input id="" type="text" value=""/>
</t>
</t>
<t t-if="fields1[field1.attrs.name].type == 'date'">
<label for="">
<t t-if="!(field1.attrs.string)" t-esc="fields1[field1.attrs.name].string"></t>
<t t-if="field1.attrs.string" t-esc="field1.attrs.string"></t>:
</label>
<t t-if="values1[field1.attrs.name]">
<input id="" type="text" t-att-value="values1[field1.attrs.name]"/>
</t>
<t t-if="!(values1[field1.attrs.name])">
<input id="" type="text" value=""/>
</t>
</t>
<t t-if="fields1[field1.attrs.name].type == 'datetime'">
<label for="">
<t t-if="!(field1.attrs.string)" t-esc="fields1[field1.attrs.name].string"></t>
<t t-if="field1.attrs.string" t-esc="field1.attrs.string"></t>:
</label>
<t t-if="values1[field1.attrs.name]">
<input id="" type="text" t-att-value="values1[field1.attrs.name]"/>
</t>
<t t-if="!(values1[field1.attrs.name])">
<input id="" type="text" value=""/>
</t>
</t>
<t t-if="fields1[field1.attrs.name].type == 'boolean'">
<fieldset data-role="controlgroup">
<t t-if="values1[field1.attrs.name]">
<input type="checkbox" name="checkbox-1" id="checkbox-1" checked="yes" class="custom"/>
</t>
<t t-if="!(values1[field1.attrs.name])">
<input type="checkbox" name="checkbox-1" id="checkbox-1" class="custom" />
</t>
<label for="checkbox-1"><t t-esc="fields1[field1.attrs.name].string" /></label>
</fieldset>
</t>
<t t-if="fields1[field1.attrs.name].type == 'selection'">
<label for="" class="select">
<t t-if="!(field1.attrs.string)" t-esc="fields1[field1.attrs.name].string"></t>
<t t-if="field1.attrs.string" t-esc="field1.attrs.string"></t>:
</label>
<select id="" data-native-menu="false">
<t t-foreach="fields1[field1.attrs.name].selection" t-as="opt">
<option t-att-value="opt[0]"><t t-esc="opt[1]"/></option>
</t>
</select>
</t>
<t t-if="fields1[field1.attrs.name].type == 'many2one'">
<label for="" class="select">
<t t-if="!(field1.attrs.string)" t-esc="fields1[field1.attrs.name].string"></t>
<t t-if="field1.attrs.string" t-esc="field1.attrs.string"></t>:
</label>
<select id="" data-native-menu="false">
<t t-if="fields1[field1.attrs.name].selection">
<t t-foreach="fields1[field1.attrs.name].selection" t-as="opt">
<t t-if="values1[field1.attrs.name]==opt[0]">
<option t-att-value="opt[0]" selected="true" ><t t-esc="opt[1]"/></option>
</t>
<t t-if="values1[field1.attrs.name]!=opt[0]">
<option t-att-value="opt[0]" ><t t-esc="opt[1]"/></option>
</t>
</t>
</t>
</select>
</t>
<t t-if="fields1[field1.attrs.name].type == 'one2many'">
<ul data-role="listview" data-inset="true" data-theme="d">
<li data-theme="c">
<a href="#">
<t t-esc="til1"/>
</a>
</li>
</ul>
</t>
</div>
</t>
<!-- <t t-if="notebooks">
<div data-role="collapsible-set">
<t t-foreach="notebooks.children" t-as="page">
<t t-if="page.attrs.invisible">
<div style="display:none;" data-collapsed="true" data-role="collapsible">
<h3>
<t t-esc="page.attrs.string"></t>
</h3>
<p></p>
</div>
</t>
<t t-if="!page.attrs.invisible">
<div data-collapsed="true" data-role="collapsible">
<h3>
<t t-esc="page.attrs.string"></t>
</h3>
</div>
</t>
</t>
</div>
</t>-->
</form>
</div>
</t>
<t t-name="FormView">
<t t-call="Header" />
<t t-if="temp_flag">
<t t-call="Header" />
</t>
<div data-role="content">
<form>
<t t-foreach="get_fields" t-as="field">
@@ -243,7 +382,7 @@
<t t-if="fields[field.attrs.name].type == 'one2many'">
<ul data-role="listview" data-inset="true" data-theme="d">
<li data-theme="c">
<a href="#">
<a href="">
<t t-esc="til"/>
</a>
</li>
@@ -255,17 +394,19 @@
<div data-role="collapsible-set">
<t t-foreach="notebooks.children" t-as="page">
<t t-if="page.attrs.invisible">
<div style="display:none;" data-collapsed="true" data-role="collapsible">
<div style="display:none;" data-collapsed="true" data-role="collapsible" t-att-id="page.attrs.string">
<h3>
<t t-esc="page.attrs.string"></t>
</h3>
<p></p>
</div>
</t>
<t t-if="!page.attrs.invisible">
<div data-collapsed="true" data-role="collapsible">
<div data-collapsed="true" data-role="collapsible" t-att-id="page.attrs.string">
<h3>
<t t-esc="page.attrs.string"></t>
</h3>
<p></p>
</div>
</t>
</t>
@@ -273,6 +414,8 @@
</t>
</form>
</div>
<t t-if="temp_flag">
<t t-call="Footer" />
</t>
</t>
</templates>