b45e0f077069decad58c7e44cb83be9db7f9708d
1 /* eslint-disable no-undef, guard-for-in */
5 * A JavaScript file for flexsearch.
8 import * as params
from '@params';
14 const index
= new FlexSearch
.Document({
17 index
: ['title','tags','content','date'],
18 store
: ['title','summary','date','permalink']
23 function showResults(items
) {
24 const template
= document
.querySelector('template').content
;
25 const fragment
= document
.createDocumentFragment();
27 const results
= document
.querySelector('.search-results');
28 results
.textContent
= '';
30 for (const id
in items
) {
31 const item
= items
[id
];
32 const result
= template
.cloneNode(true);
33 const a
= result
.querySelector('a');
34 // const time = result.querySelector('time');
35 // const content = result.querySelector('.content');
36 a
.innerHTML
= item
.title
;
37 a
.href
= item
.permalink
;
38 // time.innerText = item.date;
39 // content.innerHTML = item.summary;
40 fragment
.appendChild(result
);
42 results
.appendChild(fragment
);
46 const query
= document
.querySelector('.search-text').value
.trim();
47 const results
= index
.search({
50 limit
: params
.searchLimit
53 results
.forEach(function (result
) {
54 result
.result
.forEach(function (r
) {
62 const searchform
= document
.querySelector('.search-form');
63 searchform
.addEventListener('submit', function (e
) {
67 searchform
.addEventListener('input', function () {
70 document
.querySelector('.search-loading').classList
.add('hidden');
71 document
.querySelector('.search-input').classList
.remove('hidden');
72 document
.querySelector('.search-text').focus();
75 function buildIndex() {
76 document
.querySelector('.search-loading').classList
.remove('hidden');
77 fetch('/searchindex.json')
78 .then(function (response
) {
79 return response
.json();
81 .then(function (data
) {
82 data
.forEach(function (item
) {