[MIG] web_timeline: Migration to 13.0

This commit is contained in:
Thong Nguyen Van
2019-12-30 21:21:46 +07:00
committed by CarlosRoca13
parent f424a79c97
commit 1e21541b8f
20 changed files with 279 additions and 280 deletions

View File

@@ -19,7 +19,6 @@ odoo.define('web_timeline.TimelineController', function (require) {
}),
/**
* @constructor
* @override
*/
init: function (parent, model, renderer, params) {
@@ -38,11 +37,11 @@ odoo.define('web_timeline.TimelineController', function (require) {
*/
update: function (params, options) {
var res = this._super.apply(this, arguments);
if (_.isEmpty(params)){
if (_.isEmpty(params)) {
return res;
}
var defaults = _.defaults({}, options, {
adjust_window: true
adjust_window: true,
});
var self = this;
var domains = params.domain;
@@ -50,14 +49,11 @@ odoo.define('web_timeline.TimelineController', function (require) {
var group_bys = params.groupBy;
this.last_domains = domains;
this.last_contexts = contexts;
// select the group by
var n_group_bys = [];
if (this.renderer.arch.attrs.default_group_by) {
// Select the group by
var n_group_bys = group_bys;
if (!n_group_bys.length && this.renderer.arch.attrs.default_group_by) {
n_group_bys = this.renderer.arch.attrs.default_group_by.split(',');
}
if (group_bys.length) {
n_group_bys = group_bys;
}
this.renderer.last_group_bys = n_group_bys;
this.renderer.last_domains = domains;
@@ -83,6 +79,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
* Gets triggered when a group in the timeline is clicked (by the TimelineRenderer).
*
* @private
* @param {EventObject} event
* @returns {jQuery.Deferred}
*/
_onGroupClick: function (event) {
@@ -92,7 +89,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
res_model: this.renderer.view.fields[groupField].relation,
res_id: event.data.item.group,
target: 'new',
views: [[false, 'form']]
views: [[false, 'form']],
});
},
@@ -100,18 +97,19 @@ odoo.define('web_timeline.TimelineController', function (require) {
* Opens a form view of a clicked timeline item (triggered by the TimelineRenderer).
*
* @private
* @param {EventObject} event
*/
_onUpdate: function (event) {
var self = this;
this.renderer = event.data.renderer;
var rights = event.data.rights;
var item = event.data.item;
var id = item.evt.id;
var id = Number(item.evt.id) || item.evt.id;
var title = item.evt.__name;
if (this.open_popup_action) {
new dialogs.FormViewDialog(this, {
res_model: this.model.modelName,
res_id: parseInt(id, 10).toString() === id ? parseInt(id, 10) : id,
res_id: id,
context: this.getSession().user_context,
title: title,
view_id: Number(this.open_popup_action),
@@ -126,7 +124,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
}
this.trigger_up('switch_view', {
view_type: 'form',
res_id: parseInt(id, 10).toString() === id ? parseInt(id, 10) : id,
res_id: id,
mode: mode,
model: this.model.modelName,
});
@@ -137,6 +135,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
* Gets triggered when a timeline item is moved (triggered by the TimelineRenderer).
*
* @private
* @param {EventObject} event
*/
_onMove: function (event) {
var item = event.data.item;
@@ -149,7 +148,8 @@ odoo.define('web_timeline.TimelineController', function (require) {
group = item.group;
}
var data = {};
// In case of a move event, the date_delay stay the same, only date_start and stop must be updated
// In case of a move event, the date_delay stay the same,
// only date_start and stop must be updated
data[this.date_start] = time.auto_date_to_str(event_start, fields[this.date_start].type);
if (this.date_stop) {
// In case of instantaneous event, item.end is not defined
@@ -170,7 +170,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
this.moveQueue.push({
id: event.data.item.id,
data: data,
event: event
event: event,
});
this.debouncedInternalMove();
@@ -184,10 +184,10 @@ odoo.define('web_timeline.TimelineController', function (require) {
*/
internalMove: function () {
var self = this;
var queue = this.moveQueue.slice();
var queues = this.moveQueue.slice();
this.moveQueue = [];
var defers = [];
_.each(queue, function(item) {
for (const item of queues) {
defers.push(self._rpc({
model: self.model.modelName,
method: 'write',
@@ -196,13 +196,13 @@ odoo.define('web_timeline.TimelineController', function (require) {
item.data,
],
context: self.getSession().user_context,
}).then(function() {
}).then(function () {
item.event.data.callback(item.event.data.item);
}));
});
return $.when.apply($, defers).done(function() {
}
return $.when.apply($, defers).done(function () {
self.write_completed({
adjust_window: false
adjust_window: false,
});
});
},
@@ -212,51 +212,30 @@ odoo.define('web_timeline.TimelineController', function (require) {
* Requires user confirmation before it gets actually deleted.
*
* @private
* @param {EventObject} event
* @returns {jQuery.Deferred}
*/
_onRemove: function (e) {
_onRemove: function (event) {
var self = this;
function do_it(event) {
return self._rpc({
model: self.model.modelName,
method: 'unlink',
args: [
[event.data.item.id],
],
context: self.getSession().user_context,
}).then(function () {
var unlink_index = false;
for (var i = 0; i < self.model.data.data.length; i++) {
if (self.model.data.data[i].id === event.data.item.id) {
unlink_index = i;
}
}
if (!isNaN(unlink_index)) {
self.model.data.data.splice(unlink_index, 1);
}
event.data.callback(event.data.item);
});
}
var message = _t("Are you sure you want to delete this record?");
var def = $.Deferred();
Dialog.confirm(this, message, {
Dialog.confirm(this, _t("Are you sure you want to delete this record?"), {
title: _t("Warning"),
confirm_callback: function() {
do_it(e)
.done(def.resolve.bind(def, true))
.fail(def.reject.bind(def));
confirm_callback: function () {
self.remove_completed(event).then(def.resolve.bind(def));
},
cancel_callback: def.resolve.bind(def),
});
return def.promise();
return def;
},
/**
* Triggered when a timeline item gets added and opens a form view.
*
* @private
* @param {EventObject} event
* @returns {dialogs.FormViewDialog}
*/
_onAdd: function (event) {
var self = this;
@@ -300,6 +279,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
* Triggered upon completion of a new record.
* Updates the timeline view with the new record.
*
* @param {RecordId} id
* @returns {jQuery.Deferred}
*/
create_completed: function (id) {
@@ -312,8 +292,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
this.model.fieldNames,
],
context: this.context,
})
.then(function (records) {
}).then(function (records) {
var new_event = self.renderer.event_data_transform(records[0]);
var items = self.renderer.timeline.itemsData;
items.add(new_event);
@@ -324,6 +303,7 @@ odoo.define('web_timeline.TimelineController', function (require) {
/**
* Triggered upon completion of writing a record.
* @param {ControllerOptions} options
*/
write_completed: function (options) {
var params = {
@@ -331,9 +311,34 @@ odoo.define('web_timeline.TimelineController', function (require) {
context: this.context,
groupBy: this.renderer.last_group_bys,
};
this.update(params, options);
},
/**
* Triggered upon confirm of removing a record.
* @param {EventObject} event
* @returns {jQuery.Deferred}
*/
remove_completed: function (event) {
var self = this;
return self._rpc({
model: self.modelName,
method: 'unlink',
args: [[event.data.item.id]],
context: self.getSession().user_context,
}).then(function () {
var unlink_index = false;
for (var i = 0; i < self.model.data.data.length; i++) {
if (self.model.data.data[i].id === event.data.item.id) {
unlink_index = i;
}
}
if (!isNaN(unlink_index)) {
self.model.data.data.splice(unlink_index, 1);
}
event.data.callback(event.data.item);
});
},
});
return TimelineController;