206 lines
13 KiB
JavaScript
206 lines
13 KiB
JavaScript
/**
|
||
* Генератор для главной страницы документации.
|
||
* Что тут да как?
|
||
*
|
||
* Новый блок должен состоять из тагов:
|
||
* name - где значением будет число. Все блоки сортируются по имени.
|
||
* поэтому что бы вставить блок между 01 и 02, нужно написать 01.0
|
||
*
|
||
* mainpage - таг который указывает, что этот блок будет использован для документации
|
||
* memberof - указывает предка для блока. Но в случае документации это используется,
|
||
* что бы эти блоки не попали в глобальное пространство.
|
||
*/
|
||
|
||
|
||
/**
|
||
* ### Документация по работе с GUI версии 2.9.1
|
||
* @name 01
|
||
* @mainpage
|
||
* @memberof mainpage
|
||
*
|
||
*/
|
||
|
||
/**
|
||
* ### Содержание:
|
||
* - #### [Архитектура](./arch.html)
|
||
* - #### [Наследование](./inheritance.html)
|
||
* - #### [Наследование GUI(деревом)](./gui_tree.html)
|
||
* - #### [Наследование GUI(графом)](./gui_graph.html)
|
||
* - #### [Наследование CORE(деревом)](./core_tree.html)
|
||
* - #### [Наследование CORE(графом)](./core_graph.html)
|
||
* - #### Виджеты
|
||
* - #### Датасорсы
|
||
* - #### Сигнал-Слоты
|
||
* - #### Грид
|
||
* - #### Графики
|
||
* - #### {@link ProvidersSystem Система провайдеров}:
|
||
* - - #### {@link Trees} - Менеджер для работы с деревьями
|
||
* - - #### {@link Models} - Менеджер для работы с девайсами(моделями)
|
||
* - - #### {@link ModelTypes}
|
||
* - - #### {@link GroupTypes} - Менеджер для доступа к типам компонентов
|
||
* - - #### {@link LinkTypes} - Менеджер для доступа к типам линков
|
||
* - - #### {@link EventTypes} - Менеджер для доступа к типам событий
|
||
* - - #### {@link CoreConfig}
|
||
* - - #### {@link CoreErrors} - интерфейс для получения описания ошибок, которые приходят из ядра
|
||
* - - #### {@link CoreTranslations}
|
||
* - - #### {@link UserManager} - Менеджер для доступа к настройкам доступа пользователей
|
||
* - - #### {@link Publishers} - Менеджер для доступа к настройкам доступа пользователей
|
||
* - #### Библиотеки:
|
||
* - - #### {@link std} - реализация сишной библиотеки на js.
|
||
* - - #### {@link v2} - сериализуемые типы, которыми можно обмениваться с ядром.
|
||
* - - #### {@link tools} - разного рода хелперы и инструменты.
|
||
*
|
||
* @name 02
|
||
* @mainpage
|
||
* @memberof mainpage
|
||
*
|
||
*/
|
||
|
||
/**
|
||
* ### Система провайдеров.
|
||
*
|
||
* <br>
|
||
*
|
||
* Провайдеры это механизм, который осуществляет общий доступ к любой доступной информации, которую можно получить от ядра
|
||
*
|
||
* Проще говоря, они моделируют объекты, которые существют в ядре и поддерживаются в акутальном состоянии,
|
||
*
|
||
* до тех пор, пока кто-либо ими пользуются. Как только истекает таймер жизни объекта, он вычищается.
|
||
*
|
||
* <br>
|
||
* Провайдеры запускаются перед стартом системы _**js/main.js**_ и определены в глобальной области видимости: **window.ps**.
|
||
*
|
||
* Как только происходит хендшейк и логин пользователя, начинает загружаться GUI.
|
||
*
|
||
* <br>
|
||
* #### Как пользоваться провайдерами?
|
||
*
|
||
* Внутри провайдеров проинициализирован объект {@link Platform} в переменной **ps.pl**.
|
||
*
|
||
* По-сути он моделирует платформу со стороны сервера и содержит в себе менеджеры, через которые можно связываться с ядром.
|
||
*
|
||
*
|
||
* <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>
|
||
* Доступные менеджеры у платформы:
|
||
*
|
||
* - {@link GroupTypes} - Менеджер, который позволяет получить данные по типу компонента, определен как **ps.pl.gtm**
|
||
* - {@link LinkTypes} - Менеджер, который позволяет получить данные по типу линка, определен как **ps.pl.ltm**
|
||
* - {@link EventTypes} - Менеджер, который позволяет получить данные по типу события, определен как **ps.pl.etm**
|
||
* - {@link ModelTypes} - Менеджер, который позволяет узнать о содержимом модели **ps.pl.mtm**
|
||
* - {@link Models} - Менеджер, для доступа к устройствам, определен как **ps.pl.mm**
|
||
* - {@link Trees} - Менеджер, для доступа к деревьям, определен как **ps.pl.tm**
|
||
* - {@link CoreConfig} - Менеджер, для доступа к конфигу платформы, определен как **ps.pl.core_config**
|
||
* - {@link CoreErrors} - Менеджер, для доступа к конфигу платформы, определен как **ps.pl.core_errors**
|
||
* - {@link CoreTranslations} - Менеджер, для доступа к переводам, определен как **ps.pl.translations**
|
||
* - {@link UserManager} - Менеджер, для доступа к данным пользоваталей, определен как **ps.pl.users**
|
||
* - {@link Publishers} - Менеджер, для доступа к паблишерам, определен как **ps.pl.pm**
|
||
*
|
||
*
|
||
*
|
||
* <br><br>
|
||
* ### {@link Trees} Деревья:
|
||
*
|
||
* Для чего нужны деревья?
|
||
*
|
||
* Например для отображения рабочего стола, каталога моделей, схемы топологии и т.д.
|
||
*
|
||
*
|
||
*
|
||
* <br><br>
|
||
* ### {@link Publishers}. Паблишеры.
|
||
*
|
||
* Для чего нужны паблишеры?
|
||
*
|
||
* В общем случае они предназначены для отображение очень больших списков, которые могут подвесить GUI.
|
||
*
|
||
* Пример использования паблишера есть в форме результатов обнауржения.
|
||
*
|
||
*
|
||
*
|
||
* <br><br>
|
||
* ### {@link Models}. Менеджер моделей.
|
||
*
|
||
* Менеджер моделей предоставляет доступ к устройствами находящимся в системе, которые были обнаружены в сети или добавлены иным способом.
|
||
*
|
||
* Пример использования можно найти в Схеме моделей.
|
||
*
|
||
*
|
||
*
|
||
* <br><br>
|
||
* ### {@link GroupTypes}. Менеджер типов групп.
|
||
*
|
||
* Позволяет получить данные связанные с группой (cTag)
|
||
*
|
||
* Этот механизм используется в виджете для отображения атрибутов модели.
|
||
*
|
||
* А так же для отображения атрибутов компонент.
|
||
*
|
||
*
|
||
*
|
||
* <br><br>
|
||
* ### {@link LinkTypes}. Менеджер типов линков.
|
||
*
|
||
* Позволяет получить данные связанные с типом линка
|
||
*
|
||
* Этот механизм используется в виджете для связывания компонентов модели.
|
||
*
|
||
*
|
||
*
|
||
* @name 04
|
||
* @mainpage
|
||
* @memberof mainpage
|
||
*
|
||
*/
|
||
|