From 392b3d8339356fa8fe1e57eb7c4d31d2e149fc12 Mon Sep 17 00:00:00 2001 From: Jared Turner Date: Mon, 18 May 2020 20:32:09 +0100 Subject: [PATCH 01/22] fix `load_percetage` method name typo --- src/library.cr | 4 ++-- src/routes/main.cr | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/library.cr b/src/library.cr index 058b04a..2e8d0f7 100644 --- a/src/library.cr +++ b/src/library.cr @@ -302,14 +302,14 @@ class Title progress end - def load_percetage(username, entry) + def load_percentage(username, entry) page = load_progress username, entry entry_obj = @entries.find { |e| e.title == entry } return 0.0 if entry_obj.nil? page / entry_obj.pages end - def load_percetage(username) + def load_percentage(username) return 0.0 if @entries.empty? read_pages = total_pages = 0 @entries.each do |e| diff --git a/src/routes/main.cr b/src/routes/main.cr index 3e21fc1..17cb737 100644 --- a/src/routes/main.cr +++ b/src/routes/main.cr @@ -36,7 +36,7 @@ class MainRouter < Router begin titles = @context.library.titles username = get_username env - percentage = titles.map &.load_percetage username + percentage = titles.map &.load_percentage username layout "index" rescue e @context.error e @@ -49,7 +49,7 @@ class MainRouter < Router title = (@context.library.get_title env.params.url["title"]).not_nil! username = get_username env percentage = title.entries.map { |e| - title.load_percetage username, e.title + title.load_percentage username, e.title } layout "title" rescue e From 16734c2c5922945ca021c97b6e5f0967b3d7e3b5 Mon Sep 17 00:00:00 2001 From: Jared Turner Date: Mon, 18 May 2020 21:06:14 +0100 Subject: [PATCH 02/22] rename root to library and add home with on deck WIP --- src/library.cr | 23 +++++++++++ src/routes/main.cr | 22 +++++++++- src/views/home.ecr | 62 ++++++++++++++++++++++++++++ src/views/layout.ecr | 1 + src/views/{index.ecr => library.ecr} | 0 5 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 src/views/home.ecr rename src/views/{index.ecr => library.ecr} (100%) diff --git a/src/library.cr b/src/library.cr index 2e8d0f7..3ba09a1 100644 --- a/src/library.cr +++ b/src/library.cr @@ -324,6 +324,29 @@ class Title return nil if idx.nil? || idx == @entries.size - 1 @entries[idx + 1] end + + def get_on_deck_entry(username) + # this assumes @entries is in order (low to high), otherwise we would need to sort first + # TODO: what happens if no entry has progress > 0 + idx_latest_read_entry_reverse = -99 # hack to set var, refactor this and `return nil if` below + @entries.reverse.each_with_index do |e, i| + if load_progress(username, e.title) > 0 + idx_latest_read_entry_reverse = i + break + end + end + return nil if idx_latest_read_entry_reverse == -99 + latest_read_entry = @entries.reverse[idx_latest_read_entry_reverse] + if load_progress(username, latest_read_entry.title) == latest_read_entry.pages + # return next entry (if exists) + if idx_latest_read_entry_reverse - 1 >= 0 + return @entries.reverse[idx_latest_read_entry_reverse - 1] + end + else # return in progress entry + return latest_read_entry + end + return nil + end end class TitleInfo diff --git a/src/routes/main.cr b/src/routes/main.cr index 17cb737..c4c6cb8 100644 --- a/src/routes/main.cr +++ b/src/routes/main.cr @@ -32,12 +32,12 @@ class MainRouter < Router end end - get "/" do |env| + get "/library" do |env| begin titles = @context.library.titles username = get_username env percentage = titles.map &.load_percentage username - layout "index" + layout "library" rescue e @context.error e env.response.status_code = 500 @@ -62,5 +62,23 @@ class MainRouter < Router base_url = @context.config.mangadex["base_url"] layout "download" end + + get "/" do |env| + begin + titles = @context.library.titles + username = get_username env + + on_deck_entries = [] of Entry + titles.each do |title| + on_deck_entry = title.get_on_deck_entry username + on_deck_entries << on_deck_entry if on_deck_entry # ingnore titles without latest on deck entry + end + + layout "home" + rescue e + @context.error e + env.response.status_code = 500 + end + end end end diff --git a/src/views/home.ecr b/src/views/home.ecr new file mode 100644 index 0000000..7947c2d --- /dev/null +++ b/src/views/home.ecr @@ -0,0 +1,62 @@ +<%- unless on_deck_entries.empty? -%> +

On Deck

+ +<%- end -%> + + + + + +<% content_for "script" do %> + + + + + + +<% end %> \ No newline at end of file diff --git a/src/views/layout.ecr b/src/views/layout.ecr index cbd6ead..c2c367d 100644 --- a/src/views/layout.ecr +++ b/src/views/layout.ecr @@ -42,6 +42,7 @@