/** * ### Атрибутная нода * Предоставляет интерфейс доступа к содержимому атрибутной ноды * * Здесь создаются менеджер по работе с атрибутами нодами * *
* Связанные объекты: * * - {@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} * *
* _Используется в BNA._ * *
* #### Результат * * **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} * *
* _Используется в BNBA._ * *
* #### Результат * * **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) { }; }