diff --git a/lib/templates/summary.js b/lib/templates/summary.js
index 48a57fa..925aee3 100644
--- a/lib/templates/summary.js
+++ b/lib/templates/summary.js
@@ -1,29 +1,44 @@
+function makeTree (db) {
+ let map = {};
+ let tree = {};
+ let node;
+
+ for (let item in db) {
+ map[item] = item;
+ db[item].CHILDREN = {};
+ }
+
+ for (let item in db) {
+ node = db[item];
+ if (node.FROM === undefined) {
+ tree[item] = node;
+ } else {
+ db[map[node.FROM.toUpperCase()]].CHILDREN[item] = node;
+ }
+ }
+
+ return tree;
+}
+
+function makeList (tree) {
+ let list = '';
+ for (let item in tree) {
+ list += `
${item}${makeList(tree[item].CHILDREN)}`;
+ }
+ return ``;
+}
+
function summaryTemplate(db, target)
{
let html = "", sidebar = "", content = "";
- let keys = Object.keys(db);
+ let tree = makeTree(db);
sidebar += MakeSidebar(db, target);
$try(() => content += `${new Runic(db[target].LONG, Curlic)}`);
- let tree = new Array();
- let list = "";
- for(let i = 0; i < keys.length; i++)
- {
- let key = keys[i];
- let value = db[key];
- list += `${key.toLowerCase()}`;
-
- if(value.FROM == null)
- {
- tree[key.toLowerCase()] = new Array();
- }
- else
- {
- }
- }
+ let list = makeList(tree);
let summary = ``;
return html += sidebar + `${content + summary}
`;
-}
\ No newline at end of file
+}