[imp] refactoring to allow easy usage of embedded view in any view

bzr revid: nicolas.vanhoren@openerp.com-20120405160315-vn2gawdesxuy53b3
This commit is contained in:
niv-openerp 2012-04-05 18:03:15 +02:00
parent 3d01d57c06
commit 9834565c65
7 changed files with 41 additions and 46 deletions

View File

@ -14,6 +14,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
readonly : false,
form_template: "FormView",
display_name: _lt('Form'),
view_type: "form",
/**
* @constructs openerp.web.FormView
* @extends openerp.web.View
@ -53,27 +54,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
this.on_change_mutex = new $.Mutex();
this.reload_mutex = new $.Mutex();
},
start: function() {
this._super();
return this.init_view();
},
init_view: function() {
if (this.embedded_view) {
var def = $.Deferred().then(this.on_loaded);
var self = this;
$.async_when().then(function() {def.resolve(self.embedded_view);});
return def.promise();
} else {
var context = new openerp.web.CompoundContext(this.dataset.get_context());
return this.rpc("/web/view/load", {
"model": this.model,
"view_id": this.view_id,
"view_type": "form",
toolbar: this.options.sidebar,
context: context
}, this.on_loaded);
}
},
destroy: function() {
if (this.sidebar) {
this.sidebar.attachments.destroy();
@ -134,6 +114,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
}]);
}
this.has_been_loaded.resolve();
return $.when();
},
do_load_state: function(state, warm) {

View File

@ -136,7 +136,6 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
* @returns {$.Deferred} loading promise
*/
start: function() {
this._super();
this.$element.addClass('oe-listview');
return this.reload_view(null, null, true);
},

View File

@ -39,7 +39,6 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView#
},
start: function () {
this._super();
return this.rpc("/web/treeview/load", {
model: this.model,
view_id: this.view_id,

View File

@ -1080,12 +1080,43 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
template: "EmptyComponent",
// name displayed in view switchers
display_name: '',
/**
* Define a view type for each view to allow automatic call to fields_view_get.
*/
view_type: undefined,
init: function(parent, dataset, view_id, options) {
this._super(parent);
this.dataset = dataset;
this.view_id = view_id;
this.set_default_options(options);
},
start: function() {
return this.load_view();
},
load_view: function() {
if (this.embedded_view) {
var def = $.Deferred().pipe(this.on_loaded);
var self = this;
$.async_when().then(function() {def.resolve(self.embedded_view);});
return def.promise();
} else {
var context = new session.web.CompoundContext(this.dataset.get_context());
if (! this.view_type)
console.warn("view_type is not defined");
return this.rpc("/web/view/load", {
"model": this.dataset.model,
"view_id": this.view_id,
"view_type": this.view_type,
toolbar: this.options.sidebar,
context: context
}).pipe(this.on_loaded);
}
},
/**
* Called after a successful call to fields_view_get.
* Must return a promise.
*/
on_loaded: function(fields_view_get) {},
set_default_options: function(options) {
this.options = options || {};
_.defaults(this.options, {

View File

@ -22,7 +22,6 @@ openerp.web.DiagramView = openerp.web.View.extend({
this.ids = this.dataset.ids;
},
start: function() {
this._super();
return this.rpc("/web_diagram/diagram/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded);
},

View File

@ -17,6 +17,7 @@ var QWeb = openerp.web.qweb,
openerp.web.views.add('graph', 'openerp.web_graph.GraphView');
openerp.web_graph.GraphView = openerp.web.View.extend({
display_name: _lt('Graph'),
view_type: "graph",
init: function(parent, dataset, view_id, options) {
this._super(parent);
@ -39,27 +40,13 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
}
this._super();
},
start: function() {
on_loaded: function(fields_view_get) {
var self = this;
this._super();
var loaded;
if (this.embedded_view) {
loaded = $.when([self.embedded_view]);
} else {
loaded = this.rpc('/web/view/load', {
model: this.dataset.model,
view_id: this.view_id,
view_type: 'graph'
});
}
return $.when(
this.dataset.call_and_eval('fields_get', [false, {}], null, 1),
loaded)
.then(function (fields_result, view_result) {
self.fields = fields_result[0];
self.fields_view = view_result[0];
self.on_loaded(self.fields_view);
});
self.fields_view = fields_view_get;
return this.dataset.call_and_eval('fields_get', [false, {}], null, 1).pipe(function(fields_result) {
self.fields = fields_result;
return self.on_loaded_2();
});
},
/**
* Returns all object fields involved in the graph view
@ -72,7 +59,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({
}
return fs;
},
on_loaded: function() {
on_loaded_2: function() {
this.chart = this.fields_view.arch.attrs.type || 'pie';
this.orientation = this.fields_view.arch.attrs.orientation || 'vertical';

View File

@ -35,7 +35,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
this.limit = options.limit || 80;
},
start: function() {
this._super();
this.$element.find('button.oe_kanban_button_new').click(this.do_add_record);
this.$groups = this.$element.find('.oe_kanban_groups tr');
var context = new openerp.web.CompoundContext(this.dataset.get_context());