add main page

This commit is contained in:
Aleksey Chichenkov 2018-09-26 18:13:03 +03:00
parent 59d791e97f
commit 12c4995428
16 changed files with 372 additions and 43 deletions

View File

@ -10,7 +10,8 @@
},
"opts" : {
"template": "templates/initi",
"encoding": "utf8",
"encoding": "utf8",
"readme": "",
"recurse": true,
"destination": "../documentation/"
},

View File

@ -3,7 +3,7 @@
* @class list
* @extends v2.base
* @extends std.list
* @param _first_type {v2.vt.base}
* @param {v2.vt.base} _first_type
* @memberof v2
*/
function list(_first_type) {

13
docfiles/mainpage/main.js Normal file
View File

@ -0,0 +1,13 @@
/**
* AAAAA
*
* AAAAA
*
* AAAAA
*
* @name sdfasdf
* @mainpage
* @memberof mainpage
* @example
* dsfadfasdf
*/

View File

@ -41,4 +41,19 @@ function Node() {
this.am = function() {
};
/**
* Возвращает ссылку на атрибут ноды.
* Работает через промис.
*
* @public
* @function get
* @param {v2.string} attributeName Имя атрибута
* @returns {tools.promise}
* @memberof Trees.GlobalAttributeTree.Node
*/
this.get = function(attributeName) {
};
}

View File

@ -1,7 +1,54 @@
/** @typedef {Trees.GlobalTree.Node.Children} NodeChildren */
/**
* Интерфейс позволяющей пользователю работать с потомками ноды
* ### Менеджер вложенных нод
* Предоставляет интерфейс доступа к списку и отслеживанию вложенных нод
*
* <br>
* Связанные объекты:
*
* - {@link Trees.GlobalTree.Node} - Здесь можно найти примеры, как работать с глобальной нодой
*
* @example
* // Пример 1: Как получить Менеджер вложенных нод?
*
* // Пример взят для дерева тополгии
* var tree = null;
* var node = null;
* var cm = 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();
*
* // Так как на этот момент node.cm еще не существует, нужно его подопнуть что бы он загрузился
* return node.children_manager()
* }, function(err){
* // Отобразим ошибку
* console.warn(err);
* }).then(function(_cm){
* // таким образом может быть получен МВН
* cm = _cm;
*
* // однако после этого действия можно его получать напрямую:
* cm = node.cm;
* }, function(err){
* // Отобразим ошибку
* console.warn(err);
* })
*
* @group manager
* @class Children
@ -9,6 +56,10 @@
*/
function Children() {
/**
* ### Сигнал: добавление ноды.
* Оповещение о том, что добавилась новая нода в список вложенных нод
* <br>
* Результат: {@link signals.node_children_add}
*
* @name s_node_add
* @public
@ -18,35 +69,44 @@ function Children() {
this.s_node_add = -1;
/**
* ### Сигнал: удаление ноды.
* Оповещение о том, что удалилась нода из список вложенных нод
* <br>
* Результат: {@link signals.node_children_remove}
*
* @name s_change
* @name s_node_remove
* @public
* @memberof Trees.GlobalTree.Node.Children
* @type {number}
*/
this.s_change = -1;
this.s_node_remove = -1;
/**
* Возвращает список потомков ноды
* @example
* // Пример:
* // В данном случае я не рассматриваю полную цепочку получения МВН (т.к. это описано сверху).
* var children = node.cm.children();
*
* // распечаетаем список идентификаторов:
* v2.tools.print(children);
*
* // Пример вывода:
* //
* // List(Integer) [
* // 1,
* // 2,
* // 3,
* // 4,
* // 5
* // ]
*
* @public
* @function get
* @function children
* @returns {v2.list(v2.integer)}
* @memberof Trees.GlobalTree.Node.Children
*/
this.children = function(attributeName) {
};
/**
* Возвращает тип ноды, по ее идентификатору
*
* @public
* @function get_type_by_id
* @returns {v2.model_type}
* @memberof Trees.GlobalTree.Node.Children
*/
this.get_type_by_id = function(attributeName) {
};
}

View File

@ -1,5 +1,6 @@
/**
* Интерфейс доступа к содержимому глобальной ноды
* ### Глобальная нода
* Предоставляет интерфейс доступа к содержимому глобальной ноды
*
* Здесь создаются менеджер по работе с вложенными нодами и менеджер типов ноды
*
@ -45,27 +46,62 @@
*/
function Node() {
/**
* Возвращает ссылку на атрибут ноды.
* Работает через промис.
* ### Менеджер вложенных нод
*
* Внимание! На момент создания ноды, он не существует (что бы не съедать ресурсы системы).
*
* Поэтому вначале нужно запросить список чилдов, или загрузить его через this.children_manager
*
* @public
* @function get
* @param {v2.string} attributeName Имя атрибута
* @returns {tools.promise}
* @name cm
* @memberof Trees.GlobalTree.Node
* @type {Trees.GlobalTree.Node.Children}
*/
this.get = function(attributeName) {
};
this.cm = new Trees.GlobalTree.Node.Children();
/**
* Добавляет новый динамический атрибут в ноду.
* Ничего не возвращает.
* ### Добавление новой ноды
*
* Добавляет новую ноду используя текущую как парента.
*
* После добавления, менеджера вложенных нод, пошлет сигнал s_node_add
*
*
* @example
* // Пример:
*
* // При добавлении ноды, так же можно добавить произвольное количество атрибутов
* // каждый атрибут имеет метаданные
* // - removable : v2.boolean,
* // - editable : v2.boolean,
* // - visible : v2.boolean,
* // - type : v2.type
* // - value : v2.base
*
* // Создадим мапу для аттрибутов
* var my_attributes = new v2.map(v2.string.type, v2.vc.type);
*
* // Добавим в нее один атрибут
* my_attributes.put(new v2.string("my_attribute"), v2.vc.from_object({
* removable: new v2.boolean(true),
* editable: new v2.boolean(true),
* visible: new v2.boolean(true),
* type: new v2.type(v2.string.type),
* value: new v2.string("Hello World!")
* }));
*
* // В данном примере, я не буду полностью доступаться до ноды по всей цепочке, (т.к. она описана выше)
* // Допустим что сейчас она есть на руках.
*
* // Добавим ноду
* node.add_node(my_attributes);
*
* // Все. Нода добавилась, теперь в чилды придет оповещение.
*
* @public
* @function add_node
* @param {v2.vc} _attrs
* @memberof Trees.GlobalTree.Node
* @param {v2.map(v2.string, v2.vc)} _attrs
*/
this.add_node = function(_attrs) {
@ -74,36 +110,117 @@ function Node() {
/**
* Возвращает уникальный идентификатор ноды.
*
* @exapmle
* // Пример:
* var nodeId = node.id();
*
* @public
* @function id
* @returns {v2.integer}
* @memberof Trees.GlobalTree.Node
* @returns {v2.integer}
*/
this.id = function() {
};
/**
* Возвращает список потомков ноды.
* Работает через промис.
* ### Возвращает список вложенных нод (Идентификаторы).
*
* А так же загрузит менеджер вложенных нод. После этого можно будет пользоваться this.cm
*
* <br>
* Получив идентификаторы, можно сделать запрос на загрузку ноды у дерева.
*
* <br>
* Результат:
* - в случае успеха возвращает {@link v2.list(v2.integer)}
* - в случае отмены возвращает {@link Errors.PromiseReject}
*
* @example
* // Пример:
*
* // Получаем промис на загрузку списка
* var promise = node.children();
*
* // Навешиваем обработчики на промис
* promise.then(function(children){
* // распечаетаем список идентификаторов:
* v2.tools.print(children);
*
* // Пример вывода:
* //
* // List(Integer) [
* // 1,
* // 2,
* // 3,
* // 4,
* // 5
* // ]
* }, function(err){
* // выведем отмену
* console.warn(err);
* })
*
* @public
* @function children
* @returns {tools.promise}
* @memberof Trees.GlobalTree.Node
* @returns {tools.promise(v2.list(v2.integer))}
*/
this.children = function() {
};
/**
* Доступ к менеджеру детей
* ### Получить менеджер вложенных нод
*
* В данном случае если МВН не загружен, загрузит его.
*
* Если уже загружен то вернет.
*
* <br>
* После вызова этого метода, будет проинициализированна переменная this.cm
*
* <br>
* Результат:
* - в случае успеха вернется {@link Trees.GlobalTree.Node.Children}
* - в случае отмены вернется {@link Errors.PromiseReject}
*
* @example
* // Пример:
* // В данном примере, я не буду полностью доступаться до ноды по всей цепочке, (т.к. она описана выше)
* // Допустим что сейчас нода есть на руках.
*
* // Получаем промис на загрузку МВН
* var promise = node.children_manager();
*
* // Обрабатываем результат
* promise.then(function(cm){
* // Итак в переменной cm находится МВН
*
* // Пример использования такого подхода
* var children = cm.children();
* }, function(err){
* console.warn(err);
* })
*
* @public
* @function cm
* @returns {NodeChildren}
* @function children_manager
* @memberof Trees.GlobalTree.Node
* @returns {tools.promise(NodeChildren)}
*/
this.cm = function() {
this.children_manager = function() {
};
/**
* Осуществляет проверку на существование менеджера нод.
*
* @public
* @function children_manager_exist
* @memberof Trees.GlobalTree.Node
* @returns {boolean}
*/
this.children_manager_exist = function() {
};
}

View File

@ -1,5 +1,5 @@
/**
* Менеджер деревьев.
* ### Менеджер деревьев.
*
* Представляет собой интерфейс для доступа ко всем деревьям
*

View File

@ -0,0 +1,69 @@
/**
* ### Описание объекта сигнала
* Важно понимать, что такой объект существует только в документации,
*
* @example
* //Пример:
* // В данном примере я не буду рассматривать полную цепочку получения МВН (т.к. это описано выше).
* // Как пользоваться этим сигналом?
*
* // Вот так происходит добавление обработчика на этот сигнал.
* // dispatcher объявлен в глобальной области видимости
* // slot_node_remove - это идентификатор, по которому нужно будет отписаться от обработчика
* var slot_node_remove = dispatcher.add_slot(node.cm.s_node_remove, function(event){
* // в переменной event всегда будет лежать объект и содержать поле node_id
* // таким образом мы получили идентификатор ноды, которая была удалена.
* var node_id = event.node_id;
* });
*
* // Отписка производится подобным образом
* dispatcher.remove_slot(node.cm.s_node_remove, slot_node_remove);
*
* @class node_children_remove
* @memberof signals
*/
signals.node_children_remove = {
/**
*
* @public
* @name node_id
* @type {v2.integer}
* @memberof signals.node_children_remove
*/
node_id: new v2.integer(0,0)
};
/**
* ### Описание объекта сигнала
* Важно понимать, что такой объект существует только в документации,
*
* @example
* //Пример:
* // В данном примере я не буду рассматривать полную цепочку получения МВН (т.к. это описано выше).
* // Как пользоваться этим сигналом?
*
* // Вот так происходит добавление обработчика на этот сигнал.
* // dispatcher объявлен в глобальной области видимости
* // slot_node_add - это идентификатор, по которому нужно будет отписаться от обработчика
* var slot_node_add = dispatcher.add_slot(node.cm.s_node_add, function(event){
* // в переменной event всегда будет лежать объект и содержать поле node_id
* // таким образом мы получили идентификатор ноды, которая была добавлена.
* var node_id = event.node_id;
* });
*
* // Отписка производится подобным образом
* dispatcher.remove_slot(node.cm.s_node_add, slot_node_add);
*
* @class node_children_add
* @memberof signals
*/
signals.node_children_add = {
/**
*
* @public
* @name node_id
* @type {v2.integer}
* @memberof signals.node_children_add
*/
node_id: new v2.integer(0,0)
};

View File

@ -0,0 +1,7 @@
/**
*
* @namespace signals
*/
var signals = function () {
};

2
gen.sh
View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
rm -rf ../documentation
jsdoc -c conf.json
jsdoc -c conf.json

View File

@ -1,4 +1,4 @@
Установить nodejs
Установить nodejs
Установить npm
Установить JSDoc

View File

@ -658,6 +658,15 @@ var find_first_members = function (_parent, _clss) {
};
global.typedefs = {};
global.mainpage_content = [];
var find_tag_by_id = function (_tags, _tag_id) {
for (var a = 0; a < _tags.length; a++) {
var info = _tags[a];
if (info.title == _tag_id) return true;
}
return false;
};
/**
@param {TAFFY} taffyData See <http://taffydb.com/>.
@ -722,6 +731,13 @@ exports.publish = function(taffyData, opts, tutorials) {
if(doclet.kind == "typedef") {
typedefs[doclet.longname] = doclet;
}
if(doclet.tags && find_tag_by_id(doclet.tags, "mainpage")){
console.log(doclet);
mainpage_content.push(doclet);
}
});
@ -869,6 +885,7 @@ exports.publish = function(taffyData, opts, tutorials) {
outputSourceFiles = conf.default && conf.default.outputSourceFiles !== false;
// add template helpers
view.content = mainpage_content;
view.find = find;
view.linkto = linkto;
view.replace_enters_to_br = replace_enters_to_br;
@ -892,7 +909,7 @@ exports.publish = function(taffyData, opts, tutorials) {
files = find({kind: 'file'});
packages = find({kind: 'package'});
generate('Home',
generate('Documentation: GUI 2.9.1-develop',
packages.concat(
[{
kind: 'mainpage',

View File

@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: <?js= title ?></title>
<title>Initi documentation for GUI(2.9.1-develop) <?js= title ?></title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>

View File

@ -1,8 +1,13 @@
<?js
var data = obj;
var self = this;
console.log(self.content)
?>
<?js= self.partial('mainpage/each.tmpl', self.content) ?>
<?js if (data.kind === 'package') { ?>
<h3><?js= data.name ?> <?js= data.version ?></h3>
<?js } ?>

View File

@ -0,0 +1,8 @@
<?js
var content = obj;
var self = this;
?>
<?js for(var a = 0; a < content.length; a++) { ?>
<?js= self.partial('mainpage/part.tmpl', content[a]) ?>
<?js } ?>

View File

@ -0,0 +1,17 @@
<?js
var part = obj;
var self = this;
//console.log(part);
?>
<?js if(part.description) { ?>
<div class="description part bdotted"><?js= self.replace_enters_to_br(part.description) ?></div>
<?js } ?>
<?js if (part.examples && part.examples.length) { ?>
<div class="params-desc params-example bdotted part">
<div class="title">Examples: </div>
<?js= self.partial('examples.tmpl', part.examples) ?>
</div>
<?js } ?>