Xem bản ghi

Chế độ xem là những gì xác định cách hiển thị bản ghi cho người dùng cuối. Chúng được chỉ định trong XML và được lưu trữ dưới dạng bản ghi, nghĩa là chúng có thể được chỉnh sửa độc lập với các mô hình mà chúng đại diện. Chúng linh hoạt và cho phép tùy chỉnh màn hình mà chúng điều khiển ở mức độ cao. Tồn tại nhiều loại chế độ xem. Mỗi cái đại diện cho một chế độ trực quan hóa: biểu mẫu, danh sách, kanban, v.v.

Cấu trúc chung

Các khung nhìn cơ bản thường chia sẻ cấu trúc tối thiểu chung được xác định bên dưới. Phần giữ chỗ được viết hoa tất cả.

<record id="ADDON.MODEL_view_TYPE" model="ir.ui.view">
  <field name="name">NAME</field>
  <field name="model">MODEL</field>
  <field name="arch" type="xml">
    <VIEW_TYPE>
      <views/>
    </VIEW_TYPE>
  </field>
</record>

Xem các loại

Biểu mẫu

Hiển thị và chỉnh sửa dữ liệu từ một bản ghi.

Danh sách

Xem và chỉnh sửa nhiều bản ghi.

Tìm kiếm

Áp dụng bộ lọc và thực hiện tìm kiếm. Kết quả được hiển thị trong danh sách hiện tại, kanban... view.

Kanban

Hiển thị các bản ghi dưới dạng "thẻ", có thể định cấu hình dưới dạng mẫu nhỏ.

Qweb

Mẫu báo cáo, website...

Graph

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.

Pivot

Hiển thị các tập hợp dưới dạng bảng tổng hợp.

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.

Nhóm Enterprise feature

Hiển thị và hiểu cách một số dữ liệu thay đổi trong một khoảng thời gian.

Gantt Enterprise feature

Hiển thị các bản ghi dưới dạng biểu đồ Gantt.

Grid Enterprise feature

Hiển thị thông tin được tính toán trong các ô số; khó có thể cấu hình được.

Bản đồ Enterprise feature

Hiển thị các bản ghi trên bản đồ và các tuyến đường giữa chúng.

Lĩnh vực

Xem bản ghi hiển thị một số trường.

Ghi chú

Bối cảnh hiện tại và quyền truy cập của người dùng cũng có thể ảnh hưởng đến khả năng xem.

Di sản

Kế thừa cho phép tùy chỉnh các chế độ xem được phân phối. Chẳng hạn, nó có thể thêm nội dung khi các mô-đun được cài đặt hoặc cung cấp các màn hình khác nhau tùy theo hành động.

Các khung nhìn kế thừa thường có chung cấu trúc được xác định bên dưới. Phần giữ chỗ được viết hoa tất cả. Chế độ xem tổng hợp này sẽ cập nhật một nút được XPath nhắm mục tiêu và một nút khác được nhắm mục tiêu theo tên và thuộc tính của nó.

<record id="ADDON.MODEL_view_TYPE" model="ir.ui.view">
    <field name="model">MODEL</field>
    <field name="inherit_id" ref="VIEW_REFERENCE"/>
    <field name="mode">MODE</field>
    <field name="arch" type="xml">
        <xpath expr="XPATH" position="POSITION">
            <CONTENT/>
        </xpath>
        <NODE ATTRIBUTES="VALUES" position="POSITION">
            <CONTENT/>
        </NODE>
    </field>
</record>

Các trường inherit_idmode xác định độ phân giải view. Các phần tử xpath hoặc NODE biểu thị các thông số inheritance. Thuộc tính exprposition chỉ định inheritance location.

Xem độ phân giải

Độ phân giải tạo ra arch cuối cùng cho chế độ xem chính được yêu cầu/khớp như sau:

  1. nếu chế độ xem có chế độ xem gốc, chế độ xem gốc được giải quyết hoàn toàn thì thông số kế thừa của chế độ xem hiện tại sẽ được áp dụng;

  2. nếu chế độ xem không có cha mẹ, arch của nó được sử dụng nguyên trạng;

  3. Các chế độ xem con của chế độ xem hiện tại với chế độ tiện ích mở rộng được tra cứu và các thông số kế thừa của chúng được áp dụng theo chiều sâu trước tiên (chế độ xem con được áp dụng, sau đó là các chế độ xem con, sau đó là các chế độ xem anh chị em của nó).

Việc kế thừa được áp dụng theo trường inherit_id. Nếu một số bản ghi chế độ xem kế thừa cùng một chế độ xem thì thứ tự được xác định theo mức độ ưu tiên.

Kết quả của việc áp dụng các khung nhìn con mang lại arch cuối cùng.

Thông số kế thừa

Thông số kế thừa được áp dụng tuần tự và bao gồm:

  1. một bộ định vị phần tử để khớp với phần tử được kế thừa trong chế độ xem gốc;

  2. phần tử con để sửa đổi phần tử được kế thừa.

Có ba loại bộ định vị phần tử:

  • Phần tử xpath có thuộc tính expr. expr là một XPath biểu thức1 được áp dụng cho arch hiện tại, khớp với nút đầu tiên mà nó tìm thấy;

  • Phần tử field có thuộc tính name, khớp với trường đầu tiên có cùng name.

    Ghi chú

    Tất cả các thuộc tính khác đều bị bỏ qua.

  • Bất kỳ phần tử nào khác, khớp với phần tử đầu tiên có cùng name và các thuộc tính giống hệt nhau.

    Ghi chú

    Các thuộc tính positionversion bị bỏ qua.

1

Một hàm mở rộng được thêm vào để khớp đơn giản hơn trong chế độ xem QWeb: hasclass(*classes) khớp nếu nút ngữ cảnh có tất cả các lớp được chỉ định.

Example

<xpath expr="page[@name='pg']/group[@name='gp']/field" position="inside">
    <field name="description"/>
</xpath>

<div name="name" position="replace">
    <field name="name2"/>
</div>

Vị trí thừa kế

Các thông số kế thừa chấp nhận một thuộc tính vị trí tùy chọn, mặc định là bên trong, chỉ định cách sửa đổi nút phù hợp.

inside

Nội dung của thông số kế thừa được thêm vào nút phù hợp.

Example

<notebook position="inside">
    <page string="New feature">
        ...
    </page>
</notebook>
after

Nội dung của thông số kế thừa được thêm vào nút cha của nút phù hợp sau nút phù hợp.

Example

<xpath expr="//field[@name='x_field']" position="after">
    <field name="x_other_field"/>
</xpath>
before

Nội dung của thông số kế thừa được thêm vào nút cha của nút phù hợp trước nút phù hợp.

Example

<field name=x_field" position="before">
    <field name="x_other_field"/>
</field>
replace

Nội dung của thông số kế thừa sẽ thay thế nút phù hợp. Bất kỳ nút văn bản nào chỉ chứa $0 trong nội dung của thông số kỹ thuật đều được thay thế bằng một bản sao của nút phù hợp, bao bọc nút phù hợp một cách hiệu quả.

Example

<xpath expr="//field[@name='x_field']" position="replace">
    <div class="wrapper">
        $0
    </div>
</xpath>
attributes

Nội dung của thông số kế thừa chỉ được tạo từ các phần tử attribute, mỗi phần tử có thuộc tính name và phần nội dung tùy chọn.

  • Nếu phần tử attribute có phần nội dung, một thuộc tính mới được đặt tên theo name của nó sẽ được thêm vào nút phù hợp với văn bản của phần tử attribute làm giá trị.

  • Nếu phần tử attribute không có nội dung, thuộc tính được đặt tên theo name của nó sẽ bị xóa khỏi nút phù hợp.

  • Nếu phần tử attribute có thuộc tính add, thuộc tính remove hoặc cả hai, thì giá trị của thuộc tính của nút phù hợp được đặt tên theo name sẽ được tính toán lại để tính (các) giá trị của add, ` xóa` và thuộc tính dấu phân cách tùy chọn mặc định là ,. add bao gồm (các) giá trị của nó, được phân tách bằng dấu phân cách. remove xóa (các) giá trị của nó, được phân tách bằng dấu phân cách.

Example

<field name="x_field" position="attributes">
    <attribute name="invisible">True</attribute>
    <attribute name="class" add="mt-1 mb-1" remove="mt-2 mb-2" separator=" "/>
</field>
move

Thuộc tính position="move" được đặt trên nội dung của thông số kế thừa để chỉ định cách các nút được di chuyển tương đối đến bộ định vị phần tử của thông số kế thừa, trên đó thuộc tính position cũng phải được đặt, với các giá trị inside, thay thế, sau hoặc trước.

Example

<xpath expr="//@target" position="after">
    <xpath expr="//@node" position="move"/>
</xpath>

<field name="target_field" position="after">
    <field name="my_field" position="move"/>
</field>

Mô hình chung