Xem kiến trúc¶
Kiến trúc chung¶
Kiến trúc của một khung nhìn được xác định bởi dữ liệu XML được diễn giải bằng khung JavaScript.
Đối với hầu hết các chế độ xem, có một tệp *.rng
xác định các thuộc tính và kiến trúc có thể có. Một số chế độ xem không được quản lý bởi tệp như vậy vì chúng chấp nhận nội dung HTML hoặc vì lý do hiệu suất.
Ghi chú
Bối cảnh hiện tại và quyền truy cập của người dùng có thể ảnh hưởng đến khả năng xem.
Xem thêm
Biểu thức Python¶
Khi đánh giá các thuộc tính nút, ví dụ: công cụ sửa đổi readonly
, có thể cung cấp biểu thức Python sẽ được thực thi trong môi trường có quyền truy cập vào các biến sau:
Tên của tất cả các trường có trong chế độ xem hiện tại, chứa giá trị của bản ghi hiện tại, ngoại trừ
column_invisible
trong list view; các trường quan hệ được đưa ra dưới dạng danh sách ID;ID của bản ghi hiện tại;
parent
: bản ghi đề cập đến vùng chứa; chỉ bên trong các chế độ xem phụ của các trường quan hệ;context (dict)
: bối cảnh của khung nhìn hiện tại;uid (int)
: id của người dùng hiện tại;hôm nay (str)
: ngày địa phương hiện tại ở định dạngYYYY-MM-DD
;now (str)
: ngày giờ cục bộ hiện tại ở định dạngYYYY-MM-DD hh:mm:ss
.
Example
<field name="field_a" readonly="True"/>
<field name="field_b" invisible="context.get('show_me') and field_a == 4"/>
Example
<field name="field_a"/>
<field name="x2m">
<!-- sub-view -->
<form>
<field name="field_b" invisible="parent.field_a"/>
</form>
</field>
Hình thức¶
Chế độ xem biểu mẫu được sử dụng để hiển thị dữ liệu từ một bản ghi. Chúng bao gồm HTML thông thường với các thành phần cấu trúc và ngữ nghĩa bổ sung.
Phần tử gốc của chế độ xem biểu mẫu là form
.
<form>
...
</form>
Thuộc tính gốc¶
Các thuộc tính tùy chọn có thể được thêm vào phần tử gốc form
để tùy chỉnh chế độ xem.
- string
Tiêu đề của chế độ xem. Nó chỉ được hiển thị nếu bạn mở một hành động không có tên và có mục tiêu là
mới
(mở hộp thoại).- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- create
Tắt/bật tính năng tạo bản ghi trên dạng xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- edit
Tắt/bật phiên bản bản ghi trên chế độ xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- duplicate
Tắt/bật sao chép bản ghi trên chế độ xem thông qua trình đơn thả xuống Hành động.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- delete
Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua danh sách thả xuống Action.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- js_class
Tên của thành phần JavaScript mà webclient sẽ khởi tạo thay vì dạng xem biểu mẫu.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- disable_autofocus
Tắt tiêu điểm tự động trên trường đầu tiên trong chế độ xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- banner_route
Lộ trình tìm nạp HTML từ đó và thêm nó vào chế độ xem.
Nếu thuộc tính này được đặt, URL của controller Route sẽ được tìm nạp và nội dung trả về sẽ được hiển thị phía trên chế độ xem. Phản hồi JSON từ bộ điều khiển phải chứa khóa
html
.Nếu HTML chứa thẻ
<link>
cho biểu định kiểu, thẻ này sẽ bị xóa khỏi vị trí ban đầu và được thêm vào phần<head>
.Để tương tác với phần phụ trợ, hãy sử dụng thẻ
<a type="action">
. Để biết thêm chi tiết, hãy tham khảo tài liệu về phương thức_onActionClicked
trong AbstractController.Chỉ các chế độ xem mở rộng
AbstractView
vàAbstractController
, chẳng hạn như Hình thức, Kanban, và Danh sách, mới có thể sử dụng cái này thuộc tính.Example
<tree banner_route="/module_name/hello" />
class MyController(odoo.http.Controller): @http.route('/module_name/hello', auth='user', type='json') def hello(self): return { 'html': """ <div> <link href="/module_name/static/src/css/banner.css" rel="stylesheet"> <h1>hello, world</h1> </div> """ }
- yêu cầu
Không bắt buộc
- kiểu
con đường
- mặc định
''
Thành phần ngữ nghĩa¶
Các thành phần ngữ nghĩa liên kết với hệ thống SoOn và cho phép tương tác với nó.
Chế độ xem biểu mẫu chấp nhận các thành phần ngữ nghĩa con sau: field, label, button, Tiện ích trò chuyện, và Tiện ích xem trước tệp đính kèm.
Phần giữ chỗ được viết hoa tất cả.
field
: hiển thị giá trị trường¶
Phần tử field
hiển thị (và có thể cho phép chỉnh sửa) một trường duy nhất của bản ghi hiện tại.
Hỗ trợ sử dụng cùng một trường nhiều lần trong chế độ xem biểu mẫu và các trường có thể nhận các giá trị khác nhau cho thuộc tính invisible
và readonly
. Các trường này có thể có cùng giá trị nhưng có thể được hiển thị khác nhau. Tuy nhiên, hành vi này không được đảm bảo khi có một số trường tồn tại với các giá trị khác nhau cho thuộc tính required
.
<form>
<field name="FIELD_NAME"/>
</form>
Phần tử field
có thể có các thuộc tính sau:
- name
Tên của trường cần hiển thị.
- yêu cầu
Bắt buộc
- kiểu
- id
Id nút. Hữu ích khi có nhiều lần xuất hiện của cùng một trường trong chế độ xem (xem label: hiển thị nhãn trường).
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Tên trường
- string
Nhãn của trường.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Thuộc tính
string
của trường của mô hình
- help
Chú giải công cụ được hiển thị khi di chuột vào trường hoặc nhãn của nó.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- widget
Phương thức hiển thị và ngữ cảnh sẽ sử dụng thay cho phương thức mặc định được gán cho loại của trường (ví dụ:
Char
,Many2one
). Xem Lĩnh vực.Example
<form> <field name="tag_ids" widget="many2many_tags"/> </form> <tree> <field name="sequence" widget="handle"/> <field name="level_progress" widget="progressbar"/> </tree>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- options
Các tùy chọn cấu hình cho tiện ích của trường (bao gồm các tiện ích mặc định), dưới dạng biểu thức Python ước tính thành một lệnh.
Đối với các trường quan hệ, có sẵn các tùy chọn sau:
no_create
,no_quick_create
,no_open
vàno_create_edit
.Example
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'FIELD_NAME', 'no_quick_create': True}"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
{}
- readonly
Người dùng có thể sửa đổi trường này hay không (
False
) hay chỉ đọc (True
), dưới dạng biểu thức Python đánh giá thành bool.Example
<field name="fname_a" readonly="True"/> <field name="fname_b" readonly="name_a in [fname_b, parent.fname_d]"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- required
Trường có thể được để trống (
False
) hay phải được đặt (True
), dưới dạng biểu thức Python đánh giá thành bool.Example
<field name="fname_a" required="True"/> <field name="fname_b" required="fname_c != 3"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- domain
Các bộ lọc áp dụng khi hiển thị các bản ghi hiện có để lựa chọn, dưới dạng biểu thức Python ước tính thành domain.
Example
<field name="fname" domain="[('fname_a', '=', parent.fname_b)]"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
[]
- phạm vi
Các trường quan hệ
- context
Ngữ cảnh được sử dụng khi tìm nạp các giá trị có thể có và tạo hoặc tìm kiếm bản ghi, dưới dạng biểu thức Python đánh giá thành một lệnh.
Example
<field name="fname" context="{ 'TYPE_view_ref': 'ADDON.MODEL_view_TYPE', 'group_by': 'FIELD_NAME', 'default_FIELD_NAME': ANY, 'search_default_FIELD_NAME': True, 'OTHER_BUSINESS_KEY': ANY, }"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
{}
- phạm vi
Các trường quan hệ
- nolabel
Có nên ẩn nhãn trường hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- phạm vi
Các trường là con trực tiếp của phần tử
group
- placeholder
Thông báo trợ giúp sẽ hiển thị trên các trường trống. Nó có thể thay thế nhãn trường ở dạng phức tạp. Tuy nhiên, nó không nên là một ví dụ về dữ liệu vì người dùng có thể nhầm lẫn văn bản giữ chỗ với các trường đã điền.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- mode
Danh sách các chế độ hiển thị (loại xem) được phân tách bằng dấu phẩy để sử dụng cho các bản ghi được liên kết của trường. Các chế độ được phép là:
cây
,biểu mẫu
,kanban
vàbiểu đồ
.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
cây
- phạm vi
One2many
vàMany2many
các trường
- class
Lớp HTML để đặt trên phần tử được tạo.
Kiểu dáng sử dụng khung Bootstrap và UI icon. Các lớp SoOn phổ biến bao gồm:
oe_inline
: ngăn chặn việc ngắt dòng thông thường sau các trường và giới hạn khoảng cách của chúng;oe_left
,oe_right
: thả nổi phần tử theo hướng tương ứng;oe_read_only
,oe_edit_only
: chỉ hiển thị phần tử ở chế độ biểu mẫu tương ứng;oe_avatar
: dành cho trường hình ảnh, hiển thị hình ảnh dưới dạng "hình đại diện" (hình vuông tối đa 90x90);oe_stat_button
: xác định một kết xuất cụ thể để hiển thị động thông tin trong khi có thể nhấp vào để nhắm mục tiêu một hành động.
Example
<field name="fname" class="oe_inline oe_left oe_avatar"/>
Example
<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP"> <div class="o_field_widget o_stat_info"> <span class="o_stat_value"><FIELD/></span> <span class="o_stat_text">TEXT</span> </div> </button>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- filename
Tên của trường liên quan cung cấp tên của tệp.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- phạm vi
Binary
các trường
- password
Liệu trường có lưu trữ mật khẩu hay không và do đó dữ liệu của nó sẽ không được hiển thị.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- phạm vi
Char
các trường
- kanban_view_ref
XMLID của Kanban view record cụ thể sẽ được sử dụng khi chọn bản ghi trong môi trường di động.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- phạm vi
Các trường quan hệ
- default_focus
Trường có được tập trung hay không khi chế độ xem mở ra. Nó chỉ có thể được áp dụng cho một trường của một khung nhìn.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
Ghi chú
Các nút Các trường quan hệ có thể chứa các lượt xem phụ cụ thể.
Example
<field name="children_ids">
<tree>
<field name="name"/>
</tree>
<form>
<field name="id"/>
<field name="name"/>
</form>
</field>
label
: hiển thị nhãn trường¶
Khi thành phần field không được đặt trực tiếp bên trong group hoặc khi thuộc tính nolabel
của nó được đặt, nhãn của trường không được tự động hiển thị cùng với giá trị của nó. Thành phần label
là cách thay thế thủ công để hiển thị nhãn của một trường.
<form>
<div class="col col-md-auto">
<label for="FIELD_NAME" string="LABEL"/>
<div>
<field name="FIELD_NAME" class="oe_inline"/>
</div>
</div>
</form>
Phần tử label
có thể có các thuộc tính sau:
- for
Tham chiếu đến trường được liên kết với nhãn. Nó có thể là tên của trường hoặc id của nó (thuộc tính
id
được đặt trên field).Khi có một số lần xuất hiện của cùng một trường trong chế độ xem và có một số thành phần
nhãn
được liên kết với các nút trường này, các nhãn này phải có thuộc tínhfor
duy nhất; trong trường hợp này, tham chiếu thuộc tínhid
của các nút trường tương ứng.- yêu cầu
Bắt buộc
- kiểu
- string
Nhãn để hiển thị.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Nhãn của trường đến từ định nghĩa trường trên mô hình
- class
Lớp HTML để đặt trên phần tử được tạo.
Kiểu dáng sử dụng khung Bootstrap và UI icon. Các lớp SoOn phổ biến bao gồm:
oe_inline
: ngăn chặn việc ngắt dòng thông thường sau các trường và giới hạn khoảng cách của chúng;oe_left
,oe_right
: thả nổi phần tử theo hướng tương ứng;oe_read_only
,oe_edit_only
: chỉ hiển thị phần tử ở chế độ biểu mẫu tương ứng;oe_avatar
: dành cho trường hình ảnh, hiển thị hình ảnh dưới dạng "hình đại diện" (hình vuông tối đa 90x90);oe_stat_button
: xác định một kết xuất cụ thể để hiển thị động thông tin trong khi có thể nhấp vào để nhắm mục tiêu một hành động.
Example
<field name="fname" class="oe_inline oe_left oe_avatar"/>
Example
<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP"> <div class="o_field_widget o_stat_info"> <span class="o_stat_value"><FIELD/></span> <span class="o_stat_text">TEXT</span> </div> </button>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
Tiện ích trò chuyện¶
chatter widget là công cụ giao tiếp và ghi nhật ký cho phép gửi email trực tiếp cho đồng nghiệp và khách hàng từ một bản ghi (nhiệm vụ, đơn hàng, hóa đơn, sự kiện, ghi chú...).
Nó được thêm phần tử div
với lớp oe_chatter
khi mô hình kế thừa mixin mail.thread
.
Example
<form>
<sheet>
...
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids" options="OPTIONS"/>
</div>
</form>
Tiện ích xem trước tệp đính kèm¶
Tiện ích xem trước tệp đính kèm được thêm phần tử trống div
với lớp o_attachment_preview
.
Example
<form>
<sheet>
...
</sheet>
<div class="o_attachment_preview"/>
<form>
Thành phần kết cấu¶
Các thành phần cấu trúc cung cấp cấu trúc hoặc các tính năng "trực quan" với ít logic. Chúng được sử dụng làm phần tử hoặc tập hợp phần tử trong dạng xem biểu mẫu.
Các dạng xem biểu mẫu chấp nhận các thành phần cấu trúc con sau: group, sheet, notebook, notebook, newline, separator, header, footer, Hộp chứa nút, và Vùng chứa tiêu đề.
Phần giữ chỗ được viết hoa tất cả.
group
: xác định bố cục cột¶
Phần tử group
được sử dụng để xác định bố cục cột trong biểu mẫu. Theo mặc định, các nhóm xác định 2 cột và hầu hết các nhóm con trực tiếp của nhóm đều có một cột duy nhất.
field các phần tử là con trực tiếp của các nhóm hiển thị một nhãn
theo mặc định, đồng thời nhãn và chính trường đó có colspan
là 1
mỗi phần.
Trẻ em được xếp theo chiều ngang (chúng cố gắng điền vào cột tiếp theo trước khi đổi hàng).
<form>
<group>
...
</group>
</form>
Phần tử group
có thể có các thuộc tính sau:
- string
Tiêu đề được hiển thị cho nhóm.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- col
Số lượng cột trong một
nhóm
.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
2
- colspan
Số cột được lấy bởi một phần tử con.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
1
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<group>
<field name="a" string="custom"/>
<field name="b"/>
</group>
<group string="title 1">
<group string="title 2">
<field name="c"/>
<field name="d"/>
</group>
<group>
<field name="e"/>
<field name="f"/>
<field name="g"/>
</group>
</group>
<group col="12">
<group colspan="8">
<field name="h"/>
</group>
<group colspan="4">
<field name="i"/>
</group>
</group>
|
sheet
: làm cho bố cục phản hồi nhanh¶
Phần tử sheet
có thể được sử dụng làm phần tử con trực tiếp của phần tử gốc form để có bố cục biểu mẫu hẹp hơn và phản hồi nhanh hơn (trang ở giữa, lề...). Nó thường chứa các phần tử group.
<form>
<sheet>
...
</sheet>
</form>
notebook
& page
: thêm các phần theo thẻ¶
Phần tử notebook
xác định một phần được gắn thẻ. Mỗi tab được xác định thông qua phần tử con page
.
Phần tử notebook
không được đặt trong phần tử group
.
<form>
<notebook>
<page string="LABEL">
...
</page>
</notebook>
</form>
Phần tử page
có thể có các thuộc tính sau:
- string
Tiêu đề của tab.
- yêu cầu
Không bắt buộc
- kiểu
str
- mặc định
''
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<form>
<notebook>
<page string="Page1">
...
</page>
<page string="Page2">
...
</page>
</notebook>
</form>
|
newline
: bắt đầu các hàng nhóm mới¶
Phần tử newline
được sử dụng trong các phần tử group để kết thúc sớm hàng hiện tại và ngay lập tức chuyển sang hàng mới mà không cần điền trước bất kỳ cột nào còn lại.
<form>
<group>
...
<newline/>
...
</group>
</form>
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<form>
<group string="Title 1">
<group string="Title 1.1">...</group>
<newline/>
<group string="Title 1.2">...</group>
<group string="Title 1.3">...</group>
</group>
</form>
|
dấu phân cách
: thêm khoảng cách ngang¶
Phần tử dấu phân cách
thêm khoảng cách dọc giữa các phần tử trong một nhóm.
<form>
...
<separator/>
...
</form>
Phần tử <separator>
có thể có các thuộc tính sau:
- string
Tiêu đề như một tiêu đề phần.
- yêu cầu
Không bắt buộc
- kiểu
str
- mặc định
''
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<form>
<group>
<FIELD/>
<separator string="Title 1"/>
<FIELD/>
<group>
<FIELD/>
<separator string="Title 2"/>
<FIELD/>
</group>
<group>
<FIELD/>
<FIELD/>
</group>
</group>
</form>
|
Mẹo
Phần tử dấu phân cách
có thể được sử dụng để đạt được sự phân tách trực quan giữa các phần tử trong cùng một phần tử nhóm
bên trong trong khi vẫn giữ chúng được căn chỉnh theo chiều ngang.
Vùng chứa tiêu đề¶
Vùng chứa phần tử title field có thể được tạo bằng phần tử div
với lớp oe_title
.
<form>
<sheet>
<div class="oe_title">
<h1><FIELD/></h1>
</div>
</sheet>
<form>
Cài đặt¶
Chế độ xem cài đặt là tùy chỉnh của chế độ xem form. Chúng được sử dụng để hiển thị các cài đặt ở một nơi tập trung. Chúng khác với dạng xem biểu mẫu chung ở chỗ chúng có thanh tìm kiếm và thanh bên.
Example
<app string="CRM" name="crm">
<setting type="header" string="Foo">
<field name="foo" title="Foo?."/>
<button name="nameAction" type="object" string="Button"/>
</setting>
<block title="Title of group Bar">
<setting help="this is bar" documentation="/applications/technical/web/settings/this_is_a_test.html">
<field name="bar"/>
</setting>
<setting string="This is Big BAR" company_specific="1">
<field name="bar"/>
</setting>
</block>
<block title="Title of group Foo">
<setting string="Personalize setting" help="this is full personalize setting">
<div>This is a different setting</div>
</setting>
</block>
</app>
Các thành phần¶
Chế độ xem cài đặt chấp nhận field, label và button view, cũng như ba phần tử con bổ sung: app, block, và setting.
Phần giữ chỗ được viết hoa tất cả.
app
: khai báo ứng dụng¶
Phần tử app
được sử dụng để khai báo ứng dụng trên chế độ xem cài đặt. Nó tạo một mục có logo của ứng dụng trên thanh bên của chế độ xem. Nó cũng hoạt động như dấu phân cách khi tìm kiếm.
<form>
<app string="NAME" name="TECHNICAL_NAME">
...
</app>
</form>
Phần tử app
có thể có các thuộc tính sau:
- string
Tên của ưng dụng.
- yêu cầu
Bắt buộc
- kiểu
- name
Tên kỹ thuật của ứng dụng (tên của mô-đun).
- yêu cầu
Bắt buộc
- kiểu
- logo
Đường dẫn tương đối tới logo.
- yêu cầu
Không bắt buộc
- kiểu
con đường
- mặc định
Một đường dẫn được tính toán với thuộc tính
name
:/name/static/description/icon.png
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
block
: khai báo một nhóm cài đặt¶
Phần tử block
được sử dụng để khai báo một nhóm cài đặt. Nhóm này có thể có tiêu đề và mô tả.
<form>
<app string="NAME" name="TECHNICAL_NAME">
...
<block title="TITLE">
...
</block>
...
</app>
</form>
Phần tử block
có thể có các thuộc tính sau:
- title
Tiêu đề của khối cài đặt. Người ta có thể tìm kiếm trên giá trị của nó.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- help
Mô tả khối cài đặt. Người ta có thể tìm kiếm trên giá trị của nó.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
setting
: khai báo cài đặt¶
Phần tử setting
được sử dụng để khai báo chính cài đặt đó.
Phần tử field đầu tiên trong cài đặt được sử dụng làm trường chính. Nó được đặt ở bảng bên trái nếu nó là trường boolean và ở trên cùng của bảng bên phải nếu không. Trường này cũng được sử dụng để tạo nhãn cài đặt nếu thuộc tính string
không được xác định.
Phần tử setting
cũng có thể chứa các phần tử bổ sung (ví dụ: HTML). Tất cả những yếu tố đó được hiển thị trong bảng bên phải.
<form>
<app string="NAME" name="TECHNICAL_NAME">
<block title="TITLE">
...
<setting string="SETTING_NAME">
...
<field name="FIELD_NAME"/>
...
</setting>
...
</block>
</app>
</form>
Phần tử <setting>
có thể có các thuộc tính sau:
- type
Theo mặc định, một cài đặt được phân tách trực quan trên hai bảng (trái và phải) và được sử dụng để chỉnh sửa field nhất định. Thay vào đó, bằng cách xác định
type="header"
, một loại cài đặt đặc biệt sẽ được hiển thị. Cài đặt này được sử dụng để sửa đổi phạm vi của các cài đặt khác. Ví dụ: trên ứng dụng Trang web, cài đặt này được sử dụng để cho biết các cài đặt khác áp dụng cho trang web nào. Cài đặt tiêu đề được thể hiện trực quan dưới dạng biểu ngữ ở đầu màn hình.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- string
Văn bản được sử dụng làm nhãn của cài đặt.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Nhãn của trường đầu tiên
- title
Văn bản được sử dụng làm chú giải công cụ.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- help
Mô tả của cài đặt. Văn bản này được hiển thị ngay bên dưới nhãn cài đặt (với lớp
text-muted
).- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- company_dependent
Liệu cài đặt có dành riêng cho công ty hay không. Nếu được đặt, một biểu tượng sẽ hiển thị bên cạnh nhãn cài đặt.
Nó chỉ chấp nhận giá trị
'1'
.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- documentation
đường dẫn tới tài liệu về cài đặt. Nếu được đặt, biểu tượng có thể nhấp sẽ hiển thị bên cạnh nhãn cài đặt. Đường dẫn có thể là đường dẫn tuyệt đối hoặc đường dẫn tương đối. Trong trường hợp sau, nó có liên quan đến
https://www.odoo.com/documentation/<version>
.- yêu cầu
Không bắt buộc
- kiểu
đường dẫn_
- mặc định
''
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
Danh sách¶
Phần tử gốc của chế độ xem danh sách là tree
1.
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<tree>
...
</tree>
|
Thuộc tính gốc¶
Các thuộc tính tùy chọn có thể được thêm vào phần tử gốc tree
để tùy chỉnh chế độ xem.
- string
Tiêu đề của chế độ xem. Nó chỉ được hiển thị nếu bạn mở một hành động không có tên và có mục tiêu là
mới
(mở hộp thoại).- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- create
Tắt/bật tính năng tạo bản ghi trên dạng xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- edit
Tắt/bật phiên bản bản ghi trên chế độ xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- delete
Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua danh sách thả xuống Action.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- import
Tắt/bật nhập bản ghi từ dữ liệu trên dạng xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- export_xlsx
Tắt/bật xuất bản ghi sang dữ liệu trên dạng xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- editable
Làm cho các bản ghi của dạng xem có thể chỉnh sửa tại chỗ và cho phép tạo bản ghi mới từ một hàng của danh sách. Nó có thể có hai giá trị khác nhau:
- top
Các bản ghi mới được tạo từ đầu danh sách.
- bottom
Các bản ghi mới được tạo từ cuối danh sách.
Kiến trúc cho chế độ xem nội tuyến form được lấy từ chế độ xem danh sách. Do đó, hầu hết các thuộc tính hợp lệ trên các trường và nút của chế độ xem biểu mẫu đều được chế độ xem danh sách chấp nhận, mặc dù chúng có thể không có ý nghĩa gì nếu chế độ xem danh sách không thể chỉnh sửa được.
Quan trọng
Hành vi này bị vô hiệu hóa nếu thuộc tính
edit
được đặt thànhFalse
.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- multi_edit
Kích hoạt tính năng chỉnh sửa đa dạng cho phép cập nhật một trường thành cùng một giá trị cho nhiều bản ghi cùng một lúc.
Nó chỉ chấp nhận giá trị
'1'
.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- open_form_view
Hiển thị một nút ở cuối mỗi hàng để mở bản ghi ở dạng xem biểu mẫu.
Nó không có hiệu lực nếu chế độ xem không thể chỉnh sửa được.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- default_group_by
Tên của trường mà các bản ghi sẽ được nhóm theo mặc định nếu không có nhóm nào được chỉ định thông qua hành động hoặc search hiện tại.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- default_order
Danh sách các tên trường được phân tách bằng dấu phẩy sẽ ghi đè thứ tự được xác định trên mô hình thông qua thuộc tính
_order
.Để đảo ngược thứ tự sắp xếp của một trường, hãy đặt hậu tố cho trường đó bằng
desc
, cách nhau bằng dấu cách.Example
<tree default_order="sequence,name desc"> ... </tree>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- decoration-<style>
Kiểu cần được áp dụng để khớp các hàng của bản ghi, dưới dạng biểu thức Python đánh giá thành bool.
<style>
phải được thay thế bằng một trong cácbf
(đậm),it
(in nghiêng),thông tin
,cảnh báo
,nguy hiểm
,bị tắt tiếng
,chính
vàthành công
.Example
<tree decoration-danger="field_qty > field_limit"> ... </tree>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- limit
Kích thước mặc định của một trang. Nó phải hoàn toàn tích cực.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
80
cho chế độ xem danh sách,40
cho danh sách X2many trong chế độ xem biểu mẫu
- groups_limit
Số lượng nhóm mặc định trên một trang khi chế độ xem danh sách được nhóm lại. Nó phải hoàn toàn tích cực.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
80
cho chế độ xem danh sách,40
cho danh sách X2many trong chế độ xem biểu mẫu
- expand
Liệu cấp độ đầu tiên của nhóm có nên được mở theo mặc định khi chế độ xem danh sách được nhóm hay không.
Cảnh báo
Nó có thể chậm, tùy thuộc vào số lượng nhóm.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- sample
Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.
Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường
display_name
trên mô hìnhres.users
sẽ được điền tên người mẫu, trong khi trườngemail
sẽ có dạngfirstname.lastname@sample.demo
.Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- banner_route
Lộ trình tìm nạp HTML từ đó và thêm nó vào chế độ xem.
Nếu thuộc tính này được đặt, URL của controller Route sẽ được tìm nạp và nội dung trả về sẽ được hiển thị phía trên chế độ xem. Phản hồi JSON từ bộ điều khiển phải chứa khóa
html
.Nếu HTML chứa thẻ
<link>
cho biểu định kiểu, thẻ này sẽ bị xóa khỏi vị trí ban đầu và được thêm vào phần<head>
.Để tương tác với phần phụ trợ, hãy sử dụng thẻ
<a type="action">
. Để biết thêm chi tiết, hãy tham khảo tài liệu về phương thức_onActionClicked
trong AbstractController.Chỉ các chế độ xem mở rộng
AbstractView
vàAbstractController
, chẳng hạn như Hình thức, Kanban, và Danh sách, mới có thể sử dụng cái này thuộc tính.Example
<tree banner_route="/module_name/hello" />
class MyController(odoo.http.Controller): @http.route('/module_name/hello', auth='user', type='json') def hello(self): return { 'html': """ <div> <link href="/module_name/static/src/css/banner.css" rel="stylesheet"> <h1>hello, world</h1> </div> """ }
- yêu cầu
Không bắt buộc
- kiểu
con đường
- mặc định
''
Các thành phần¶
Chế độ xem danh sách chấp nhận các phần tử con sau: field, button, groupby, header, control và tạo.
Phần giữ chỗ được viết hoa tất cả.
field
: hiển thị giá trị trường¶
Phần tử field
hiển thị (và có thể cho phép chỉnh sửa) một trường duy nhất của tất cả các bản ghi hiện tại dưới dạng cột.
Không hỗ trợ sử dụng cùng một trường nhiều lần trong chế độ xem danh sách
<tree>
<field name="FIELD_NAME"/>
</tree>
Phần tử field
có thể có các thuộc tính sau:
- name
Tên của trường cần hiển thị.
- yêu cầu
Bắt buộc
- kiểu
- string
Nhãn của trường.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Thuộc tính
string
của trường của mô hình
- optional
Làm cho khả năng hiển thị của trường là tùy chọn. Cột của trường có thể được ẩn hoặc hiển thị thông qua nút trên tiêu đề của chế độ xem.
Nó có thể có hai giá trị khác nhau:
- show
Trường này được hiển thị theo mặc định.
- hide
Trường này được ẩn theo mặc định.
Example
<field name="fname_a" optional="show"/> <field name="fname_b" optional="hide"/>
- yêu cầu
Không bắt buộc
- kiểu
- readonly
Người dùng có thể sửa đổi trường này hay không (
False
) hay chỉ đọc (True
), dưới dạng biểu thức Python đánh giá thành bool.Example
<field name="fname_a" readonly="True"/> <field name="fname_b" readonly="name_a in [fname_b, parent.fname_d]"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- required
Trường có thể được để trống (
False
) hay phải được đặt (True
), dưới dạng biểu thức Python đánh giá thành bool.Example
<field name="fname_a" required="True"/> <field name="fname_b" required="fname_c != 3"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- column_invisible
Cột hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Không giống như
invisible
, nó ảnh hưởng đến toàn bộ cột và được đánh giá mà không có giá trị cây con.Example
<field name="product_is_late" column_invisible="parent.has_late_products == False"/> <button type="object" name="action_confirm" column_invisible="context.get('hide_confirm')"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- decoration-<style>
Kiểu nên được áp dụng cho trường của bản ghi trùng khớp, dưới dạng biểu thức Python đánh giá thành bool.
<style>
phải được thay thế bằng một trong cácbf
(đậm),it
(in nghiêng),thông tin
,cảnh báo
,nguy hiểm
,bị tắt tiếng
,chính
vàthành công
.Example
<field name="name" decoration-bf="1"/> <field name="quantity" decoration-info="state == 'draft'"/>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- widget
Phương thức hiển thị và ngữ cảnh sẽ sử dụng thay cho phương thức mặc định được gán cho loại của trường (ví dụ:
Char
,Many2one
). Xem Lĩnh vực.Example
<form> <field name="tag_ids" widget="many2many_tags"/> </form> <tree> <field name="sequence" widget="handle"/> <field name="level_progress" widget="progressbar"/> </tree>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- sum, avg
Tổng hợp để hiển thị ở cuối cột. Việc tổng hợp chỉ được tính toán trên các bản ghi hiện đang được hiển thị. Hoạt động tổng hợp phải khớp với
group_operator
của trường tương ứng.Example
<field name="sent" sum="Total" /> <field name="clicks_ratio" avg="Average"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- width
Chiều rộng áp dụng cho cột của trường khi không có bản ghi nào trong danh sách, dưới dạng chiều rộng tuyệt đối (ví dụ:
100px
).Quan trọng
Độ rộng được đặt bởi webclient khi có bản ghi trong danh sách.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- nolabel
Tiêu đề cột của trường có nên để trống hay không. Nếu được đặt, cột sẽ không thể sắp xếp được.
Nó chỉ chấp nhận giá trị
'1'
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
Ghi chú
Khi chế độ xem danh sách được nhóm lại, các trường số sẽ được tổng hợp và hiển thị cho từng nhóm. Ngoài ra, nếu có quá nhiều bản ghi trong một nhóm, máy nhắn tin sẽ xuất hiện ở bên phải hàng nhóm. Vì lý do này, việc đặt trường số ở cột cuối cùng là một cách làm không tốt khi chế độ xem danh sách ở trong tình huống có thể nhóm nó lại. Tuy nhiên, điều này không gây ra vấn đề gì đối với các trường X2many trong chế độ xem biểu mẫu vì chúng không thể được nhóm lại.
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<tree>
<field name="name" string="My Custom Name"/>
<field name="amount" sum="Total"/>
<field name="company_id" invisible="1"/>
<field name="currency_id"/>
<field name="tax_id"/>
</tree>
|
groupby
: xác định tiêu đề nhóm¶
Phần tử groupby
được sử dụng để xác định các tiêu đề nhóm với các phần tử button khi nhóm các bản ghi trên các trường Many2one
. Nó cũng chấp nhận các phần tử field, có thể được sử dụng để sửa đổi. Do đó, các trường này thuộc về đồng mô hình Many2one. Các trường bổ sung này được tìm nạp theo đợt.
<tree>
...
<groupby name="FIELD_NAME">
<BUTTONS/>
<FIELDS/>
</groupby>
</tree>
Phần tử groupby
có thể có các thuộc tính sau:
- name
Tên của trường a
Many2one
để sử dụng làm tiêu đề.Một phần tử button đặc biệt với
type="edit"
có thể được xác định để mở chế độ xem biểu mẫu của trường Many2one.- yêu cầu
Bắt buộc
- kiểu
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<tree>
<field name="name"/>
<field name="amount"/>
<field name="currency"/>
<field name="tax_id"/>
<groupby name="partner_id">
<button type="edit" name="edit" icon="fa-edit" title="Edit"/>
<field name="email"/>
<button type="object" name="my_method" string="Button1" invisible="email == 'jhon@conor.com'"/>
</groupby>
</tree>
|
Ghi chú
Các trường bên trong phần tử groupby
chỉ được sử dụng để tìm nạp và lưu trữ giá trị nhưng chúng không bao giờ được hiển thị.
Tìm kiếm¶
Chế độ xem tìm kiếm khác với các loại chế độ xem khác ở chỗ chúng không được sử dụng để hiển thị nội dung. Mặc dù chúng áp dụng cho một mô hình cụ thể nhưng chúng được sử dụng để lọc nội dung của một chế độ xem khác (thường là các chế độ xem tổng hợp; ví dụ: Danh sách và đồ thị).
Phần tử gốc của chế độ xem tìm kiếm là search
.
Nó không có thuộc tính.
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<search>
...
</search>
|
Các thành phần¶
Chế độ xem tìm kiếm chấp nhận các phần tử con sau: field, filter, separator, group, và searchpanel.
Phần giữ chỗ được viết hoa tất cả.
field
: lọc dựa trên giá trị trường¶
Phần tử field
xác định miền hoặc ngữ cảnh với các giá trị do người dùng cung cấp. Khi các miền tìm kiếm được tạo, các miền trường được nối với nhau và với các bộ lọc bằng toán tử AND.
<search>
<field name="FIELD_NAME"/>
</search>
Phần tử field
có thể có các thuộc tính sau:
- name
Tên của trường để lọc.
- yêu cầu
Bắt buộc
- kiểu
- string
Nhãn của trường.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Thuộc tính
string
của trường của mô hình
- operator
Theo mặc định, các trường tạo các miền có dạng
[(name, operator, value)]
, trong đóname
là tên của trường vàvalue
là giá trị do người dùng cung cấp, có thể được lọc hoặc chuyển đổi (ví dụ: người dùng phải cung cấp nhãn cho giá trị của trường lựa chọn chứ không phải chính giá trị đó).Thuộc tính
toán tử
cho phép ghi đè toán tử mặc định, tùy thuộc vào loại của trường (ví dụ:=
đối với trường float, nhưngilike
đối với trường char vàchild_of
đối với many2one).- yêu cầu
Không bắt buộc
- kiểu
- mặc định
=
- filter_domain
Miền được sử dụng làm miền tìm kiếm của trường, dưới dạng biểu thức Python đánh giá thành domain.
Nó có thể sử dụng biến
self
để đưa giá trị được cung cấp vào miền tùy chỉnh. Nó có thể được sử dụng để tạo các miền linh hoạt hơn đáng kể so với chỉ sử dụng thuộc tínhtoán tử
(ví dụ: tìm kiếm trên nhiều trường cùng một lúc).Nếu cả hai thuộc tính
toán tử
vàfilter_domain
đều được cung cấp thìfilter_domain
sẽ được ưu tiên.- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
[]
- context
Ngữ cảnh để hợp nhất vào ngữ cảnh của chế độ xem mà chế độ xem tìm kiếm đang nhắm mục tiêu, dưới dạng biểu thức Python đánh giá thành một lệnh.
Nó có thể chứa các giá trị do người dùng cung cấp, có sẵn trong biến
self
.- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
{}
- domain
Các bộ lọc áp dụng cho kết quả hoàn thành của các trường cho phép tự động hoàn thành (ví dụ:
Many2one
).- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
[]
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<search>
<field name="name" string="My Custom Name"/>
<field name="amount"/>
<field name="company_id" invisible="1"/>
<field name="currency_id"/>
<field name="ref" filter_domain="[('name', 'like', self)]"/>
</search>
|
filter
: tạo các bộ lọc được xác định trước¶
Phần tử filter
được sử dụng để tạo các bộ lọc được xác định trước có thể được chuyển đổi trong chế độ xem tìm kiếm. Nó cho phép thêm dữ liệu vào ngữ cảnh tìm kiếm ngữ cảnh được chuyển đến chế độ xem dữ liệu để tìm kiếm/lọc hoặc thêm các phần mới vào bộ lọc tìm kiếm.
<search>
<filter string="LABEL" domain="DOMAIN"/>
</search>
Phần tử filter
có thể có các thuộc tính sau:
- name
Tên kỹ thuật của bộ lọc. Nó có thể được sử dụng để bật nó theo mặc định hoặc dưới dạng inheritance hook.
- yêu cầu
Bắt buộc
- kiểu
- string
Nhãn của bộ lọc.
- yêu cầu
Bắt buộc
- kiểu
- help
Chú giải công cụ được hiển thị khi di chuột qua bộ lọc.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- domain
Miền để nối vào miền của hành động như một phần của miền tìm kiếm.
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
[]
- date
Tên của trường
date
hoặcdatetime
để lọc.Khi được sử dụng, thuộc tính này sẽ tạo một tập hợp các bộ lọc có sẵn trong menu phụ của menu Filters. Các bộ lọc có sẵn phụ thuộc vào thời gian nhưng không linh hoạt theo nghĩa là miền của chúng được đánh giá tại thời điểm khởi tạo bảng điều khiển.
Example
<filter string="Creation Date" name="filter_create_date" date="create_date"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- default_period
Khoảng thời gian mặc định của bộ lọc dựa trên thời gian (với thuộc tính
date
). Nó phải là một trong hoặc một danh sách được phân tách bằng dấu phẩy củahôm nay
,this_week
,this_month
,last_month
,antepenultimate_month
,fourth_quarter
,third_quarter
,second_quarter
,first_quarter
,năm này
,năm ngoái
hoặcnăm áp chót
.Bộ lọc phải nằm trong bộ bộ lọc mặc định được kích hoạt khi khởi tạo chế độ xem.
Example
<filter string="Creation Date" name="filter_create_date" date="create_date" default_period="this_year,last_year"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
tháng_này
- phạm vi
Bộ lọc có thuộc tính
date
không trống
- invisible
Phần tử hiển thị (
False
) hay ẩn (True
), dưới dạng biểu thức Python đánh giá thành bool.Ghi chú
Có hai cách sử dụng thuộc tính
invisible
:Tính khả dụng: tránh làm quá tải chế độ xem và giúp người dùng dễ đọc hơn, tùy thuộc vào nội dung.
Kỹ thuật: phải có một trường (ẩn là đủ) trong dạng xem để sử dụng trong biểu thức Python.
Example
<field name="fname_a" invisible="True"/> <!-- necessary to evaluate invisible attribute of 'fname_b' field --> <field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/> <group invisible="fname_c != 4"> <field name="fname_c"/> <field name="fname_d"/> <group>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
Sai
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- context
Bối cảnh được hợp nhất vào miền của hành động để tạo miền tìm kiếm
Khóa ngữ cảnh
group_by
được đặt với một trường làm giá trị có thể được sử dụng để xác định một nhóm có sẵn trong menu Group By. Khi trường thuộc loạidate
hoặcdatetime
, bộ lọc sẽ tạo một menu con của menu Group By với các tùy chọn khoảng thời gian khả dụng sau: Year, Quarter, Tháng, Tuần, và Ngày. Khi bộ lọc nằm trong bộ bộ lọc mặc định được kích hoạt khi khởi tạo chế độ xem, các bản ghi sẽ được nhóm theo tháng theo mặc định. Điều này có thể được thay đổi bằng cách sử dụng cú phápdate_field:interval
.Example
<filter string="Category" name="groupby_category" context="{'group_by': 'category_id'}"/> <filter string="Creation Date" name="groupby_create_date" context="{'group_by': 'create_date:week'}"/>
Ghi chú
Kết quả của
read_groups
được nhóm trên một trường có thể bị ảnh hưởng bởi thuộc tínhgroup_expand
của nó, cho phép hiển thị các nhóm trống khi cần. Để biết thêm thông tin, vui lòng tham khảoField
.- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
{}
Cảnh báo
Các chuỗi bộ lọc (không có phần tử không phải bộ lọc ngăn cách chúng) được coi là được kết hợp toàn diện: chúng sẽ được tạo bằng OR
thay vì AND
thông thường.
Example
<filter domain="[('state', '=', 'draft')]"/>
<filter domain="[('state', '=', 'done')]"/>
Các bản ghi có trường trạng thái
là bản nháp
hoặc hoàn thành
được hiển thị.
Example
<filter domain="[('state', '=', 'draft')]"/>
<separator/>
<filter domain="[('delay', '<', 15)]"/>
Các bản ghi có trường state
là trường draft
và delay
nhỏ hơn 15.
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<search>
<filter string="My Custom Name" domain="[('name', 'ilike', 'AAA')]"/>
<filter string="My orders" domain="[('user_id', '=', uid)]"/>
<filter string="Category" context="{'group_by': 'category_id'}"/>
</search>
|
dấu phân cách
: các nhóm bộ lọc riêng biệt¶
Phần tử separator
được sử dụng để phân tách các nhóm filters trong các chế độ xem tìm kiếm đơn giản. Đối với các chế độ xem tìm kiếm phức tạp hơn, nên sử dụng phần tử group.
<search>
<FILTERS/>
<separator/>
<FILTERS/>
</search>
Phần tử dấu phân cách
không có thuộc tính.
group
: các nhóm bộ lọc riêng biệt¶
Phần tử group
được sử dụng để phân tách các nhóm filters trong chế độ xem tìm kiếm lộn xộn. Trong các chế độ xem tìm kiếm đơn giản hơn, nó có thể được thay thế cho phần tử separator.
<search>
<group expand="0" string="LABEL">
<FILTERS/>
</group>
</search>
Phần tử group
không có thuộc tính.
searchpanel
: hiển thị bảng tìm kiếm¶
Phần tử searchpanel
hiển thị bảng tìm kiếm ở bên trái của chế độ xem nhiều bản ghi. Nó cho phép lọc dữ liệu nhanh chóng trên cơ sở các trường nhất định.
<search>
<searchpanel>
<FIELDS/>
</searchpanel>
</search>
Phần tử searchpanel
chỉ chấp nhận các phần tử con field
.
Phần tử field
được sử dụng làm phần tử con của phần tử searchpanel
có thể có các thuộc tính sau:
- name
Tên của trường để lọc.
- yêu cầu
Bắt buộc
- kiểu
- string
Nhãn của trường.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Thuộc tính
string
của trường của mô hình
- select
Hành vi và hiển thị của trường. Nó có thể có hai giá trị khác nhau:
- one
Có thể chọn tối đa một giá trị. Các loại trường được hỗ trợ là
many2one
vàselection
.
- multi
Một số giá trị có thể được chọn. Các loại trường được hỗ trợ là
many2one
,many2many
vàselection
.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
một
- groups
Danh sách các nhóm người dùng được phân tách bằng dấu phẩy mà phần tử được hiển thị. Người dùng không thuộc ít nhất một trong các nhóm này sẽ không thể nhìn thấy phần tử. Các nhóm có thể được thêm tiền tố bằng toán tử
!
phủ định để loại trừ chúng.Example
<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- icon
Biểu tượng của trường.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- color
Màu sắc của cánh đồng.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
Khi phần tử field
có bộ thuộc tính select=one
, nó có thể có các thuộc tính bổ sung sau:
- hierarchize
Liệu các danh mục con sẽ xuất hiện trong danh mục chính của chúng hay ở cùng cấp độ phân cấp.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- phạm vi
Many2one
các trường
Khi phần tử field
có bộ thuộc tính select=multi
, nó có thể có các thuộc tính bổ sung sau:
- enable_counters
Liệu bộ đếm bản ghi có được tính toán và hiển thị nếu khác 0 hay không.
Mẹo
Thuộc tính này tồn tại để tránh ảnh hưởng đến hiệu suất. Một cách khác để giải quyết các vấn đề về hiệu suất là ghi đè các phương thức
search_panel_select_range
vàsearch_panel_select_multi_range
.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- expand
Liệu các danh mục và bộ lọc không có bản ghi có được hiển thị hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- limit
Số giá trị tối đa cần tìm nạp cho trường. Nếu đạt đến giới hạn, không có giá trị nào được hiển thị trên bảng tìm kiếm và thay vào đó, thông báo lỗi sẽ hiển thị. Nếu được đặt thành 0, tất cả giá trị sẽ được tìm nạp.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
200
- domain
Các điều kiện mà hồ sơ phải đáp ứng.
Example
<searchpanel> <field name="department_id"/> <field name="manager_id" select="multi" domain="[('department_id', '=', department_id)]"/> </searchpanel>
- yêu cầu
Không bắt buộc
- kiểu
Biểu thức Python
- mặc định
[]
- groupby
Tên của tên trường mà các giá trị sẽ được nhóm lại.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- phạm vi
Many2one
vàMany2many
các trường
Tìm kiếm mặc định¶
Các trường tìm kiếm và bộ lọc có thể được định cấu hình thông qua ngữ cảnh
của hành động bằng cách sử dụng các phím search_default_name
. Đối với các trường, giá trị phải là giá trị được đặt cho trường. Đối với bộ lọc, nó phải là giá trị boolean hoặc số.
Example
Với foo
, một trường và bar
, một bộ lọc, ngữ cảnh hành động sau sẽ tìm kiếm foo
trên acro
và bật bar
theo mặc định:
{
'search_default_foo': 'acro',
'search_default_bar': 1
}
Một giá trị số (từ 1 đến 99) có thể được sử dụng để xác định thứ tự của các bộ lọc groupby mặc định.
Example
Với foo
và bar
, hai bộ lọc groupby, ngữ cảnh hành động sau đây trước tiên sẽ bật bar
, sau đó là foo
.
{
'search_default_foo': 2,
'search_default_bar': 1
}
Kanban¶
Chế độ xem Kanban được sử dụng dưới dạng bảng Kanban trực quan hóa: chúng hiển thị các bản ghi dưới dạng "thẻ", nằm giữa một list chế độ xem và chế độ xem form không thể chỉnh sửa.
Các bản ghi có thể được nhóm thành các cột để sử dụng trong trực quan hóa hoặc thao tác quy trình công việc (ví dụ: nhiệm vụ hoặc quản lý tiến độ công việc) hoặc được tách nhóm (chỉ được sử dụng để trực quan hóa các bản ghi).
Phần tử gốc của chế độ xem Kanban là kanban
.
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<kanban>
...
</kanban>
|
Ghi chú
Chế độ xem Kanban tải và hiển thị tối đa mười cột. Bất kỳ cột nào sau đó sẽ bị đóng nhưng người dùng vẫn có thể mở được.
Thuộc tính gốc¶
Các thuộc tính tùy chọn có thể được thêm vào phần tử gốc kanban
để tùy chỉnh chế độ xem.
- string
Tiêu đề của chế độ xem. Nó chỉ được hiển thị nếu bạn mở một hành động không có tên và có mục tiêu là
mới
(mở hộp thoại).- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- create
Tắt/bật tính năng tạo bản ghi trên dạng xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- edit
Tắt/bật phiên bản bản ghi trên chế độ xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- delete
Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua danh sách thả xuống Action.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- default_group_by
Tên của trường mà các bản ghi sẽ được nhóm theo mặc định nếu không có nhóm nào được chỉ định thông qua hành động hoặc search hiện tại.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- default_order
Danh sách các tên trường được phân tách bằng dấu phẩy sẽ ghi đè thứ tự được xác định trên mô hình thông qua thuộc tính
_order
.Để đảo ngược thứ tự sắp xếp của một trường, hãy đặt hậu tố cho trường đó bằng
desc
, cách nhau bằng dấu cách.Example
<tree default_order="sequence,name desc"> ... </tree>
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- class
Thêm các lớp HTML vào phần tử HTML gốc của dạng xem.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- examples
Khóa trong
KanbanExamplesRegistry
của các ví dụ có thể được duyệt khi tạo một cột mới trong chế độ xem kanban được nhóm.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- group_create
Thanh Thêm cột mới có hiển thị hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- group_delete
Liệu các cột có thể bị xóa thông qua menu răng cưa hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- group_edit
Liệu các cột có thể được chỉnh sửa thông qua menu răng cưa hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- groups_draggable
Liệu các cột có thể được sắp xếp lại hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- records_draggable
Liệu các bản ghi có thể được kéo khi chế độ xem Kanban được nhóm lại hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- archivable
Liệu các bản ghi thuộc một cột có thể được lưu trữ và hủy lưu trữ hay không khi trường
active
được xác định trên mô hình.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
- quick_create
Liệu có thể tạo bản ghi mà không cần chuyển sang dạng xem biểu mẫu hay không.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Đúng
khi chế độ xem kanban được nhóm theo nhiều trường 2one, vùng chọn, char hoặc boolean, nếu không thìFalse
- quick_create_view
Tham chiếu của chế độ xem form sẽ mở khi sử dụng tính năng tạo nhanh các bản ghi.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- on_create
Hành động tùy chỉnh sẽ gọi khi nhấp vào Tạo.
Nếu được đặt thành
'quick_create'
, tính năng tạo nhanh bản ghi sẽ được sử dụng thay thế. Nếu tính năng tạo nhanh bị tắt, hành động tạo tiêu chuẩn sẽ được gọi.- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
- sample
Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.
Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường
display_name
trên mô hìnhres.users
sẽ được điền tên người mẫu, trong khi trườngemail
sẽ có dạngfirstname.lastname@sample.demo
.Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
- banner_route
Lộ trình tìm nạp HTML từ đó và thêm nó vào chế độ xem.
Nếu thuộc tính này được đặt, URL của controller Route sẽ được tìm nạp và nội dung trả về sẽ được hiển thị phía trên chế độ xem. Phản hồi JSON từ bộ điều khiển phải chứa khóa
html
.Nếu HTML chứa thẻ
<link>
cho biểu định kiểu, thẻ này sẽ bị xóa khỏi vị trí ban đầu và được thêm vào phần<head>
.Để tương tác với phần phụ trợ, hãy sử dụng thẻ
<a type="action">
. Để biết thêm chi tiết, hãy tham khảo tài liệu về phương thức_onActionClicked
trong AbstractController.Chỉ các chế độ xem mở rộng
AbstractView
vàAbstractController
, chẳng hạn như Hình thức, Kanban, và Danh sách, mới có thể sử dụng cái này thuộc tính.Example
<tree banner_route="/module_name/hello" />
class MyController(odoo.http.Controller): @http.route('/module_name/hello', auth='user', type='json') def hello(self): return { 'html': """ <div> <link href="/module_name/static/src/css/banner.css" rel="stylesheet"> <h1>hello, world</h1> </div> """ }
- yêu cầu
Không bắt buộc
- kiểu
con đường
- mặc định
''
Các thành phần¶
Chế độ xem Kanban chấp nhận các phần tử con sau: field, header, progressbar, và templates.
Phần giữ chỗ được viết hoa tất cả.
field
: hiển thị giá trị trường¶
Phần tử field
khai báo các trường sẽ sử dụng trong templates. Nếu trường hiển thị đơn giản thì không cần khai báo trước.
<kanban>
<field name="FIELD_NAME"/>
...
</kanban>
Phần tử field
có thể có các thuộc tính sau:
- name
Tên của trường cần hiển thị.
- yêu cầu
Bắt buộc
- kiểu
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<kanban>
<templates>
<t t-name="kanban-box">
<div>
<field name="name"/>
</div>
</t>
</templates>
</kanban>
|
progressbar
: hiển thị thanh tiến trình trên đầu cột¶
Phần tử progressbar
được sử dụng để xác định thanh tiến trình hiển thị trên đầu các cột kanban.
<kanban>
<progressbar field="FIELD_NAME"/>
...
</kanban>
Phần tử progressbar
có thể có các thuộc tính sau:
- field
Tên của trường làm cơ sở cho các nhóm con của thanh tiến trình.
- yêu cầu
Bắt buộc
- kiểu
- colors
Ánh xạ các giá trị trường của thanh tiến trình tới các giá trị màu
tắt tiếng
,thành công
,cảnh báo
vànguy hiểm
.- yêu cầu
Bắt buộc
- kiểu
- sum_field
Tên của trường sẽ sử dụng tính tổng được hiển thị bên cạnh thanh tiến trình. Nếu không được đặt, tổng số bản ghi sẽ được hiển thị thay thế.
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
''
Cấu trúc có thể có và cách thể hiện kết xuất của nó
<kanban>
<progressbar field="activity_state"
colors="{'planned': 'success', 'today': 'warning', 'overdue': 'danger'}"
sum_field="expected_revenue"/>
<templates>
...
</templates>
</kanban>
|
templates
: xác định cấu trúc thẻ¶
Các phần tử templates
được sử dụng để xác định QWeb templates cấu trúc các thẻ kanban.
Định nghĩa cấu trúc thẻ có thể được chia thành nhiều mẫu để rõ ràng, nhưng phải xác định ít nhất một mẫu gốc kanban-box
.
Hai mẫu bổ sung có thể được xác định: kanban-menu
và kanban-tooltip
. Nếu được xác định, mẫu kanban-menu
sẽ được hiển thị bên trong danh sách thả xuống có thể được chuyển đổi bằng dấu chấm lửng dọc (⋮) ở phía trên bên phải của thẻ. Mẫu kanban-tooltip
được hiển thị bên trong chú giải công cụ khi di chuột qua thẻ kanban.
Các mẫu được viết bằng JavaScript QWeb
<kanban>
...
<templates>
<t t-name="kanban-box">
<div>
<field name="name"/>
</div>
</t>
</templates>
</kanban>
Các biến sau có sẵn trong ngữ cảnh kết xuất:
- widget
KanbanRecord()
hiện tại. Nó có thể được sử dụng để lấy một số thông tin meta. Các phương thức này cũng có sẵn trực tiếp trong ngữ cảnh mẫu và không cần truy cập thông quawidget
.- kiểu
- record
Một đối tượng có tất cả các trường được yêu cầu làm thuộc tính. Mỗi trường có hai thuộc tính:
value
vàraw_value
. Cái trước được định dạng theo tham số người dùng hiện tại trong khi cái sau là giá trị thô từread()
(ngoại trừ các trườngdate
vàdatetime
được định dạng theo ngôn ngữ người dùng).- kiểu
- context
Ngữ cảnh hiện tại được truyền từ hành động mở chế độ xem kanban hoặc trường one2many hoặc many2many nhúng chế độ xem kanban trong chế độ xem biểu mẫu.
- kiểu
- read_only_mode
- kiểu
- selection_mode
Chế độ xem Kanban có được mở khi chọn trường many2one hay many2many trong môi trường di động hay không.
- kiểu
Mặc dù hầu hết các mẫu kanban đều là Mẫu QWeb tiêu chuẩn, nhưng chế độ xem kanban xử lý các phần tử field
, button
và a
là một cách đặc biệt:
Theo mặc định, các trường được thay thế bằng giá trị được định dạng của chúng, trừ khi thuộc tính
widget
được chỉ định, trong trường hợp đó việc hiển thị và hành vi của chúng phụ thuộc vào tiện ích tương ứng. Thuộc tínhwidget
có thể có các giá trị khác nhau bao gồm:- handle
Cho phép sắp xếp lại các bản ghi bằng cách kéo và thả khi chúng được sắp xếp dựa trên các trường
trình tự
(hoặcsố nguyên
).
Các nút và liên kết có thuộc tính
type
thực hiện các hoạt động khác với chức năng HTML tiêu chuẩn của chúng. Thuộc tínhtype
có thể có các giá trịaction
vàobject
của các nút thông thường hoặc các giá trị sau:- open
Nhấp vào phần tử sẽ mở bản ghi của thẻ ở chế độ xem biểu mẫu ở chế độ chỉ đọc.
- edit
Nhấp vào phần tử sẽ mở bản ghi của thẻ ở chế độ xem biểu mẫu ở chế độ có thể chỉnh sửa.
- delete
Nhấp vào phần tử sẽ xóa bản ghi của thẻ và xóa thẻ.
QWeb¶
Chế độ xem QWeb là các mẫu Mẫu QWeb tiêu chuẩn bên trong arch
của chế độ xem. Chúng không có phần tử gốc cụ thể. Vì chế độ xem QWeb không có phần tử gốc cụ thể nên loại của chúng phải được chỉ định rõ ràng (không thể suy ra từ phần tử gốc của trường arch
).
Chế độ xem QWeb có hai trường hợp sử dụng:
chúng có thể được sử dụng làm mẫu giao diện người dùng, trong trường hợp đó `` mẫu`` nên được sử dụng làm lối tắt.
chúng có thể được sử dụng làm chế độ xem qweb thực tế (được mở bên trong một hành động), trong trường hợp đó, chúng phải được xác định là chế độ xem thông thường với
loại
rõ ràng (không thể suy ra) và một mô hình.
Các bổ sung chính của qweb-as-view cho qweb-as-template cơ bản là:
qweb-as-view có trường hợp đặc biệt cho phần tử
<nav>
mang lớp CSSo_qweb_cp_buttons
: nội dung của nó phải là các nút và sẽ được trích xuất và chuyển đến khu vực nút của bảng điều khiển, `` Bản thân <nav>`` sẽ bị xóa, đây là cách giải quyết để kiểm soát chế độ xem bảng điều khiển chưa tồn tạiKết xuất qweb-as-view thêm một số mục vào bối cảnh kết xuất qweb tiêu chuẩn:
người mẫu
mô hình mà chế độ xem qweb bị ràng buộc
tên miền
miền được cung cấp bởi chế độ xem tìm kiếm
- `` bối cảnh``
bối cảnh được cung cấp bởi chế độ xem tìm kiếm
kỷ lục
một proxy lười biếng cho
model.search(domain)
, điều này có thể được sử dụng nếu bạn chỉ muốn lặp lại các bản ghi và không thực hiện các thao tác phức tạp hơn (ví dụ: nhóm)
qweb-as-view cũng cung cấp các hook kết xuất bổ sung:
_qweb_prepare_context(view_id, domain)
chuẩn bị bối cảnh hiển thị cụ thể cho qweb-as-viewqweb_render_view(view_id, domain)
là phương thức được máy khách gọi và sẽ gọi các phương thức chuẩn bị ngữ cảnh và cuối cùng làenv['ir.qweb'].render()
.
đồ thị¶
Chế độ xem biểu đồ được sử dụng để trực quan hóa các tập hợp trên một số bản ghi hoặc nhóm bản ghi. Phần tử gốc của nó là <graph>
có thể nhận các thuộc tính sau:
loại
(tùy chọn)một trong
bar
(mặc định),pie
vàline
, loại biểu đồ sẽ sử dụng- `` xếp chồng`` (tùy chọn)
chỉ được sử dụng cho biểu đồ `` thanh``. Đặt thành
0
để ban đầu ngăn các thanh trong một nhóm được xếp chồng lên nhau.vô hiệu hóa_liên kết
(tùy chọn)được đặt thành
1
để ngăn chuyển hướng các nhấp chuột trên biểu đồ sang chế độ xem danh sáchđặt hàng
(tùy chọn)nếu được đặt, các giá trị trục x sẽ được sắp xếp theo mặc định theo số đo của chúng theo thứ tự đã cho (
asc
hoặcdesc
). Chỉ được sử dụng cho biểu đồbar
và ''pie``.chuỗi
(tùy chọn)chuỗi được hiển thị trong đường dẫn khi chuyển hướng đến chế độ xem danh sách.
- sample
Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.
Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường
display_name
trên mô hìnhres.users
sẽ được điền tên người mẫu, trong khi trườngemail
sẽ có dạngfirstname.lastname@sample.demo
.Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
Phần tử duy nhất được phép trong chế độ xem biểu đồ là field
có thể có các thuộc tính sau:
tên
(bắt buộc)tên của trường sẽ sử dụng trong dạng xem. Nếu được sử dụng để nhóm (thay vì tổng hợp)
vô hình
(tùy chọn)nếu đúng, trường sẽ không xuất hiện trong các thước đo đang hoạt động cũng như trong các thước đo có thể chọn.
loại
(tùy chọn)nếu được đặt thành
đo
, trường sẽ được sử dụng làm giá trị tổng hợp trong một nhóm thay vì tiêu chí nhóm. Nó chỉ hoạt động cho trường cuối cùng có thuộc tính đó nhưng nó hữu ích cho các trường khác có thuộc tính chuỗi (xem bên dưới).khoảng
(tùy chọn)trên các trường ngày và giờ, nhóm theo khoảng thời gian đã chỉ định (
ngày
,tuần
,tháng
,quý
hoặcnăm
) thay vì nhóm theo ngày giờ cụ thể ( độ phân giải thứ hai cố định) hoặc ngày (độ phân giải ngày cố định). Mặc định làtháng
.chuỗi
(tùy chọn)chỉ được sử dụng cho trường có
type="measure"
. Tên sẽ được sử dụng để hiển thị trường trong chế độ xem biểu đồ, ghi đè thuộc tính Chuỗi python mặc định của trường.
Các thước đo được tạo tự động từ các trường mô hình; chỉ các trường tổng hợp được sử dụng. Các thước đo đó cũng được sắp xếp theo thứ tự bảng chữ cái trên chuỗi của trường.
Cảnh báo
việc tổng hợp chế độ xem biểu đồ được thực hiện trên nội dung cơ sở dữ liệu, không thể sử dụng các trường chức năng không được lưu trữ trong chế độ xem biểu đồ
Trục¶
Chế độ xem trục được sử dụng để trực quan hóa các tập hợp dưới dạng bảng tổng hợp. Phần tử gốc của nó là <pivot>
có thể nhận các thuộc tính sau:
vô hiệu hóa_liên kết
(tùy chọn)Đặt thành
1
để xóa liên kết của ô bảng tới chế độ xem danh sách.display_quantity
(tùy chọn)Đặt thành
1
để hiển thị cột Số lượng theo mặc định.default_order
(tùy chọn)Tên của thước đo và thứ tự (asc hoặc desc) sẽ sử dụng làm thứ tự mặc định trong dạng xem.
<pivot default_order="foo asc"> <field name="foo" type="measure"/> </pivot>
Phần tử duy nhất được phép trong chế độ xem trục là field
có thể có các thuộc tính sau:
tên
(bắt buộc)tên của trường sẽ sử dụng trong dạng xem. Nếu được sử dụng để nhóm (thay vì tổng hợp)
chuỗi
(tùy chọn)tên sẽ được sử dụng để hiển thị trường trong chế độ xem trục, ghi đè thuộc tính Chuỗi python mặc định của trường.
loại
(tùy chọn)cho biết liệu trường này nên được sử dụng làm tiêu chí nhóm hay làm giá trị tổng hợp trong một nhóm. Các giá trị có thể là:
hàng
(mặc định)nhóm theo trường được chỉ định, mỗi nhóm sẽ có hàng riêng.
col
tạo các nhóm theo cột
đo lường
trường để tổng hợp trong một nhóm
- `` khoảng``
trên các trường ngày và giờ, nhóm theo khoảng thời gian đã chỉ định (
ngày
,tuần
,tháng
,quý
hoặcnăm
) thay vì nhóm theo ngày giờ cụ thể ( độ phân giải thứ hai cố định) hoặc ngày (độ phân giải ngày cố định).
vô hình
(tùy chọn)nếu đúng thì trường này sẽ không xuất hiện trong các thước đo đang hoạt động cũng như trong các thước đo có thể chọn (hữu ích cho các trường không được tổng hợp có ý nghĩa, chẳng hạn như các trường ở các đơn vị khác nhau, ví dụ: € và $).
- sample
Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.
Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường
display_name
trên mô hìnhres.users
sẽ được điền tên người mẫu, trong khi trườngemail
sẽ có dạngfirstname.lastname@sample.demo
.Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
Các thước đo được tạo tự động từ các trường mô hình; chỉ các trường tổng hợp được sử dụng. Các thước đo đó cũng được sắp xếp theo thứ tự bảng chữ cái trên chuỗi của trường.
Cảnh báo
Giống như chế độ xem biểu đồ, trục tổng hợp dữ liệu về nội dung cơ sở dữ liệu, điều đó có nghĩa là không thể sử dụng các trường chức năng không được lưu trữ trong chế độ xem trục
Trong chế độ xem Pivot, field
có thể có thuộc tính widget
để xác định định dạng của nó. Tiện ích phải là một trình định dạng trường, trong đó thú vị nhất là ngày
, datetime
, float_time
và tiền tệ
.
Ví dụ: chế độ xem trục của bảng chấm công có thể được xác định là:
<pivot string="Timesheet">
<field name="employee_id" type="row"/>
<field name="date" interval="month" type="col"/>
<field name="unit_amount" type="measure" widget="float_time"/>
</pivot>
Lịch¶
Chế độ xem lịch hiển thị các bản ghi dưới dạng sự kiện theo lịch hàng ngày, hàng tuần, hàng tháng hoặc hàng năm.
Ghi chú
Theo mặc định, chế độ xem lịch sẽ tập trung vào ngày hiện tại (hôm nay). Bạn có thể chuyển một ngày bắt đầu cụ thể vào ngữ cảnh của hành động để đặt tiêu điểm ban đầu của lịch theo khoảng thời gian (xem chế độ
) xung quanh ngày này (khóa ngữ cảnh để sử dụng là initial_date
)
Phần tử gốc của chúng là <calendar>
. Các thuộc tính có sẵn trên chế độ xem lịch là:
- sợi dây
chuỗi (mặc định:
''
)Tiêu đề dạng xem này chỉ được hiển thị nếu bạn mở một hành động không có tên và mục tiêu của nó là 'mới' (mở hộp thoại)
- tạo nên
bool (mặc định:
True
)Tắt/bật tính năng tạo bản ghi trên dạng xem.
- biên tập
bool (mặc định:
True
)Tắt/bật phiên bản bản ghi trên chế độ xem.
- xóa bỏ
bool (mặc định:
True
)Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua menu thả xuống Hành động.
ngày_bắt đầu
(bắt buộc)tên trường của bản ghi chứa ngày bắt đầu sự kiện
ngày_dừng
tên trường của bản ghi chứa ngày kết thúc của sự kiện, nếu
date_stop
được cung cấp, các bản ghi sẽ có thể di chuyển được (thông qua kéo và thả) trực tiếp trong lịch- `` ngày_delay``
thay thế cho
date_stop
, cung cấp thời lượng của sự kiện thay vì ngày kết thúc (đơn vị: ngày)màu sắc
tên của trường bản ghi sẽ sử dụng cho phân đoạn màu. Các bản ghi trong cùng phân đoạn màu được phân bổ cùng màu nổi bật trong lịch, các màu được phân bổ bán ngẫu nhiên. Đã hiển thị display_name/avatar của bản ghi hiển thị trong thanh bên
form_view_id
view để mở khi người dùng tạo hoặc chỉnh sửa một sự kiện. Lưu ý rằng nếu thuộc tính này không được đặt, chế độ xem lịch sẽ quay trở lại id của chế độ xem biểu mẫu trong hành động hiện tại, nếu có.
sự kiện_open_popup
Nếu tùy chọn 'event_open_popup' được đặt thành true thì chế độ xem lịch sẽ mở các sự kiện (hoặc bản ghi) trong FormViewDialog. Nếu không, nó sẽ mở các sự kiện ở chế độ xem biểu mẫu mới (với do_action)
tạo_nhanh
cho phép tạo sự kiện nhanh khi nhấp chuột: chỉ yêu cầu người dùng nhập
tên
(trường mà giá trị này được lưu vào có thể được kiểm soát thông quarec_name
) và cố gắng tạo một sự kiện mới chỉ với điều đó và thời gian sự kiện được nhấp vào. Quay lại hộp thoại biểu mẫu đầy đủ nếu quá trình tạo nhanh không thành côngquick_create_view_id
Xem để mở khi thuộc tính
quick_create
được đặt và người dùng tạo một sự kiện thay vì hộp thoại mặc định.tạo_name_field
tên trường của bản ghi chứa phần trình bày văn bản của bản ghi, tên này được sử dụng khi tạo bản ghi thông qua cơ chế 'tạo nhanh'
cả ngày
Tên của trường boolean trên bản ghi cho biết liệu sự kiện tương ứng có được gắn cờ là kéo dài cả ngày hay không (và thời lượng không liên quan)
chế độ
Chế độ hiển thị mặc định khi tải lịch. Các thuộc tính có thể có là:
ngày
,tuần
,tháng
,năm
- `` cân``
Danh sách thang đo được phân tách bằng dấu phẩy để cung cấp. Theo mặc định, tất cả các thang đo đều có sẵn. Xem chế độ để biết các giá trị tỷ lệ có thể có.
tạo
,xóa
cho phép vô hiệu hóa hành động tương ứng trong chế độ xem bằng cách đặt thuộc tính tương ứng thành
false
<trường>
khai báo các trường để tổng hợp hoặc sử dụng trong kanban logic. Nếu trường này chỉ được hiển thị trong thẻ lịch.
Các trường có thể có các thuộc tính bổ sung:
vô hình
sử dụng "True" để ẩn giá trị trong thẻ
trường_avatar
chỉ dành cho trường x2many, để hiển thị hình đại diện thay vì display_name trong thẻ
write_model
vàwrite_field
vàfilter_field
bạn có thể thêm bộ lọc và lưu kết quả vào mô hình đã xác định, bộ lọc sẽ được thêm vào thanh bên.
filter_field
là tùy chọn và cho phép bạn chỉ định trường sẽ giữ trạng thái của bộ lọc.bộ lọc
và ''màu``sử dụng "True" để thêm trường này vào bộ lọc ở thanh bên. Bạn có thể chỉ định trường
color
được sử dụng để tô màu cho hộp kiểm.
mô hình chung¶
Hoạt động¶
Chế độ xem Hoạt động được sử dụng để hiển thị các hoạt động được liên kết với bản ghi. Dữ liệu được hiển thị dưới dạng biểu đồ với các bản ghi tạo thành hàng và hoạt động tạo thành cột. Ô đầu tiên của mỗi hàng hiển thị một thẻ (có thể tùy chỉnh, xem templates
, khá giống với Kanban) đại diện cho bản ghi tương ứng. Khi nhấp vào các ô khác, mô tả chi tiết về tất cả các hoạt động cùng loại cho bản ghi sẽ được hiển thị.
Cảnh báo
Chế độ xem Hoạt động chỉ khả dụng khi mô-đun mail
được cài đặt và đối với các mô hình kế thừa từ mail.activity.mixin
.
Phần tử gốc của chế độ xem Hoạt động là <activity>
, nó chấp nhận các thuộc tính sau:
chuỗi
(bắt buộc)Tiêu đề nên mô tả quan điểm
Các phần tử con có thể có của phần tử khung nhìn là:
- `` lĩnh vực``
khai báo các trường sẽ sử dụng trong hoạt động logic. Nếu trường được hiển thị đơn giản trong chế độ xem hoạt động thì không cần phải khai báo trước.
Các thuộc tính có thể có là:
tên
(bắt buộc)tên của trường để tìm nạp
- `` mẫu``
định nghĩa các mẫu Mẫu QWeb. Định nghĩa thẻ có thể được chia thành nhiều mẫu để rõ ràng, nhưng chế độ xem hoạt động phải xác định ít nhất một mẫu gốc
hộp hoạt động
, mẫu này sẽ được hiển thị một lần cho mỗi bản ghi.Chế độ xem hoạt động sử dụng hầu hết các tiêu chuẩn javascript qweb và cung cấp các biến ngữ cảnh sau (xem Kanban để biết thêm chi tiết):
tiện ích
ActivityRecord()
hiện tại, có thể được sử dụng để tìm nạp một số thông tin meta. Các phương thức này cũng có sẵn trực tiếp trong ngữ cảnh mẫu và không cần truy cập thông quawidget
kỷ lục
một đối tượng có tất cả các trường được yêu cầu làm thuộc tính của nó. Mỗi trường có hai thuộc tính
value
vàraw_value
Đội quân¶
Enterprise featureChế độ xem nhóm được sử dụng để hiển thị và hiểu cách một số dữ liệu thay đổi trong một khoảng thời gian. Ví dụ: hãy tưởng tượng rằng đối với một doanh nghiệp nhất định, khách hàng có thể đăng ký một số dịch vụ. Sau đó, chế độ xem nhóm có thể hiển thị tổng số lượng đăng ký mỗi tháng và nghiên cứu tốc độ khách hàng rời khỏi dịch vụ (rời bỏ). Khi nhấp vào một ô, chế độ xem nhóm sẽ chuyển hướng bạn đến một hành động mới trong đó bạn sẽ chỉ nhìn thấy các bản ghi có trong khoảng thời gian của ô; hành động này chứa chế độ xem danh sách và chế độ xem biểu mẫu.
Ghi chú
Theo mặc định, chế độ xem nhóm sẽ sử dụng cùng chế độ xem danh sách và biểu mẫu như chế độ xem được xác định trên hành động. Bạn có thể chuyển chế độ xem danh sách và chế độ xem biểu mẫu sang ngữ cảnh của hành động để đặt/ghi đè các chế độ xem sẽ được sử dụng (các phím ngữ cảnh sẽ sử dụng là form_view_id
và list_view_id
)
Ví dụ: đây là chế độ xem nhóm rất đơn giản:
<cohort string="Subscription" date_start="date_start" date_stop="date" interval="month"/>
Phần tử gốc của chế độ xem Nhóm là <cohort>, nó chấp nhận các thuộc tính sau:
chuỗi
(bắt buộc)Tiêu đề nên mô tả quan điểm
ngày_bắt đầu
(bắt buộc)Trường ngày hoặc giờ hợp lệ. Trường này được hiểu theo quan điểm là ngày bắt đầu của bản ghi
ngày_stop
(bắt buộc)Trường ngày hoặc giờ hợp lệ. Trường này được hiểu theo dạng xem là ngày kết thúc của bản ghi. Đây là lĩnh vực sẽ quyết định tỷ lệ rời bỏ.
vô hiệu hóa_liên kết
(tùy chọn)Đặt thành
1
để ngăn chuyển hướng các nhấp chuột vào các ô nhóm thuần tập sang chế độ xem danh sách.chế độ
(tùy chọn)Một chuỗi để mô tả chế độ. Nó phải là 'churn' hoặc 'retention' (mặc định). Chế độ rời bỏ sẽ bắt đầu ở mức 0% và tích lũy theo thời gian trong khi tỷ lệ giữ chân sẽ bắt đầu ở mức 100% và giảm dần theo thời gian.
dòng thời gian
(tùy chọn)Một chuỗi để mô tả dòng thời gian. Nó phải là 'lùi' hoặc 'tiến' (mặc định). Dòng thời gian xuôi sẽ hiển thị dữ liệu từ date_start đến date_stop, trong khi dòng thời gian lùi sẽ hiển thị dữ liệu từ date_stop đến date_start (khi date_start ở trong tương lai/lớn hơn date_stop).
khoảng
(tùy chọn)Một chuỗi để mô tả một khoảng thời gian. Nó phải là 'ngày', 'tuần', 'tháng'' (mặc định) hoặc 'năm'.
đo
(tùy chọn)Một trường có thể được tổng hợp. Trường này sẽ được sử dụng để tính toán các giá trị cho mỗi ô. Nếu không được đặt, chế độ xem nhóm sẽ đếm số lần xuất hiện.
<field>
(tùy chọn)cho phép chỉ định một trường cụ thể để quản lý trường đó từ các biện pháp có sẵn, mục đích chính của nó là để ẩn một trường khỏi các biện pháp có thể chọn:
tên
(bắt buộc)tên của trường sẽ sử dụng trong dạng xem.
chuỗi
(tùy chọn)tên sẽ được sử dụng để hiển thị trường trong chế độ xem nhóm, sẽ ghi đè thuộc tính Chuỗi python mặc định của trường.
vô hình
(tùy chọn)nếu đúng thì trường này sẽ không xuất hiện trong các thước đo đang hoạt động cũng như trong các thước đo có thể chọn (hữu ích cho các trường không được tổng hợp có ý nghĩa, chẳng hạn như các trường ở các đơn vị khác nhau, ví dụ: € và $). Nếu giá trị là một miền, miền đó sẽ được đánh giá trong ngữ cảnh bản ghi của hàng hiện tại, nếu
True
thì thuộc tính tương ứng được đặt trên ô.
- odoo.addons.base.models.ir_ui_view.sample
Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.
Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường
display_name
trên mô hìnhres.users
sẽ được điền tên người mẫu, trong khi trườngemail
sẽ có dạngfirstname.lastname@sample.demo
.Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
Lưới¶
Enterprise featureHạn chế¶
Chế độ xem này là một công việc đang được tiến hành và có thể phải được mở rộng hoặc thay đổi.
chỉ các trường cột `` date`` đã được thử nghiệm,
selection
vàmany2one
được triển khai và hỗ trợ trên danh nghĩa nhưng chưa được thử nghiệm,datetime
hoàn toàn không được triển khai.các ô cột khó có thể cấu hình được và phải là số
điều chỉnh ô bị tắt theo mặc định và phải được định cấu hình để bật
Siêu dữ liệu ACL
tạo
,chỉnh sửa
vàxóa
ACL không được tự động đặt trên chế độ xem gốc do các hạn chế trong quá trình xử lý hậu kỳfields_view_get
(có một danh sách rõ ràng cố định về chế độ xem các loại nhận các thuộc tính đó)
Lược đồ¶
Chế độ xem lưới có lược đồ riêng và xác thực bổ sung trong mô-đun này. Kiến trúc khung nhìn là:
<lưới>
(1)phần tử gốc kiến trúc
thuộc tính
chuỗi
bắt buộcCác thuộc tính
tạo
,chỉnh sửa
vàxóa
tùy chọnthuộc tính `` adjustment`` và `` adjustment_name`` tùy chọn
điều chỉnh
có thể là `` đối tượng`` hoặc `` hành động`` để cho biết liệu việc điều chỉnh của một ô có nên được thực hiện thông qua lệnh gọi phương thức hay thực thi hành động hay không. `` adjustment_name`` cung cấp tên phương thức và id hành động tương ứng.Trong cả hai trường hợp, các tham số điều chỉnh được cung cấp dưới dạng thành viên ngữ cảnh
grid_just
, trong trường hợpobject
, các tham số cũng được cung cấp dưới dạng tham số hàm vị trí (bên cạnh danh sách id trống):tên miền hàng
miền khớp với toàn bộ hàng của ô đã điều chỉnh
- `` trường_cột``
tên của cột cho ô được điều chỉnh
giá trị cột
giá trị của cột cho ô được điều chỉnh
- `` trường_ô``
trường đo của ô được điều chỉnh
thay đổi
sự khác biệt giữa giá trị cũ của ô và giá trị được điều chỉnh, có thể dương hoặc âm
thuộc tính
hide_line_total
vàhide_column_total
tùy chọnhide_line_total
được đặt thành true để ẩn toàn bộ dòng (mặc định là sai)
hide_column_total
đặt thành true để ẩn cột tổng (mặc định là sai)
thuộc tính
barchart_total
tùy chọnbiểu đồ thanh_tổng
được đặt thành
true
để hiển thị biểu đồ thanh ở cuối lưới, dựa trên tổng số cột (mặc định là sai).
thuộc tính
create_inline
vàdisplay_empty
tùy chọntạo_inline
được đặt thành
true
để hiển thị một hàng bổ sung ở cuối lưới bằng nútThêm một dòng
(mặc định là sai). Khi tùy chọn này được đặt thànhtrue
, nútThêm dòng
từ bảng điều khiển sẽ bị ẩn. Khi không có dữ liệu và khidisplay_empty
không được đặt (vì vậy khi nội dung trợ giúp được hiển thị), nútThêm dòng
từ bảng điều khiển sẽ được hiển thị để cho phép người dùng tạo đầu tiên ghi.display_empty
được đặt thành
true
để tiếp tục hiển thị lưới khi không có dữ liệu (mặc định là sai). Điều này có thể hữu ích khi bạn muốn người dùng có thể theo dõi giai đoạn hiện tại (vì ngày tháng được hiển thị trong tiêu đề cột). Xin nhắc lại, khi không có dữ liệu và khi thuộc tính này không được đặt, nội dung trợ giúp sẽ được hiển thị thay vì dạng lưới.
<nút>
(0+)Các nút hành động thông thường của SoOn, được hiển thị trong tiêu đề chế độ xem
thuộc tính
chuỗi
bắt buộc (nhãn nút)thuộc tính
type
bắt buộc,object
hoặcaction
Ghi chú
các nút quy trình công việc không được hỗ trợ
Thuộc tính
name
bắt buộc, tên của phương thức cần gọi hoặc ID của hành động cần thực thitùy chọn
ngữ cảnh
Lệnh gọi lại máy chủ được cung cấp tất cả id bản ghi được hiển thị trong dạng xem, dưới dạng id được truyền cho phương thức (nút
đối tượng
) hoặc dưới dạngactive_ids
(nútaction
của ngữ cảnh)<field type="row">
(1+)Các trường nhóm hàng sẽ được thay thế bằng bộ lọc nhóm của chế độ xem tìm kiếm nếu có.
Thứ tự của các trường
hàng
trong chế độ xem cung cấp độ sâu nhóm của chúng: nếu trường đầu tiên làschool
và trường thứ hai làage
thì các bản ghi sẽ được nhóm theoschool
trước và theotuổi
trong mỗi trường.<field type="col">
(1)Trường nhóm cột.
Trường col có thể chứa 0+ phần tử
<range>
chỉ định phạm vi cột có thể tùy chỉnh. Phần tửrange
có các thuộc tính bắt buộc sautên
có thể được sử dụng để ghi đè phạm vi mặc định (mặc định là phạm vi đầu tiên) thông qua giá trị ngữ cảnh
grid_range
chuỗi
nhãn của nút phạm vi (người dùng có thể nhìn thấy)
- `` khoảng``
tên tượng trưng của khoảng tất cả các cột sẽ hiển thị cùng một lúc trong chế độ xem, có thể kích hoạt phân trang.
Đối với các trường
ngày
, khoảng thời gian hợp lệ hiện là `` tuần`` và `` tháng``.bước
tên tượng trưng của bước giữa một cột và cột trước/tiếp theo
Đối với các trường
ngày
, khoảng thời gian hợp lệ duy nhất hiện tại làngày
.
<field type="đo">
(1)Trường ô, được tích lũy tự động (bởi
read_group
).Trường đo có thể lấy thuộc tính
widget
để tùy chỉnh cách hiển thị của nó.
Tương tác máy chủ¶
Ngoài các nút tùy chọn, chế độ xem lưới hiện gọi hai phương thức:
read_grid
(được mô-đun cung cấp trên tất cả các mô hình) trả về gần như toàn bộ nội dung của lưới dưới dạng lệnh:tiêu đề hàng là danh sách các từ điển có các phím sau:
giá trị
(bắt buộc)cái này ánh xạ tới một từ điển có khóa trên mỗi trường `` hàng``, các giá trị luôn có dạng
[giá trị, nhãn]
.tên miền
(bắt buộc)miền của bất kỳ bản ghi nào tại nguồn của hàng này, trong trường hợp cần sao chép bản ghi trong quá trình điều chỉnh ô
tiêu đề cột là danh sách các từ điển có ít nhất một khóa:
giá trị
(bắt buộc)xem giá trị tiêu đề hàng
tên miền
(bắt buộc)xem giá trị tên miền cột
hiện tại
(tùy chọn)boolean, đánh dấu/đánh dấu một cột
dữ liệu lưới dưới dạng danh sách (các hàng) danh sách (của các ô) của các ô sẽ chỉ ra mỗi ô bằng các phím sau:
giá trị
giá trị số được liên kết với ô
tên miền
miền khớp với bản ghi của ô (nên được coi là mờ)
- `` kích thước``
số lượng bản ghi được nhóm trong ô
chỉ đọc
(tùy chọn)một boolean chỉ ra rằng ô cụ thể này không thể chỉnh sửa được ở máy khách
các lớp
(tùy chọn)danh sách các lớp (dưới dạng chuỗi) để thêm vào vùng chứa của ô (giữa TD của ô và phần tử có khả năng chỉnh sửa của ô).
Trong trường hợp có xung đột giữa danh sách này và các lớp cơ sở (có tiền tố
o_grid_cell_
), các lớp trong danh sách này sẽ bị bỏ qua.
Lưu ý rằng dữ liệu lưới dày đặc, nếu truy vấn cơ sở dữ liệu không mang lại nhóm nào khớp với ô thì ô sẽ tạo ra một ô "trống" với các giá trị mặc định cho các khóa bắt buộc.
prev
vànext
có thể là giả (không phân trang) hoặc một mục ngữ cảnh để hợp nhất vào ngữ cảnh của chế độ xem thànhread_grid
trang trước hoặc trang tiếp theo, nó phải được coi là mờ
read_grid_domain(field, range)
(được mô-đun cung cấp trên tất cả các mô hình) trả về miền khớp với "span" được định cấu hình hiện tại của lưới. Việc này cũng đượcread_grid
thực hiện nội bộ, nhưng có thể hữu ích hoặc cần thiết để gọi độc lập để sử dụng với các ví dụ riêng biệt.search_count
hoặcread_group
.just_grid
, hiện chưa có triển khai chung và ngữ nghĩa của nó có thể thay đổi theo thời gian và trường hợp sử dụng
Móc máy chủ¶
read_grid
gọi một số hook cho phép tùy chỉnh hoạt động của nó từ bên trong mà không cần phải ghi đè toàn bộ phương thức:
_grid_format_cell(nhóm, trường ô)
chuyển đổi đầu ra của read_group (theo nhóm) thành các ô theo định dạng được mô tả ở trên (như một phần của "dữ liệu lưới")
_grid_make_empty_cell(row_domain, cột_domain, view_domain)
tạo một phiên bản trống của một ô (nếu không có nhóm tương ứng)
_grid_column_info(tên, phạm vi)
tạo một đối tượng ColumnMetadata dựa trên loại cột, lưu trữ các giá trị được trả về trực tiếp (như một phần của
read_grid
) hoặc truy vấn đã sử dụng và định dạng lạiread_group
thànhread_grid
:- `` phân nhóm``
trường/truy vấn nhóm thực tế cho các cột
tên miền
tên miền áp dụng cho
read_group
trong trường hợp trường cột được phân trang, có thể là danh sách trống- `` trước`` và `` tiếp theo``
các phân đoạn ngữ cảnh sẽ được gửi đến
read_grid
cho các trang trước và sau trang hiện tại. NếuFalse
, vô hiệu hóa phân trang theo hướng đógiá trị
giá trị cột để hiển thị trên "trang hiện tại", mỗi giá trị là một từ điển có các khóa sau:
giá trị
từ điển ánh xạ tên trường thành giá trị cho toàn bộ cột, thường chỉ
tên
-> một giá trịtên miền
tên miền phù hợp với cột cụ thể này
là_hiện hành
Đúng
nếu cột hiện tại phải được phác thảo cụ thể trong lưới,Sai
nếu không- `` định dạng``
cách định dạng các giá trị của cột/loại đó từ định dạng
read_group
sang định dạngread_grid
(khớp vớivalues
trong ColumnInfo)
ACL¶
nếu chế độ xem không thể chỉnh sửa được thì các ô riêng lẻ sẽ không thể chỉnh sửa được
nếu chế độ xem không thể tạo được, nút
Thêm dòng
sẽ không được hiển thị (hiện tại nó tạo một bản ghi trống mới)
Phím ngữ cảnh¶
- `` phạm vi lưới``
chọn phạm vi nào sẽ được sử dụng theo mặc định nếu chế độ xem có nhiều phạm vi
lưới_anchor
nếu có thể, được sử dụng làm neo mặc định của phạm vi cột thay vì bất cứ thứ gì
read_grid
xác định làm mặc định.Đối với các trường ngày, ngày tham chiếu mà khoảng thời gian ban đầu sẽ được tính toán. Cố định ngày mặc định là "hôm nay" (theo múi giờ của người dùng)
Gantt¶
Enterprise featureChế độ xem Gantt hiển thị biểu đồ Gantt một cách thích hợp (để lập lịch).
Phần tử gốc của khung nhìn gantt là <gantt/>
, nó không có phần tử con nhưng có thể có các thuộc tính sau:
- sợi dây
chuỗi (mặc định:
''
)Tiêu đề dạng xem này chỉ được hiển thị nếu bạn mở một hành động không có tên và mục tiêu của nó là 'mới' (mở hộp thoại)
- tạo nên
bool (mặc định:
True
)Tắt/bật tính năng tạo bản ghi trên dạng xem.
- biên tập
bool (mặc định:
True
)Tắt/bật phiên bản bản ghi trên chế độ xem.
- xóa bỏ
bool (mặc định:
True
)Tắt/bật tính năng xóa bản ghi trên chế độ xem thông qua menu thả xuống Hành động.
ngày_bắt đầu
(bắt buộc)tên của trường cung cấp ngày giờ bắt đầu của sự kiện cho mỗi bản ghi.
ngày_stop
(bắt buộc)tên của trường cung cấp thời lượng kết thúc của sự kiện cho mỗi bản ghi.
trường phụ thuộc
tên của trường
many2many
cung cấp mối quan hệ phụ thuộc giữa hai bản ghi. Nếu B phụ thuộc vào A thìdependency_field
là trường cho phép lấy A từ B. Cả trường này và trườngdependency_inverted_field
đều được sử dụng để vẽ các mũi tên phụ thuộc giữa các viên thuốc và sắp xếp lại chúng.dependency_inverted_field
(bắt buộc nếudependency_field
được cung cấp)tên của trường
many2many
cung cấp mối quan hệ phụ thuộc đảo ngược so vớidependency_field
. Nếu B phụ thuộc vào A thìdependency_inverted_field
là trường cho phép lấy B từ A.màu sắc
tên của trường được sử dụng để tô màu các viên thuốc theo giá trị của nó
trang trí-{$name}
biểu thức python đánh giá thành bool
cho phép thay đổi kiểu văn bản của ô dựa trên thuộc tính của bản ghi tương ứng.
{$name}
có thể là một trongmàu theo ngữ cảnh của bootstrap`_ (``nguy hiểm
,thông tin
,thứ cấp
,thành công
hoặccảnh báo
).Xác định hiển thị có điều kiện của bản ghi theo kiểu văn bản của hàng dựa trên thuộc tính của bản ghi tương ứng.
Giá trị là biểu thức Python. Đối với mỗi bản ghi, biểu thức được đánh giá bằng các thuộc tính của bản ghi dưới dạng giá trị ngữ cảnh và nếu
true
, kiểu tương ứng sẽ được áp dụng cho hàng. Dưới đây là một số giá trị khác có sẵn trong ngữ cảnh:uid
: id của người dùng hiện tại,hôm nay
: ngày địa phương hiện tại dưới dạng chuỗi có dạngYYYY-MM-DD
,bây giờ
: giống nhưhôm nay
nhưng có thêm thời gian hiện tại. Giá trị này được định dạng làYYYY-MM-DD hh:mm:ss
.
<gantt decoration-info="state == 'draft'" decoration-danger="state == 'help_needed'" decoration-bf="state == 'busy'"> ... </gantt>
default_group_by
tên của một trường để nhóm các nhiệm vụ theo
vô hiệu hóa_drag_drop
nếu được đặt thành true, chế độ xem gantt sẽ không có bất kỳ hỗ trợ kéo và thả nào
hợp nhất
tên trường để hiển thị giá trị hợp nhất trong ô bản ghi
hợp nhất_max
từ điển với trường "nhóm theo" làm khóa và giá trị hợp nhất tối đa có thể đạt được trước khi hiển thị ô màu đỏ (ví dụ:
{"user_id": 100}
)hợp nhất_loại trừ
Tên của trường mô tả liệu nhiệm vụ có phải được loại trừ khỏi việc hợp nhất hay không nếu được đặt thành true, nó sẽ hiển thị một vùng sọc trong dòng hợp nhất
tạo
,cell_create
,chỉnh sửa
,xóa
,kế hoạch
cho phép dishủy bỏ hành động tương ứng trong chế độ xem bằng cách đặt thuộc tính tương ứng thành
false
(mặc định:true
).tạo
: Nếu được bật, nútThêm
sẽ có sẵn trong bảng điều khiển để tạo bản ghi.cell_create
: Nếu được bật vàtạo
được bật, nút "++" sẽ được hiển thị khi di chuột trên ô khe thời gian để tạo bản ghi mới trên khe đó.chỉnh sửa
: Nếu được bật, các bản ghi đã mở sẽ ở chế độ chỉnh sửa (do đó có thể chỉnh sửa được).kế hoạch
: Nếu được bật vàchỉnh sửa
được bật, nút "kính lúp" sẽ được hiển thị trên các khe thời gian để sắp xếp các bản ghi chưa được chỉ định vào khe thời gian đó.
Example
Khi bạn không muốn tạo bản ghi trên khung nhìn gantt và ngày bắt đầu và ngày kết thúc được yêu cầu trên mô hình, tính năng lập kế hoạch sẽ bị tắt vì sẽ không tìm thấy bản ghi nào.
- `` bù đắp``
Tùy theo quy mô, số lượng đơn vị cần thêm vào ngày hôm nay để tính thời hạn mặc định. Ví dụ: Giá trị chênh lệch +1 trong tuần default_scale sẽ mở chế độ xem gantt cho tuần tiếp theo và giá trị chênh lệch -2 trong tháng default_scale sẽ mở chế độ xem gantt của 2 tháng trước.
tiến bộ
tên của trường cung cấp tỷ lệ phần trăm hoàn thành cho sự kiện của bản ghi, từ 0 đến 100
chuỗi
tiêu đề của chế độ xem gantt
- `` độ chính xác``
Đối tượng JSON chỉ định độ chính xác chụp nhanh cho các viên thuốc trong mỗi thang đo.
Các giá trị có thể có cho thang đo `` ngày`` là (mặc định: `` giờ``):
`` giờ``: ghi lại thời gian nhanh đến mức đầy đủ (ví dụ: 7:12 trở thành 8:00)
hour:half
: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:12 trở thành 7:30)giờ:quý
: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:12 trở thành 7:15)
Các giá trị có thể có cho thang đo `` tuần`` là (mặc định:
day:half
):ngày
: ghi lại thời gian chuyển thành cả ngày (ví dụ: 7:28 sáng trở thành 11:59:59 tối của ngày hôm trước, 10:32 tối trở thành 12:00 trưa của ngày hiện tại)day:half
: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:28 sáng trở thành 12:00 trưa)
Các giá trị có thể có cho tỷ lệ `` tháng`` là (mặc định:
day:half
):ngày
: ghi lại thời gian chuyển thành cả ngày (ví dụ: 7:28 sáng trở thành 11:59:59 tối của ngày hôm trước, 10:32 tối trở thành 12:00 trưa của ngày hiện tại)day:half
: ghi lại thời gian chuyển thành nửa giờ (ví dụ: 7:28 sáng trở thành 12:00 trưa)
Thang đo
năm
luôn chụp nhanh cả ngày.Ví dụ về thuộc tính chính xác:
{"day": "hour:quarter", "week": "day:half", "month": "day"}
tổng_hàng
boolean để kiểm soát xem hàng chứa tổng số bản ghi có được hiển thị hay không. (mặc định:
false
)thu gọn_first_level
boolean để kiểm soát xem có thể thu gọn từng hàng nếu được nhóm theo một trường hay không. (mặc định:
false
, quá trình thu gọn bắt đầu khi nhóm theo hai trường)hiển thị_không có sẵn
boolean để đánh dấu ngày tháng được hàm
gantt_unavailability
của mô hình trả về là có sẵn trong khung nhìn gantt. Các bản ghi vẫn có thể được lên lịch trong đó nhưng tính khả dụng của chúng sẽ được hiển thị một cách trực quan. (mặc định:false
)tỷ lệ mặc định
tỷ lệ mặc định khi hiển thị chế độ xem. Các giá trị có thể có là (mặc định:
tháng
):ngày
`` tuần``
tháng
năm
- `` cân``
danh sách các tỷ lệ được phép được phân tách bằng dấu phẩy cho chế độ xem này. Theo mặc định, tất cả các thang đo đều được phép. Để biết các giá trị tỷ lệ có thể sử dụng trong danh sách này, hãy xem
default_scale
.- `` mẫu``
định nghĩa mẫu Mẫu QWeb
gantt-popover
được sử dụng khi người dùng di chuột qua một trong các bản ghi trong chế độ xem gantt.Chế độ xem gantt sử dụng hầu hết các tiêu chuẩn javascript qweb và cung cấp các biến ngữ cảnh sau:
tiện ích
GanttRow()
hiện tại, có thể được sử dụng để tìm nạp một số thông tin meta. Phương thứcgetColor
để chuyển đổi thành số nguyên màu cũng có sẵn trực tiếp trong ngữ cảnh mẫu mà không cần sử dụngwidget
.on_create
Nếu được chỉ định khi nhấp vào nút thêm trên chế độ xem, thay vì mở hộp thoại chung, hãy khởi chạy một hành động máy khách. cái này sẽ chứa xmlid của hành động (ví dụ:
on_create="%(my_module.my_wizard)d"
form_view_id
dạng xem để mở khi người dùng tạo hoặc chỉnh sửa bản ghi. Lưu ý rằng nếu thuộc tính này không được đặt, chế độ xem gantt sẽ quay trở lại id của chế độ xem biểu mẫu trong hành động hiện tại, nếu có.
dải_động
nếu được đặt thành true, chế độ xem gantt sẽ bắt đầu ở bản ghi đầu tiên, thay vì bắt đầu vào đầu năm/tháng/ngày.
thuốc_nhãn
Nếu được đặt thành true, thời gian sẽ xuất hiện trên nhãn thuốc khi thang đo được đặt theo tuần hoặc tháng. (ví dụ:
7:00 sáng - 11:00 sáng (4h) - Nhiệm vụ DST 1
)- `` hình thu nhỏ ''
Điều này cho phép hiển thị hình thu nhỏ bên cạnh tên nhóm nếu nhóm là trường quan hệ. Điều này mong đợi một lệnh python khóa nào là tên của trường trên mô hình đang hoạt động. Giá trị là tên của trường chứa hình thu nhỏ trên mô hình liên quan.
Ví dụ: tác vụ có trường user_id tham chiếu res.users. Mô hình res.users có hình ảnh trường chứa hình đại diện, sau đó:
<gantt date_start="date_start" date_stop="date_stop" thumbnails="{'user_id': 'image_128'}" > </gantt>
sẽ hiển thị hình đại diện của người dùng bên cạnh tên của họ khi được nhóm theo user_id.
- odoo.addons.base.models.ir_ui_view.sample
Liệu chế độ xem có nên được điền bằng một tập hợp các bản ghi mẫu hay không nếu không tìm thấy bản ghi nào cho mô hình hiện tại.
Những bản ghi giả này có phương pháp phỏng đoán cho các tên/mô hình trường nhất định. Ví dụ: trường
display_name
trên mô hìnhres.users
sẽ được điền tên người mẫu, trong khi trườngemail
sẽ có dạngfirstname.lastname@sample.demo
.Người dùng không thể tương tác với những dữ liệu này và chúng sẽ bị loại bỏ ngay sau khi một hành động được thực hiện (tạo bản ghi, thêm cột, v.v.).
- yêu cầu
Không bắt buộc
- kiểu
- mặc định
Sai
Bản đồ¶
Enterprise featureChế độ xem này có thể hiển thị các bản ghi trên bản đồ và các tuyến đường giữa chúng. Các bản ghi được đại diện bởi các chân. Nó cũng cho phép hiển thị trực quan các trường từ mô hình trong cửa sổ bật lên được gắn với mã pin của bản ghi.
Ghi chú
Mô hình mà chế độ xem được áp dụng phải chứa res.partner
many2one vì chế độ xem dựa vào địa chỉ và các trường tọa độ của res.partner
để bản địa hóa các bản ghi.
API¶
Chế độ xem sử dụng API của nền tảng dữ liệu vị trí để tìm nạp các ô (nền của bản đồ), thực hiện chuyển tiếp địa lý (chuyển đổi địa chỉ thành một tập hợp tọa độ) và tìm nạp các tuyến đường. Chế độ xem triển khai hai API, OpenStreetMap và MapBox. OpenStreetMap được sử dụng theo mặc định và có thể tìm nạp ô và thực hiện chuyển tiếp địa lý. API này không yêu cầu mã thông báo. Ngay sau khi mã thông báo MapBox hợp lệ được cung cấp trong cài đặt chung, chế độ xem sẽ chuyển sang API MapBox. API này nhanh hơn và cho phép tính toán các tuyến đường. Bạn có thể nhận được mã thông báo bằng cách đăng ký vào MapBox.
Thành phần kết cấu¶
Phần tử gốc của khung nhìn là <map>
. Nó có thể có các thuộc tính sau:
res_partner
Chứa
res.partner
many2one. Nếu không cung cấp chế độ xem khu nghỉ dưỡng để tạo một bản đồ trống.mặc định_thứ tự
Nếu một trường được cung cấp, chế độ xem sẽ ghi đè thứ tự mặc định của mô hình. Trường phải là một phần của mô hình mà chế độ xem được áp dụng, không phải từ
res.partner
.định tuyến
if
1
hiển thị các tuyến đường giữa các bản ghi. Chế độ xem cần có mã thông báo MapBox hợp lệ và ít nhất hai bản ghi được định vị (tức là các bản ghi córes.partner
many2one và đối tác có địa chỉ hoặc tọa độ hợp lệ).tên_ẩn
nếu
1
ẩn tên khỏi cửa sổ bật lên của mã pin (mặc định:0
).ẩn_địa chỉ
nếu
1
ẩn địa chỉ khỏi cửa sổ bật lên của mã pin (mặc định:0
).ẩn_tiêu đề
nếu
1
ẩn tiêu đề khỏi danh sách ghim (mặc định:0
).panel_title
Chuỗi để hiển thị làm tiêu đề của danh sách pin. Nếu không được cung cấp, tiêu đề sẽ là tên của hành động hoặc "Mục" nếu chế độ xem không nằm trong một hành động.
giới hạn
Số lượng bản ghi tối đa cần tìm nạp (mặc định:
80
). Nó phải là một số nguyên dương.
Phần tử <map>
có thể chứa nhiều phần tử <field>
. Mỗi phần tử <field>
được hiểu là một dòng trong cửa sổ bật lên của ghim. Các thuộc tính của trường như sau:
tên
Trường để hiển thị.
chuỗi
Chuỗi để hiển thị trước nội dung của trường. Nó có thể được sử dụng như một mô tả.
- Ví dụ đây là bản đồ:
<map res_partner="partner_id" default_order="date_begin" routing="1" hide_name="1"> <field name="partner_id" string="Customer Name"/> </map>