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 %> -
id="<%= item.id %>" <% end %>> @@ -20,7 +20,7 @@
- onclick="showModal("<%= item.encoded_path %>", '<%= item.pages %>', <%= (progress.not_nil! * 100).round(1) %>, "<%= item.book.encoded_display_name %>", "<%= item.encoded_display_name %>", '<%= item.title_id %>', '<%= item.id %>')" + onclick="showModal("<%= item.encoded_path %>", '<%= item.pages %>', <%= (progress * 100).round(1) %>, "<%= item.book.encoded_display_name %>", "<%= item.encoded_display_name %>", '<%= item.title_id %>', '<%= item.id %>')" <% end %>>
@@ -28,9 +28,7 @@
- <% unless (item.is_a? Title && item.entries.size == 0) || progress.nil? %>
<%= (progress * 100).round(1) %>%
- <% end %>

"><%= item.display_name %>

<% if item.is_a? Entry %> diff --git a/src/views/title.ecr b/src/views/title.ecr index d6f70b0..803d023 100644 --- a/src/views/title.ecr +++ b/src/views/title.ecr @@ -33,7 +33,7 @@
<% title.titles.each_with_index do |item, i| %> - <% progress = nil %> + <% progress = title_percentage[i] %> <%= render_component "card" %> <% end %> <% title.entries.each_with_index do |item, i| %>