Odoo Auto Refresh Views
Auto refresh views in Odoo 16.
For a tree view first create a new controller:
/** @odoo-module */
import { ListController } from "@web/views/list/list_controller";
import { onWillStart, onWillDestroy } from "@odoo/owl";
export class RefreshListController extends ListController {
setup() {
super.setup();
this._interval = null;
onWillStart(async () => {
this._interval = setInterval(this.refreshData.bind(this), 5000);
});
onWillDestroy(() => {
clearInterval(this._interval);
});
}
async refreshData() {
await this.model.root.load();
this.render(true);
}
}
Then register a new view:
/** @odoo-module **/
import { registry } from "@web/core/registry";
import { listView } from "@web/views/list/list_view";
import { RefreshListController } from "@<module_name>/tree_view/refresh_controller";
export const ListView = {
...listView,
Controller: RefreshListController,
};
registry.category("views").add("refresh_list", ListView);
Finally, add the new view to the tree view:
<record id="refresh_tree_view" model="ir.ui.view">
<field name="name">refresh.auction.tree</field>
<field name="model">refresh.auction</field>
<field name="arch" type="xml">
<tree js_class="refresh_list">
<field name="name"/>
</tree>
</field>
</record>