[IMP] Display Formview by click on list.
bzr revid: jra@tinyerp.com-20110705052728-edz25px2mdbnaus2
This commit is contained in:
parent
e06a526385
commit
d96d6acd57
|
@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in New Issue