-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsearch-specs.js
More file actions
168 lines (150 loc) · 8.01 KB
/
search-specs.js
File metadata and controls
168 lines (150 loc) · 8.01 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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
// Configure the search widget
let searchWidget = createSearch(
"zqt_8wQ3QoFUYf53ymz-8ceKXsxAnFNwEJsobnvK6A", // api key
4077139778, // customer id
['Qumulo_Documentation_Portal_2', 'Qumulo_Care_4'], // array of corpus keys
successFn, // success function
errorFn, // error function
"/images/magnifying-glass.png", // custom icon for the search box
25, // number of results to return
5, // max number of results to summarize
2, // number of sentences to show before each matching snippet
2, // number of sentences to show after each matching snippet
"What would you like to know?", // search placeholder
false // default focus
//0 // offset for paging
);
document.getElementById("search-widget").appendChild(searchWidget);
function addResultPrefixes() {
const qqCLIlinks = document.querySelectorAll(".vuiSearchResult a");
qqCLIlinks.forEach(function(link) {
if (link.href.includes("/aws-administrator-guide/")) { // Legacy link
link.innerHTML = `CNQ on AWS: ${link.textContent}`;
} else if (link.href.includes("/cloud-native-aws-administrator-guide/")) {
link.innerHTML = `CNQ on AWS: ${link.textContent}`;
} else if (link.href.includes("/cloud-native-azure-administrator-guide/")) {
link.innerHTML = `CNQ on Azure: ${link.textContent}`;
} else if (link.href.includes("/cloud-native-gcp-administrator-guide/")) {
link.innerHTML = `CNQ on GCP: ${link.textContent}`;
} else if (link.href.includes("/azure-administrator-guide/")) { // Legacy link
link.innerHTML = `Azure Native: ${link.textContent}`;
} else if (link.href.includes("/azure-native-administrator-guide/")) {
link.innerHTML = `Azure Native: ${link.textContent}`;
} else if (link.href.includes("/administrator-guide/")) {
link.innerHTML = `On-Prem: ${link.textContent}`;
} else if (link.href.includes("/hardware-guide/")) {
link.innerHTML = `Platinum-Tier HW: ${link.textContent}`;
} else if (link.href.includes("/gold-tier-hardware-servicing-guide/")) {
link.innerHTML = `Gold-Tier HW: ${link.textContent}`;
} else if (link.href.includes("/qq-cli-command-guide/")) {
link.innerHTML = `qq CLI: ${link.textContent}`;
} else if (link.href.includes("/rest-api-guide/")) {
link.innerHTML = `REST API: ${link.textContent}`;
} else if (link.href.includes("/qumulo-nexus-configuration-guide/")) {
link.innerHTML = `Nexus Config: ${link.textContent}`;
} else if (link.href.includes("/qumulo-alerts-guide/")) {
link.innerHTML = `Qumulo Alerts: ${link.textContent}`;
} else if (link.href.includes("/integration-guide/")) {
link.innerHTML = `Qumulo Integration: ${link.textContent}`;
} else if (link.href.includes("qumulo.com/blog/")) {
link.innerHTML = `Qumulo Blog: ${link.textContent}`;
} else if (link.href.includes("care.qumulo.com/s/")) {
link.innerHTML = `Qumulo Care: ${link.textContent}`;
}
});
}
function successFn(results, query) {
hideOverlay();
// Check if results are valid or not empty
if (!results || results.length === 0) {
console.log("No results to show.");
return;
}
query = query || document.querySelector('#search-input').value.trim();
// Process the results and display them on the page.
console.log(results);
renderResults(results, "search-widget-results");
// Remove suffixes from all elements within .vuiSearchResult
const suffixToRemove = " | Qumulo Documentation Portal";
const searchResultElements = document.querySelectorAll(".vuiSearchResult a, .vuiSearchResult strong");
searchResultElements.forEach(function(element) {
if (element.textContent.includes(suffixToRemove)) {
element.textContent = element.textContent.replace(suffixToRemove, "");
}
});
// Remove not-useful qq CLI boilerplate
document.querySelectorAll('.vuiSearchResult a[href*="qq-cli-command-guide"]').forEach((link) => {
// For each of these links, find any parent 'vuiSearchResult' divs
const parentDiv = link.closest(".vuiSearchResult");
if (parentDiv) {
// Within these divs, find any 'vuiText--s' divs and replace their content with <br>
parentDiv.querySelectorAll(".vuiText--s").forEach(innerDiv => {
innerDiv.innerHTML = "<br>";
});
}
});
// Remove cookie banner boilerplate from search results
const cookieText = "We use cookies to improve your user experience and remember your preferences on this website. If you continue to use this website, we will assume that you accept and understand our Privacy Policy, Cookie Policy, and Terms Hub.";
const cookieElements = document.querySelectorAll(".vuiText");
cookieElements.forEach(function(element) {
if (element.textContent.includes(cookieText)) {
element.textContent = element.textContent.replace(cookieText, "");
}
});
const shortCookieText = "We use cookies to improve your user experience and remember your preferences on this website.";
const shortCookieElements = document.querySelectorAll(".vuiText");
shortCookieElements.forEach(function(element) {
if (element.textContent.includes(shortCookieText)) {
element.textContent = element.textContent.replace(shortCookieText, "");
}
});
// Encourage users to enter more search terms.
const apologyText = /The returned (search )?results did not contain sufficient information to be summarized into a useful answer for your query. Please try a different search or restate your query differently./;
const apologyTextElements = document.querySelectorAll(".vuiText--m");
apologyTextElements.forEach(function(element) {
if (apologyText.exec(element.textContent)) {
element.textContent = `Here are some search results about ${query}. To help me write a better summary, enter more search terms or ask me a question!`;
}
});
// Encourage users to enter more complex queries.
const insufficientInfo = /I do not have enough information to answer this question./;
const insufficientInfoElements = document.querySelectorAll(".vuiText--m");
insufficientInfoElements.forEach(function(element) {
if (insufficientInfo.exec(element.textContent)) {
element.textContent = `Here are some search results about ${query}. To help me write a better summary, enter more search terms or ask me a question!`;
}
});
// Update history state
const state = {
results: results,
query: query
};
if (history.state) {
history.pushState(state, "", "?query=" + encodeURIComponent(state.query));
} else {
history.replaceState(state, "", "?query=" + encodeURIComponent(state.query));
}
}
function errorFn(err) {
hideOverlay();
console.log(err);
renderError(err, "search-widget-results");
}
window.addEventListener("popstate", function(event) {
if (event.state && event.state.results) {
// Directly render the cached results for query pages
renderResults(event.state.results, "search-widget-results");
}
});
window.addEventListener("load", function(e) {
// Display the default search prompt
const searchResultsContainer = document.getElementById("search-widget-results");
if (searchResultsContainer) {
searchResultsContainer.innerHTML = `<div class="search-grumpquat"><p><strong>What would you like to know?</strong></p><p><span class="emoji">🔍</span> You can search for a word, a phrase, or even a question.</p><p><img src="/images/404-grumpquat.png" style="width:200px;height:232px;" alt="404 Grumpquat"></p></div>`;
}
// Handle the case where the page is loaded with search results in the history state
if (history.state && history.state.results) {
// If there are results in the history state, render them
successFn(history.state.results, history.state.query);
}
});