diff --git a/docfiles/mainpage/main.js b/docfiles/mainpage/main.js index 8a0233e..d77ccb1 100644 --- a/docfiles/mainpage/main.js +++ b/docfiles/mainpage/main.js @@ -39,6 +39,7 @@ * - - #### {@link ModelTypes} * - - #### {@link GroupTypes} - Менеджер для доступа к типам компонентов * - - #### {@link LinkTypes} - Менеджер для доступа к типам линков + * - - #### {@link Links} - Менеджер для к данным линка * - - #### {@link EventTypes} - Менеджер для доступа к типам событий * - - #### {@link CoreConfig} * - - #### {@link CoreErrors} - интерфейс для получения описания ошибок, которые приходят из ядра @@ -136,6 +137,7 @@ * * - {@link GroupTypes} - Менеджер, который позволяет получить данные по типу компонента, определен как **ps.pl.gtm** * - {@link LinkTypes} - Менеджер, который позволяет получить данные по типу линка, определен как **ps.pl.ltm** + * - {@link Links} - Менеджер, который позволяет получить данные по идентификатору линка, определен как **ps.pl.links** * - {@link EventTypes} - Менеджер, который позволяет получить данные по типу события, определен как **ps.pl.etm** * - {@link ModelTypes} - Менеджер, который позволяет узнать о содержимом модели **ps.pl.mtm** * - {@link Models} - Менеджер, для доступа к устройствам, определен как **ps.pl.mm** @@ -197,6 +199,17 @@ * * * + *

+ * ### {@link Links}. Менеджер линков. + * + * Позволяет получить данные по линку + * + * Этот механизм используется в виджете для связывания компонентов модели. + * + * А так же получения атрибутов линка, направленности и других данных + * + * + * * @name 04 * @mainpage * @memberof mainpage diff --git a/docfiles/providers/interface/platform.js b/docfiles/providers/interface/platform.js index 9bf13b4..a294aa7 100644 --- a/docfiles/providers/interface/platform.js +++ b/docfiles/providers/interface/platform.js @@ -10,6 +10,7 @@ * Доступные менеджеры у платформы: * - {@link GroupTypes} - Менеджер, который позволяет получить данные по типу компонента, определен как **gtm** * - {@link LinkTypes} - Менеджер, который позволяет получить данные по типу линка, определен как **ltm** + * - {@link Links} - Менеджер, который позволяет получить данные по идентификатору линка, определен как **links** * - {@link EventTypes} - Менеджер, который позволяет получить данные по типу события, определен как **etm** * - {@link ModelTypes} - Менеджер, который позволяет узнать о содержимом модели **mtm** * - {@link Models} - Менеджер, для доступа к устройствам, определен как **mm** @@ -68,6 +69,15 @@ function Platform() { */ this.ltm = new LinkTypes(); + /** + * + * @public + * @name links + * @type {Links} + * @memberof Platform + */ + this.links = new Links(); + /** * * @public diff --git a/docfiles/providers/managers/core_errors/manager.js b/docfiles/providers/managers/core_errors/manager.js index a583232..f3267f7 100644 --- a/docfiles/providers/managers/core_errors/manager.js +++ b/docfiles/providers/managers/core_errors/manager.js @@ -19,12 +19,14 @@ function CoreErrors() { *
* Пример * + * * ``` * var error_info = ps.pl.core_errors.get_error(101); * // Вывод => * // {name: "Узел не существует", description: "Узел с требуемым индексом не содержится в дереве п…. Данный код ошибки используется в masterProvider"} * * ``` + * * @public * @function get_error * @memberof CoreErrors diff --git a/docfiles/providers/managers/links/attributes/attribute.js b/docfiles/providers/managers/links/attributes/attribute.js new file mode 100644 index 0000000..b28f216 --- /dev/null +++ b/docfiles/providers/managers/links/attributes/attribute.js @@ -0,0 +1,63 @@ +/** + * #### Атрибут линка + * + *
+ * Связанные объекты: + * + * - {@link Links} - Менеджер предоставляющий доступ к данным о линках + * - {@link Links.Link} - Модель линка + * - {@link Links.Link.Attributes} - Менеджер предоставляющий доступ к атрибутам линка + * + * @group manager + * @class Attribute + * @memberof Links.Link.Attributes + */ +function Attribute() { + /** + * Возвращает имя атрибута + * + * @public + * @function name + * @returns {v2.string} + * @memberof Links.Link.Attributes.Attribute + */ + this.name = function() { + + }; + + /** + * Возвращает мета атрибуты атрибута + * + * @public + * @function data + * @returns {v2} + * @memberof Links.Link.Attributes.Attribute + */ + this.data = function() { + + }; + + /** + * Возвращает значение атрибута + * + * @public + * @function value + * @returns {v2} + * @memberof Links.Link.Attributes.Attribute + */ + this.value = function() { + + }; + + /** + * Возвращает тип атрибута + * + * @public + * @function type + * @returns {v2.type} + * @memberof Links.Link.Attributes.Attribute + */ + this.type = function() { + + }; +} \ No newline at end of file diff --git a/docfiles/providers/managers/links/attributes/manager.js b/docfiles/providers/managers/links/attributes/manager.js new file mode 100644 index 0000000..299662f --- /dev/null +++ b/docfiles/providers/managers/links/attributes/manager.js @@ -0,0 +1,46 @@ +/** @typedef {Links.Link.Attributes} LinkAttributes */ +/** @typedef {Links.Link.Attributes.Attribute} LinkAttribute */ + +/** + * + * * ### Менеджер атрибутов линка + * Предоставляет данные о линке. + * У него можно запросить его атрибутный состав + * + *
+ * Связанные объекты: + * + * - {@link Links} - Менеджер предоставляющий доступ к данным о линках + * - {@link Links.Link} - Модель линка + * - {@link Links.Link.Attributes.Attribute} - Модель атрибута линка + * + * @group manager + * @class Attributes + * @memberof Links.Link + */ +function Attributes() { + /** + * Возвращает список атрибутов линка + * + * @public + * @function attributes + * @returns {v2.map(v2.string, v2.vc)} + * @memberof Links.Link.Attributes + */ + this.attributes = function() { + + }; + + /** + * Возвращает ссылку на атрибут линка + * + * @public + * @function get + * @param {v2.string} attributeName + * @returns {tools.promise} + * @memberof Links.Link.Attributes + */ + this.get = function(attributeName) { + + }; +} \ No newline at end of file diff --git a/docfiles/providers/managers/links/link.js b/docfiles/providers/managers/links/link.js new file mode 100644 index 0000000..1462ff3 --- /dev/null +++ b/docfiles/providers/managers/links/link.js @@ -0,0 +1,112 @@ +/** + * ### Линк (связь/edge) + * Предоставляет данные о линке. + * У него можно запросить его атрибутный состав + * + *
+ * Связанные объекты: + * + * - {@link Links} - Менеджер предоставляющий доступ к данным о линках + * - {@link Links.Link.Attributes} - Менеджер предоставляющий доступ к атрибутам линка + * - {@link Links.Link.Attributes.Attribute} - Модель атрибута линка + * + * @class Link + * @memberof Links + */ +function Link() { + /** + * Возвращает уникальный идентификатор линка. + * + * @public + * @function id + * @memberof Links.Link + * @returns {v2.integer} + */ + this.id = function() { + + }; + + /** + * Возвращает тип линка. + * + * @public + * @function id + * @memberof Links.Link + * @returns {v2.model_type} + */ + this.type = function() { + + }; + + /** + * #### Атрибуты линка + * + * Данный метод, возвращает все атрибуты, которые есть у линка + * + *
+ * _Используется в BLA (js/utils/bridge/link_attributes.js)._ + * + *
+ * #### Результат + * + * **first** (имя атрибута) + * + * **second** (структура атрибута: метаданные и значение) + * + * visible -> {@link v2.boolean Boolean} + * editable -> {@link v2.boolean Boolean} + * removable -> {@link v2.boolean Boolean} + * type -> {@link v2.type Type} + * value -> {@link v2 Any} + * + * #### Важно! + * + *``` + * // Пример: + * + * // Считаем что, линк уже есть на руках. + * var link_id = v2.integer.from_string("-7547783344834658422"); + * var link_ref = null; + * var link_model = null; + * + * ps.pl.links.get(link_id).then(function(ref){ + * // ref - это ссылка на объект + * // метод value возвращает целевой объект. В данном случае дерево {@type Links.Link} + * link_model = ref.value(); + * link_ref = ref; + * + * return link_model.attributes(); + * }, function(err){ + * // в случае неудачи придет ошибка. + * // обычно в ошибке содержится три переменные err - код ошибки, message - краткое описание, sub - если к этому + * // привела другая ошибка внутри системы. + * console.log("Ошибка при запросе модели линка") + * }).then(function(_attributes){ + * console.log(_attributes.print()) + * }, function(){ + * console.log("Ошибка при запросе атрибутов") + * }) + *``` + * + * @public + * @function attributes + * @returns {tools.promise(v2.map(v2.string,v2.vc))} + * @memberof Links.Link + */ + this.attributes = function() { + + }; + + /** + * Возвращает ссылку на атрибут линка + * + * @public + * @function get + * @param {v2.string} name + * @returns {tools.promise} + * @memberof Links.Link + */ + this.get = function(name) { + + }; +} \ No newline at end of file diff --git a/docfiles/providers/managers/links/manager.js b/docfiles/providers/managers/links/manager.js new file mode 100644 index 0000000..7b9ab0d --- /dev/null +++ b/docfiles/providers/managers/links/manager.js @@ -0,0 +1,56 @@ +/** + * Менеджер предоставляющий доступ к данным о линках + * + *
+ * Связанные объекты: + * + * - {@link Links.Link} - Модель линка (Топологический линк) + * - {@link LinkTypes} - Менеджер типов линков (Здесь можно запросить данные по типу линка) + * - {@link LinkTypes.LinkType} - Модель типа линка (Здесь можно найти атрибуты линка) + * + * @group manager + * @namespace Links + * @extends manager + */ +function Links() { + /** + * Интерфейс доступа к линку + * + * Ответ должен быть обработан в промисе, + * + * при успехе вернется {@link tools.reference} -> {@link Links.Link} + * + * при отмене вернется ошибка {@link Errors.PromiseReject} + * + * ``` + * // Пример 1: Как получить линк? + * + * // Пример взят для случайного линка + * + * // идентификатор линка 64 битный, а нативный number JavaScript'a нет. + * // поэтому инт генерим из строки + * var link_id = v2.integer.from_string("-7547783344834658422"); + * var link_ref = null; + * var link_model = null; + * ps.pl.links.get(link_id).then(function(ref){ + * // ref - это ссылка на объект + * // метод value возвращает целевой объект. В данном случае дерево {@type Links.Link} + * link_model = ref.value(); + * link_ref = ref; + * }, function(err){ + * // в случае неудачи придет ошибка. + * // обычно в ошибке содержится три переменные err - код ошибки, message - краткое описание, sub - если к этому + * // привела другая ошибка внутри системы. + * }) + * ``` + * + * @public + * @function get + * @param {v2.integer} linkId Идентификатор ноды в дереве + * @returns {tools.promise} + * @memberof Links + */ + this.get = function(linkId) { + + }; +}