Regiszterek

A regiszterek (rendezett) kulcs/érték térképek. Ezek a fő web kliens kiterjesztési pontok: az Odoo javascript keretrendszer által biztosított számos funkció egyszerűen egy regiszterbe néz, amikor szüksége van egy objektum (például mezők, nézetek, kliens műveletek vagy szolgáltatások) definíciójára. A web kliens testreszabása egyszerűen úgy történik, hogy specifikus értékeket adunk hozzá a megfelelő regiszterhez.

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

const myRegistry = new Registry();

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

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

A regiszterek hasznos tulajdonsága, hogy fenntartanak egy alregiszterek halmazát, amelyeket a category metódussal lehet elérni. Ha az alregiszter még nem létezik, akkor azonnal létrejön. Az összes web kliens által használt regiszter ilyen módon származik egy gyökér regiszterből, amely az @web/core/registry-ben van exportálva.

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

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

Regiszter API

class Registry()

Új regisztert hoz létre. Vegye figyelembe, hogy egy regiszter egy eseménybusz, így szükség esetén hallgathat az UPDATE eseményre. A regiszterek rendezettek: a getAll metódus egy értéklistát ad vissza, amely a szekvenciaszámuk szerint van rendezve.

Registry.add(key, value[, options])
Argumentum
  • key (string()) – kulcs az új bejegyzéshez

  • value (any()) – érték az új bejegyzéshez

  • options (Object()) – opciók

  • [options.force] (boolean()) – ne dobjon hibát, ha a kulcs már létezik

  • [options.sequence] (number()) – sorszám (hasznos a bejegyzések sorrendbe állításához)

Visszatérési érték

Nyilvántartás

Beszúr egy értéket egy adott kulcshoz. Ha a kulcs már használatban van, ez a metódus hibát dob (kivéve, ha a force opció igazra van állítva). A sequence opció hasznos az érték adott pozícióba történő beszúrásához. Ez a metódus egy UPDATE eseményt is kivált.

Ugyanazt a nyilvántartást adja vissza, így az add metódushívások láncolhatók.

Registry.get(key[, defaultValue])
Argumentum
  • key (string()) – kulcs a bejegyzéshez

  • any (defaultValue()) – visszatérési érték, ha nincs bejegyzés a kulcshoz

Visszaadja a key argumentumnak megfelelő értéket. Ha a regiszter nem tartalmazza ezt a kulcsot, akkor ez a metódus a defaultValue értéket adja vissza, ha meg van adva, vagy hibát dob, ha nincs.

Registry.contains(key)
Argumentum
  • key (string()) – kulcs a bejegyzéshez

Visszatérési érték

logikai

Visszaadja true értéket, ha a key jelen van a regiszterben

Registry.getAll()
Visszatérési érték

bármilyen[]

Visszaadja a regiszter összes elemének listáját. A lista a sorszámok szerint van rendezve.

Registry.remove(key)
Argumentum
  • key (string()) – a bejegyzés kulcsa, amelyet el kell távolítani

Eltávolít egy kulcs/érték párt a regiszterből. Ez a művelet egy UPDATE eseményt vált ki.

Registry.category(subcategory)
Argumentum
  • subcategory (string()) – az alkategória neve

Visszatérési érték

Nyilvántartás

Visszaadja az subcategory-hoz társított alregisztert. Ha még nem létezik, az alregiszter azonnal létrejön.

Referencia lista

Kategória

Tartalom

hatások

megvalósítás az összes elérhető hatásra

formázók

segédfüggvények az értékek formázására (többnyire mezőértékekhez használatos)

fő komponensek

felső szintű komponensek

elemzők

segédfüggvények az értékek elemzésére (többnyire mezőértékekhez használatos)

szolgáltatások

minden szolgáltatás, amelyet aktiválni kell

rendszertálca

a navigációs sáv szerviztálcájában megjelenített komponensek

felhasználói menüpontok

menüelemek, amelyek a felhasználói menüben jelennek meg (a navigációs sáv jobb felső sarkában)

Hatás regiszter

A effects regiszter tartalmazza az összes elérhető hatás megvalósítását. További részletekért lásd a effect service szakaszt.

Formázó regiszter

A formatters regiszter olyan függvényeket tartalmaz, amelyek értékek formázására szolgálnak. Minden formázó a következő API-val rendelkezik:

format(value[, options])
Argumentum
  • value (T | false()) – egy adott típusú érték, vagy false, ha nincs megadva érték

  • options (Object()) – különféle opciók

Visszatérési érték

karakterlánc

Formáz egy értéket, és egy karakterláncot ad vissza

Fő komponens nyilvántartás

A fő komponens nyilvántartás (main_components) hasznos a legfelső szintű komponensek hozzáadásához a web kliensben. A web kliens közvetlen gyermekeként rendelkezik egy MainComponentsContainer-rel. Ez a komponens alapvetően a fő komponens nyilvántartásban regisztrált komponensek rendezett listájának élő ábrázolása.

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

Például a LoadingIndicator komponenst így lehet hozzáadni a nyilvántartáshoz:

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

Parser nyilvántartás

A parsers nyilvántartás olyan függvényeket tartalmaz, amelyek értékek elemzésére szolgálnak. Minden parser a következő API-val rendelkezik:

parse(value[, options])
Argumentum
  • value (string()) – egy értéket reprezentáló sztring

  • options (Object()) – különféle opciók (parser specifikus)

Visszatérési érték

T egy érvényes érték

Egy sztringet elemez és visszaad egy értéket. Ha a sztring nem képvisel érvényes értéket, a parserek hibát okozhatnak és hibákat dobhatnak.

Szolgáltatás-regisztráció

A szolgáltatás-regisztráció (kategória: services) tartalmazza az összes szolgáltatást, amelyet az Odoo keretrendszernek aktiválnia kell.

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

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

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

Systray regisztráció

A systray a navigációs sáv jobb oldalán található zóna, amely különféle kis komponenseket tartalmaz, amelyek általában valamilyen információt jelenítenek meg (például az olvasatlan üzenetek számát), értesítéseket és/vagy lehetővé teszik a felhasználó számára, hogy interakcióba lépjen velük.

A systray regisztráció tartalmazza ezeknek a systray elemeknek a leírását, mint objektumok a következő három kulccsal:

  • Component: az elem osztályát képviselő komponens. Gyökérelemének <li> címkének kell lennie, különben előfordulhat, hogy nem lesz megfelelően formázva.

  • props (opcionális): a komponensnek átadandó tulajdonságok

  • isDisplayed (opcionális): egy függvény, amely a env-et veszi és egy logikai értéket ad vissza. Ha igaz, a systray elem megjelenik. Ellenkező esetben eltávolításra kerül.

Például:

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

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

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

A systray regisztráció egy rendezett regisztráció (a sequence számmal):

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

A sorszám alapértelmezés szerint 50. Ha meg van adva, ez a szám lesz használva az elemek sorrendjének meghatározására. A legalacsonyabb sorszám a jobb oldalon, a legmagasabb sorszám pedig a bal oldalon található a rendszer tálca menüjében.

Felhasználói menü regisztráció

A felhasználói menü regisztráció (kategória: user_menuitems) tartalmazza az összes menüpontot, amelyek megjelennek a felhasználói menü megnyitásakor (a navigációs sáv eleme a felhasználó nevével, a jobb felső sarokban).

A felhasználói menü elemei egy olyan függvénnyel vannak meghatározva, amely a env-et veszi, és egy egyszerű objektumot ad vissza, amely a következő információkat tartalmazza:

  • description : a menüpont szövege,

  • href : (opcionális) ha meg van adva (és igaz), a menüpont szövege egy a címkébe kerül a megadott href attribútummal,

  • callback : a visszahívás, amelyet a menüpont kiválasztásakor hívnak meg,

  • hide: (opcionális) jelzi, hogy az elemet el kell-e rejteni (alapértelmezés: false),

  • sequence: (opcionális) meghatározza az elem rangját a többi legördülő elem között (alapértelmezés: 100).

A felhasználói menü minden alkalommal meghívja az elemeket meghatározó függvényeket, amikor megnyílik.

Példa:

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),
    };
});