-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathsearch.html
More file actions
112 lines (94 loc) · 3.67 KB
/
search.html
File metadata and controls
112 lines (94 loc) · 3.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
---
layout: article
title: Search
permalink: /search/
description: "Stellantis developer portal Search page."
section: other
---
<style>
.unboxed-page-header{
display: none;
}
.navbar-end {
visibility: hidden
}
</style>
<div class="search-page">
<form onSubmit="return lunr_search(document.getElementById('lunrsearch').value);">
<div class="field" id="search-input">
<p class="control has-icons-left">
<input class="input" id="lunrsearch" maxlength="255" name="q" placeholder="Search" type="text" value="" />
<span class="icon is-small is-left">
<i class="fas fa-search"></i>
</span>
</p>
</div>
</form>
<ul id="lunrsearchresults"></ul>
</div>
<script src="{{ '/assets/js/lunr.js' | prepend: site.baseurl }}"></script>
<script>
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (pair[0] === variable) {
return decodeURIComponent(pair[1].replace(/\+/g, '%20'));
}
}
}
var searchTerm = getQueryVariable('q');
const searchField = document.getElementById("lunrsearch");
window.addEventListener('DOMContentLoaded', (event) => {
if (searchTerm) {
searchField.value = searchTerm;
lunr_search(searchTerm);
}
});
{% assign counter = 0 %}
var searchIndex = [
{% for p in site.pages %}{% if p.url contains '.xml' or p.url contains 'assets' or p.url contains 'json' %} {% else %} {
"id": {{ counter }},
"url": "{{ site.url }}{{site.baseurl}}{{ p.url }}#article",
"title": "{% if p.layout == "api-reference" %}{{ p.name | xml_escape }}{% else %}{{ p.title | xml_escape }}{% endif %}",
"body": "{{ p.content | markdownify | replace: '.', '. ' | replace: '</h2>', ': ' | replace: '</h3>', ': ' | replace: '</h4>', ': ' | replace: '</p>', ' ' | strip_html | strip_newlines | replace: ' ', ' ' | replace: '"', ' ' }}"{% assign counter = counter | plus: 1 %}
}, {% endif %} {% endfor %}
];
var idx = lunr(function () {
this.ref('id')
this.field('title')
this.field('body')
searchIndex.forEach(function (doc) {
this.add(doc)
}, this)
});
function lunr_search(term) {
document.getElementById('lunrsearchresults').innerHTML = '<ul></ul>';
document.location.href = "#lunr";
if (term) {
document.getElementById('lunrsearchresults').innerHTML = "<p id='txtsearchresult'>Search results for '" + term + "'</p>" + document.getElementById('lunrsearchresults').innerHTML;
//put results on the screen.
var results = idx.search(term);
if (results.length > 0) {
//console.log(idx.search(term));
//if results
for (var i = 0; i < results.length; i++) {
// more statements
var ref = results[i]['ref'];
var url = searchIndex[ref]['url'];
var title = searchIndex[ref]['title'];
var body = searchIndex[ref]['body'].substring(0, 160) + '...';
if (document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML.indexOf(url) !== -1) {
} else {
document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML = document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML + "<li class='lunrsearchresult'><a href='" + url + "'><span class='title'>" + title + "</span><br /><span class='body'>" + body + "</span><br /><span class='url'>" + url + "</span></a></li><br />";
}
}
document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML = document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML;
} else {
document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML = "<li class='lunrsearchresult'>No results found...</li>";
}
}
return false;
}
</script>