Compare commits

...

9 Commits

Author SHA1 Message Date
Alex Ling 07100121ef Bump version to v0.7.3 2020-07-05 14:36:12 +00:00
Alex Ling a0e550569e Use archive.cr v0.3.0 for 32bit support 2020-07-05 14:34:19 +00:00
Alex Ling bbbe2e0588 Move uikit.less 2020-07-04 11:17:27 +00:00
Alex Ling 9d31b24e8c Fix nested a tags 2020-07-04 11:10:32 +00:00
Alex Ling 38ba324fa9 Save the sorting option in local storage (#76) 2020-07-04 09:47:51 +00:00
Alex Ling c00016fa19 Remove link to title page from the entry modal 2020-07-04 08:56:58 +00:00
Alex Ling 4d5a305d1b Reduce card font size and link to the title pages
(#84)
2020-07-04 08:56:58 +00:00
Alex Ling f9ca52ee2f Keep progress label color in dark mode (#85) 2020-07-03 06:53:39 +00:00
Alex Ling f6c393545c Only show started entries in "continue reading"
(#83)
2020-07-03 06:52:50 +00:00
14 changed files with 135 additions and 71 deletions
+1 -1
View File
@@ -50,7 +50,7 @@ The official docker images are available on [Dockerhub](https://hub.docker.com/r
### CLI ### CLI
``` ```
Mango - Manga Server and Web Reader. Version 0.7.2 Mango - Manga Server and Web Reader. Version 0.7.3
Usage: Usage:
+1 -1
View File
@@ -12,7 +12,7 @@ gulp.task('minify-js', () => {
}); });
gulp.task('less', () => { gulp.task('less', () => {
return gulp.src('src/assets/*.less') return gulp.src('public/css/*.less')
.pipe(less()) .pipe(less())
.pipe(gulp.dest('public/css')); .pipe(gulp.dest('public/css'));
}); });
+27 -2
View File
@@ -1,74 +1,99 @@
.uk-alert-close { .uk-alert-close {
color: black !important; color: black !important;
} }
.uk-card-body { .uk-card-body {
padding: 20px; padding: 20px;
} }
.uk-card-media-top { .uk-card-media-top {
height: 250px; height: 250px;
} }
@media (min-width: 600px) { @media (min-width: 600px) {
.uk-card-media-top { .uk-card-media-top {
height: 300px; height: 300px;
} }
} }
.uk-card-media-top>img { .uk-card-media-top>img {
height: 100%; height: 100%;
width: 100%; width: 100%;
object-fit: cover; object-fit: cover;
} }
.uk-card-title { .uk-card-title {
height: 3em; max-height: 3em;
} }
.acard:hover { .acard:hover {
text-decoration: none; cursor: pointer;
} }
.uk-list li { .uk-list li {
cursor: pointer; cursor: pointer;
} }
.reader-bg { .reader-bg {
background-color: black; background-color: black;
} }
#scan-status { #scan-status {
cursor: auto; cursor: auto;
} }
.break-word { .break-word {
word-wrap: break-word; word-wrap: break-word;
} }
.uk-logo>img { .uk-logo>img {
height: 90px; height: 90px;
width: 90px; width: 90px;
} }
.uk-search { .uk-search {
width: 100%; width: 100%;
} }
#selectable .ui-selecting { #selectable .ui-selecting {
background: #EEE6B9; background: #EEE6B9;
} }
#selectable .ui-selected { #selectable .ui-selected {
background: #F4E487; background: #F4E487;
} }
#selectable .ui-selecting.dark { #selectable .ui-selecting.dark {
background: #5E5731; background: #5E5731;
} }
#selectable .ui-selected.dark { #selectable .ui-selected.dark {
background: #9D9252; background: #9D9252;
} }
td>.uk-dropdown { td>.uk-dropdown {
white-space: pre-line; white-space: pre-line;
} }
#edit-modal .uk-grid>div { #edit-modal .uk-grid>div {
height: 300px; height: 300px;
} }
#edit-modal #cover { #edit-modal #cover {
height: 100%; height: 100%;
width: 100%; width: 100%;
object-fit: cover; object-fit: cover;
} }
#edit-modal #cover-upload { #edit-modal #cover-upload {
height: 100%; height: 100%;
box-sizing: border-box; box-sizing: border-box;
} }
#edit-modal .uk-modal-body .uk-inline { #edit-modal .uk-modal-body .uk-inline {
width: 100%; width: 100%;
} }
.item .uk-card-title {
font-size: 1rem;
}
+2 -3
View File
@@ -1,13 +1,12 @@
const truncate = () => { const truncate = () => {
$('.acard .uk-card-title').each((i, e) => { $('.uk-card-title').each((i, e) => {
$(e).dotdotdot({ $(e).dotdotdot({
truncate: 'letter', truncate: 'letter',
watch: true, watch: true,
callback: (truncated) => { callback: (truncated) => {
if (truncated) { if (truncated) {
$(e).attr('uk-tooltip', $(e).attr('data-title')); $(e).attr('uk-tooltip', $(e).attr('data-title'));
} } else {
else {
$(e).removeAttr('uk-tooltip'); $(e).removeAttr('uk-tooltip');
} }
} }
+16 -8
View File
@@ -1,6 +1,10 @@
$(() => { $(() => {
const titleID = $('.data').attr('data-title-id') || 'library';
const sortItems = () => { const sortItems = () => {
const sort = $('#sort-select').find(':selected').attr('id'); const sort = $('#sort-select').find(':selected').attr('id');
localStorage.setItem(`sort-${titleID}`, sort);
const ary = sort.split('-'); const ary = sort.split('-');
const by = ary[0]; const by = ary[0];
const dir = ary[1]; const dir = ary[1];
@@ -25,20 +29,21 @@ $(() => {
if (!keyRange[key]) { if (!keyRange[key]) {
keyRange[key] = [num, num, 1]; keyRange[key] = [num, num, 1];
} } else {
else {
keyRange[key][2] += 1; keyRange[key][2] += 1;
if (num < keyRange[key][0]) { if (num < keyRange[key][0]) {
keyRange[key][0] = num; keyRange[key][0] = num;
} } else if (num > keyRange[key][1]) {
else if (num > keyRange[key][1]) {
keyRange[key][1] = num; keyRange[key][1] = num;
} }
} }
match = regex.exec(name); match = regex.exec(name);
} }
ctxAry.push({index: i, numbers: numbers}); ctxAry.push({
index: i,
numbers: numbers
});
}); });
console.log(keyRange); console.log(keyRange);
@@ -84,8 +89,7 @@ $(() => {
if (dir === 'down') { if (dir === 'down') {
items.reverse(); items.reverse();
} }
} } else {
else {
items.sort((a, b) => { items.sort((a, b) => {
var res; var res;
if (by === 'name') if (by === 'name')
@@ -108,13 +112,17 @@ $(() => {
}); });
} }
$('#item-container').append(items); $('#item-container').append(items);
setupAcard();
}; };
$('#sort-select').change(() => { $('#sort-select').change(() => {
sortItems(); sortItems();
}); });
if ($('option#auto-up').length > 0) const sortID = localStorage.getItem(`sort-${titleID}`);
if (sortID)
$(`option#${sortID}`).attr('selected', '');
else if ($('option#auto-up').length > 0)
$('option#auto-up').attr('selected', ''); $('option#auto-up').attr('selected', '');
else else
$('option#name-up').attr('selected', ''); $('option#name-up').attr('selected', '');
+21 -3
View File
@@ -1,3 +1,24 @@
$(() => {
setupAcard();
});
const setupAcard = () => {
$('.acard.is_entry').click((e) => {
if ($(e.target).hasClass('no-modal')) return;
const card = $(e.target).closest('.acard');
showModal(
$(card).attr('data-encoded-path'),
parseInt($(card).attr('data-pages')),
parseFloat($(card).attr('data-progress')),
$(card).attr('data-encoded-book-title'),
$(card).attr('data-encoded-title'),
$(card).attr('data-book-id'),
$(card).attr('data-id')
);
});
};
function showModal(encodedPath, pages, percentage, encodedeTitle, encodedEntryTitle, titleID, entryID) { function showModal(encodedPath, pages, percentage, encodedeTitle, encodedEntryTitle, titleID, entryID) {
const zipPath = decodeURIComponent(encodedPath); const zipPath = decodeURIComponent(encodedPath);
const title = decodeURIComponent(encodedeTitle); const title = decodeURIComponent(encodedeTitle);
@@ -15,9 +36,6 @@ function showModal(encodedPath, pages, percentage, encodedeTitle, encodedEntryTi
$('#continue-btn').text('Continue from ' + percentage + '%'); $('#continue-btn').text('Continue from ' + percentage + '%');
} }
$('#modal-title-link').text(title);
$('#modal-title-link').attr('href', `${base_url}book/${titleID}`);
$('#modal-entry-title').find('span').text(entry); $('#modal-entry-title').find('span').text(entry);
$('#modal-entry-title').next().attr('data-id', titleID); $('#modal-entry-title').next().attr('data-id', titleID);
$('#modal-entry-title').next().attr('data-entry-id', entryID); $('#modal-entry-title').next().attr('data-entry-id', entryID);
+1 -1
View File
@@ -6,7 +6,7 @@ shards:
archive: archive:
github: hkalexling/archive.cr github: hkalexling/archive.cr
version: 0.2.0 version: 0.3.0
baked_file_system: baked_file_system:
github: schovi/baked_file_system github: schovi/baked_file_system
+1 -1
View File
@@ -1,5 +1,5 @@
name: mango name: mango
version: 0.7.2 version: 0.7.3
authors: authors:
- Alex Ling <hkalexling@gmail.com> - Alex Ling <hkalexling@gmail.com>
+1 -1
View File
@@ -457,7 +457,7 @@ class Title
last_read_entry = nil last_read_entry = nil
@entries.reverse_each do |e| @entries.reverse_each do |e|
if progress.has_key? e.title if progress.has_key?(e.title) && progress[e.title] > 0
last_read_entry = e last_read_entry = e
break break
end end
+1 -1
View File
@@ -4,7 +4,7 @@ require "./mangadex/*"
require "option_parser" require "option_parser"
require "clim" require "clim"
MANGO_VERSION = "0.7.2" MANGO_VERSION = "0.7.3"
macro common_option macro common_option
option "-c PATH", "--config=PATH", type: String, option "-c PATH", "--config=PATH", type: String,
+29 -13
View File
@@ -14,37 +14,53 @@
id="<%= item.id %>" id="<%= item.id %>"
<% end %>> <% end %>>
<a class="acard" <div class="acard
<% unless item.is_a? Entry %>
href="<%= base_url %>book/<%= item.id %>"
<% end %>>
<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 * 100).round(1) %>, &quot;<%= item.book.encoded_display_name %>&quot;, &quot;<%= item.encoded_display_name %>&quot;, '<%= item.title_id %>', '<%= item.id %>')" <%= "is_entry" %>
<% end %>
"
<% if item.is_a? Entry %>
data-encoded-path="<%= item.encoded_path %>"
data-pages="<%= item.pages %>"
data-progress="<%= (progress * 100).round(1) %>"
data-encoded-book-title="<%= item.book.encoded_display_name %>"
data-encoded-title="<%= item.encoded_display_name %>"
data-book-id="<%= item.book.id %>"
data-id="<%= item.id %>"
<% else %>
onclick="location='<%= base_url %>book/<%= item.id %>'"
<% end %>> <% end %>>
<div class="uk-card uk-card-default">
<div class="uk-card-media-top"> <div class="uk-card-media-top">
<img data-src="<%= item.cover_url %>" data-width data-height alt="" uk-img> <img data-src="<%= item.cover_url %>" data-width data-height alt="" uk-img>
</div> </div>
<div class="uk-card-body"> <div class="uk-card-body">
<% unless progress < 0 || progress > 100 %> <% unless progress < 0 || progress > 100 %>
<div class="uk-card-badge uk-label"><%= (progress * 100).round(1) %>%</div> <div class="uk-card-badge label"><%= (progress * 100).round(1) %>%</div>
<% end %> <% 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
<% if page == "home" && item.is_a? Entry %>
<%= "uk-margin-remove-bottom" %>
<% end %>
" data-title="<%= HTML.escape(item.display_name) %>"><%= item.display_name %>
</h3>
<% if page == "home" && item.is_a? Entry %>
<a class="uk-card-title break-word uk-margin-remove-top uk-text-meta uk-display-inline-block no-modal" data-title="<%= HTML.escape(item.book.display_name) %>" href="<%= base_url %>book/<%= item.book.id %>"><%= HTML.escape(item.book.display_name) %></a>
<% end %>
<% if item.is_a? Entry %> <% if item.is_a? Entry %>
<p><%= item.pages %> pages</p> <p class="uk-text-meta"><%= item.pages %> pages</p>
<% end %> <% end %>
<% if item.is_a? Title %> <% if item.is_a? Title %>
<% if grouped_count == 1 %> <% if grouped_count == 1 %>
<p><%= item.size %> entries</p> <p class="uk-text-meta"><%= item.size %> entries</p>
<% else %> <% else %>
<p><%= grouped_count %> new entries</p> <p class="uk-text-meta"><%= grouped_count %> new entries</p>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>
</div> </div>
</a> </div>
</div> </div>
@@ -3,9 +3,6 @@
<button class="uk-modal-close-default" type="button" uk-close></button> <button class="uk-modal-close-default" type="button" uk-close></button>
<div class="uk-modal-header"> <div class="uk-modal-header">
<div> <div>
<% if page == "home" %>
<h4 class="uk-margin-remove-bottom"><a id="modal-title-link"></a></h4>
<% end %>
<h3 class="uk-modal-title break-word uk-margin-remove-top" id="modal-entry-title"><span></span> <h3 class="uk-modal-title break-word uk-margin-remove-top" id="modal-entry-title"><span></span>
&nbsp; &nbsp;
<% unless page == "home" %> <% unless page == "home" %>
+1
View File
@@ -1,3 +1,4 @@
<div class="data" data-title-id="<%= title.id %>"></div>
<div> <div>
<h2 class=uk-title><span><%= title.display_name %></span> <h2 class=uk-title><span><%= title.display_name %></span>
&nbsp; &nbsp;