@@ -111,7 +111,7 @@ function makeTeaser(body, terms) {
111 var TERM_WEIGHT = 40;
111 var TERM_WEIGHT = 40;
112 var NORMAL_WORD_WEIGHT = 2;
112 var NORMAL_WORD_WEIGHT = 2;
113 var FIRST_WORD_WEIGHT = 8;
113 var FIRST_WORD_WEIGHT = 8;
114− var TEASER_MAX_WORDS = 17;
114+ //var TEASER_MAX_WORDS = 17;
115 var TEASER_MAX_CHARS = 63;
115 var TEASER_MAX_CHARS = 63;
117 var stemmedTerms = terms.map(function (w) {
117 var stemmedTerms = terms.map(function (w) {
@@ -155,7 +155,8 @@ function makeTeaser(body, terms) {
156 var windowWeights = [];
156 var windowWeights = [];
157 var windowSize = 0;
157 var windowSize = 0;
159+ // loop over words (weighted) till max chars is reached adding a counter to windowSize every time a new word has passed
159 var sumChars = 0;
160 var sumChars = 0;
160 for (var i = 0; i < weighted.length; i++) {
161 for (var i = 0; i < weighted.length; i++) {
161 sumChars += weighted[i][0].length;
162 sumChars += weighted[i][0].length;
@@ -215,21 +216,26 @@ function makeTeaser(body, terms) {
215 return teaser.join("");
216 return teaser.join("");
218−/*function trimTeaser(teaser) {
219+function formatSearchResultTitle(path) {
219− var maxLength = 63; // maximum number of characters to extract
220+ var pathArray = path.split( 'docs/' );
220− var string = teaser;
221+ var slug = pathArray[1];
221− var trimmedString = teaser.substr(0, maxLength); //trim the string to the maximum length
222+ var slugArray = slug.split( '/' );
222− trimmedString = trimmedString.substr(0, Math.min(trimmedString.length, trimmedString.lastIndexOf(" "))) //re-trim if we are in the middle of a word
223+ var lastPartTitle = slugArray.splice(slugArray.length - 2, slugArray.length).join('');
223−}*/
224+ var firstPartTitle = slugArray.join(' / ');
226+ console.log(lastPartTitle + " lastPartTitle");
228+ var fullTitle = firstPartTitle + ' / ' + '<span class="search-results__item__title__slug-end">' + lastPartTitle + '</span>';
229+ console.log(fullTitle + " fullPartTitle");
225−function trimTeaserTitle() {
231+ return fullTitle;
229function formatSearchResultItem(item, terms) {
234function formatSearchResultItem(item, terms) {
230 var li = document.createElement("li");
235 var li = document.createElement("li");
236+ var teaserTitle = formatSearchResultTitle(item.ref);
231 li.classList.add("search-results__item");
237 li.classList.add("search-results__item");
232− li.innerHTML = `<a href="${item.ref}">${item.ref}</a>`;
238+ li.innerHTML = `<a class="search-results__item__title" href="${item.ref}">${teaserTitle}</a>`;
233 li.innerHTML += `<div class="search-results__teaser">${makeTeaser(item.doc.body, terms)}</div>`;
239 li.innerHTML += `<div class="search-results__teaser">${makeTeaser(item.doc.body, terms)}</div>`;
234 return li;
240 return li;
@@ -261,6 +267,7 @@ function initSearch() {
263 searchResults.style.display = term === "" ? "none" : "block";
269 searchResults.style.display = term === "" ? "none" : "block";
270+ searchResults.style.overflowY = term === "" ? "hidden" : "scroll";
264 searchResultsItems.innerHTML = "";
271 searchResultsItems.innerHTML = "";
265 if (term === "") {
272 if (term === "") {