diff --git a/src/library.cr b/src/library.cr index 4ed4b58..de1080c 100644 --- a/src/library.cr +++ b/src/library.cr @@ -339,14 +339,18 @@ class Title page / entry_obj.pages end + def deep_read_page_count(username) : Int32 + entries.map { |e| load_progress username, e.title }.sum + + titles.map { |t| t.deep_read_page_count username }.flatten.sum + end + + def deep_total_page_count : Int32 + entries.map { |e| e.pages }.sum + + titles.map { |t| t.deep_total_page_count }.flatten.sum + end + def load_percentage(username) - return 0.0 if @entries.empty? - read_pages = total_pages = 0 - @entries.each do |e| - read_pages += load_progress username, e.title - total_pages += e.pages - end - read_pages / total_pages + deep_read_page_count(username) / deep_total_page_count end def load_last_read(username, entry) diff --git a/src/routes/main.cr b/src/routes/main.cr index 8d2afec..5af5076 100644 --- a/src/routes/main.cr +++ b/src/routes/main.cr @@ -56,6 +56,7 @@ class MainRouter < Router percentage = title.entries.map { |e| title.load_percentage username, e.title } + title_percentage = title.titles.map &.load_percentage username layout "title" rescue e @context.error e diff --git a/src/views/components/card.ecr b/src/views/components/card.ecr index 0eb07a5..a761ca0 100644 --- a/src/views/components/card.ecr +++ b/src/views/components/card.ecr @@ -8,7 +8,7 @@ <% else %> <% grouped_count = 1 %> <% end %> -