Skip to Content
Odoo मेन्यू
  • साइन इन करें
  • मुफ़्त में आज़माएं
  • ऐप्लिकेशन
    फ़ाइनेंस
    • अकाउंटिंग
    • इनवॉइसिंग
    • एक्सपेंस
    • स्प्रेडशीट (बीआई)
    • डॉक्यूमेंट्स
    • साइन
    सेल्स
    • सीआरएम
    • सेल्स
    • पीओएस शॉप
    • पीओएस रेस्टोरेंट
    • सब्सक्रिप्शन
    • रेंटल
    वेबसाइट
    • वेबसाइट बिल्डर
    • ई-कॉमर्स
    • ब्लॉग
    • फ़ोरम
    • लाइव चैट
    • ई-लर्निंग
    सप्लाई चेन
    • इन्वेंट्री
    • मैन्युफ़ैक्चरिंग
    • पीएलएम
    • परचेज़
    • मेंटेनेंस
    • क्वालिटी
    मानव संसाधन
    • कर्मचारी
    • रिक्रूटमेंट
    • टाइम ऑफ़
    • अप्रेज़ल
    • रेफ़रल
    • फ़्लीट
    मार्केटिंग
    • सोशल मार्केटिंग
    • ईमेल मार्केटिंग
    • एसएमएस मार्केटिंग
    • इवेंट
    • मार्केटिंग ऑटोमेशन
    • सर्वे
    सेवाएं
    • प्रोजेक्ट
    • टाइमशीट
    • फ़ील्ड सर्विस
    • हेल्पडेस्क
    • प्लानिंग
    • अपॉइंटमेंट
    प्रॉडक्टिविटी
    • डिस्कस
    • आर्टिफ़िशियल इंटेलिजेंस
    • आईओटी
    • वीओआईपी
    • नॉलेज
    • WhatsApp
    तीसरे पक्ष के ऐप्लिकेशन Odoo स्टूडियो Odoo क्लाउड प्लेटफ़ॉर्म
  • इंडस्ट्री
    रीटेल
    • बुक स्टोर
    • क्लोदिंग स्टोर
    • फ़र्नीचर स्टोर
    • ग्रॉसरी स्टोर
    • हार्डवेयर स्टोर
    • टॉय स्टोर
    फ़ूड & हॉस्पिटैलिटी
    • बार और पब
    • रेस्टोरेंट
    • फ़ास्ट फ़ूड
    • Guest House
    • बेवरिज डिस्ट्रीब्यूटर
    • होटल
    रियल एस्टेट
    • Real Estate Agency
    • आर्किटेक्चर फ़र्म
    • कंसट्रक्शन
    • Property Management
    • गार्ड्निंग
    • प्रॉपर्टी ओनर असोसिएशन
    कंसल्टिंग
    • अकाउंटिंग फ़र्म
    • Odoo पार्टनर
    • मार्केटिंग एजेंसी
    • लॉ फ़र्म
    • टैलेंट ऐक्विज़िशन
    • ऑडिट & सर्टिफ़िकेशन
    मैन्युफ़ैक्चरिंग
    • टेक्सटाइल
    • Metal
    • फ़र्नीचर
    • फ़ूड
    • ब्रुअरी
    • कॉर्पोरेट गिफ़्ट
    हेल्थ & फिटनेस
    • स्पोर्ट्स क्लब
    • आईवियर स्टोर
    • फिटनेस सेंटर
    • वेलनेस प्रैक्टिशनर
    • फॉर्मेसी
    • हेयर सैलून
    Trades
    • Handyman
    • आईटी हॉर्डवेयर और सपोर्ट
    • Solar Energy Systems
    • Shoe Maker
    • साफ-सफाई से जुड़ी सेवाएं
    • HVAC Services
    अन्य
    • Nonprofit Organization
    • एन्वायरमेंटल एजेंसी
    • बिलबोर्ड रेंटल
    • फ़ोटोग्राफी
    • बाइक लीजिंग
    • सॉफ़्टवेयर रीसेलर
    सभी इंडस्ट्री को ब्राउज़ करें
  • कम्यूनिटी
    सीखें
    • ट्यूटोरियल्स
    • दस्तावेज़
    • सर्टिफ़िकेशन
    • ट्रेनिंग
    • ब्लॉग
    • पॉडकास्ट
    शिक्षा को बढ़ावा दें
    • एजुकेशन प्रोग्राम
    • स्केल अप! बिजनेस गेम
    • Odoo के ऑफ़िस में आएं
    सॉफ़्टवेयर पाएं
    • डाउनलोड
    • वर्शन की तुलना करें
    • रिलीज़
    साथ मिलकर काम करें
    • Github
    • फ़ोरम
    • इवेंट
    • अनुवाद
    • पार्टनर बनें
    • Services for Partners
    • अपना अकाउंटिंग फ़र्म रजिस्टर करें
    सेवाएं पाएं
    • पार्टनर ढूंढें
    • अकाउंटेंट खोजें
    • सलाहकार की मदद लें
    • इम्प्लिमेंटेशन सेवाएं
    • कस्टमर रेफ़रेंस
    • सहायता
    • अपग्रेड
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    डेमो देखें
  • कीमत
  • सहायता
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
सहायता

Issue with creating timer widget.

Subscribe

Get notified when there's activity on this post

This question has been flagged
javascriptwidgetcustomOWLodoo16features
3816 डेटा देखने का तरीका
अवतार
Personal, Danish Khalid
I am creating timer widget in my custom module odoo16, the timer widget is okay but i want to do that when we drag the kanban to the other state other then In Progress then timer should be pause but in my case time is clearing the time 00:00:00 like this, please help me to achieve the time pause functionality.

start-timer.js
/** @odoo-module **/
import { registry } from "@web/core/registry" ;
import { useService } from "@web/core/utils/hooks" ;
import { parseFloatTime } from "@web/views/fields/parsers" ;
import { useInputField } from "@web/views/fields/input_field_hook" ;

const { Component, useState, onWillUpdateProps, onWillStart, onWillDestroy } = owl;

function formatMinutes(value) {
if (value === false ) {
return "" ;
}
const isNegative = value < 0 ;
if (isNegative) {
value = Math.abs(value);
}
let hours = Math.floor(value / 60 );
let minutes = Math.round(value % 60 );
let seconds = Math.round((value % 1 ) * 60 );
seconds = `${seconds}`.padStart( 2 , "0" );
minutes = `${minutes}`.padStart( 2 , "0" );
hours = `${hours}`.padStart( 2 , "0" );
return `${isNegative ? "-" : "" }${hours}:${minutes}:${seconds}`;
}

export class StartTimer extends Component {
setup() {
this .orm = useService( 'orm' );
this .state = useState({
// duration is expected to be given in hours
duration:
this .props.value !== undefined ? this .props.value : this .props.record.data.duration,
});
useInputField({
getValue: () => this .durationFormatted,
refName: "numpadDecimal" ,
parse: (v) => parseFloatTime(v),
});

this .ongoing = this .props.record.data.is_user_working;

onWillStart(async () => {
if ( this .props.record.data.is_user_working && this .props.record.resModel === "emp_track.project" ) {
const additionalDuration = await this .orm.call( 'emp_track.project' , 'get_working_duration' , [ this .props.record.resId]);
this .state.duration += additionalDuration;
}
else if ( this .props.record.data.is_user_working && this .props.record.resModel === "qa_track.project" ){
const additionalDuration = await this .orm.'qa_track.project' , 'get_working_duration' , [ this .props.record.resId]);
this .state.duration += additionalDuration;
}
if ( this .ongoing) {
this ._runTimer();
this .test = true ;
}

});
onWillUpdateProps((nextProps) => {
const newOngoing =
"ongoing" in nextProps
? nextProps.ongoing
: "record" in nextProps && nextProps.record.data.is_user_working;
const rerun = ! this .ongoing && newOngoing;
this .ongoing = newOngoing;
if (rerun) {
this .state.duration = nextProps.value;
this ._runTimer();
}
});
onWillDestroy(() => clearTimeout( this .timer));
}

get durationFormatted() {
if ( this .props.value!= this .state.duration && this .props.record && this .props.record.isDirty){
if ( typeof this .props.setDirty=== 'function' ) this.props.setDirty( false );
this .state.duration= this .props.value
}
return formatMinutes( this .state.duration);
}

_runTimer() {
this .timer = setTimeout(() => {
if ( this .ongoing) {
this .state.duration += 1 / 60 ;
this ._runTimer();
}
}, 1000 );
}

stopTimer() {
clearTimeout( this .timer);
this .ongoing = false;
}
}

StartTimer.supportedTypes = [ "float" ];
StartTimer.template = "employee_tracking.StartTimer" ;

registry.category( "fields" ).add( "start_timer" , StartTimer);
registry.category( "formatters" ).add( "start_timer" , formatMinutes);

start_timer.xml
















0
अवतार
खारिज करें
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

साइन अप करें
Related Posts Replies डेटा देखने का तरीका ऐक्टिविटी
How to make Odoo 15 JavaScript code work in Odoo 16
javascript OWL odoo16features
अवतार
अवतार
अवतार
3
जून 23
6562
How can i use owl carousel with odoo 15
javascript widget v15 OWL Carousel
अवतार
अवतार
1
फ़र॰ 24
4660
How to dynamically pass the ID in willStart function
javascript custom dashboard odoo odoo16features
अवतार
अवतार
1
फ़र॰ 24
3511
Extend an OWL component class declared as const
javascript extending Point Of Sale OWL odoo16features
अवतार
0
जन॰ 24
2916
Disable editing in the Form View Odoo 16 JS
javascript js owl OWL odoo16features
अवतार
0
नव॰ 23
3219
कम्यूनिटी
  • ट्यूटोरियल्स
  • दस्तावेज़
  • फ़ोरम
ओपन सोर्स
  • डाउनलोड
  • Github
  • रनबॉट
  • अनुवाद
सेवाएं
  • Odoo.sh Hosting
  • सहायता
  • अपग्रेड
  • कस्टम डेवलपमेंट्स
  • शिक्षा
  • अकाउंटेंट खोजें
  • पार्टनर ढूंढें
  • पार्टनर बनें
हमारे बारे में
  • हमारी कंपनी
  • ब्रांड ऐसेट
  • संपर्क करें
  • नौकरियां
  • इवेंट
  • पॉडकास्ट
  • ब्लॉग
  • ग्राहक
  • लीगल • गोपनीयता
  • सुरक्षा
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo, बिज़नेस से जुड़े ऐप्लिकेशन का एक कलेक्शन है जो ओपन सोर्स पर आधारित है. इसमें आपकी कंपनी की हर ज़रूरत के लिए ऐप्लिकेशन हैं. जैसे, सीआरएम, ई-कॉमर्स, अकाउंटिंग, इन्वेंट्री, पॉइंट ऑफ़ सेल, प्रोजेक्ट मैनेजमेंट वगैरह.

Odoo की सबसे बड़ी खासियत है कि यह इस्तेमाल करने में बहुत आसान है और यह पूरी तरह से इंटिग्रेट किया हुआ है.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now