2018-09-24 16:03:29 +00:00
|
|
|
|
/**
|
2018-10-10 14:53:39 +00:00
|
|
|
|
* ### Атрибутная нода
|
|
|
|
|
* Предоставляет интерфейс доступа к содержимому атрибутной ноды
|
|
|
|
|
*
|
|
|
|
|
* Здесь создаются менеджер по работе с атрибутами нодами
|
|
|
|
|
*
|
|
|
|
|
* <br>
|
|
|
|
|
* Связанные объекты:
|
|
|
|
|
*
|
|
|
|
|
* - {@link Trees.GlobalTree.Node} - Здесь можно найти примеры, как работать с вложенными нодами
|
2018-10-15 14:39:21 +00:00
|
|
|
|
* - {@link Trees.GlobalAttributeTree} - Здесь можно найти примеры, как работать с атрибутным деревом
|
|
|
|
|
* - {@link Trees.GlobalAttributeTree.Node.Attributes} - Здесь можно найти примеры, как работать с атрибутами
|
2018-10-10 14:53:39 +00:00
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* @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);
|
|
|
|
|
* })
|
|
|
|
|
*
|
|
|
|
|
*
|
2018-09-24 16:03:29 +00:00
|
|
|
|
* @class Node
|
|
|
|
|
* @extends Trees.GlobalTree.Node
|
|
|
|
|
* @memberof Trees.GlobalAttributeTree
|
|
|
|
|
*/
|
|
|
|
|
function Node() {
|
|
|
|
|
/**
|
2018-10-15 14:39:21 +00:00
|
|
|
|
* #### Атрибуты ноды
|
|
|
|
|
*
|
|
|
|
|
* Данный метод, возвращает все атрибуты, которые есть у ноды, включая те, которые вернет {@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)
|
|
|
|
|
* })
|
2018-09-24 16:03:29 +00:00
|
|
|
|
*
|
|
|
|
|
* @public
|
|
|
|
|
* @function attributes
|
2018-10-15 14:39:21 +00:00
|
|
|
|
* @returns {tools.promise(v2.map(v2.string,v2.vc))}
|
2018-09-24 16:03:29 +00:00
|
|
|
|
* @memberof Trees.GlobalAttributeTree.Node
|
|
|
|
|
*/
|
|
|
|
|
this.attributes = function() {
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
2018-10-15 14:39:21 +00:00
|
|
|
|
* #### Статические атрибуты ноды
|
|
|
|
|
*
|
|
|
|
|
* Данный метод, возвращает только те атрибуты, которые описаны типом ноды {@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)
|
|
|
|
|
* })
|
2018-09-24 16:03:29 +00:00
|
|
|
|
*
|
|
|
|
|
* @public
|
|
|
|
|
* @function base_attributes
|
2018-10-15 14:39:21 +00:00
|
|
|
|
* @returns {tools.promise(v2.map(v2.string,v2.vc))}
|
2018-09-24 16:03:29 +00:00
|
|
|
|
* @memberof Trees.GlobalAttributeTree.Node
|
|
|
|
|
*/
|
|
|
|
|
this.base_attributes = function() {
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает менеджер атрибутов ноды.
|
|
|
|
|
*
|
|
|
|
|
* @public
|
|
|
|
|
* @function am
|
|
|
|
|
* @returns {tools.promise}
|
|
|
|
|
* @memberof Trees.GlobalAttributeTree.Node
|
|
|
|
|
*/
|
|
|
|
|
this.am = function() {
|
|
|
|
|
|
|
|
|
|
};
|
2018-09-26 15:13:03 +00:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает ссылку на атрибут ноды.
|
|
|
|
|
* Работает через промис.
|
|
|
|
|
*
|
|
|
|
|
* @public
|
|
|
|
|
* @function get
|
|
|
|
|
* @param {v2.string} attributeName Имя атрибута
|
|
|
|
|
* @returns {tools.promise}
|
|
|
|
|
* @memberof Trees.GlobalAttributeTree.Node
|
|
|
|
|
*/
|
|
|
|
|
this.get = function(attributeName) {
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
2018-09-24 16:03:29 +00:00
|
|
|
|
}
|