Make default_value be in JSON not logjson format (faster and more convenient)
[ndcode_site.git] / search.html.jst
1 let querystring = require('querystring')
2
3 return async env => {
4   let globals = await env.site.get_json('/_config/globals.json')
5   let navbar = await _require('/navbar.jst')
6   let zet_site = await env.site.get_zettair('/_zet/site')
7
8   let query = env.parsed_url.query.query
9   let first = parseInt(env.parsed_url.query.first || '0')
10   let search = zet_site.search(query, first, 10)
11   console.log(
12     `${env.parsed_url.host} search "${query}" first ${first} results ${search.results.length} total results ${search.total_results}`
13   )
14
15   await navbar(
16     env,
17     async _out => {},
18     async _out => {
19       h1 {'Search results'}
20
21       h4 {
22         'Query: '
23         strong {`${query}`}
24       }
25     
26       if (search.results.length) {
27         p {`Showing results ${first + 1}–${first + search.results.length} of ${search.total_results}`}
28
29         ol(start=first + 1) {
30           for (let i = 0; i < search.results.length; ++i) {
31             let page = search.results[i].auxiliary
32             li {
33               a(href=page) {`${globals.page_to_title[page] || page}`}
34               br {}
35               p {_out.push(search.results[i].summary)} // note: contains HTML
36             }
37           }
38         }
39
40         ul.pagination {
41           for (let i = 0; i * 10 < search.total_results; ++i) {
42             let page = '/search.html?' + querystring.stringify(
43               {query: query, first: i * 10}
44             )
45             let text = (i + 1).toString()
46             if (i * 10 === first)
47               li.active {
48                 a(href=page) {
49                   `${text}`
50                   span.sr-only {'(current)'}
51                 }
52               }
53             else
54               li {
55                 a(href=page) {`${text}`}
56               }
57           }
58         }
59       }
60       else
61         p {'No results'}
62     }
63   )
64 }