Skip to content

Commit 5ca41f8

Browse files
committed
Vue.js application for guide search
1 parent 7b28235 commit 5ca41f8

15 files changed

+515
-315
lines changed

Diff for: _config.yml

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ url: "https://quarkus.io" # the base hostname & protocol for your site, e.g. htt
2222
twitter_username: quarkusio
2323
github_username: quarkusio
2424
github_fork_url: "https://github.com/quarkusio/quarkus"
25+
search:
26+
url: "TODO"
27+
timeout: 300
2528

2629
# Build settings
2730
error_mode: strict

Diff for: _config_dev.yml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Configuration for development
2+
# We don't want to use the production instance for development,
3+
# and there's
4+
5+
search:
6+
url: "http://localhost:8080/"
7+
timeout: 1000

Diff for: _includes/index-docs.html

+139-113
Original file line numberDiff line numberDiff line change
@@ -4,128 +4,154 @@
44
{% assign categories = index.quarkus.categories %}
55
{% assign by_type = index.quarkus | map: "types" | first %}
66

7-
8-
<section class="full-width-version-bg flexfilterbar">
9-
<div class="flexcontainer">
10-
<div class="flexlabel">
11-
<label>By Version</label>
12-
</div>
13-
<div class="pulldown version">
14-
<select id="guidesindex-version-dropdown">
15-
{% for version in site.data.versions.documentation %}
16-
<option value="{{ version }}" {% if docversion == version %}selected{% endif %}>{% if version == 'latest' %}{{ site.data.versions.quarkus.version | replace_regex: "\.[0-9+]\.Final", "" }} - {% endif %}{{ version | capitalize }}{% if version == 'main' %} - SNAPSHOT{% endif %}</option>
17-
{% endfor %}
18-
</select>
19-
</div>
20-
<div class="flexlabel">
21-
<label>By Category</label>
22-
</div>
23-
<div class="pulldown category">
24-
<select id="guidesindex-category-dropdown">
25-
<option value="">All categories</option>
26-
{% for item in categories %}
27-
<option value="{{ item.cat-id }}">{{ item.category }}</option>
28-
{% endfor %}
29-
</select>
30-
</div>
31-
<div class="search">
32-
<input type="text" id="search-text" placeholder="Filter by keyword" />
7+
<div id="guides-app"
8+
data-url="{{ site.search.url }}"
9+
data-timeout="{{ site.search.timeout }}"
10+
data-quarkus-version="{{ docversion }}">
11+
<section class="full-width-version-bg flexfilterbar">
12+
<div class="flexcontainer">
13+
<div class="flexlabel">
14+
<label>By Version</label>
15+
</div>
16+
<div class="pulldown version">
17+
<select id="guidesindex-version-dropdown">
18+
{% for version in site.data.versions.documentation %}
19+
<option value="{{ version }}" {% if docversion == version %}selected{% endif %}>{% if version == 'latest' %}{{ site.data.versions.quarkus.version | replace_regex: "\.[0-9+]\.Final", "" }} - {% endif %}{{ version | capitalize }}{% if version == 'main' %} - SNAPSHOT{% endif %}</option>
20+
{% endfor %}
21+
</select>
22+
</div>
23+
<div class="flexlabel">
24+
<label>By Category</label>
25+
</div>
26+
<div class="pulldown category">
27+
<select v-model="category">
28+
<option value="">All categories</option>
29+
{% for item in categories %}
30+
<option value="{{ item.cat-id }}">{{ item.category }}</option>
31+
{% endfor %}
32+
</select>
33+
</div>
34+
<div class="search">
35+
<input v-model="debouncingSearchInputText" type="text" placeholder="Filter by keyword" />
36+
</div>
3337
</div>
34-
</div>
35-
</section>
36-
38+
</section>
3739

38-
39-
<div>
40-
<h1 class="title">{{ page.title }}</h1>
41-
</div>
42-
<div class="grid-wrapper guides" id="docs">
43-
{% include index-docs-merge.html type="tutorial" %}
44-
{% if values %}
45-
<div class="grid__item width-12-12 docslist">
46-
<div class="doclist-header">
47-
<h3 id="tutorial">Tutorials</h3>
48-
<p>Short and focused exercises to get you going quickly.</p>
49-
</div>
50-
<div class="grid-wrapper">
51-
{% for guide in values %}
52-
{% include index-doc-item.html class="tutorialbkg" docversion=docversion
53-
title=guide.title url=guide.url summary=guide.summary
54-
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
55-
{% endfor %}
56-
</div>
40+
<div>
41+
<h1 class="title">{{ page.title }}</h1>
5742
</div>
58-
{% endif %}
59-
{% include index-docs-merge.html type="howto" %}
60-
{% if values %}
61-
<div class="grid__item width-12-12 docslist">
62-
<div class="doclist-header">
63-
<h3 id="guide">How-to Guides</h3>
64-
<p>Step-by-step guides to covering key tasks, real world operations and common problems.</p>
65-
</div>
66-
<div class="grid-wrapper">
67-
{% for guide in values %}
68-
{% include index-doc-item.html class="guidebkg" docversion=docversion
69-
title=guide.title url=guide.url summary=guide.summary
70-
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
71-
{% endfor %}
43+
<div v-if="hasInput" class="grid-wrapper guides results vuejs"
44+
:class="{ empty: !loading && !hasHits, 'vuejs-enabled': true, loading: loading }">
45+
<div class="grid__item width-12-12 docslist">
46+
<Transition name="fade-in">
47+
<div v-if="!loading && !hasHits" class="empty-placeholder">
48+
Sorry, no guides matched your search. Please try again.
49+
</div>
50+
</Transition>
51+
<div class="grid-wrapper">
52+
<div v-for="card in cardHits"
53+
v-html="card.innerHTML"
54+
class="grid__item docs-card"
55+
:class="Array.from(card.classList)">
56+
</div>
57+
<Transition name="fade-in">
58+
<div v-if="loading" class="loading-placeholder">
59+
Loading...
60+
</div>
61+
</Transition>
62+
</div>
7263
</div>
7364
</div>
74-
{% endif %}
75-
{% include index-docs-merge.html type="concepts" %}
76-
{% if values %}
77-
<div class="grid__item width-12-12 docslist">
78-
<div class="doclist-header">
79-
<h3 id="concept">Concepts</h3>
80-
<p>Explanations of some of the larger concepts and technologies involved with Quarkus.</p>
81-
</div>
82-
<div class="grid-wrapper">
83-
{% for guide in values %}
84-
{% include index-doc-item.html class="conceptbkg" docversion=docversion
85-
title=guide.title url=guide.url summary=guide.summary
86-
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
87-
{% endfor %}
65+
<!-- Static content displayed when there is no input in the search form or Javascript is disabled,
66+
but also used as a source of data for cards displayed by the vue.js app. -->
67+
<div v-else class="grid-wrapper guides" id="all-docs">
68+
{% include index-docs-merge.html type="tutorial" %}
69+
{% if values %}
70+
<div class="grid__item width-12-12 docslist">
71+
<div class="doclist-header">
72+
<h3 id="tutorial">Tutorials</h3>
73+
<p>Short and focused exercises to get you going quickly.</p>
74+
</div>
75+
<div class="grid-wrapper">
76+
{% for guide in values %}
77+
{% include index-doc-item.html class="tutorialbkg" docversion=docversion
78+
title=guide.title url=guide.url summary=guide.summary
79+
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
80+
{% endfor %}
81+
</div>
8882
</div>
89-
</div>
90-
{% endif %}
91-
{% include index-docs-merge.html type="reference" %}
92-
{% if values %}
93-
<div class="grid__item width-12-12 docslist">
94-
<div class="doclist-header">
95-
<h3 id="reference">References</h3>
96-
<p>Technical Resource that covers tools, components, and commands. The encyclopedia for Quarkus.</p>
83+
{% endif %}
84+
{% include index-docs-merge.html type="howto" %}
85+
{% if values %}
86+
<div class="grid__item width-12-12 docslist">
87+
<div class="doclist-header">
88+
<h3 id="guide">How-to Guides</h3>
89+
<p>Step-by-step guides to covering key tasks, real world operations and common problems.</p>
90+
</div>
91+
<div class="grid-wrapper">
92+
{% for guide in values %}
93+
{% include index-doc-item.html class="guidebkg" docversion=docversion
94+
title=guide.title url=guide.url summary=guide.summary
95+
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
96+
{% endfor %}
97+
</div>
9798
</div>
98-
<div class="grid-wrapper">
99-
<div class="grid__item docs-card pdfbkg">
100-
<h4><a href="https://lordofthejars.github.io/quarkus-cheat-sheet/" target="_blank">Quarkus Cheat Sheet</a></h4>
101-
<div class="description">Download full cheatsheet as PDF. <a href="https://developers.redhat.com/search?t=quarkus&f=type%7Echeatsheet" target="_blank">
102-
Get more cheatsheets on the Red Hat Developers website. <i class="fas fa-external-link-alt"></i></a></div>
103-
<div class="keywords"></div>
104-
<div class="categories"></div>
105-
</div>
106-
{% for guide in values %}
107-
{% include index-doc-item.html class="referencebkg" docversion=docversion
108-
title=guide.title url=guide.url summary=guide.summary
109-
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
110-
{% endfor %}
99+
{% endif %}
100+
{% include index-docs-merge.html type="concepts" %}
101+
{% if values %}
102+
<div class="grid__item width-12-12 docslist">
103+
<div class="doclist-header">
104+
<h3 id="concept">Concepts</h3>
105+
<p>Explanations of some of the larger concepts and technologies involved with Quarkus.</p>
106+
</div>
107+
<div class="grid-wrapper">
108+
{% for guide in values %}
109+
{% include index-doc-item.html class="conceptbkg" docversion=docversion
110+
title=guide.title url=guide.url summary=guide.summary
111+
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
112+
{% endfor %}
113+
</div>
111114
</div>
112-
</div>
113-
{% endif %}
114-
{% include index-docs-merge.html type="guide" %}
115-
{% if values %}
116-
<div class="grid__item width-12-12 docslist">
117-
<div class="doclist-header">
118-
<h3 id="reference">General Guides</h3>
119-
<p>Other Quarkus Guides</p>
115+
{% endif %}
116+
{% include index-docs-merge.html type="reference" %}
117+
{% if values %}
118+
<div class="grid__item width-12-12 docslist">
119+
<div class="doclist-header">
120+
<h3 id="reference">References</h3>
121+
<p>Technical Resource that covers tools, components, and commands. The encyclopedia for Quarkus.</p>
122+
</div>
123+
<div class="grid-wrapper">
124+
<div class="grid__item docs-card pdfbkg">
125+
<h4><a href="https://lordofthejars.github.io/quarkus-cheat-sheet/" target="_blank">Quarkus Cheat Sheet</a></h4>
126+
<div class="description">Download full cheatsheet as PDF. <a href="https://developers.redhat.com/search?t=quarkus&f=type%7Echeatsheet" target="_blank">
127+
Get more cheatsheets on the Red Hat Developers website. <i class="fas fa-external-link-alt"></i></a></div>
128+
<div class="keywords"></div>
129+
<div class="categories"></div>
130+
</div>
131+
{% for guide in values %}
132+
{% include index-doc-item.html class="referencebkg" docversion=docversion
133+
title=guide.title url=guide.url summary=guide.summary
134+
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
135+
{% endfor %}
136+
</div>
120137
</div>
121-
<div class="grid-wrapper">
122-
{% for guide in values %}
123-
{% include index-doc-item.html class="referencebkg" docversion=docversion
124-
title=guide.title url=guide.url summary=guide.summary
125-
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
126-
{% endfor %}
138+
{% endif %}
139+
{% include index-docs-merge.html type="guide" %}
140+
{% if values %}
141+
<div class="grid__item width-12-12 docslist">
142+
<div class="doclist-header">
143+
<h3>General Guides</h3>
144+
<p>Other Quarkus Guides</p>
145+
</div>
146+
<div class="grid-wrapper">
147+
{% for guide in values %}
148+
{% include index-doc-item.html class="referencebkg" docversion=docversion
149+
title=guide.title url=guide.url summary=guide.summary
150+
keywords=guide.keywords categories=guide.categories origin=guide.origin %}
151+
{% endfor %}
152+
</div>
127153
</div>
154+
{% endif %}
128155
</div>
129-
{% endif %}
130-
<div class="grid__item width-12-12 empty-list">Sorry, no guides matched your search. Please try again.</div>
131156
</div>
157+
<script src="/assets/javascript/guides-app.js" type="module"></script>

0 commit comments

Comments
 (0)