[FIX] timer, hr_timesheet: Fix _compute_display_timer_buttons
mixin method should not return in the middle of the loop Use the value updated on the record instead super() is called with self at every iteration which is not very efficient and can be wrong Solution call super for each specific record and only when needed write is not a good practice in compute method X-original-commit: 7e19ed98d18305370b5c14edd3d310cfea5df714
This commit is contained in:
committed by
jbm-odoo
parent
d6a23144d5
commit
7f83e0286e
@@ -1,79 +0,0 @@
|
||||
odoo.define('timer.timer_toggle_button', function (require) {
|
||||
"use strict";
|
||||
|
||||
const fieldRegistry = require('web.field_registry');
|
||||
const { FieldToggleBoolean } = require("web.basic_fields");
|
||||
const { _lt } = require('web.core');
|
||||
|
||||
/**
|
||||
* The TimerToggleButton is used to display correctly the button
|
||||
* to start or stop a timer for a timesheet in kanban, list and grid
|
||||
* views.
|
||||
*/
|
||||
const TimerToggleButton = FieldToggleBoolean.extend({
|
||||
/**
|
||||
* @override
|
||||
* @private
|
||||
*/
|
||||
_render: function () {
|
||||
// When the is_timer_running field is false, then the button is used to start the timer
|
||||
const title = this.value ? _lt('Stop') : _lt('Play');
|
||||
const name = this.value ? 'action_timer_stop' : 'action_timer_start';
|
||||
const label = this.value ? _lt('Stop') : _lt('Start');
|
||||
|
||||
this.$('i')
|
||||
.addClass('fa')
|
||||
.toggleClass('fa-stop-circle o-timer-stop-button', this.value)
|
||||
.toggleClass('fa-play-circle o-timer-play-button', !this.value)
|
||||
.attr('title', title);
|
||||
|
||||
this.$el.addClass('o-timer-button');
|
||||
this.$el.attr('title', title);
|
||||
this.$el.attr('name', name);
|
||||
this.$el.attr('aria-label', label);
|
||||
this.$el.attr('aria-pressed', this.value);
|
||||
this.$el.attr('type', 'button');
|
||||
this.$el.attr('role', 'button');
|
||||
},
|
||||
/**
|
||||
* Toggle the button
|
||||
*
|
||||
* When the user click on this button,
|
||||
* - the action "action_timer_start" is called
|
||||
* into the account.analytic.line model,
|
||||
* if the value of is_timer_running field is set on false.
|
||||
* - the action "action_timer_stop" is called
|
||||
* into the account.analytic.line model,
|
||||
* if the value of is_timer_running field is set on true.
|
||||
* Then we change the value of the is_timer_running.
|
||||
* @override
|
||||
* @private
|
||||
* @param {MouseEvent} event
|
||||
*/
|
||||
_onToggleButton: async function (event) {
|
||||
const context = this.record.getContext();
|
||||
event.stopPropagation();
|
||||
const result = await this._rpc({
|
||||
model: this.model,
|
||||
method: this._getActionButton(),
|
||||
context: context,
|
||||
args: [this.res_id]
|
||||
});
|
||||
|
||||
this.trigger_up('timer_changed', {
|
||||
id: this.res_id,
|
||||
is_timer_running: !this.value
|
||||
});
|
||||
|
||||
this._setValue(!this.value);
|
||||
},
|
||||
_getActionButton: function () {
|
||||
return this.value ? 'action_timer_stop' : 'action_timer_start';
|
||||
}
|
||||
});
|
||||
|
||||
fieldRegistry.add('timer_toggle_button', TimerToggleButton);
|
||||
|
||||
return TimerToggleButton;
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user