summaryrefslogtreecommitdiff
path: root/addons/hr_attendance/static/src/js/kiosk_confirm.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/hr_attendance/static/src/js/kiosk_confirm.js')
-rw-r--r--addons/hr_attendance/static/src/js/kiosk_confirm.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/addons/hr_attendance/static/src/js/kiosk_confirm.js b/addons/hr_attendance/static/src/js/kiosk_confirm.js
new file mode 100644
index 00000000..8262b24c
--- /dev/null
+++ b/addons/hr_attendance/static/src/js/kiosk_confirm.js
@@ -0,0 +1,94 @@
+odoo.define('hr_attendance.kiosk_confirm', function (require) {
+"use strict";
+
+var AbstractAction = require('web.AbstractAction');
+var core = require('web.core');
+var field_utils = require('web.field_utils');
+var QWeb = core.qweb;
+
+
+var KioskConfirm = AbstractAction.extend({
+ events: {
+ "click .o_hr_attendance_back_button": function () { this.do_action(this.next_action, {clear_breadcrumbs: true}); },
+ "click .o_hr_attendance_sign_in_out_icon": _.debounce(function () {
+ var self = this;
+ this._rpc({
+ model: 'hr.employee',
+ method: 'attendance_manual',
+ args: [[this.employee_id], this.next_action],
+ })
+ .then(function(result) {
+ if (result.action) {
+ self.do_action(result.action);
+ } else if (result.warning) {
+ self.do_warn(result.warning);
+ }
+ });
+ }, 200, true),
+ 'click .o_hr_attendance_pin_pad_button_0': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 0); },
+ 'click .o_hr_attendance_pin_pad_button_1': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 1); },
+ 'click .o_hr_attendance_pin_pad_button_2': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 2); },
+ 'click .o_hr_attendance_pin_pad_button_3': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 3); },
+ 'click .o_hr_attendance_pin_pad_button_4': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 4); },
+ 'click .o_hr_attendance_pin_pad_button_5': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 5); },
+ 'click .o_hr_attendance_pin_pad_button_6': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 6); },
+ 'click .o_hr_attendance_pin_pad_button_7': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 7); },
+ 'click .o_hr_attendance_pin_pad_button_8': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 8); },
+ 'click .o_hr_attendance_pin_pad_button_9': function() { this.$('.o_hr_attendance_PINbox').val(this.$('.o_hr_attendance_PINbox').val() + 9); },
+ 'click .o_hr_attendance_pin_pad_button_C': function() { this.$('.o_hr_attendance_PINbox').val(''); },
+ 'click .o_hr_attendance_pin_pad_button_ok': _.debounce(function() {
+ var self = this;
+ this.$('.o_hr_attendance_pin_pad_button_ok').attr("disabled", "disabled");
+ this._rpc({
+ model: 'hr.employee',
+ method: 'attendance_manual',
+ args: [[this.employee_id], this.next_action, this.$('.o_hr_attendance_PINbox').val()],
+ })
+ .then(function(result) {
+ if (result.action) {
+ self.do_action(result.action);
+ } else if (result.warning) {
+ self.do_warn(result.warning);
+ self.$('.o_hr_attendance_PINbox').val('');
+ setTimeout( function() { self.$('.o_hr_attendance_pin_pad_button_ok').removeAttr("disabled"); }, 500);
+ }
+ });
+ }, 200, true),
+ },
+
+ init: function (parent, action) {
+ this._super.apply(this, arguments);
+ this.next_action = 'hr_attendance.hr_attendance_action_kiosk_mode';
+ this.employee_id = action.employee_id;
+ this.employee_name = action.employee_name;
+ this.employee_state = action.employee_state;
+ this.employee_hours_today = field_utils.format.float_time(action.employee_hours_today);
+ },
+
+ start: function () {
+ var self = this;
+ this.getSession().user_has_group('hr_attendance.group_hr_attendance_use_pin').then(function(has_group){
+ self.use_pin = has_group;
+ self.$el.html(QWeb.render("HrAttendanceKioskConfirm", {widget: self}));
+ self.start_clock();
+ });
+ return self._super.apply(this, arguments);
+ },
+
+ start_clock: function () {
+ this.clock_start = setInterval(function() {this.$(".o_hr_attendance_clock").text(new Date().toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit', second:'2-digit'}));}, 500);
+ // First clock refresh before interval to avoid delay
+ this.$(".o_hr_attendance_clock").show().text(new Date().toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit', second:'2-digit'}));
+ },
+
+ destroy: function () {
+ clearInterval(this.clock_start);
+ this._super.apply(this, arguments);
+ },
+});
+
+core.action_registry.add('hr_attendance_kiosk_confirm', KioskConfirm);
+
+return KioskConfirm;
+
+});