View records

Views are what define how records should be displayed to end-users. They are specified in XML and stored as records themselves, meaning they can be edited independently from the models that they represent. They are flexible and allow a high level of customization of the screens that they control. There exist various types of views. Each represents a visualization mode: form, list, kanban, etc.

一般的な構造

基本的なビューは、一般的に以下で定義された共通最小限の構造を共有します。プレースホルダはすべてのキャップで表示されます。

<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>

表示タイプ

Form

単一のレコードからデータを表示および編集します。

リスト

複数のレコードを表示および編集します。

Search

フィルタを適用して検索を実行します。結果は現在のリスト、かんばん...ビューに表示されます。

Kanban

小さなテンプレートとして設定可能な "カード" としてレコードを表示します。

Qweb

レポートのテンプレート, ウェブサイト...

Graph

複数のレコードまたはレコード グループ上の集計を視覚化します。

Pivot

集計を ピボットテーブル として表示します。

カレンダー

毎日、毎週、毎月、または毎年のカレンダーにイベントとして記録を表示します。

Cohort Enterprise feature

一定期間のデータの変更方法を表示し理解します。

ガントット Enterprise feature

レコードをガントチャートとして表示します。

Grid Enterprise feature

数値セルに計算された情報を表示します。ほとんど設定できません。

Map Enterprise feature

地図上にレコードとそれらの間のルートを表示します。

フィールド

View records exposes a number of fields.

注釈

現在のコンテキストとユーザーアクセス権は、ビューアビリティにも影響を与える可能性があります。

継承

継承により、配信されたビューをカスタマイズできます。 たとえば、インストールされたモジュールとしてコンテンツを追加したり、アクションに応じて異なる表示を提供したりすることができます。

継承ビューは一般的に以下で定義された共通の構造を共有します。プレースホルダはすべてのキャップで表示されます。 この合成ビューは、XPathによってターゲットとされるノードと、その名前と属性によってターゲットとされる別のノードを更新します。

<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>

The inherit_id and mode fields determine the view resolution. The xpath or NODE elements indicate the inheritance specs. The expr and position attributes specify the inheritance position.

解像度を表示

要求または一致した primary ビューの最終的な arch を次のように生成します。

  1. ビューに親がある場合、親は完全に解決され、現在のビューの継承仕様が適用されます。

  2. ビューに親がない場合は、 arch がそのまま使用されます。

  3. `extension`モードの現在のビューの子要素は上がっています。 そしてそれらの継承仕様は最初に適用されます(子ビューが適用され、次にその子、そしてその兄弟)。

継承は、 inherited from the `contribute_id フィールドに従って適用されます。複数のビューレコードが同じビューを継承する場合、順序は priority によって決定されます。

子ビューを適用した結果、最後の arch が得られます。

継承仕様

継承仕様は順次適用され、以下で構成されます。

  1. 親ビュー内の継承された要素に一致する要素ロケーター;

  2. 子要素は継承された要素を変更します。

要素ロケータには3種類あります。

  • expr 属性を持つ xpath 要素。 exprXPath 式[#hasclass]_ が現在の arch に適用され、見つけた最初のノードに一致します。

  • `field`要素に`name`属性があり、最初のフィールドには同じ`name`がマッチします。

    注釈

    その他のすべての属性は無視されます。

  • 最初の要素に同じ name 属性と同じ属性を持つ他の要素。

    注釈

    positionversion の属性は無視されます。

1

コンテキストノードに指定されたすべてのクラスがある場合、QWeb ビューでよりシンプルなマッチングのための拡張関数が追加されます: hasclass(*classes) は一致します。

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>

継承位置

継承仕様はオプションの position 属性を受け付け、デフォルトでは inside になり、マッチしたノードをどのように変更するかを指定します。

inside

継承仕様の内容がマッチしたノードに追加されます。

Example

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

継承仕様の内容は、マッチしたノードの後にマッチしたノードの親に追加されます。

Example

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

継承仕様の内容は、マッチしたノードの前にマッチしたノードの親に追加されます。

Example

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

継承仕様の内容は、マッチしたノードを置き換えます。 仕様の内容に`$0`のみを含むテキストノードは、マッチしたノードのコピーに置き換えられます。 結合したノードを効率的に包み込むのです

Example

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

継承仕様の内容は、 attribute 要素のみで構成され、それぞれに name 属性とオプションのbodyを持つ必要があります。

  • attribute 要素が本文を持っている場合。 `name`にちなんで名付けられた新しいアトリビュートがマッチしたノードに、`attribute`要素のテキストを値として追加されます。

  • `attribute`要素にbodyがない場合、`name`にちなんで名付けられた属性はマッチしたノードから削除されます。

  • attribute 要素に add 属性がある場合、remove 属性、またはその両方があります。 name`にちなんで名付けられたノードの属性の値は、`add`の値を考慮して再計算されます。 `remove とオプションの separator 属性のデフォルト値は , です。 add にはセパレータで区切られた値が含まれています。remove はセパレータで区切られた値を削除します。

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

position="move"属性は継承仕様の内容に設定され、ノードがどのように継承仕様の要素ロケータに比較的移動されるかを指定します。 `position`属性も設定しなければならず、`insidereplaceafter、または`before`の値を指定します。

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>

モデル コモンズ