initi.doc/docfiles/providers/managers/trees/globalAttributeTree/node.js

203 lines
7.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* ### Атрибутная нода
* Предоставляет интерфейс доступа к содержимому атрибутной ноды
*
* Здесь создаются менеджер по работе с атрибутами нодами
*
* <br>
* Связанные объекты:
*
* - {@link Trees.GlobalTree.Node} - Здесь можно найти примеры, как работать с вложенными нодами
* - {@link Trees.GlobalAttributeTree} - Здесь можно найти примеры, как работать с атрибутным деревом
* - {@link Trees.GlobalAttributeTree.Node.Attributes} - Здесь можно найти примеры, как работать с атрибутами
*
*
* @example
* // Пример: Как получить ноду дерева?
*
* // Пример взят для дерева пользовательских данных (т.к. у него есть атрибуты)
* var tree = null;
* var node = null;
*
* // Осуществляем запрос к менеджеру деревьев, на получение провайдера дерева
* ps.pl.tm.get(new v2.string("uat")).then(function(ref){
* // ref - это ссылка на объект
* // метод value возвращает целевой объект. В данном случае дерево Trees.UserAttributeTree
* tree = ref.value();
*
* // Доступ к ноде осуществляется похожим образом, но теперь вместо строки нужно указать v2.integer
* // Так как возвратится нативный проимс, мы можем вернуть его и обработать в следующем then
* return tree.get(v2.integer.from_number(0))
* }, function(err){
* // в случае неудачи придет ошибка.
* // обычно в ошибке содержится три переменные err - код ошибки, message - краткое описание, sub - если к этому
* // привела другая ошибка внутри системы.
* }).then(function(ref){
* // Вот мы и получили ноду.
* node = ref.value();
* }, function(err){
* // Отобразим ошибку
* console.warn(err);
* })
*
*
* @class Node
* @extends Trees.GlobalTree.Node
* @memberof Trees.GlobalAttributeTree
*/
function Node() {
/**
* #### Атрибуты ноды
*
* Данный метод, возвращает все атрибуты, которые есть у ноды, включая те, которые вернет {@link Trees.GlobalAttributeTree.Node.base_attributes base_attributes}
*
* <br>
* _Используется в BNA._
*
* <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}
*
* #### Важно!
* Это ресурсоемкий вызов и если вам нужно получить имя или адрес иконки для ноды, то нужно использовать {@link Trees.GlobalAttributeTree.Node.base_attributes base_attributes}
*
* @example
* // Пример:
*
* // Считаем что, нода уже есть на руках.
* node.attributes().then(function(_attributes){
* // распечатаем атрибуты
* console.log(v2.tools.print(_attributes));
*
* // примерный вывод будет таким:
* // Map(String, VariableContainer) [
* // "childrenCount" : VariableContainer [
* // visible : false,
* // editable : false,
* // removable : false,
* // type : Integer,
* // value : 0
* // ],
* // "icon" : VariableContainer [
* // visible : true,
* // editable : true,
* // removable : false,
* // type : String,
* // value : "tree"
* // ]
* // ]
*
* }, function(_err){
* // распечатаем ошибку
* console.log(_err)
* })
*
* @public
* @function attributes
* @returns {tools.promise(v2.map(v2.string,v2.vc))}
* @memberof Trees.GlobalAttributeTree.Node
*/
this.attributes = function() {
};
/**
* #### Статические атрибуты ноды
*
* Данный метод, возвращает только те атрибуты, которые описаны типом ноды {@link Trees.GlobalTree.Node.NodeTypes.NodeType NodeType}
*
* <br>
* _Используется в BNBA._
*
* <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}
*
* #### Важно!
* Это оптимизированный метод, и им следует пользоваться
*
* @example
* // Пример:
*
* // Считаем что, нода уже есть на руках.
* node.base_attributes().then(function(_attributes){
* // распечатаем атрибуты
* console.log(v2.tools.print(_attributes));
*
* // примерный вывод будет таким:
* // Map(String, VariableContainer) [
* // "childrenCount" : VariableContainer [
* // visible : false,
* // editable : false,
* // removable : false,
* // type : Integer,
* // value : 0
* // ],
* // "icon" : VariableContainer [
* // visible : true,
* // editable : true,
* // removable : false,
* // type : String,
* // value : "tree"
* // ]
* // ]
*
* }, function(_err){
* // распечатаем ошибку
* console.log(_err)
* })
*
* @public
* @function base_attributes
* @returns {tools.promise(v2.map(v2.string,v2.vc))}
* @memberof Trees.GlobalAttributeTree.Node
*/
this.base_attributes = function() {
};
/**
* Возвращает менеджер атрибутов ноды.
*
* @public
* @function am
* @returns {tools.promise}
* @memberof Trees.GlobalAttributeTree.Node
*/
this.am = function() {
};
/**
* Возвращает ссылку на атрибут ноды.
* Работает через промис.
*
* @public
* @function get
* @param {v2.string} attributeName Имя атрибута
* @returns {tools.promise}
* @memberof Trees.GlobalAttributeTree.Node
*/
this.get = function(attributeName) {
};
}