[FIX] web: remove some memory leak
This commit is contained in:
@@ -1758,7 +1758,8 @@ var JournalDashboardGraph = AbstractField.extend({
|
||||
this.data = JSON.parse(this.value);
|
||||
},
|
||||
start: function () {
|
||||
nv.utils.windowResize(this._onResize.bind(this));
|
||||
this._onResize = this._onResize.bind(this);
|
||||
nv.utils.windowResize(this._onResize);
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
destroy: function () {
|
||||
|
||||
@@ -1072,6 +1072,11 @@ var FieldMany2ManyBinaryMultiFiles = AbstractField.extend({
|
||||
this._generatedMetadata();
|
||||
},
|
||||
|
||||
destroy: function () {
|
||||
this._super();
|
||||
$(window).off(this.fileupload_id);
|
||||
},
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Private
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
@@ -17,6 +17,10 @@ var QWeb = core.qweb;
|
||||
* @type {*}
|
||||
*/
|
||||
var QuickCreate = Dialog.extend({
|
||||
events: _.extend({}, Dialog.events, {
|
||||
'keyup input': '_onkeyup',
|
||||
}),
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {Widget} parent
|
||||
@@ -32,7 +36,6 @@ var QuickCreate = Dialog.extend({
|
||||
// Can hold data pre-set from where you clicked on agenda
|
||||
this.dataTemplate = dataTemplate || {};
|
||||
this.dataCalendar = dataCalendar;
|
||||
this.$input = $();
|
||||
|
||||
var self = this;
|
||||
this._super(parent, {
|
||||
@@ -46,7 +49,7 @@ var QuickCreate = Dialog.extend({
|
||||
}},
|
||||
{text: _t("Edit"), click: function () {
|
||||
dataCalendar.disableQuickCreate = true;
|
||||
dataCalendar.title = self.$input.val().trim();
|
||||
dataCalendar.title = self.$('input').val().trim();
|
||||
dataCalendar.on_save = self.destroy.bind(self);
|
||||
self.trigger_up('openCreate', dataCalendar);
|
||||
}},
|
||||
@@ -55,37 +58,13 @@ var QuickCreate = Dialog.extend({
|
||||
$content: QWeb.render('CalendarView.quick_create', {widged: this})
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @override
|
||||
* @returns {Deferred}
|
||||
*/
|
||||
start: function () {
|
||||
var self = this;
|
||||
|
||||
if (this.options.disableQuickCreate) {
|
||||
this.slow_create();
|
||||
return;
|
||||
}
|
||||
this.$input = this.$('input').keyup(function enterHandler (e) {
|
||||
if(e.keyCode === $.ui.keyCode.ENTER) {
|
||||
self.$input.off('keyup', enterHandler);
|
||||
if (!self._quickAdd(self.dataCalendar)){
|
||||
self.$input.on('keyup', enterHandler);
|
||||
}
|
||||
} else if (e.keyCode === $.ui.keyCode.ESCAPE && self._buttons) {
|
||||
self.close();
|
||||
}
|
||||
});
|
||||
|
||||
return this._super();
|
||||
},
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Public
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
focus: function () {
|
||||
this.$input.focus();
|
||||
this.$('input').focus();
|
||||
},
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@@ -110,10 +89,27 @@ var QuickCreate = Dialog.extend({
|
||||
*/
|
||||
_quickAdd: function (dataCalendar) {
|
||||
dataCalendar = $.extend({}, this.dataTemplate, dataCalendar);
|
||||
var val = this.$input.val().trim();
|
||||
var val = this.$('input').val().trim();
|
||||
dataCalendar.title = val;
|
||||
return (val)? this.trigger_up('quickCreate', {data: dataCalendar, options: this.options}) : false;
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
* @param {keyEvent} event
|
||||
*/
|
||||
_onkeyup: function (event) {
|
||||
if (this._flagEnter) {
|
||||
return;
|
||||
}
|
||||
if(event.keyCode === $.ui.keyCode.ENTER) {
|
||||
this._flagEnter = true;
|
||||
if (!this._quickAdd(this.dataCalendar)){
|
||||
this._flagEnter = false;
|
||||
}
|
||||
} else if (event.keyCode === $.ui.keyCode.ESCAPE && this._buttons) {
|
||||
this.close();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return QuickCreate;
|
||||
|
||||
@@ -724,6 +724,8 @@ var FormRenderer = BasicRenderer.extend({
|
||||
|
||||
return $.when.apply($, defs).then(function () {
|
||||
self._updateView($form.contents());
|
||||
}, function () {
|
||||
$form.remove();
|
||||
});
|
||||
},
|
||||
/**
|
||||
|
||||
@@ -30,7 +30,7 @@ var GraphController = AbstractController.extend({
|
||||
destroy: function () {
|
||||
if (this.$buttons) {
|
||||
// remove jquery's tooltip() handlers
|
||||
this.$buttons.find('button').off();
|
||||
this.$buttons.find('button').off().tooltip('destroy');
|
||||
}
|
||||
this._super.apply(this, arguments);
|
||||
},
|
||||
|
||||
@@ -7,6 +7,9 @@ var field_utils = require('web.field_utils');
|
||||
var PivotRenderer = AbstractRenderer.extend({
|
||||
tagName: 'table',
|
||||
className: 'table-hover table-condensed table-bordered',
|
||||
events: _.extend({}, AbstractRenderer.prototype.events, {
|
||||
'hover td': '_onTdHover',
|
||||
}),
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Private
|
||||
@@ -34,9 +37,6 @@ var PivotRenderer = AbstractRenderer.extend({
|
||||
}
|
||||
this._renderHeaders($thead, this.state.headers);
|
||||
this._renderRows($tbody, this.state.rows);
|
||||
$table.on('hover', 'td', function () {
|
||||
$table.find('col:eq(' + $(this).index()+')').toggleClass('hover');
|
||||
});
|
||||
// todo: make sure the next line does something
|
||||
$table.find('.o_pivot_header_cell_opened,.o_pivot_header_cell_closed').tooltip();
|
||||
this.$el.html($table.contents());
|
||||
@@ -139,6 +139,19 @@ var PivotRenderer = AbstractRenderer.extend({
|
||||
}
|
||||
},
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Handlers
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param {MouseEvent} event
|
||||
*/
|
||||
_onTdHover: function (event) {
|
||||
var $td = $(event.target);
|
||||
$td.closest('table').find('col:eq(' + $td.index()+')').toggleClass('hover');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return PivotRenderer;
|
||||
|
||||
Reference in New Issue
Block a user