From 16734c2c5922945ca021c97b6e5f0967b3d7e3b5 Mon Sep 17 00:00:00 2001 From: Jared Turner Date: Mon, 18 May 2020 21:06:14 +0100 Subject: [PATCH] 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

+
+ <%- on_deck_entries.each_with_index do |e, i| -%> + + <%- end -%> +
+<%- 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 @@