Một thành phần quan trọng không thể thiếu khi bạn lập trình sử dụng CMS Odoo. Đó chính là widget. Hôm nay vinasupport.com sẽ giới thiệu và hướng dẫn các bạn tạo widget đơn giản trong Odoo.
Odoo Widget là gì?
Widget là các mã code đã được tạo sẵn và được gọi 1 cách dễ dàng ở mọi nơi trên giao diện views của Odoo giúp chúng ta không phải code lại nhiều.
Danh sách các Odoo Widget
Odoo base hỗ trợ rất nhiều các widget để bạn lựa chọn. Ví dụ:
- badge
- remaining_days
- color_picker
- char_emojis / text_emojis
- forecast_widget
- many2one_avatar_employee
- priority
- product_discount
- list_activity
- kanban_activity
- account_resequence_widget
- …
Hướng dẫn tạo một custom widget
Đây là 1 ví dụ mình viết để tạo 1 widget đơn giản, kế thứa widget field float của odoo. Mục định là trường hợp dữ liệu float có giá trị là 0 thì sau khi sử dụng widget sẽ hiển thị là trống (empty)
Bước 1: Tạo 1 file js ở thư mục my_addon/static/src/js/hide_zero_float.js có nội dung sau:
/** @odoo-module **/ "use strict"; var basicFields = require('web.basic_fields'); var fieldRegistry = require('web.field_registry'); var FloatHideZero = basicFields.FieldFloat.extend({ _renderReadonly: function() { this._super.apply(this, arguments); if (this.value === 0) { this.$el.text(""); } }, }); fieldRegistry.add('float_hide_zero', FloatHideZero);
Bước 2: Thêm file ở trong __manifest__.py của module.
'assets': { 'web.assets_backend': [ 'my_addon/static/src/js/float_hide_zero.js', ], },
Bước 3: Khi gọi field float trong views chúng ta thêm thuộc tính widget=’float_hide_zero’
<field name="total" widget="float_hide_zero" />
Nguồn: vinasupport.com