добавил примеры по работе с деревьями

This commit is contained in:
Aleksey Chichenkov 2018-09-25 19:04:11 +03:00
parent 73f3735bb6
commit 59d791e97f
12 changed files with 446 additions and 22 deletions

View file

@ -1,7 +1,44 @@
/**
* Нода дерева
* Представляет интефрейс для доступа к данным глобальной ноды в ядре
* Позволяет узнать потомков ноды
* Интерфейс доступа к содержимому глобальной ноды
*
* Здесь создаются менеджер по работе с вложенными нодами и менеджер типов ноды
*
* <br>
* Связанные объекты:
*
* - {@link Trees.GlobalTree} - Здесь можно найти примеры, как работать с глобальным деревом
* - {@link Trees.GlobalTree.Node.Children} - Здесь можно найти примеры, как работать с вложенными нодами
* - {@link Trees.GlobalTree.Node.NodeTypes} - Здесь можно найти примеры, как работать с типами ноды
*
*
* @example
* // Пример: Как получить ноду дерева?
*
* // Пример взят для дерева тополгии
* var tree = null;
* var node = null;
*
* // Осуществляем запрос к менеджеру деревьев, на получение провайдера дерева
* ps.pl.tm.get(new v2.string("st")).then(function(ref){
* // ref - это ссылка на объект
* // метод value возвращает целевой объект. В данном случае дерево Trees.SchemeTree
* 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
* @memberof Trees.GlobalTree

View file

@ -1,20 +1,93 @@
/**
* Глобальное дерево, от которого отнаследованы все остальные.
* Копирует идеологию ядра.
* Ноды этого дерева имеют доступ только к списку своих потомков.
* Абстрактное дерево, от него наследуются все существующие деревья
*
* Ноды это дерева имеют доступ к списку нод, вложенных в них
*
* <br>
* Связанные объекты:
*
* - {@link Trees} - Здесь можно найти примеры, как работать с менеджером деревьев
* - {@link Trees.GlobalTree.Node} - Здесь можно найти примеры, как работать с содержимым глобальной ноды
*
* @example
* // Пример 1: Как получить глобальное дерево?
*
* // Пример взят для дерева тополгии
* var tree = null;
* ps.pl.tm.get(new v2.string("st")).then(function(ref){
* // ref - это ссылка на объект
* // метод value возвращает целевой объект. В данном случае дерево {@type Trees.GlobalTree}
* tree = ref.value();
* }, function(err){
* // в случае неудачи придет ошибка.
* // обычно в ошибке содержится три переменные err - код ошибки, message - краткое описание, sub - если к этому
* // привела другая ошибка внутри системы.
* })
*
* @example
* // Пример 2: Как получить ноду дерева?
*
* // Пример взят для дерева тополгии
* var tree = null;
* var node = null;
*
* // Осуществляем запрос к менеджеру деревьев, на получение провайдера дерева
* ps.pl.tm.get(new v2.string("st")).then(function(ref){
* // ref - это ссылка на объект
* // метод value возвращает целевой объект. В данном случае дерево Trees.SchemeTree
* 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);
* })
*
* @group manager
* @class GlobalTree
* @extends manager
* @memberof Trees
*/
function GlobalTree() {
/**
* Возвращает ссылку на ноду. В качестве идентификатора надо указать идентификатор ноды.
* Работает через промис.
* Интерфейс доступа к ноде
*
* Ответ должен быть обработан в промисе,
*
* при успехе вернется {@link tools.reference} -> {@link Trees.GlobalTree.Node}
*
* при отмене вернется ошибка {@link Errors.PromiseReject}
*
* @example
* // Пример:
*
* // Допустим мы хотим получить корневую ноду.
* // Так сложилось, что корневая нода, всегда нулевая
* var nodeId = v2.integer.from_number(0);
*
* // Допустим что мы где-то уже получили дерево.
* var promise = tree.get(nodeId);
*
* promise.then(function(ref){
* // Вот мы и получили ноду.
* node = ref.value();
* }, function(err){
* // Отобразим ошибку
* console.warn(err);
* })
*
* @public
* @function get
* @param {v2.integer} nodeId Уникальный идентификатор ноды в дереве
* @param {v2.integer} nodeId Идентификатор ноды в дереве
* @returns {tools.promise}
* @memberof Trees.GlobalTree
*/
@ -23,13 +96,30 @@ function GlobalTree() {
};
/**
* Позволяет удалить динамический атрибут ноды.
* Возвращает булевое значение об операции
* Осуществляет уаление ноды из дерева.
*
* @example
* // Пример:
*
* // Допустим, что мы знаем, что в дереве существует нода с таким идентификатором
* var nodeId = v2.integer.from_number(1);
* var tree = null;
* ps.pl.tm.get(new v2.string("st")).then(function(ref){
* // ref - это ссылка на объект
* // метод value возвращает целевой объект. В данном случае дерево {@type Trees.GlobalTree}
* tree = ref.value();
*
* // Произведет удаление ноды 1 из дерева
* // Ответ придет по подписке на существование нод в дереве.
* tree.remove(nodeId);
* }, function(err){
* console.log(err)
* })
*
*
* @public
* @function remove
* @param {v2.string} nodeId Уникальный идентификатор ноды в дереве
* @returns {boolean}
* @param {v2.integer} nodeId Идентификатор ноды в дереве
* @memberof Trees.GlobalTree
*/
this.remove = function(nodeId) {
@ -39,6 +129,7 @@ function GlobalTree() {
/**
* Возвращает адрес дерева в системе
*
*
* @public
* @function sys_addr
* @returns {v2.address}