Registries¶
رجیستریها نگاشتهای (مرتب) کلید/مقدار هستند. آنها نقاط اصلی توسعهٔ کلاینت وب هستند: بسیاری از ویژگیهای ارائهشده توسط چارچوب javascript Odoo هر زمان به تعریف یک شیء (مانند فیلدها، نماها، اقدامات کلاینت یا سرویسها) نیاز داشته باشند، صرفاً در یک رجیستری جستجو میکنند. در نتیجه، سفارشیسازی کلاینت وب صرفاً با افزودن مقادیر مشخص به رجیستری درست انجام میشود.
import { Registry } from "@web/core/registry";
const myRegistry = new Registry();
myRegistry.add("hello", "odoo");
console.log(myRegistry.get("hello"));
یک ویژگی مفید رجیستریها این است که مجموعهای از زیررجیستریها را نگهداری میکنند که با متد category بهدست میآیند. اگر زیررجیستری هنوز وجود نداشته باشد، در لحظه ایجاد میشود. تمام رجیستریهای مورد استفادهٔ کلاینت وب به این شیوه از یک رجیستری ریشه بهدست میآیند که در @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گوش داد. رجیستریها مرتب هستند: متدgetAllفهرستی از مقادیر را به ترتیب شمارهٔ توالی آنها بازمیگرداند.- Registry.add(key, value[, options])¶
- نشانوندها
key (
string()) -- کلید برای ورودی جدیدvalue (
any()) -- مقدار برای ورودی جدیدoptions (
Object()) -- گزینهها[options.force] (
boolean()) -- اگر کلید از پیش وجود داشته باشد خطا پرتاب نشود[options.sequence] (
number()) -- شمارهٔ توالی (برای مرتبسازی ورودیها مفید است)
- بازگشت ها
رجیستری
یک مقدار را در کلیدی مشخص درج میکند. اگر کلید از پیش استفاده شده باشد، این متد یک خطا پرتاب میکند (مگر اینکه گزینهٔ
forceروی true تنظیم شده باشد). گزینهٔsequenceبرای درج مقدار در موقعیتی خاص مفید است. این متد همچنین یک رویدادUPDATEفعال میکند.همان رجیستری را بازمیگرداند، بنابراین فراخوانیهای متد
addمیتوانند زنجیر شوند.
- Registry.get(key[, defaultValue])¶
- نشانوندها
key (
string()) -- کلید ورودیany (
defaultValue()) -- مقدار بازگشتی در صورت عدم وجود ورودی برای کلید
مقدار متناظر با آرگومان
keyرا بازمیگرداند. اگر رجیستری حاوی آن کلید نباشد، این متد در صورت دادهشدنdefaultValueآن را برمیگرداند، و در غیر این صورت خطا پرتاب میکند.
- Registry.contains(key)¶
- نشانوندها
key (
string()) -- کلید ورودی
- بازگشت ها
بولی
اگر
keyدر رجیستری حضور داشته باشدtrueبازمیگرداند
- Registry.getAll()¶
- بازگشت ها
any[]
فهرست تمام عناصر رجیستری را بازمیگرداند. این فهرست بر اساس شمارههای توالی مرتب شده است.
- Registry.remove(key)¶
- نشانوندها
key (
string()) -- کلید ورودیای که باید حذف شود
یک جفت کلید/مقدار را از رجیستری حذف میکند. این عملیات یک رویداد
UPDATEفعال میکند.
- Registry.category(subcategory)¶
- نشانوندها
subcategory (
string()) -- نام زیرمجموعه
- بازگشت ها
رجیستری
زیررجیستری مرتبط با
subcategoryرا بازمیگرداند. اگر هنوز وجود نداشته باشد، زیررجیستری در لحظه ایجاد میشود.
فهرست مرجع¶
دستهبندی |
محتوا |
|---|---|
پیادهسازی برای تمام افکتهای موجود |
|
توابع کمکی برای قالببندی مقادیر (بیشتر برای مقادیر فیلد استفاده میشوند) |
|
کامپوننتهای سطح بالا |
|
توابع کمکی برای تجزیهٔ مقادیر (بیشتر برای مقادیر فیلد استفاده میشوند) |
|
تمام سرویسهایی که باید فعال شوند |
|
کامپوننتهای نمایشدادهشده در منطقهٔ systray در navbar |
|
آیتمهای منو نمایشدادهشده در منوی کاربر (بالا-راست navbar) |
رجیستری افکت¶
رجیستری effects شامل پیادهسازیهای تمام افکتهای موجود است. برای جزئیات بیشتر به بخش effect service مراجعه کنید.
رجیستری قالببندیکننده¶
رجیستری formatters شامل توابعی برای قالببندی مقادیر است. هر قالببندیکننده این API را دارد:
- format(value[, options])¶
- نشانوندها
value (
T | false()) -- مقداری از نوع خاص، یاfalseاگر مقداری داده نشده باشدoptions (
Object()) -- گزینههای مختلف
- بازگشت ها
string
مقداری را قالببندی کرده و یک رشته بازمیگرداند
همچنین ببینید
رجیستری کامپوننتهای اصلی¶
رجیستری کامپوننت اصلی (main_components) برای افزودن کامپوننتهای سطح بالا در کلاینت وب مفید است. کلاینت وب یک MainComponentsContainer بهعنوان فرزند مستقیم دارد. این کامپوننت اساساً یک نمایش زندهٔ فهرست مرتبشده از کامپوننتهای ثبتشده در رجیستری کامپوننتهای اصلی است.
- API
interface { Component: Owl Component class props?: any }
برای مثال، کامپوننت LoadingIndicator را میتوان به این شکل در رجیستری افزود:
registry.category("main_components").add("LoadingIndicator", {
Component: LoadingIndicator,
});
رجیستری Parser¶
رجیستری parsers شامل توابعی برای تجزیهٔ مقادیر است. هر parser این API را دارد:
- parse(value[, options])
- نشانوندها
value (
string()) -- رشتهای که نمایانگر یک مقدار استoptions (
Object()) -- گزینههای مختلف (مختص parser)
- بازگشت ها
T یک مقدار معتبر
یک رشته را تجزیه کرده و یک مقدار برمیگرداند. اگر رشته نمایانگر یک مقدار معتبر نباشد، parserها میتوانند با خطا متوقف شوند.
همچنین ببینید
رجیستری سرویس¶
رجیستری سرویس (دسته: services) شامل تمام سرویسهایی است که باید توسط چارچوب Odoo فعال شوند.
import { registry } from "@web/core/registry";
const myService = {
dependencies: [...],
start(env, deps) {
// some code here
}
};
registry.category("services").add("myService", myService);
رجیستری Systray¶
systray منطقهای در سمت راست navbar است که شامل کامپوننتهای کوچک گوناگون است و معمولاً نوعی اطلاعات (مانند تعداد پیامهای خواندهنشده) و اعلانها را نمایش میدهد و/یا به کاربر اجازهٔ تعامل با آنها را میدهد.
رجیستری systray حاوی توصیفی از این آیتمهای systray بهصورت اشیائی با سه کلید زیر است:
Component: کلاس کامپوننتی که نمایانگر آیتم است. عنصر ریشهٔ آن باید یک تگ<li>باشد، در غیر این صورت ممکن است بهدرستی استایل نگیرد.props (اختیاری): propهایی که باید به کامپوننت داده شوندisDisplayed (اختیاری): تابعی که env را میگیرد و یک بولین بازمیگرداند. اگر true باشد، آیتم systray نمایش داده میشود. در غیر این صورت حذف میشود.
برای مثال:
import { registry } from "@web/core/registry";
class MySystrayItem extends Component {
// some component ...
}
registry.category("systray").add("myAddon.myItem", {
Component: MySystrayItem,
});
رجیستری systray یک رجیستری مرتب است (با شمارهٔ sequence):
const item = {
Component: MySystrayItem
};
registry.category("systray").add("myaddon.some_description", item, { sequence: 43 });
شمارهٔ توالی بهطور پیشفرض ۵۰ است. در صورت ارائه، این شماره برای مرتبسازی آیتمها استفاده میشود. کمترین توالی در سمت راست و بیشترین توالی در سمت چپ منوی systray قرار میگیرد.