[IMP] Display Formview by click on list.

bzr revid: jra@tinyerp.com-20110705052728-edz25px2mdbnaus2
This commit is contained in:
Jiten Rangwala (OpenERP) 2011-07-05 10:57:28 +05:30
parent e06a526385
commit d96d6acd57
3 changed files with 187 additions and 12 deletions

View File

@ -83,18 +83,51 @@ openerp.web_mobile.ListView = openerp.base.Controller.extend({
on_menu_action_loaded: function(data) {
var self = this;
if (data.action.length) {
var action = data.action[0][2];
self.on_action(action);
this.action = data.action[0][2];
this.dataset = (new openerp.base.DataSetSearch(this.session, this.action.res_model, null, null))
this.dataset.read_slice(false, false, false, function(result){
self.$element.html(QWeb.render("ListView", {'records' : result}));
self.$element.find("a#list-id").click(self.on_list_click);
});
}
},
on_action: function(action) {
on_list_click: function(ev) {
$record = $(ev.currentTarget);
var self = this;
var view_id = action.views[0][0];
(new openerp.base.DataSetSearch(this.session, action.res_model, null, null))
.read_slice(false, false, false, function(result){
this.listview = new openerp.web_mobile.ListView(this.session, "oe_app");
self.$element.html(QWeb.render("ListView", {'records' : result}));
});
id = $record.data('id');
model = this.action.res_model;
view_id = this.action.views[1][0];
this.dataset.read_slice(false, false, false, function(result){
for (var i = 0; i < result.length; i++) {
if (result[i].id == id) {
var data = result[i];
}
}
self.rpc("/base/formview/load", {"model": model, "view_id": view_id },
function(result){
var view_fields = result.fields_view.arch.children;
get_fields = self.filter_fields(view_fields);
for (var j = 0; j < view_fields.length; j++) {
if (view_fields[j].tag == 'notebook') {
var notebooks = view_fields[j];
}
}
jQuery("#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' : result.fields_view.fields, 'values' : data}));
});
});
},
filter_fields: function(view_fields, fields) {
this.fields = fields || [];
for (var i=0; i < view_fields.length; i++){
if (view_fields[i].tag == 'field') {
this.fields.push(view_fields[i]);
}
if (view_fields[i].tag == 'group') {
this.filter_fields(view_fields[i].children, this.fields);
}
}
return this.fields;
}
});

View File

@ -2,11 +2,12 @@
<html style="height: 100%">
<head>
<meta charset="utf-8" />
<title>Login Page OpenERP mobile</title>
<title>OpenERP Web Mobile</title>
<link rel="stylesheet" href="/web_mobile/static/lib/jquery_mobile/css/jquery.mobile-1.0a4.1.css" />
<script type="text/javascript" src="/base/static/lib/LABjs/LAB.js"></script>
<script type="text/javascript" src="/base/static/lib/jquery/jquery-1.5.2.js"></script>
<script type="text/javascript" src="/web_mobile/static/lib/jquery_mobile/js/jquery.mobile-1.0a4.1.js"></script>
<script type="text/javascript" src="/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.js"></script>
<script type="text/javascript" src="/base/static/lib/underscore/underscore.js"></script>

View File

@ -67,11 +67,11 @@
<t t-name="ListView">
<div role="main" class="ui-content" data-role="content">
<ul data-role="listview" class="ui-listview">
<ul role="listbox" data-role="listview" class="ui-listview" data-filter="true">
<li data-theme="c" class="ui-btn ui-btn-icon-right ui-li ui-btn-up-c" t-foreach="records" t-as="record">
<div class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a href="#" class="ui-link-inherit">
<a id="list-id" t-att-data-id="record.id" href="#" class="ui-link-inherit">
<span><t t-esc="record.name"/></span>
</a>
</div>
@ -82,6 +82,147 @@
</div>
</t>
<t t-name="FormView">
<div role="main" class="ui-content" data-role="content">
<form>
<t t-foreach="get_fields" t-as="field">
<div data-role="fieldcontain">
<label class="ui-input-text">
<span><t t-esc="fields[field.attrs.name].string"></t></span>:
</label>
<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/>
</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 == 'boolean'">
<t t-if="values[field.attrs.name]">
<input type="checkbox" checked="yes"/><br/>
</t>
<t t-if="!(values[field.attrs.name])">
<input type="checkbox"/><br/>
</t>
</t>
<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 == '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">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text">
<t t-if="values[field.attrs.name]">
<t t-foreach="fields[field.attrs.name].selection" t-as="opt">
<t t-if="opt[0] == (values[field.attrs.name])">
<t t-esc="opt[1]"/>
</t>
</t>
</t>
</span>
<span class="ui-icon ui-icon-arrow-d ui-icon-shadow"></span>
</span>
<select>
<t t-foreach="fields[field.attrs.name].selection" t-as="opt">
<option t-att-value="opt[0]"><t t-esc="opt[1]"/></option>
</t>
</select>
</div>
</div>
</t>
<t t-if="fields[field.attrs.name].type == 'many2one'">
<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">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text">
<t t-esc="values[field.attrs.name][1]"/>
</span>
<span class="ui-icon ui-icon-arrow-d ui-icon-shadow"></span>
</span>
<select>
</select>
</div>
</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>
</t>
</div>
</t>
<t t-if="notebooks">
<t t-foreach="notebooks.children" t-as="page">
<div class="info ui-collapsible-contain" data-collapsed="true" data-role="collapsible">
<h1 class="ui-collapsible-heading ui-collapsible-heading-collapsed">
<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">
<span class="ui-btn-inner ui-corner-all">
<span class="ui-btn-text">
<t t-esc="page.attrs.string"></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>
</h1>
<div class="ui-collapsible-content ui-collapsible-content-collapsed" aria-hidden="true">
<div class="detail">
</div>
</div>
</div>
</t>
</t>
</form>
</div>
</t>
<t t-name="Shortcuts">
<ul data-dividertheme="b" data-theme="c" data-inset="true" data-role="listview" class="ui-listview ui-listview-inset ui-corner-all ui-shadow">
<li data-role="list-divider" role="heading" class="ui-li ui-li-divider ui-btn ui-bar-b ui-corner-top ui-btn-up-undefined">