Show progress for titles and nested titles

This commit is contained in:
Alex Ling 2020-06-11 12:36:25 +00:00
parent aa269f26ee
commit c8be2849b9
4 changed files with 15 additions and 12 deletions

View File

@ -339,14 +339,18 @@ class Title
page / entry_obj.pages page / entry_obj.pages
end 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) def load_percentage(username)
return 0.0 if @entries.empty? deep_read_page_count(username) / deep_total_page_count
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
end end
def load_last_read(username, entry) def load_last_read(username, entry)

View File

@ -56,6 +56,7 @@ class MainRouter < Router
percentage = title.entries.map { |e| percentage = title.entries.map { |e|
title.load_percentage username, e.title title.load_percentage username, e.title
} }
title_percentage = title.titles.map &.load_percentage username
layout "title" layout "title"
rescue e rescue e
@context.error e @context.error e

View File

@ -8,7 +8,7 @@
<% else %> <% else %>
<% grouped_count = 1 %> <% grouped_count = 1 %>
<% end %> <% end %>
<div class="item" data-mtime="<%= item.mtime.to_unix %>" data-progress="<%= progress || 0.0 %>" <div class="item" data-mtime="<%= item.mtime.to_unix %>" data-progress="<%= progress %>"
<% if item.is_a? Entry %> <% if item.is_a? Entry %>
id="<%= item.id %>" id="<%= item.id %>"
<% end %>> <% end %>>
@ -20,7 +20,7 @@
<div class="uk-card uk-card-default" <div class="uk-card uk-card-default"
<% if item.is_a? Entry %> <% if item.is_a? Entry %>
onclick="showModal(&quot;<%= item.encoded_path %>&quot;, '<%= item.pages %>', <%= (progress.not_nil! * 100).round(1) %>, &quot;<%= item.book.encoded_display_name %>&quot;, &quot;<%= item.encoded_display_name %>&quot;, '<%= item.title_id %>', '<%= item.id %>')" onclick="showModal(&quot;<%= item.encoded_path %>&quot;, '<%= item.pages %>', <%= (progress * 100).round(1) %>, &quot;<%= item.book.encoded_display_name %>&quot;, &quot;<%= item.encoded_display_name %>&quot;, '<%= item.title_id %>', '<%= item.id %>')"
<% end %>> <% end %>>
<div class="uk-card-media-top"> <div class="uk-card-media-top">
@ -28,9 +28,7 @@
</div> </div>
<div class="uk-card-body"> <div class="uk-card-body">
<% unless (item.is_a? Title && item.entries.size == 0) || progress.nil? %>
<div class="uk-card-badge uk-label"><%= (progress * 100).round(1) %>%</div> <div class="uk-card-badge uk-label"><%= (progress * 100).round(1) %>%</div>
<% end %>
<h3 class="uk-card-title break-word" data-title="<%= item.display_name.gsub("\"", "&quot;") %>"><%= item.display_name %></h3> <h3 class="uk-card-title break-word" data-title="<%= item.display_name.gsub("\"", "&quot;") %>"><%= item.display_name %></h3>
<% if item.is_a? Entry %> <% if item.is_a? Entry %>

View File

@ -33,7 +33,7 @@
</div> </div>
<div id="item-container" class="uk-child-width-1-4@m uk-child-width-1-2" uk-grid> <div id="item-container" class="uk-child-width-1-4@m uk-child-width-1-2" uk-grid>
<% title.titles.each_with_index do |item, i| %> <% title.titles.each_with_index do |item, i| %>
<% progress = nil %> <% progress = title_percentage[i] %>
<%= render_component "card" %> <%= render_component "card" %>
<% end %> <% end %>
<% title.entries.each_with_index do |item, i| %> <% title.entries.each_with_index do |item, i| %>