mirror of https://github.com/onweru/compose.git

weru
12.14.2020 b4bc8de7b1507acc3d0c825cf70dc84d7717b9ba
update
2 files modified
56 ■■■■■ changed files
assets/js/functions.js 6 ●●●●● patch | view | raw | blame | history
assets/js/search.js 50 ●●●● patch | view | raw | blame | history
assets/js/functions.js
@@ -108,14 +108,16 @@
}
function wrapText(text, context, wrapper = 'div') {
  let c = context.innerHTML;
  let c = context.textContent;
  let index = c.indexOf(text);
  console.log(context);
  // h1, h2, h3, h4, h5, h6, p, code, a,
  if (index >= 0) {
    let stop = index + text.length;
    let s = c.substring(index,stop);
    let before = c.substring(0,index);
    let after = c.substring(stop);
    c = `${before}<${wrapper}>${s}</${wrapper}>${after}`;
    context.innerHTML = c;
    context.textContent = c;
  }
}
assets/js/search.js
@@ -11,17 +11,18 @@
const searchKeys = ['title', 'link', 'body', 'id'];
const searchOptions = {
  ignoreLocation: true,
  findAllMatches: true,
  includeScore: true,
  keys: searchKeys,
  threshold: 0.1
};
const index = new Fuse(idx, searchOptions);
function searchResults(results=[], order =[],query="") {
function searchResults(results=[], query="") {
  let resultsFragment = new DocumentFragment();
  let showResults = elem('.search_results');
  emptyEl(showResults);
  let index = 0
  if(results.length) {
    let resultsTitle = createEl('h3');
    resultsTitle.className = 'search_title';
@@ -32,12 +33,11 @@
      item.href = `${result.link}?query=${query}`;
      item.className = 'search_result';
      item.textContent = result.title;
      item.style.order = order[index];
      item.style.order = result.score;
      resultsFragment.appendChild(item);
      index += 1
    });
  } else {
    showResults.innerHTML = "";
    showResults.innerHTML = (query.length >= 3) ? `<span class="search_result">No Results</span>` : "";
  }
  showResults.appendChild(resultsFragment);
}
@@ -50,38 +50,15 @@
      const searchTerm = this.value.trim().toLowerCase();
      if(searchTerm.length >= 3) {
        let rawResults = index.search(searchTerm);
        // console.log(rawResults);
        rawResults = rawResults.map(function(result){
          const matches = result.matches;
          const score = result.score;
          const resultItem = result.item;
          resultItem.matches = matches;
          resultItem.score = (parseFloat(score) * 50).toFixed(0);
          return resultItem;
        });
        console.log(JSON.stringify(rawResults));
        console.log(rawResults);
        if(rawResults.length) {
          let refs = rawResults.map(function(ref){
            // return id and score in a single string
            return `${ref.ref}:${ref.score}`;
          });
          let ids = refs.map(function(id){
            let positionOfSeparator = id.indexOf(":");
            id = id.substring(0,positionOfSeparator)
            return Number(id);
          });
          let scores = refs.map(function(score){
            let positionOfSeparator = score.indexOf(":");
            score = score.substring((positionOfSeparator + 1), (score.length - 1));
            return (parseFloat(score) * 50).toFixed(0);
          });
          searchResults(rawResults, scores,searchTerm);
        } else {
          searchResults();
        }
        // console.log(rawResults);
        searchResults(rawResults, searchTerm);
      } else {
        searchResults();
      }
@@ -96,7 +73,6 @@
    window.find(c);
    cc = `${c.charAt(0).toUpperCase()}${c.substring(1,c.length)}`;
    window.find(cc);
    console.log(c.length);
    return [c, cc];
  }
  return ["",""];
@@ -107,8 +83,8 @@
  main = elem('.main');
}
const searchQuery = findQuery();
console.log(searchQuery);
wrapText(searchQuery[0],main,'mark');
wrapText(searchQuery[1],main,'mark');
// console.log(searchQuery);
// wrapText(searchQuery[0],main,'mark');
// wrapText(searchQuery[1],main,'mark');
window.addEventListener('load', () => search());