Registries

リージョンは(順序付け)キー/値マップです。 Odoo javascriptフレームワークによって提供される多くの機能は、オブジェクト(フィールドなど)の定義が必要なときはいつでもレジストリを調べるだけです。 ビュー、クライアントアクションまたはサービス)。 Webクライアントのカスタマイズは、単に正しいレジストリに特定の値を追加することによって行われます。

import { Registry } from "@web/core/registry";

const myRegistry = new Registry();

myRegistry.add("hello", "odoo");

console.log(myRegistry.get("hello"));

レジストリの便利な機能は、「category」メソッドによって取得されるサブレジストリのセットを維持することです。 サブレジストリがまだ存在しない場合は、その場で作成されます。 Webクライアントで使用されるすべてのレジストリは、1つのルートレジストリから取得され、@web/core/registry にエクスポートされます。

import { registry } from "@web/core/registry";

const fieldRegistry = registry.category("fields");
const serviceRegistry = registry.category("services");
const viewRegistry = registry.category("views");

レジストリAPI

class Registry()

新しいレジストリを作成します。レジストリはイベントバスであることに注意してください。必要に応じて、UPDATE イベントを聴くことができます。 Registries は順番に並べられています: getAll メソッドはシーケンス番号に従って順序付けされた値のリストを返します。

Registry.add(key, value[, options])
引数
  • key (string()) -- キーを押します。

  • value (any()) -- 新しいエントリの値

  • options (Object()) -- オプション

  • [options.force] (boolean()) -- キーがすでに存在するなら投げるな

  • [options.sequence] (number()) -- シーケンス番号 (エントリを注文するのに便利)

戻り値

Registry

特定のキーに値を挿入します。 キーが既に使用されている場合、このメソッドはエラーをスローします(オプション force が true に設定されていない限り)。 `sequence`オプションは、特定の位置に値を挿入するのに役立ちます。このメソッドは、`UPDATE`イベントもトリガーします。

同じレジストリを返すので、`add`メソッドの呼び出しをチェーンできます。

Registry.get(key[, defaultValue])
引数
  • key (string()) -- を選択します。

  • any (defaultValue()) -- キーのエントリが存在しない場合の戻り値。

key`引数に対応する値を返します。 レジストリにそのキーが含まれていない場合、このメソッドは `defaultValue を返すか、それ以外の場合はエラーをスローします。

Registry.contains(key)
引数
  • key (string()) -- を選択します。

戻り値

boolean

レジストリに key が存在する場合は true を返します。

Registry.getAll()
戻り値

誰でも

レジストリ内のすべての要素のリストを返します。シーケンス番号に従って順序付けされます。

Registry.remove(key)
引数
  • key (string()) -- 削除すべきエントリのキー

レジストリからキーと値のペアを削除します。この操作は UPDATE イベントをトリガーします。

Registry.category(subcategory)
引数
  • subcategory (string()) -- サブカテゴリの名前

戻り値

Registry

subcategory に関連付けられたサブレジストリを返します。まだ存在しない場合は、サブレジストリはその場で作成されます。

参照リスト

カテゴリー

コンテンツ

effect

利用可能なすべての効果の実装

フォーマッタ

値を書式設定するユーティリティ関数 (主に項目値に使用)

main_components

トップレベルのコンポーネント

parsers

値を解析するユーティリティ関数 (主に項目値に使用)

services

活性化されるべきすべてのサービス

systray

ナビゲーションバーの systraay ゾーンに表示されるコンポーネントです

user_menuitems

ユーザメニューに表示されるメニュー項目(navbarの右上)

エフェクトレジストリ

effects レジストリには、利用可能なすべてのエフェクトの実装が含まれています。詳細については、 :ref:の effect service <frontend/services/effect_registry> のセクションを参照してください。

Formatter レジストリ

`formatters`レジストリには、値をフォーマットする関数が含まれています。各フォーマッタは以下のAPIを持っています:

format(value[, options])
引数
  • value (T | false()) -- 値が指定されていない場合は false を指定します。

  • options (Object()) -- 様々なオプション

戻り値

文字列

値を書式設定し、文字列を返します

関連項目

メインコンポーネントレジストリ

メインコンポーネントレジストリ(main_components)は、Webクライアントにトップレベルのコンポーネントを追加するのに便利です。webclientは、直接子として`MainComponentsContainer`を持っています。 このコンポーネントは、基本的にメインコンポーネントレジストリに登録されている順序付けされたコンポーネントのリストのライブ表現です。

API
interface {
    Component: Owl Component class
    props?: any
}

例えば、 LoadingIndicator コンポーネントは以下のようにレジストリに追加できます。

registry.category("main_components").add("LoadingIndicator", {
  Component: LoadingIndicator,
});

パーサレジストリ

The parsers registry contains functions to parse values. Each parser has the following API:

parse(value[, options])
引数
  • value (string()) -- 値を表す文字列

  • options (Object()) -- 様々なオプション (パーサー固有)

戻り値

T a valid value

文字列を解析し、値を返します。文字列が有効な値でない場合、Parserはエラーを発生させる可能性があります。

関連項目

サービスレジストリ

サービスレジストリ (category: services) には、Odoo フレームワークによって有効化されるすべての services が含まれています。

import { registry } from "@web/core/registry";

const myService = {
    dependencies: [...],
    start(env, deps) {
        // some code here
    }
};

registry.category("services").add("myService", myService);

Systray registry

systraayは様々な小さなコンポーネントを含むナビゲーションバーの右側のゾーンです。 通常、何らかの情報(未読メッセージの数など)を表示したり、通知やユーザーがそれらとやり取りしたりすることができます。

systray レジストリには、以下の 3 つのキーを持つオブジェクトとして、これらの systray アイテムの説明が含まれています。

  • Component: アイテムを表すコンポーネントクラス。ルート要素は、<li> タグでなければ、適切にスタイル付けされていない可能性があります。

  • props (optional): コンポーネントに与えるべきprops

  • isdisplayed (optional): :ref:`env <frontend/framework/environment>`を取得し、ブール値を返す関数。 true の場合、systray 項目が表示されます。それ以外の場合は削除されます。

例:

import { registry } from "@web/core/registry";

class MySystrayItem extends Component {
    // some component ...
}

registry.category("systray").add("myAddon.myItem", {
    Component: MySystrayItem,
});

systray レジストリは、'シーケンス' 番号を持つ順序付きレジストリです。

const item = {
    Component: MySystrayItem
};
registry.category("systray").add("myaddon.some_description", item, { sequence: 43 });

シーケンス番号のデフォルト値は50です。与えられた場合、この番号はアイテムの順序に使用されます。 一番下のシーケンスは右側、一番上のシーケンスは左側にあります。

ユーザーメニュー レジストリ

ユーザーメニューレジストリ(カテゴリ: user_menuitems)には、ユーザーメニューを開いたときに表示されるすべてのメニューアイテムが含まれています(ユーザー名のナビゲーションバー要素)。 右上)

ユーザーメニュー項目は、 :ref:`env <frontend/framework/environment>`を取得し、プレーンなオブジェクトを返す関数によって定義されます。

  • description : メニューアイテムのテキスト

  • href : (任意) 与えられた (そして真実) の場合、アイテムテキストは与えられた属性の href を持つ`a` タグに置かれます。

  • callback : アイテムが選択されたときにコールバックする

  • hide: (任意) 項目を非表示にするかどうかを示します (デフォルト: false)。

  • sequence: (任意) 他のドロップダウン項目の中から項目のランクを決定します (デフォルト: 100)。

ユーザメニューは、開かれるたびに項目を定義するすべての関数を呼び出します。

例:

import { registry } from "@web/core/registry";

registry.category("user_menuitems").add("my item", (env) => {
    return {
        description: env._t("Technical Settings"),
        callback: () => { env.services.action_manager.doAction(3); },
        hide: (Math.random() < 0.5),
    };
});