add guide for providers
This commit is contained in:
parent
89ce45f653
commit
6b4b6ac92b
@ -77,6 +77,58 @@
|
|||||||
*
|
*
|
||||||
* По-сути он моделирует платформу со стороны сервера и содержит в себе менеджеры, через которые можно связываться с ядром.
|
* По-сути он моделирует платформу со стороны сервера и содержит в себе менеджеры, через которые можно связываться с ядром.
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* <br>
|
||||||
|
* #### Как устроены провайдеры? (**Важно прочитать!**)
|
||||||
|
*
|
||||||
|
* Механизм провайдеров загружает данные из ядра и моделирует объект, если он изменяется во времени,
|
||||||
|
* и ядро допускает подписку на данные объекта.
|
||||||
|
*
|
||||||
|
* _К таким объектам относятся например:_
|
||||||
|
* {@link GroupTypes.GroupType GroupType},
|
||||||
|
* {@link Models.Model Model},
|
||||||
|
* {@link ModelTypes.ModelType ModelType},
|
||||||
|
* {@link Trees.GlobalTree.Node Node}.
|
||||||
|
*
|
||||||
|
* Основная идея состоит в том, что один раз загрузив данные, клиент не будет нагружать сервер запросами.
|
||||||
|
*
|
||||||
|
* Так что система провайдеров по факту кеширует в себе модели сервера, и если происходят обновления данных, то
|
||||||
|
*
|
||||||
|
* обновление происходит по частям.
|
||||||
|
*
|
||||||
|
* Вся основная работа с провайдерами начинается с точки доступа **ps.pl**. Это корневая платформа, она же мастер.
|
||||||
|
*
|
||||||
|
* Посмотреть какие есть интерфейсы у платформы можно {@link Platform тут}.
|
||||||
|
*
|
||||||
|
* Платформа содержит в себе все менеджеры, через которые можно осуществлять общение с сервером.
|
||||||
|
*
|
||||||
|
* _Например:_ {@link GroupTypes Типы компонентов}, {@link Models Менеджер моделей}, {@link Trees Менеджер деревьев}.
|
||||||
|
* <br>
|
||||||
|
* **Как корректно запрашивать и работать с данными предоставляемыми API?**
|
||||||
|
*
|
||||||
|
* - 1) У каждого менеджера как правило есть метод **get**. Этот метод, у кажого менеджера принимает свой тип данных.
|
||||||
|
* - - **get** всегда возвращает {@link tools.promise Промис}.
|
||||||
|
* - - Результатом промиса всегда будет {@link tools.reference ссылка}.
|
||||||
|
* - - **Работа ссылкой (ВАЖНО)**:
|
||||||
|
* - - - после того, как вы закончите работать с ссылкой, **ОБЯЗАТЕЛЬНО** вызвать у неё {@link tools.reference.reset reset}
|
||||||
|
* - - - если вы получили ссылку, и получили данные из объекта, вызовите у неё {@link tools.reference.reset reset}
|
||||||
|
* - - - если необходимо следить за состоянием, то сохраните ссылку в переменную и после того, как закончите работу с объектом вызовите {@link tools.reference.reset reset}
|
||||||
|
* - - - всегда вызывайте {@link tools.reference.reset reset}, если вам не нужен объект. В противном случае он не будет выгружаться из памяти.
|
||||||
|
*
|
||||||
|
* - 2) У кажого промиса есть возможность отмены. Если вам больше нет надобности ждать ответ, просто вызовите cancel.
|
||||||
|
* - 3) Будте внимательны к методам:
|
||||||
|
* - - все публичные методы и свойства будут идти без нижнего подчеркивания.
|
||||||
|
* - - все приватные методы будут и должны быть подписаны <_name>
|
||||||
|
* - - если нет нужного метода, а данные вы нашли где-то в приватных переменных, то следует разобраться почему, так. И:
|
||||||
|
* - - - а) сделать публичный методы.
|
||||||
|
* - - - б) спросить почему так сделано у автора.
|
||||||
|
* - 4) Перед началом работы стоит ознакомится с содержимым папки js/providers/system
|
||||||
|
* - - **base/base.js** - файл в котором определена машина состояний
|
||||||
|
* - - **base/item.js** - класс от которого наследуются все НЕ менеджеры
|
||||||
|
* - - **base/manager.js** - базовый класс для любого менеджера. Содержит API работы с менеджерами.
|
||||||
|
* - - **platform.js** - {@link Platform платформа}. Оно же точка доступа ps.pl.
|
||||||
|
*
|
||||||
|
*
|
||||||
* <br>
|
* <br>
|
||||||
* Доступные менеджеры у платформы:
|
* Доступные менеджеры у платформы:
|
||||||
* - {@link GroupTypes} - Менеджер, который позволяет получить данные по типу компонента, определен как **ps.pl.gtm**
|
* - {@link GroupTypes} - Менеджер, который позволяет получить данные по типу компонента, определен как **ps.pl.gtm**
|
||||||
|
@ -1,4 +1,21 @@
|
|||||||
/**
|
/**
|
||||||
|
* ### Платформа
|
||||||
|
* Основная точка доступа к данным.
|
||||||
|
*
|
||||||
|
* ```bash
|
||||||
|
* // доступ
|
||||||
|
* ps.pl
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Доступные менеджеры у платформы:
|
||||||
|
* - {@link GroupTypes} - Менеджер, который позволяет получить данные по типу компонента, определен как **gtm**
|
||||||
|
* - {@link ModelTypes} - Менеджер, который позволяет узнать о содержимом модели **mtm**
|
||||||
|
* - {@link Models} - Менеджер, для доступа к устройствам, определен как **mm**
|
||||||
|
* - {@link Trees} - Менеджер, для доступа к деревьям, определен как **tm**
|
||||||
|
* - {@link CoreConfig} - Менеджер, для доступа к конфигу платформы, определен как **core_config**
|
||||||
|
* - {@link CoreTranslations} - Менеджер, для доступа к переводам, определен как **core_translations**
|
||||||
|
* - {@link Datasource} - Менеджер, для к каталогу датасорсов, определен как **datasource_manager**
|
||||||
|
* - {@link UserManager} - Менеджер, для доступа к данным пользоваталей, определен как **user_manager**
|
||||||
*
|
*
|
||||||
* @group providers_interface
|
* @group providers_interface
|
||||||
* @namespace Platform
|
* @namespace Platform
|
||||||
@ -21,10 +38,29 @@ function Platform() {
|
|||||||
*/
|
*/
|
||||||
this.mm = new Models();
|
this.mm = new Models();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @public
|
||||||
|
* @name mtm
|
||||||
|
* @type {ModelTypes}
|
||||||
|
* @memberof Platform
|
||||||
|
*/
|
||||||
|
this.mtm = new ModelTypes();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @public
|
||||||
|
* @name gtm
|
||||||
|
* @type {GroupTypes}
|
||||||
|
* @memberof Platform
|
||||||
|
*/
|
||||||
|
this.gtm = new GroupTypes();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @public
|
* @public
|
||||||
* @name core_translations
|
* @name core_translations
|
||||||
|
* @type {CoreTranslations}
|
||||||
* @memberof Platform
|
* @memberof Platform
|
||||||
*/
|
*/
|
||||||
this.core_translations = new CoreTranslations();
|
this.core_translations = new CoreTranslations();
|
||||||
@ -33,6 +69,7 @@ function Platform() {
|
|||||||
*
|
*
|
||||||
* @public
|
* @public
|
||||||
* @name core_config
|
* @name core_config
|
||||||
|
* @type {CoreConfig}
|
||||||
* @memberof Platform
|
* @memberof Platform
|
||||||
*/
|
*/
|
||||||
this.core_config = new CoreConfig();
|
this.core_config = new CoreConfig();
|
||||||
@ -41,6 +78,7 @@ function Platform() {
|
|||||||
*
|
*
|
||||||
* @public
|
* @public
|
||||||
* @name datasource_manager
|
* @name datasource_manager
|
||||||
|
* @type {Datasource}
|
||||||
* @memberof Platform
|
* @memberof Platform
|
||||||
*/
|
*/
|
||||||
this.datasource_manager = new Datasource();
|
this.datasource_manager = new Datasource();
|
||||||
@ -49,6 +87,7 @@ function Platform() {
|
|||||||
*
|
*
|
||||||
* @public
|
* @public
|
||||||
* @name user_manager
|
* @name user_manager
|
||||||
|
* @type {UserManager}
|
||||||
* @memberof Platform
|
* @memberof Platform
|
||||||
*/
|
*/
|
||||||
this.user_manager = new UserManager();
|
this.user_manager = new UserManager();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user