diff --git a/content/redirector.md b/content/redirector.md index a7cbcce896ff72471085322791e9ae28b4132d63..75fe28e69c42548791d62122e482bd8a8807a58c 100644 --- a/content/redirector.md +++ b/content/redirector.md @@ -2,75 +2,4 @@ title: "Redirector" --- -{{`<script> - -// Search for URL parameter 'q' and redirect to top match - -var lunrIndex; - -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')); - } - } -} - -// Initialize lunrjs using our generated index file -function initLunr() { - // First retrieve the index file - return $.getJSON(baseurl + "/index.json") - .done(function(index) { - pagesIndex = index; - // Set up lunrjs by declaring the fields we use - // Also provide their boost level for the ranking - lunrIndex = new lunr.Index - lunrIndex.ref("uri"); - lunrIndex.field('title', { - boost: 15 - }); - lunrIndex.field('tags', { - boost: 10 - }); - lunrIndex.field("content", { - boost: 5 - }); - - // Feed lunr with each file and let lunr actually index them - pagesIndex.forEach(function(page) { - lunrIndex.add(page); - }); - lunrIndex.pipeline.remove(lunrIndex.stemmer) - }) - .fail(function(jqxhr, textStatus, error) { - var err = textStatus + ", " + error; - console.error("Error getting Hugo index file:", err); - }); -} - -function search(query) { - // Find the item in our index corresponding to the lunr one to have more info - return lunrIndex.search(query).map(function(result) { - return pagesIndex.filter(function(page) { - return page.uri === result.ref; - })[0]; - }); -} - -initLunr().then(function() { - var searchTerm = getQueryVariable('q'); - var results = search(searchTerm); - - if (!results.length) { - window.location = baseurl; - } else { - window.location = results[0].uri; - } -}); - -</script>` | safeJS }} +<script>{{- readFile "static/js/docs-redirector.js" | safeJS -}}</script> diff --git a/static/js/docs-redirector.js b/static/js/docs-redirector.js new file mode 100644 index 0000000000000000000000000000000000000000..27d0da9bbd5ac28e8d49a545582ab491c2dde75f --- /dev/null +++ b/static/js/docs-redirector.js @@ -0,0 +1,69 @@ +// Redirector for hcc-docs links +// Search for URL parameter 'q' and redirect to top match + +var lunrIndex; + +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')); + } + } +} + +// Initialize lunrjs using our generated index file +function initLunr() { + // First retrieve the index file + return $.getJSON(baseurl + "/index.json") + .done(function(index) { + pagesIndex = index; + // Set up lunrjs by declaring the fields we use + // Also provide their boost level for the ranking + lunrIndex = new lunr.Index + lunrIndex.ref("uri"); + lunrIndex.field('title', { + boost: 15 + }); + lunrIndex.field('tags', { + boost: 10 + }); + lunrIndex.field("content", { + boost: 5 + }); + + // Feed lunr with each file and let lunr actually index them + pagesIndex.forEach(function(page) { + lunrIndex.add(page); + }); + lunrIndex.pipeline.remove(lunrIndex.stemmer) + }) + .fail(function(jqxhr, textStatus, error) { + var err = textStatus + ", " + error; + console.error("Error getting Hugo index file:", err); + }); +} + +function search(query) { + // Find the item in our index corresponding to the lunr one to have more info + return lunrIndex.search(query).map(function(result) { + return pagesIndex.filter(function(page) { + return page.uri === result.ref; + })[0]; + }); +} + +initLunr().then(function() { + var searchTerm = getQueryVariable('q'); + var results = search(searchTerm); + + if (!results.length) { + window.location = baseurl; + } else { + window.location = results[0].uri; + } +});