Переглянути джерело

Site updated: 2020-03-03 20:27:38

schtonn 5 роки тому
батько
коміт
d2efc6f7f5

+ 12 - 1
2020/03/01/min-span-tree/index.html

@@ -376,6 +376,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -401,7 +412,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
2020/03/01/plan/index.html

@@ -422,6 +422,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -447,7 +458,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
2020/03/01/test/index.html

@@ -330,6 +330,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -355,7 +366,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
2020/03/01/tree-link/index.html

@@ -358,6 +358,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -383,7 +394,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
2020/03/01/union-find/index.html

@@ -358,6 +358,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -383,7 +394,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
2020/03/02/dinic/index.html

@@ -361,6 +361,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -386,7 +397,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
2020/03/02/ferbonacci/index.html

@@ -351,6 +351,17 @@ s-65,47,-65,47z M834 80H400000v40H845z"/></svg></span></span></span><span class=
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -376,7 +387,7 @@ s-65,47,-65,47z M834 80H400000v40H845z"/></svg></span></span></span><span class=
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
2020/03/02/segment-tree/index.html

@@ -337,6 +337,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -362,7 +373,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
404.html

@@ -264,6 +264,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -289,7 +300,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
archives/2020/03/index.html

@@ -408,6 +408,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -433,7 +444,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
archives/2020/index.html

@@ -408,6 +408,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -433,7 +444,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
archives/index.html

@@ -408,6 +408,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -433,7 +444,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
index.html

@@ -862,6 +862,17 @@ s-65,47,-65,47z M834 80H400000v40H845z"/></svg></span></span></span><span class=
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -887,7 +898,7 @@ s-65,47,-65,47z M834 80H400000v40H845z"/></svg></span></span></span><span class=
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 0 - 122
js/algolia-search.js

@@ -1,122 +0,0 @@
-/* global instantsearch, algoliasearch, CONFIG */
-
-window.addEventListener('DOMContentLoaded', () => {
-  const algoliaSettings = CONFIG.algolia;
-  const { indexName, appID, apiKey } = algoliaSettings;
-
-  let search = instantsearch({
-    indexName,
-    searchClient  : algoliasearch(appID, apiKey),
-    searchFunction: helper => {
-      let searchInput = document.querySelector('.search-input');
-      if (searchInput.value) {
-        helper.search();
-      }
-    }
-  });
-
-  window.pjax && search.on('render', () => {
-    window.pjax.refresh(document.getElementById('algolia-hits'));
-  });
-
-  // Registering Widgets
-  search.addWidgets([
-    instantsearch.widgets.configure({
-      hitsPerPage: algoliaSettings.hits.per_page || 10
-    }),
-
-    instantsearch.widgets.searchBox({
-      container           : '.search-input-container',
-      placeholder         : algoliaSettings.labels.input_placeholder,
-      // Hide default icons of algolia search
-      showReset           : false,
-      showSubmit          : false,
-      showLoadingIndicator: false,
-      cssClasses          : {
-        input: 'search-input'
-      }
-    }),
-
-    instantsearch.widgets.stats({
-      container: '#algolia-stats',
-      templates: {
-        text: data => {
-          let stats = algoliaSettings.labels.hits_stats
-            .replace(/\$\{hits}/, data.nbHits)
-            .replace(/\$\{time}/, data.processingTimeMS);
-          return `${stats}
-            <span class="algolia-powered">
-              <img src="${CONFIG.root}images/algolia_logo.svg" alt="Algolia">
-            </span>
-            <hr>`;
-        }
-      }
-    }),
-
-    instantsearch.widgets.hits({
-      container: '#algolia-hits',
-      templates: {
-        item: data => {
-          let link = data.permalink ? data.permalink : CONFIG.root + data.path;
-          return `<a href="${link}" class="algolia-hit-item-link">${data._highlightResult.title.value}</a>`;
-        },
-        empty: data => {
-          return `<div id="algolia-hits-empty">
-              ${algoliaSettings.labels.hits_empty.replace(/\$\{query}/, data.query)}
-            </div>`;
-        }
-      },
-      cssClasses: {
-        item: 'algolia-hit-item'
-      }
-    }),
-
-    instantsearch.widgets.pagination({
-      container: '#algolia-pagination',
-      scrollTo : false,
-      showFirst: false,
-      showLast : false,
-      templates: {
-        first   : '<i class="fa fa-angle-double-left"></i>',
-        last    : '<i class="fa fa-angle-double-right"></i>',
-        previous: '<i class="fa fa-angle-left"></i>',
-        next    : '<i class="fa fa-angle-right"></i>'
-      },
-      cssClasses: {
-        root        : 'pagination',
-        item        : 'pagination-item',
-        link        : 'page-number',
-        selectedItem: 'current',
-        disabledItem: 'disabled-item'
-      }
-    })
-  ]);
-
-  search.start();
-
-  // Handle and trigger popup window
-  document.querySelectorAll('.popup-trigger').forEach(element => {
-    element.addEventListener('click', () => {
-      document.body.style.overflow = 'hidden';
-      document.querySelector('.search-pop-overlay').style.display = 'block';
-      document.querySelector('.popup').style.display = 'block';
-      document.querySelector('.search-input').focus();
-    });
-  });
-
-  // Monitor main search box
-  const onPopupClose = () => {
-    document.body.style.overflow = '';
-    document.querySelector('.search-pop-overlay').style.display = 'none';
-    document.querySelector('.popup').style.display = 'none';
-  };
-
-  document.querySelector('.search-pop-overlay').addEventListener('click', onPopupClose);
-  document.querySelector('.popup-btn-close').addEventListener('click', onPopupClose);
-  window.addEventListener('pjax:success', onPopupClose);
-  window.addEventListener('keyup', event => {
-    if (event.key === 'Escape') {
-      onPopupClose();
-    }
-  });
-});

+ 0 - 56
js/bookmark.js

@@ -1,56 +0,0 @@
-/* global CONFIG */
-
-window.addEventListener('DOMContentLoaded', () => {
-  'use strict';
-
-  var doSaveScroll = () => {
-    localStorage.setItem('bookmark' + location.pathname, window.scrollY);
-  };
-
-  var scrollToMark = () => {
-    var top = localStorage.getItem('bookmark' + location.pathname);
-    top = parseInt(top, 10);
-    // If the page opens with a specific hash, just jump out
-    if (!isNaN(top) && location.hash === '') {
-      // Auto scroll to the position
-      window.anime({
-        targets  : document.scrollingElement,
-        duration : 200,
-        easing   : 'linear',
-        scrollTop: top
-      });
-    }
-  };
-  // Register everything
-  var init = function(trigger) {
-    // Create a link element
-    var link = document.querySelector('.book-mark-link');
-    // Scroll event
-    window.addEventListener('scroll', () => link.classList.toggle('book-mark-link-fixed', window.scrollY === 0));
-    // Register beforeunload event when the trigger is auto
-    if (trigger === 'auto') {
-      // Register beforeunload event
-      window.addEventListener('beforeunload', doSaveScroll);
-      window.addEventListener('pjax:send', doSaveScroll);
-    }
-    // Save the position by clicking the icon
-    link.addEventListener('click', () => {
-      doSaveScroll();
-      window.anime({
-        targets : link,
-        duration: 200,
-        easing  : 'linear',
-        top     : -30,
-        complete: () => {
-          setTimeout(() => {
-            link.style.top = '';
-          }, 400);
-        }
-      });
-    });
-    scrollToMark();
-    window.addEventListener('pjax:success', scrollToMark);
-  };
-
-  init(CONFIG.bookmark.save);
-});

+ 0 - 307
js/local-search.js

@@ -1,307 +0,0 @@
-/* global CONFIG */
-
-window.addEventListener('DOMContentLoaded', () => {
-  // Popup Window
-  let isfetched = false;
-  let datas;
-  let isXml = true;
-  // Search DB path
-  let searchPath = CONFIG.path;
-  if (searchPath.length === 0) {
-    searchPath = 'search.xml';
-  } else if (/json$/i.test(searchPath)) {
-    isXml = false;
-  }
-  const path = CONFIG.root + searchPath;
-  const input = document.querySelector('.search-input');
-  const resultContent = document.getElementById('search-result');
-
-  // Ref: https://github.com/ForbesLindesay/unescape-html
-  const unescapeHtml = html => {
-    return String(html)
-      .replace(/&quot;/g, '"')
-      .replace(/&#39;/g, '\'')
-      .replace(/&#x3A;/g, ':')
-      // Replace all the other &#x; chars
-      .replace(/&#(\d+);/g, (m, p) => {
-        return String.fromCharCode(p);
-      })
-      .replace(/&lt;/g, '<')
-      .replace(/&gt;/g, '>')
-      .replace(/&amp;/g, '&');
-  };
-
-  const getIndexByWord = (word, text, caseSensitive) => {
-    let wordLen = word.length;
-    if (wordLen === 0) return [];
-    let startPosition = 0;
-    let position = [];
-    let index = [];
-    if (!caseSensitive) {
-      text = text.toLowerCase();
-      word = word.toLowerCase();
-    }
-    while ((position = text.indexOf(word, startPosition)) > -1) {
-      index.push({ position, word });
-      startPosition = position + wordLen;
-    }
-    return index;
-  };
-
-  // Merge hits into slices
-  const mergeIntoSlice = (start, end, index, searchText) => {
-    let item = index[index.length - 1];
-    let { position, word } = item;
-    let hits = [];
-    let searchTextCountInSlice = 0;
-    while (position + word.length <= end && index.length !== 0) {
-      if (word === searchText) {
-        searchTextCountInSlice++;
-      }
-      hits.push({
-        position,
-        length: word.length
-      });
-      let wordEnd = position + word.length;
-
-      // Move to next position of hit
-      index.pop();
-      while (index.length !== 0) {
-        item = index[index.length - 1];
-        position = item.position;
-        word = item.word;
-        if (wordEnd > position) {
-          index.pop();
-        } else {
-          break;
-        }
-      }
-    }
-    return {
-      hits,
-      start,
-      end,
-      searchTextCount: searchTextCountInSlice
-    };
-  };
-
-  // Highlight title and content
-  const highlightKeyword = (text, slice) => {
-    let result = '';
-    let prevEnd = slice.start;
-    slice.hits.forEach(hit => {
-      result += text.substring(prevEnd, hit.position);
-      let end = hit.position + hit.length;
-      result += `<b class="search-keyword">${text.substring(hit.position, end)}</b>`;
-      prevEnd = end;
-    });
-    result += text.substring(prevEnd, slice.end);
-    return result;
-  };
-
-  const inputEventFunction = () => {
-    let searchText = input.value.trim().toLowerCase();
-    let keywords = searchText.split(/[-\s]+/);
-    if (keywords.length > 1) {
-      keywords.push(searchText);
-    }
-    let resultItems = [];
-    if (searchText.length > 0) {
-      // Perform local searching
-      datas.forEach(data => {
-        // Only match articles with not empty titles
-        if (!data.title) return;
-        let searchTextCount = 0;
-        let title = data.title.trim();
-        let titleInLowerCase = title.toLowerCase();
-        let content = data.content ? data.content.trim().replace(/<[^>]+>/g, '') : '';
-        if (CONFIG.localsearch.unescape) {
-          content = unescapeHtml(content);
-        }
-        let contentInLowerCase = content.toLowerCase();
-        let articleUrl = decodeURIComponent(data.url).replace(/\/{2,}/g, '/');
-        let indexOfTitle = [];
-        let indexOfContent = [];
-        keywords.forEach(keyword => {
-          indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));
-          indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false));
-        });
-
-        // Show search results
-        if (indexOfTitle.length > 0 || indexOfContent.length > 0) {
-          let hitCount = indexOfTitle.length + indexOfContent.length;
-          // Sort index by position of keyword
-          [indexOfTitle, indexOfContent].forEach(index => {
-            index.sort((itemLeft, itemRight) => {
-              if (itemRight.position !== itemLeft.position) {
-                return itemRight.position - itemLeft.position;
-              }
-              return itemLeft.word.length - itemRight.word.length;
-            });
-          });
-
-          let slicesOfTitle = [];
-          if (indexOfTitle.length !== 0) {
-            let tmp = mergeIntoSlice(0, title.length, indexOfTitle, searchText);
-            searchTextCount += tmp.searchTextCountInSlice;
-            slicesOfTitle.push(tmp);
-          }
-
-          let slicesOfContent = [];
-          while (indexOfContent.length !== 0) {
-            let item = indexOfContent[indexOfContent.length - 1];
-            let { position, word } = item;
-            // Cut out 100 characters
-            let start = position - 20;
-            let end = position + 80;
-            if (start < 0) {
-              start = 0;
-            }
-            if (end < position + word.length) {
-              end = position + word.length;
-            }
-            if (end > content.length) {
-              end = content.length;
-            }
-            let tmp = mergeIntoSlice(start, end, indexOfContent, searchText);
-            searchTextCount += tmp.searchTextCountInSlice;
-            slicesOfContent.push(tmp);
-          }
-
-          // Sort slices in content by search text's count and hits' count
-          slicesOfContent.sort((sliceLeft, sliceRight) => {
-            if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) {
-              return sliceRight.searchTextCount - sliceLeft.searchTextCount;
-            } else if (sliceLeft.hits.length !== sliceRight.hits.length) {
-              return sliceRight.hits.length - sliceLeft.hits.length;
-            }
-            return sliceLeft.start - sliceRight.start;
-          });
-
-          // Select top N slices in content
-          let upperBound = parseInt(CONFIG.localsearch.top_n_per_article, 10);
-          if (upperBound >= 0) {
-            slicesOfContent = slicesOfContent.slice(0, upperBound);
-          }
-
-          let resultItem = '';
-
-          if (slicesOfTitle.length !== 0) {
-            resultItem += `<li><a href="${articleUrl}" class="search-result-title">${highlightKeyword(title, slicesOfTitle[0])}</a>`;
-          } else {
-            resultItem += `<li><a href="${articleUrl}" class="search-result-title">${title}</a>`;
-          }
-
-          slicesOfContent.forEach(slice => {
-            resultItem += `<a href="${articleUrl}"><p class="search-result">${highlightKeyword(content, slice)}...</p></a>`;
-          });
-
-          resultItem += '</li>';
-          resultItems.push({
-            item: resultItem,
-            id  : resultItems.length,
-            hitCount,
-            searchTextCount
-          });
-        }
-      });
-    }
-    if (keywords.length === 1 && keywords[0] === '') {
-      resultContent.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x"></i></div>';
-    } else if (resultItems.length === 0) {
-      resultContent.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x"></i></div>';
-    } else {
-      resultItems.sort((resultLeft, resultRight) => {
-        if (resultLeft.searchTextCount !== resultRight.searchTextCount) {
-          return resultRight.searchTextCount - resultLeft.searchTextCount;
-        } else if (resultLeft.hitCount !== resultRight.hitCount) {
-          return resultRight.hitCount - resultLeft.hitCount;
-        }
-        return resultRight.id - resultLeft.id;
-      });
-      let searchResultList = '<ul class="search-result-list">';
-      resultItems.forEach(result => {
-        searchResultList += result.item;
-      });
-      searchResultList += '</ul>';
-      resultContent.innerHTML = searchResultList;
-      window.pjax && window.pjax.refresh(resultContent);
-    }
-  };
-
-  const fetchData = callback => {
-    fetch(path)
-      .then(response => response.text())
-      .then(res => {
-        // Get the contents from search data
-        isfetched = true;
-        datas = isXml ? [...new DOMParser().parseFromString(res, 'text/xml').querySelectorAll('entry')].map(element => {
-          return {
-            title  : element.querySelector('title').innerHTML,
-            content: element.querySelector('content').innerHTML,
-            url    : element.querySelector('url').innerHTML
-          };
-        }) : JSON.parse(res);
-
-        // Remove loading animation
-        document.querySelector('.search-pop-overlay').innerHTML = '';
-        document.body.style.overflow = '';
-
-        if (callback) {
-          callback();
-        }
-      });
-  };
-
-  if (CONFIG.localsearch.preload) {
-    fetchData();
-  }
-
-  const proceedSearch = () => {
-    document.body.style.overflow = 'hidden';
-    document.querySelector('.search-pop-overlay').style.display = 'block';
-    document.querySelector('.popup').style.display = 'block';
-    document.querySelector('.search-input').focus();
-  };
-
-  // Search function
-  const searchFunc = () => {
-    document.querySelector('.search-pop-overlay').style.display = '';
-    document.querySelector('.search-pop-overlay').innerHTML = '<div class="search-loading-icon"><i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i></div>';
-    fetchData(proceedSearch);
-  };
-
-  if (CONFIG.localsearch.trigger === 'auto') {
-    input.addEventListener('input', inputEventFunction);
-  } else {
-    document.querySelector('.search-icon').addEventListener('click', inputEventFunction);
-    input.addEventListener('keypress', event => {
-      if (event.key === 'Enter') {
-        inputEventFunction();
-      }
-    });
-  }
-
-  // Handle and trigger popup window
-  document.querySelectorAll('.popup-trigger').forEach(element => {
-    element.addEventListener('click', () => {
-      isfetched ? proceedSearch() : searchFunc();
-    });
-  });
-
-  // Monitor main search box
-  const onPopupClose = () => {
-    document.body.style.overflow = '';
-    document.querySelector('.search-pop-overlay').style.display = 'none';
-    document.querySelector('.popup').style.display = 'none';
-  };
-
-  document.querySelector('.search-pop-overlay').addEventListener('click', onPopupClose);
-  document.querySelector('.popup-btn-close').addEventListener('click', onPopupClose);
-  window.addEventListener('pjax:success', onPopupClose);
-  window.addEventListener('keyup', event => {
-    if (event.key === 'Escape') {
-      onPopupClose();
-    }
-  });
-});

+ 0 - 86
js/schemes/pisces.js

@@ -1,86 +0,0 @@
-/* global NexT, CONFIG */
-
-var Affix = {
-  init: function(element, options) {
-    this.element = element;
-    this.offset = options || 0;
-    this.affixed = null;
-    this.unpin = null;
-    this.pinnedOffset = null;
-    this.checkPosition();
-    window.addEventListener('scroll', this.checkPosition.bind(this));
-    window.addEventListener('click', this.checkPositionWithEventLoop.bind(this));
-    window.matchMedia('(min-width: 992px)').addListener(event => {
-      if (event.matches) {
-        this.offset = NexT.utils.getAffixParam();
-        this.checkPosition();
-      }
-    });
-  },
-  getState: function(scrollHeight, height, offsetTop, offsetBottom) {
-    let scrollTop = window.scrollY;
-    let targetHeight = window.innerHeight;
-    if (offsetTop != null && this.affixed === 'top') {
-      if (document.querySelector('.content-wrap').offsetHeight < offsetTop) return 'top';
-      return scrollTop < offsetTop ? 'top' : false;
-    }
-    if (this.affixed === 'bottom') {
-      if (offsetTop != null) return this.unpin <= this.element.getBoundingClientRect().top ? false : 'bottom';
-      return scrollTop + targetHeight <= scrollHeight - offsetBottom ? false : 'bottom';
-    }
-    let initializing = this.affixed === null;
-    let colliderTop = initializing ? scrollTop : this.element.getBoundingClientRect().top + scrollTop;
-    let colliderHeight = initializing ? targetHeight : height;
-    if (offsetTop != null && scrollTop <= offsetTop) return 'top';
-    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom';
-    return false;
-  },
-  getPinnedOffset: function() {
-    if (this.pinnedOffset) return this.pinnedOffset;
-    this.element.classList.remove('affix-top', 'affix-bottom');
-    this.element.classList.add('affix');
-    return (this.pinnedOffset = this.element.getBoundingClientRect().top);
-  },
-  checkPositionWithEventLoop() {
-    setTimeout(this.checkPosition.bind(this), 1);
-  },
-  checkPosition: function() {
-    if (window.getComputedStyle(this.element).display === 'none') return;
-    let height = this.element.offsetHeight;
-    let offset = this.offset;
-    let offsetTop = offset.top;
-    let offsetBottom = offset.bottom;
-    let scrollHeight = document.body.scrollHeight;
-    let affix = this.getState(scrollHeight, height, offsetTop, offsetBottom);
-    if (this.affixed !== affix) {
-      if (this.unpin != null) this.element.style.top = '';
-      let affixType = 'affix' + (affix ? '-' + affix : '');
-      this.affixed = affix;
-      this.unpin = affix === 'bottom' ? this.getPinnedOffset() : null;
-      this.element.classList.remove('affix', 'affix-top', 'affix-bottom');
-      this.element.classList.add(affixType);
-    }
-    if (affix === 'bottom') {
-      this.element.style.top = scrollHeight - height - offsetBottom + 'px';
-    }
-  }
-};
-
-NexT.utils.getAffixParam = function() {
-  const sidebarOffset = CONFIG.sidebar.offset || 12;
-
-  let headerOffset = document.querySelector('.header-inner').offsetHeight;
-  let footerOffset = document.querySelector('.footer').offsetHeight;
-
-  document.querySelector('.sidebar').style.marginTop = headerOffset + sidebarOffset + 'px';
-
-  return {
-    top   : headerOffset,
-    bottom: footerOffset
-  };
-};
-
-window.addEventListener('DOMContentLoaded', () => {
-
-  Affix.init(document.querySelector('.sidebar-inner'), NexT.utils.getAffixParam());
-});

+ 12 - 1
tags/graph/index.html

@@ -329,6 +329,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -354,7 +365,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
tags/index.html

@@ -271,6 +271,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -296,7 +307,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
tags/math/index.html

@@ -269,6 +269,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -294,7 +305,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
tags/other/index.html

@@ -289,6 +289,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -314,7 +325,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>

+ 12 - 1
tags/struct/index.html

@@ -269,6 +269,17 @@
 </div>
 
 
+  <div class="links-of-blogroll motion-element">
+    <div class="links-of-blogroll-title">
+      <i class="fa fa-fw fa-link"></i>
+      Links
+    </div>
+    <ul class="links-of-blogroll-list">
+        <li class="links-of-blogroll-item">
+          <a href="https://yonghong.github.io/" title="https:&#x2F;&#x2F;yonghong.github.io" rel="noopener" target="_blank">Yonghong</a>
+        </li>
+    </ul>
+  </div>
 
       </div>
       <div id="treefrog" style="text-align: center;margin-top: 18px;">
@@ -294,7 +305,7 @@
   <span class="with-love">
     <i class="fa fa-user"></i>
   </span>
-  <span class="author" itemprop="copyrightHolder">Schtonn</span>
+  <span class="author" itemprop="copyrightHolder">Alex Xiang</span>
 </div>
   <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a>
   </div>