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
を次のように生成します。
ビューに親がある場合、親は完全に解決され、現在のビューの継承仕様が適用されます。
ビューに親がない場合は、
arch
がそのまま使用されます。`extension`モードの現在のビューの子要素は上がっています。 そしてそれらの継承仕様は最初に適用されます(子ビューが適用され、次にその子、そしてその兄弟)。
継承は、 inherited from the `contribute_id
フィールドに従って適用されます。複数のビューレコードが同じビューを継承する場合、順序は priority
によって決定されます。
子ビューを適用した結果、最後の arch
が得られます。
継承仕様¶
継承仕様は順次適用され、以下で構成されます。
親ビュー内の継承された要素に一致する要素ロケーター;
子要素は継承された要素を変更します。
要素ロケータには3種類あります。
expr
属性を持つxpath
要素。expr
は XPath 式[#hasclass]_ が現在のarch
に適用され、見つけた最初のノードに一致します。`field`要素に`name`属性があり、最初のフィールドには同じ`name`がマッチします。
注釈
その他のすべての属性は無視されます。
最初の要素に同じ
name
属性と同じ属性を持つ他の要素。注釈
position
とversion
の属性は無視されます。
- 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`属性も設定しなければならず、`inside
、replace
、after
、または`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>