summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2018-06-29 17:56:20 +0300
committerAndrew Dolgov <[email protected]>2018-06-29 17:56:20 +0300
commitd4a1bb6a2f2d7a9e0e0dad419b032d6de915291a (patch)
tree8c25daa5e94fdc2c731f236e4c4fa373dc0d554c /js
parentf46c3f561f6d079a4ac8fb8ba0134508479a9eff (diff)
fix book search
Diffstat (limited to 'js')
-rw-r--r--js/read.js34
1 files changed, 20 insertions, 14 deletions
diff --git a/js/read.js b/js/read.js
index 68365e4..5582ae4 100644
--- a/js/read.js
+++ b/js/read.js
@@ -270,21 +270,27 @@ function search() {
list.html("");
if (query) {
- var results = window.book.currentChapter.find(query);
-
- $.each(results, function (i, row) {
- var a = $("<a>")
- .attr('href', '#')
- .html(row.excerpt +
- " <b>(Loc.&nbsp;" + window.book.pagination.pageFromCfi(row.cfi) + ")</b>")
- .attr('data-cfi', row.cfi)
- .attr('data-id', row.id)
- .click(function() {
- window.book.rendition.display(a.attr('data-cfi'));
- });
-
- list.append($("<li>").append(a));
+ Promise.all(
+ book.spine.spineItems.map(
+ item => item.load(book.load.bind(book))
+ .then(item.find.bind(item, query))
+ .finally(item.unload.bind(item)))
+ )
+ .then(results => Promise.resolve([].concat.apply([], results)))
+ .then(function(results) {
+ $.each(results, function (i, row) {
+ var a = $("<a>")
+ .attr('href', '#')
+ .html(row.excerpt)
+ .attr('data-cfi', row.cfi)
+ .attr('data-id', row.id)
+ .click(function() {
+ window.book.rendition.display(a.attr('data-cfi'));
+ });
+
+ list.append($("<li>").append(a));
+ });
});
}
}