mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[MIG] web_timeline: Migration to 13.0
This commit is contained in:
committed by
CarlosRoca13
parent
f424a79c97
commit
1e21541b8f
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user