Upgrade to nick_site commit f981fa57, adds alerts and inactive sidebar option
[ndcode_site.git] / blog / index.html.jst
1 return async env => {
2   let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
3   let get_navigation = await _require('/_lib/get_navigation.jst')
4   let navbar = await _require('/_lib/navbar.jst')
5
6   await navbar(
7     env,
8     async _out => {},
9     async _out => {
10       await breadcrumbs(env, _out)
11
12       let transaction = await env.site.database.Transaction()
13       try {
14         let root = await transaction.get()
15         let p = await get_navigation(root, env.component_names)
16         let children = await p.get('children')
17         let menu = await p.get_json('menu')
18
19         nav {
20           for (let i = 0; i < menu.length; ++i) {
21             let name = menu[i]
22             let q = await children.get(name)
23             let images = await q.get_json('images')
24
25             // we can use higher resolution images when lower not available
26             while (images.length < 3)
27               images.push(images[images.length - 1])
28
29             // note: make the row a link to show hover background at edges
30             // (similar to the grid-gutter-background class I use elsewhere)
31             // note: position: relative sets the target for stretched link
32             div.row.flex-nowrap.align-items-center.nav-link-outer.position-relative {
33               div.col.col-icon256 {
34                 img.img-fluid.py-3(src=`${name}/${images[2]}`) {}
35               }
36               div.col.col-text {
37                 a.nav-link-inner.stretched-link(href=`${name}/index.html`) {
38                   span.h2{
39                     `${await q.get_json('title')}`
40                   }
41                   br {}
42                   span.h4{
43                     `${await q.get_json('description')}—by ${await q.get_json('author')}`
44                   }
45                 }
46               }
47             }
48           }
49         }
50       }
51       finally {
52         transaction.rollback()
53       }
54     },
55     async _out => {}
56   )
57 }