[imp] refactoring to improve the way the components are destroyed

bzr revid: nicolas.vanhoren@openerp.com-20110928151613-8suxvi1rzn9t40gd
This commit is contained in:
niv-openerp 2011-09-28 17:16:13 +02:00
parent ebd8ca5df5
commit e43790f7f2
7 changed files with 15 additions and 22 deletions

View File

@ -129,6 +129,7 @@ openerp.web.Dialog = openerp.web.OldWidget.extend(/** @lends openerp.web.Dialog#
// Destroy widget // Destroy widget
this.close(); this.close();
this.$dialog.dialog('destroy'); this.$dialog.dialog('destroy');
this._super();
} }
}); });
@ -253,7 +254,7 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database
.removeClass("database_block") .removeClass("database_block")
.end() .end()
.empty(); .empty();
this._super();
}, },
/** /**
* Converts a .serializeArray() result into a dict. Does not bother folding * Converts a .serializeArray() result into a dict. Does not bother folding

View File

@ -233,6 +233,7 @@ openerp.web.StaticDataGroup = openerp.web.GrouplessDataGroup.extend( /** @lends
}); });
openerp.web.DataSet = openerp.web.Widget.extend( /** @lends openerp.web.DataSet# */{ openerp.web.DataSet = openerp.web.Widget.extend( /** @lends openerp.web.DataSet# */{
identifier_prefix: "dataset",
/** /**
* DateaManagement interface between views and the collection of selected * DateaManagement interface between views and the collection of selected
* OpenERP records (represents the view's state?) * OpenERP records (represents the view's state?)
@ -242,16 +243,12 @@ openerp.web.DataSet = openerp.web.Widget.extend( /** @lends openerp.web.DataSet
* *
* @param {String} model the OpenERP model this dataset will manage * @param {String} model the OpenERP model this dataset will manage
*/ */
init: function(source_controller, model, context) { init: function(parent, model, context) {
// we don't want the dataset to be a child of anything! this._super(parent);
this._super(null);
this.session = source_controller ? source_controller.session : undefined;
this.model = model; this.model = model;
this.context = context || {}; this.context = context || {};
this.index = null; this.index = null;
}, },
start: function() {
},
previous: function () { previous: function () {
this.index -= 1; this.index -= 1;
if (this.index < 0) { if (this.index < 0) {
@ -549,13 +546,11 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D
sort: this.sort(), sort: this.sort(),
offset: offset, offset: offset,
limit: options.limit || false limit: options.limit || false
}, function (result) { }).pipe(function (result) {
self.ids = result.ids; self.ids = result.ids;
self.offset = offset; self.offset = offset;
if (callback) { return result.records;
callback(result.records); }).then(callback);
}
});
}, },
get_domain: function (other_domain) { get_domain: function (other_domain) {
if (other_domain) { if (other_domain) {

View File

@ -72,6 +72,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
_.each(this.widgets, function(w) { _.each(this.widgets, function(w) {
w.stop(); w.stop();
}); });
this._super();
}, },
on_loaded: function(data) { on_loaded: function(data) {
var self = this; var self = this;
@ -656,11 +657,6 @@ openerp.web.form.Widget = openerp.web.Widget.extend(/** @lends openerp.web.form.
start: function() { start: function() {
this.$element = $('#' + this.element_id); this.$element = $('#' + this.element_id);
}, },
stop: function() {
if (this.$element) {
this.$element.remove();
}
},
process_modifiers: function() { process_modifiers: function() {
var compute_domain = openerp.web.form.compute_domain; var compute_domain = openerp.web.form.compute_domain;
for (var a in this.modifiers) { for (var a in this.modifiers) {

View File

@ -163,7 +163,7 @@ db.web.ViewManager = db.web.Widget.extend(/** @lends db.web.ViewManager# */{
*/ */
init: function(parent, dataset, views) { init: function(parent, dataset, views) {
this._super(parent); this._super(parent);
this.model = dataset.model; this.model = dataset ? dataset.model : undefined;
this.dataset = dataset; this.dataset = dataset;
this.searchview = null; this.searchview = null;
this.active_view = null; this.active_view = null;
@ -184,7 +184,6 @@ db.web.ViewManager = db.web.Widget.extend(/** @lends db.web.ViewManager# */{
start: function() { start: function() {
this._super(); this._super();
var self = this; var self = this;
this.dataset.start();
this.$element.find('.oe_vm_switch button').click(function() { this.$element.find('.oe_vm_switch button').click(function() {
self.on_mode_switch($(this).data('view-type')); self.on_mode_switch($(this).data('view-type'));
}); });
@ -332,6 +331,7 @@ db.web.ViewManagerAction = db.web.ViewManager.extend(/** @lends oepnerp.web.View
// dataset initialization will take the session from ``this``, so if we // dataset initialization will take the session from ``this``, so if we
// do not have it yet (and we don't, because we've not called our own // do not have it yet (and we don't, because we've not called our own
// ``_super()``) rpc requests will blow up. // ``_super()``) rpc requests will blow up.
this._super(parent, null, action.views);
this.session = parent.session; this.session = parent.session;
this.action = action; this.action = action;
var dataset = new db.web.DataSetSearch(this, action.res_model, action.context, action.domain); var dataset = new db.web.DataSetSearch(this, action.res_model, action.context, action.domain);
@ -339,7 +339,7 @@ db.web.ViewManagerAction = db.web.ViewManager.extend(/** @lends oepnerp.web.View
dataset.ids.push(action.res_id); dataset.ids.push(action.res_id);
dataset.index = 0; dataset.index = 0;
} }
this._super(parent, dataset, action.views); this.dataset = dataset;
this.flags = this.action.flags || {}; this.flags = this.action.flags || {};
if (action.res_model == 'board.board' && action.views.length == 1 && action.views) { if (action.res_model == 'board.board' && action.views.length == 1 && action.views) {
// Not elegant but allows to avoid form chrome (pager, save/new // Not elegant but allows to avoid form chrome (pager, save/new

View File

@ -35,6 +35,7 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({
}, },
stop: function() { stop: function() {
scheduler.clearAll(); scheduler.clearAll();
this._super();
}, },
on_loaded: function(data) { on_loaded: function(data) {
this.fields_view = data; this.fields_view = data;

View File

@ -301,7 +301,7 @@ openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({
.then(this.on_records_loaded); .then(this.on_records_loaded);
}, },
on_records_loaded: function (read_response, progress_response) { on_records_loaded: function (read_response, progress_response) {
var records = read_response[0].records, var records = read_response,
progress = progress_response[0]; progress = progress_response[0];
var grouped_todos = _(records).chain() var grouped_todos = _(records).chain()

View File

@ -3,7 +3,7 @@
"version": "2.0", "version": "2.0",
"depends": ['web'], "depends": ['web'],
"js": [ "js": [
"static/lib/dhtmlxGraph/codebase/dhtmlxchart.js", "static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js",
"static/src/js/graph.js"], "static/src/js/graph.js"],
"css": ["static/lib/dhtmlxGraph/codebase/dhtmlxchart.css"], "css": ["static/lib/dhtmlxGraph/codebase/dhtmlxchart.css"],
"active": True "active": True