[英]Odoo10/Odoo11 dynamic progressbar - trigger javascript function inside python
我的任務:odoo中的動態進度條。
我正在使用Odoo小部件:'progressbar'。 我想在每次更新值時更新視圖 - 因此我想在我的python write方法中觸發on_change_input
javascript函數來呈現視圖。
@api.one
def updatevalue(self, val):
self.value = val
# TODO call javascript function on_change_input()
目的是,在進程運行時應更新進度條,用戶應該在不更新站點的情況下查看進度。
我的任務是否可以使用進度條小部件? 或者是否有其他可能在Odoo中顯示動態內容?
如果我使用我的updatevalue
方法作為按鈕,單擊按鈕后更新進度條而不調用javascript函數並且不刷新頁面...但我確實想在我的代碼中調用該方法(並且可能在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()
此功能已存在,您可以從方法updateProgressBar
和processReconciliations
復制account/static/src/js/account_reconciliation_widgets.js
中的部分內容。 您將在此處看到更新進度條的正確方法。
目的是,在進程運行時應更新進度條,用戶應該在不更新站點的情況下查看進度。
請參閱processReconciliations
它是如何完成的,基本上你調用后端存在的process_reconciliations
方法,然后你得到一個deferred
對象。 從該延遲對象,您可以使用進度()
查看.progress()
的文檔,您將看到需要使用.[notify][2]()
報告您的進度.[notify][2]()
你如何定義你的過程完成的百分比是多少?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.