summaryrefslogtreecommitdiffstats
path: root/theme
diff options
context:
space:
mode:
Diffstat (limited to 'theme')
-rw-r--r--theme/assets/app.js26
-rw-r--r--theme/javascript/core/search.js23
-rw-r--r--theme/javascript/core/state.js3
-rw-r--r--theme/templates/site.html2
4 files changed, 41 insertions, 13 deletions
diff --git a/theme/assets/app.js b/theme/assets/app.js
index ec6285f..f2956de 100644
--- a/theme/assets/app.js
+++ b/theme/assets/app.js
@@ -18089,7 +18089,8 @@ define('core/state',[
'githubId': $book.data("github"),
'level': $book.data("level"),
- 'basePath': $book.data("basepath")
+ 'basePath': $book.data("basepath"),
+ 'revision': $book.data("revision")
};
});
/*global define:false */
@@ -21009,19 +21010,32 @@ define('core/search',[
"jQuery",
"lodash",
"lunr",
+ "utils/storage",
"core/state",
"core/sidebar"
-], function($, _, lunr, state, sidebar) {
+], function($, _, lunr, storage, state, sidebar) {
var index = null;
var $searchBar = state.$book.find(".book-search");
var $searchInput = $searchBar.find("input");
+ // Use a specific idnex
+ var useIndex = function(data) {
+ index = lunr.Index.load(data);
+ };
+
// Load complete index
var loadIndex = function() {
- return $.getJSON(state.basePath+"/search_index.json")
- .then(function(data) {
- index = lunr.Index.load(data);
- });
+ var cacheKey = state.revision+":"+"searchIndex";
+ var cache = storage.get(cacheKey);
+
+ if (cache) return useIndex(cache);
+
+ $.getJSON(state.basePath+"/search_index.json")
+ .then(function(index) {
+ storage.set(cacheKey, index);
+ return index;
+ })
+ .then(useIndex);
};
// Search for a term
diff --git a/theme/javascript/core/search.js b/theme/javascript/core/search.js
index a5399d9..bc1a31b 100644
--- a/theme/javascript/core/search.js
+++ b/theme/javascript/core/search.js
@@ -2,19 +2,32 @@ define([
"jQuery",
"lodash",
"lunr",
+ "utils/storage",
"core/state",
"core/sidebar"
-], function($, _, lunr, state, sidebar) {
+], function($, _, lunr, storage, state, sidebar) {
var index = null;
var $searchBar = state.$book.find(".book-search");
var $searchInput = $searchBar.find("input");
+ // Use a specific idnex
+ var useIndex = function(data) {
+ index = lunr.Index.load(data);
+ };
+
// Load complete index
var loadIndex = function() {
- return $.getJSON(state.basePath+"/search_index.json")
- .then(function(data) {
- index = lunr.Index.load(data);
- });
+ var cacheKey = state.revision+":"+"searchIndex";
+ var cache = storage.get(cacheKey);
+
+ if (cache) return useIndex(cache);
+
+ $.getJSON(state.basePath+"/search_index.json")
+ .then(function(index) {
+ storage.set(cacheKey, index);
+ return index;
+ })
+ .then(useIndex);
};
// Search for a term
diff --git a/theme/javascript/core/state.js b/theme/javascript/core/state.js
index 5ed11e8..79876b9 100644
--- a/theme/javascript/core/state.js
+++ b/theme/javascript/core/state.js
@@ -8,6 +8,7 @@ define([
'githubId': $book.data("github"),
'level': $book.data("level"),
- 'basePath': $book.data("basepath")
+ 'basePath': $book.data("basepath"),
+ 'revision': $book.data("revision")
};
}); \ No newline at end of file
diff --git a/theme/templates/site.html b/theme/templates/site.html
index 5bb3c8b..5771c72 100644
--- a/theme/templates/site.html
+++ b/theme/templates/site.html
@@ -2,7 +2,7 @@
{% block title %}{{ progress.current.title }}{% parent %}{% endblock %}
{% block content %}
-<div class="book" data-github="{{ githubId }}" data-level="{{ progress.current.level }}" data-basepath="{{ basePath }}">
+<div class="book" data-github="{{ githubId }}" data-level="{{ progress.current.level }}" data-basepath="{{ basePath }}" data-revision="{{ revision }}">
{% include "includes/book/header.html" %}
{% include "includes/book/summary.html" %}
<div class="book-body" tabindex="-1">