links manager

This commit is contained in:
Aleksey Chichenkov 2019-07-01 16:36:27 +03:00
parent 2bfec61202
commit eeb2b01574
7 changed files with 302 additions and 0 deletions

View file

@ -0,0 +1,63 @@
/**
* #### Атрибут линка
*
* <br>
* Связанные объекты:
*
* - {@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() {
};
}

View file

@ -0,0 +1,46 @@
/** @typedef {Links.Link.Attributes} LinkAttributes */
/** @typedef {Links.Link.Attributes.Attribute} LinkAttribute */
/**
*
* * ### Менеджер атрибутов линка
* Предоставляет данные о линке.
* У него можно запросить его атрибутный состав
*
* <br>
* Связанные объекты:
*
* - {@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) {
};
}

View file

@ -0,0 +1,112 @@
/**
* ### Линк (связь/edge)
* Предоставляет данные о линке.
* У него можно запросить его атрибутный состав
*
* <br>
* Связанные объекты:
*
* - {@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() {
};
/**
* #### Атрибуты линка
*
* Данный метод, возвращает все атрибуты, которые есть у линка
*
* <br>
* спользуется в BLA (js/utils/bridge/link_attributes.js)._
*
* <br>
* #### Результат
*
* **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) {
};
}

View file

@ -0,0 +1,56 @@
/**
* Менеджер предоставляющий доступ к данным о линках
*
* <br>
* Связанные объекты:
*
* - {@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) {
};
}