2017-08-25 18 views
12

के अंदर जावास्क्रिप्ट फ़ंक्शन ट्रिगर करें मेरा कार्य: odoo में गतिशील प्रगति पट्टी।Odoo10/Odoo11 गतिशील प्रगति पट्टी - पाइथन

मैं ओडू विजेट का उपयोग कर रहा हूं: 'progressbar'। जब भी मूल्य अपडेट किया जाता है, तो मैं दृश्य को अपडेट करना चाहता हूं - इसलिए मैं दृश्य को प्रस्तुत करने के लिए अपने पायथन लेखन विधि के अंदर on_change_input जावास्क्रिप्ट फ़ंक्शन को ट्रिगर करना चाहता हूं।

@api.one 
def updatevalue(self, val): 
     self.value = val 
     # TODO call javascript function on_change_input() 

उद्देश्य है कि प्रगति, जबकि एक प्रक्रिया चल रहा है अद्यतन किया जाना चाहिए और उसके साईट को अपडेट किए बिना प्रगति देखना चाहिए, है।

क्या मेरा कार्य प्रोग्रेसबार विजेट के साथ संभव है? या ओडू में गतिशील सामग्री दिखाने की एक और संभावना है?

अगर मैं बटन के रूप में मेरे updatevalue विधि का उपयोग करें, प्रगति बार और शायद RPC से अधिक पृष्ठ को ताज़ा करने के बिना जावास्क्रिप्ट समारोह & बुला बिना बटन क्लिक करने के बाद अद्यतन किया जाता है ... लेकिन मैं अपने कोड में विधि नाम देना चाहते हैं () इसलिए यह मदद नहीं करता है-.-

आपके समय के लिए धन्यवाद!


यहाँ कार्यप्रवाह है मैं अब तक है:

बटन do_time_consuming_task पर उपयोगकर्ता क्लिक करता है और निम्नलिखित समारोह कहा जाता है:

def do_timeconsuming_task(self): 
    ws = websocket.WebSocket() 
    ws.connect('ws:/129.0.0.1:1234/') 
    data = { 'topic' : 'server_command', 'id' : self.id, 'commandName' : 'do_sth',} 
    payload = ujson.dumps(data) 
    ws.send(payload) 
    ws.close() 

सर्वर पर, आदेश प्राप्त होता है और संसाधित। वहाँ एक खुला RPC कनेक्शन है:

odoo = odoorpc.ODOO("129.0.0.1", port=8069) 
odoo.login("database", "user", "password") 
my_module = odoo.env['my_module.progress_widget_test'] 

progress_instance = my_module.browse(id) 

हर बार प्रगति मूल्य परिवर्तन मैं अपने मॉड्यूल के निम्नलिखित विधि कॉल:

progress_instance.updatevalue(new_value) 

जब मूल्य 100% के बराबर होती है मैं बंद कनेक्शन

odoo.logout() 
+0

प्रगति बार क्षेत्र एक गणना क्षेत्र सही है? CybroOdoo/CybroAddons.git # 10.0 –

+0

एक नज़र यहाँ [email protected] है। इसे 'अपडेटवल्यू' विधि को कॉल करने वाले आरपीसी के माध्यम से अपडेट किया गया है। आप किस CybroOdoo Addons का जिक्र कर रहे हैं? –

+0

नहीं, प्रगति बार क्षेत्र (मूल्य) एक गणना क्षेत्र नहीं है: तो फिर क्यों हम अद्यतन करने की जरूरत हमेशा – IstaLibera

उत्तर

0

यह कार्यक्षमता पहले से मौजूद है और आपसे updateProgressBar और processReconciliations से इसके हिस्सों की प्रतिलिपि बना सकते हैं। आप प्रगति पट्टी को अद्यतन करने का सही तरीका यहां देखेंगे।

उद्देश्य है कि प्रगति, जबकि एक प्रक्रिया चल रहा है अद्यतन किया जाना चाहिए और उपयोगकर्ता साइट अपडेट किए बिना प्रगति देखना चाहिए, है।

processReconciliations यह कैसे किया जाता है पर देखो, मूल रूप से आप process_reconciliations विधि है कि वापस अंत पर मौजूद है फोन और आप एक deferred वस्तु वापस मिलता है। कि आस्थगित वस्तु से आप progress()

का उपयोग .progress() के प्रलेखन आप है कि आप अपनी प्रगति रिपोर्ट करने की आवश्यकता देखेंगे का उपयोग कर .[notify][2]()

आप अपने प्रक्रिया के पूरा होने का प्रतिशत कैसे परिभाषित करते हैं के माध्यम से देख रहे हैं कर सकते हैं?

+0

आपकी मदद के लिए धन्यवाद! हालांकि, मुझे नहीं पता कि आपके मॉडल में आपके द्वारा उल्लेख किए गए कार्यों को कैसे शामिल किया जाए। क्या आप कृपया मेरी मदद कर सकते हैं - मैंने अपने प्रश्न को अब तक के विशिष्ट वर्कफ़्लो के लिए अपडेट किया है। इसके अलावा, मैं जावास्क्रिप्ट में प्रोग्रामिंग के साथ इतना परिचित नहीं कर रहा हूँ, तो यह आप के वास्तव में अच्छा होगा अगर आप मेरी samle करने के लिए कोड मिलान जोड़ें। – IstaLibera

+0

मेरी प्रक्रिया के पूरा होने का प्रतिशत चरण हैं, जो पहले से ही कर रहे हैं fullfilled की संख्या से परिभाषित किया गया है। उदाहरण के लिए। कार्य को 20 कदम करना है - और 15 कदम पूर्ण हैं -> पूरा होने का प्रतिशत 75% है। लेकिन यह sth मैं सिर्फ odoo के बाहर पता है -> इसलिए मैं आरपीसी कॉल के साथ मूल्य अद्यतन। – IstaLibera

संबंधित मुद्दे