diff options
author | codepiano <codepiano.li@gmail.com> | 2014-08-04 17:04:31 +0800 |
---|---|---|
committer | codepiano <codepiano.li@gmail.com> | 2014-08-05 15:14:10 +0800 |
commit | 7ba86539350937fea170586a744ab955cb99be57 (patch) | |
tree | d564b2b269d1cac89628d8bbf775022679016330 | |
parent | 5692bdd229020f5b01ca9b24658d6a7b253b6515 (diff) | |
download | gitbook-7ba86539350937fea170586a744ab955cb99be57.zip gitbook-7ba86539350937fea170586a744ab955cb99be57.tar.gz gitbook-7ba86539350937fea170586a744ab955cb99be57.tar.bz2 |
keep the search result list after user click a link
Record search keyword to LocalStorage, when navigate to a new url,fetch
keyword from LocalStorage, init the search input element,then filter the
sidebar menu.
So User can iterator the result list without type the keyword every
time.
-rwxr-xr-x | theme/javascript/core/navigation.js | 10 | ||||
-rwxr-xr-x | theme/javascript/core/search.js | 20 |
2 files changed, 25 insertions, 5 deletions
diff --git a/theme/javascript/core/navigation.js b/theme/javascript/core/navigation.js index c1018e0..bcf7e65 100755 --- a/theme/javascript/core/navigation.js +++ b/theme/javascript/core/navigation.js @@ -6,8 +6,9 @@ define([ "core/progress", "core/exercise", "core/quiz", - "core/loading" -], function($, URL, events, state, progress, exercises, quiz, loading) { + "core/loading", + "core/search" +], function($, URL, events, state, progress, exercises, quiz, loading, search) { var prev, next; var usePushState = (typeof history.pushState !== "undefined"); @@ -55,6 +56,8 @@ define([ // Update state state.update($("html")); + // recover search keyword + search.recover(); preparePage(); }) .fail(function (e) { @@ -146,4 +149,5 @@ define([ goNext: goNext, goPrev: goPrev }; -});
\ No newline at end of file +}); + diff --git a/theme/javascript/core/search.js b/theme/javascript/core/search.js index f17f746..4cbc3ed 100755 --- a/theme/javascript/core/search.js +++ b/theme/javascript/core/search.js @@ -81,18 +81,34 @@ define([ } if (q.length == 0) { sidebar.filter(null); + storage.remove("keyword"); } else { var results = search(q); sidebar.filter( _.pluck(results, "path") ); + storage.set("keyword", q); } }) + + }; + + // filter sidebar menu with current search keyword + var recoverSearch = function() { + var keyword = storage.get("keyword", ""); + if(keyword.length > 0) { + if(!isSearchOpen()){ + toggleSearch(); + } + sidebar.filter(_.pluck(search(keyword), "path")); + } + $(".book-search input").val(keyword); }; return { init: init, search: search, - toggle: toggleSearch + toggle: toggleSearch, + recover:recoverSearch }; -});
\ No newline at end of file +}); |