From 16d52ac49f7318620d3a84e172cf18917d70de1b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 27 Feb 2017 23:30:12 +0300 Subject: add basic offline mode search --- js/offline.js | 160 ++++++++++++++++++++++++++++++++++++++-------------------- offline.html | 16 ++++-- 2 files changed, 119 insertions(+), 57 deletions(-) diff --git a/js/offline.js b/js/offline.js index 8a61417..0bcd447 100644 --- a/js/offline.js +++ b/js/offline.js @@ -1,3 +1,13 @@ +function offline_search(form) { + var query = $(".search_query").val(); + + localforage.setItem("epube.search-query", query).then(function() { + populate_list(); + }); + + return false; +} + function offline_remove2(elem) { var bookId = elem.getAttribute("data-book-id"); @@ -30,80 +40,122 @@ function offline_clear() { function populate_list() { - var books = $("#books_container"); - books.html(""); + localforage.getItem("epube.search-query").then(function(query) { - localforage.iterate(function(value, key, i) { - if (key.match(/epube-book\.\d{1,}$/)) { + if (query) query = query.toLowerCase(); - Promise.all([ - localforage.getItem(key), - localforage.getItem(key + ".cover"), - localforage.getItem(key + ".lastread"), - localforage.getItem(key + ".book") - ]).then(function(results) { + var books = $("#books_container"); + books.html(""); - if (results[0] && results[3]) { - var info = results[0]; - var cover = false; + localforage.iterate(function(value, key, i) { + if (key.match(/epube-book\.\d{1,}$/)) { - if (results && results[1]) { - cover = URL.createObjectURL(results[1]); - } + Promise.all([ + localforage.getItem(key), + localforage.getItem(key + ".cover"), + localforage.getItem(key + ".lastread"), + localforage.getItem(key + ".book") + ]).then(function(results) { - var in_progress = false; - var is_read = false; + if (results[0] && results[3]) { + var info = results[0]; - var lastread = results[2]; - if (lastread) { + if (query) { + var match = + (info.series_name && info.series_name.toLowerCase().match(query)) || + (info.title && info.title.toLowerCase().match(query)) || + (info.author_sort && info.author_sort.toLowerCase().match(query)); - in_progress = lastread.page > 0; - is_read = lastread.total > 0 && lastread.total - lastread.page < 5; - } + if (!match) return; + } - var cell = "
"; - var cover_read = is_read ? "read" : ""; - var title_class = in_progress ? "in_progress" : ""; + var cover = false; - cell += "
"; - cell += ""; + if (results && results[1]) { + cover = URL.createObjectURL(results[1]); + } - cell += "
"; - cell += "
" + - info.title + "
"; - cell += "
" + info.author_sort + "
"; + var in_progress = false; + var is_read = false; - if (info.series_name) { - cell += "
" + info.series_name + " [" + info.series_index + "]
"; - } + var lastread = results[2]; + if (lastread) { - cell += "
"; + in_progress = lastread.page > 0; + is_read = lastread.total > 0 && lastread.total - lastread.page < 5; + } - cell += "
"; - cell += "" + - "More..." + ""; + var cell = "
"; - cell += ""; + var cover_read = is_read ? "read" : ""; + var title_class = in_progress ? "in_progress" : ""; - cell += "
"; + cell += "
"; + cell += ""; - cell += "
"; - cell += "
"; + cell += "
"; + cell += "
" + + info.title + "
"; - var cell = $(cell); + cell += "
" + info.author_sort + "
"; - if (cover) { - cell.find("img").attr("src", cover); - } + if (info.series_name) { + cell += "
" + + info.series_name + " [" + info.series_index + "]
"; + } + + cell += "
"; + + cell += "
"; + cell += "" + + "More..." + ""; + + cell += ""; + + cell += "
"; + + cell += "
"; + cell += "
"; - books.append(cell); + var cell = $(cell); + + if (cover) { + cell.find("img").attr("src", cover); + + cell.find(".series_link") + .attr("title", info.series_name + " [" + info.series_index + "]") + .click(function() { + + $(".search_query").val(info.series_name); + offline_search(); + + return false; + }); + + cell.find(".author_link") + .attr("title", info.author_sort) + .click(function() { + + $(".search_query").val(info.author_sort); + offline_search(); + + return false; + }); + + } + + books.append(cell); + + Holder.run(); + } + }); + } + }); - Holder.run(); - } - }); - } }); + } + diff --git a/offline.html b/offline.html index 8b25d21..0062518 100644 --- a/offline.html +++ b/offline.html @@ -42,7 +42,13 @@ + + @@ -59,10 +65,14 @@ .then(function() { console.log("service worker registered"); }); - } - populate_list(); + localforage.getItem("epube.search-query").then(function(query) { + + if (query) $(".search_query").val(query); + + populate_list(); + }); }); -- cgit v1.2.3