mirror of
https://github.com/hkalexling/Mango.git
synced 2026-03-20 00:00:48 -04:00
Finish batch marking (#75)
This commit is contained in:
@@ -355,4 +355,24 @@ class Title
|
||||
return zip if title_ids.empty?
|
||||
zip + titles.map { |t| t.deep_entries_with_date_added }.flatten
|
||||
end
|
||||
|
||||
def bulk_progress(action, ids : Array(String), username)
|
||||
selected_entries = ids
|
||||
.map { |id|
|
||||
@entries.find { |e| e.id == id }
|
||||
}
|
||||
.select(Entry)
|
||||
|
||||
TitleInfo.new @dir do |info|
|
||||
selected_entries.each do |e|
|
||||
page = action == "read" ? e.pages : 0
|
||||
if info.progress[username]?.nil?
|
||||
info.progress[username] = {e.title => page}
|
||||
else
|
||||
info.progress[username][e.title] = page
|
||||
end
|
||||
end
|
||||
info.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -97,6 +97,28 @@ class APIRouter < Router
|
||||
end
|
||||
end
|
||||
|
||||
post "/api/bulk-progress/:action/:title" do |env|
|
||||
begin
|
||||
username = get_username env
|
||||
title = (@context.library.get_title env.params.url["title"]).not_nil!
|
||||
action = env.params.url["action"]
|
||||
ids = env.params.json["ids"].as(Array).map &.as_s
|
||||
|
||||
unless action.in? ["read", "unread"]
|
||||
raise "Unknow action #{action}"
|
||||
end
|
||||
title.bulk_progress action, ids, username
|
||||
rescue e
|
||||
@context.error e
|
||||
send_json env, {
|
||||
"success" => false,
|
||||
"error" => e.message,
|
||||
}.to_json
|
||||
else
|
||||
send_json env, {"success" => true}.to_json
|
||||
end
|
||||
end
|
||||
|
||||
post "/api/admin/display_name/:title/:name" do |env|
|
||||
begin
|
||||
title = (@context.library.get_title env.params.url["title"])
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<% end %>>
|
||||
<div class="uk-overlay-primary uk-position-cover" x-show="!disabled && (selected || hover)">
|
||||
<div class="uk-position-center">
|
||||
<span class="fas fa-check-circle" @click.stop="selected = !selected; $dispatch(selected ? 'add' : 'remove')" :style="`color:${selected && 'orange'};transform:scale(3,3)`"></span>
|
||||
<span class="fas fa-check-circle fa-3x" @click.stop="selected = !selected; $dispatch(selected ? 'add' : 'remove')" :style="`color:${selected && 'orange'};`"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,21 @@
|
||||
<div>
|
||||
<div class="uk-card uk-card-body uk-card-default uk-margin-bottom" uk-sticky x-data="{count: 0}" @add.window="count++" @remove.window="count--" x-show="count > 0" style="border:orange;border-style:solid;" x-cloak>
|
||||
<p class="uk-display-inline" x-text="count + ' items selected'" style="color:orange"></p>
|
||||
<a uk-icon="icon:close;" class="uk-align-right" @click="deselectAll(); count = 0"></a>
|
||||
<div id="select-bar" class="uk-card uk-card-body uk-card-default uk-margin-bottom" uk-sticky x-data="{count: 0}" @add.window="count++" @remove.window="count--" x-show="count > 0" style="border:orange;border-style:solid;" x-cloak data-id="<%= title.id %>">
|
||||
<div class="uk-child-width-1-3" uk-grid>
|
||||
<div>
|
||||
<p x-text="count + ' items selected'" style="color:orange"></p>
|
||||
</div>
|
||||
<div class="uk-text-center" id="select-bar-controls">
|
||||
<a class="uk-icon uk-margin-right" uk-tooltip="title: Mark selected as read" href="" @click.prevent="bulkProgress('read', $el)">
|
||||
<i class="fas fa-check-circle"></i>
|
||||
</a>
|
||||
<a class="uk-icon" uk-tooltip="title: Mark selected as unread" href="" @click.prevent="bulkProgress('unread', $el)">
|
||||
<i class="fas fa-times-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a uk-icon="icon:close;" class="uk-align-right" @click="deselectAll();"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2 class=uk-title><span><%= title.display_name %></span>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user