mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-07-09 03:04:19 -04:00
Release Testing Part 2 (#1794)
* Stop showing loading indicator when no next/prev chapter * Fixed a bug where manage collections wasn't named correctly in UI. * Slight tweaks on email flow * Fixed a bug where we were grabbing wrong property for book layout mode * Fixed an issue where pagination area wasn't properly spanning window on different scaling modes. * Fixed a bug where right pagination area wasn't sticking to the right hand side on original scaling * Added a note from reading an epub3 * Reworked some of the readme
This commit is contained in:
parent
2c4b94cfc3
commit
c117d8dc04
@ -623,7 +623,7 @@ public class BookService : IBookService
|
||||
series = metadataItem.Content;
|
||||
break;
|
||||
case "collection-type":
|
||||
// These look to be genres from https://manual.calibre-ebook.com/sub_groups.html
|
||||
// These look to be genres from https://manual.calibre-ebook.com/sub_groups.html or can be "series"
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
19
README.md
19
README.md
@ -3,8 +3,7 @@
|
||||
|
||||

|
||||
|
||||
Kavita is a fast, feature rich, cross platform reading server. Built with a focus for manga,
|
||||
and the goal of being a full solution for all your reading needs. Setup your own server and share
|
||||
Kavita is a fast, feature rich, cross platform reading server. Built with a focus for being a full solution for all your reading needs. Setup your own server and share
|
||||
your reading collection with your friends and family!
|
||||
|
||||
[](https://github.com/Kareadita/Kavita/releases)
|
||||
@ -18,11 +17,12 @@ your reading collection with your friends and family!
|
||||
</div>
|
||||
|
||||
## Goals
|
||||
- [x] Serve up Manga/Webtoons/Comics (cbr, cbz, zip/rar, 7zip, raw images) and Books (epub, pdf)
|
||||
- [x] Serve up Manga/Webtoons/Comics (cbr, cbz, zip/rar/rar5, 7zip, raw images) and Books (epub, pdf)
|
||||
- [x] First class responsive readers that work great on any device (phone, tablet, desktop)
|
||||
- [x] Dark mode and customizable theming support
|
||||
- [ ] Provide a plugin system to allow external metadata integration and scrobbling for read status, ratings, and reviews
|
||||
- [x] Metadata should allow for collections, want to read integration from 3rd party services, genres.
|
||||
- [x] Rich Metadata support with filtering and searching
|
||||
- [x] Ways to group reading material: Collections, Reading Lists, Want to Read
|
||||
- [x] Ability to manage users, access, and ratings
|
||||
- [x] Fully Accessible with active accessibility audits
|
||||
- [x] Dedicated webtoon reading mode
|
||||
@ -57,18 +57,19 @@ Kavita is being actively developed and should be considered beta software until
|
||||
Kavita may be subject to changes in how the platform functions as it is being built out toward the
|
||||
vision. You may lose data and have to restart. The Kavita team strives to avoid any data loss.
|
||||
|
||||
## Donate
|
||||
If you like Kavita, have gotten good use out of it, or feel like you want to say thanks with a few bucks, feel free to donate. Money will go towards
|
||||
expenses related to Kavita. Back us through [OpenCollective](https://opencollective.com/Kavita#backer). You can also use [Paypal](https://www.paypal.com/paypalme/majora2007?locale.x=en_US), however your name will not show below.
|
||||
|
||||
|
||||
## Contributors
|
||||
|
||||
This project exists thanks to all the people who contribute. [Contribute](CONTRIBUTING.md).
|
||||
This project exists thanks to all the people who contribute and downstream library maintainers. [Contribute](CONTRIBUTING.md).
|
||||
<a href="https://github.com/Kareadita/Kavita/graphs/contributors">
|
||||
<img src="https://opencollective.com/kavita/contributors.svg?width=890&button=false&avatarHeight=42" />
|
||||
</a>
|
||||
|
||||
|
||||
## Donate
|
||||
If you like Kavita, have gotten good use out of it, or feel like you want to say thanks with a few bucks, feel free to donate. Money will go towards
|
||||
expenses related to Kavita. Back us through [OpenCollective](https://opencollective.com/Kavita#backer). You can also use [Paypal](https://www.paypal.com/paypalme/majora2007?locale.x=en_US), however your name will not show below.
|
||||
|
||||
## Backers
|
||||
|
||||
Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/Kavita#backer)
|
||||
|
@ -19,7 +19,7 @@ import { BookWhiteTheme } from '../../_models/book-white-theme';
|
||||
*/
|
||||
export interface PageStyle {
|
||||
'font-family': string;
|
||||
'font-size': string;
|
||||
'font-size': string;
|
||||
'line-height': string;
|
||||
'margin-left': string;
|
||||
'margin-right': string;
|
||||
@ -92,7 +92,7 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
* Outputs when immersive mode is changed
|
||||
*/
|
||||
@Output() immersiveMode: EventEmitter<boolean> = new EventEmitter();
|
||||
|
||||
|
||||
user!: User;
|
||||
/**
|
||||
* List of all font families user can select from
|
||||
@ -131,12 +131,12 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
|
||||
|
||||
|
||||
constructor(private bookService: BookService, private accountService: AccountService,
|
||||
constructor(private bookService: BookService, private accountService: AccountService,
|
||||
@Inject(DOCUMENT) private document: Document, private themeService: ThemeService,
|
||||
private readonly cdRef: ChangeDetectorRef) {}
|
||||
|
||||
ngOnInit(): void {
|
||||
|
||||
|
||||
this.fontFamilies = this.bookService.getFontFamilies();
|
||||
this.fontOptions = this.fontFamilies.map(f => f.title);
|
||||
this.cdRef.markForCheck();
|
||||
@ -144,7 +144,7 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
this.accountService.currentUser$.pipe(take(1)).subscribe(user => {
|
||||
if (user) {
|
||||
this.user = user;
|
||||
|
||||
|
||||
if (this.user.preferences.bookReaderFontFamily === undefined) {
|
||||
this.user.preferences.bookReaderFontFamily = 'default';
|
||||
}
|
||||
@ -161,8 +161,8 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
this.user.preferences.bookReaderReadingDirection = ReadingDirection.LeftToRight;
|
||||
}
|
||||
this.readingDirectionModel = this.user.preferences.bookReaderReadingDirection;
|
||||
|
||||
|
||||
|
||||
|
||||
this.settingsForm.addControl('bookReaderFontFamily', new FormControl(this.user.preferences.bookReaderFontFamily, []));
|
||||
this.settingsForm.get('bookReaderFontFamily')!.valueChanges.pipe(takeUntil(this.onDestroy)).subscribe(fontName => {
|
||||
const familyName = this.fontFamilies.filter(f => f.title === fontName)[0].family;
|
||||
@ -174,7 +174,7 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
|
||||
this.styleUpdate.emit(this.pageStyles);
|
||||
});
|
||||
|
||||
|
||||
this.settingsForm.addControl('bookReaderFontSize', new FormControl(this.user.preferences.bookReaderFontSize, []));
|
||||
this.settingsForm.get('bookReaderFontSize')?.valueChanges.pipe(takeUntil(this.onDestroy)).subscribe(value => {
|
||||
this.pageStyles['font-size'] = value + '%';
|
||||
@ -211,14 +211,14 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
this.immersiveMode.emit(immersiveMode);
|
||||
});
|
||||
|
||||
|
||||
|
||||
this.setTheme(this.user.preferences.bookReaderThemeName || this.themeService.defaultBookTheme);
|
||||
this.cdRef.markForCheck();
|
||||
|
||||
// Emit first time so book reader gets the setting
|
||||
this.readingDirection.emit(this.readingDirectionModel);
|
||||
this.clickToPaginateChanged.emit(this.user.preferences.bookReaderTapToPaginate);
|
||||
this.clickToPaginateChanged.emit(this.user.preferences.bookReaderTapToPaginate);
|
||||
this.layoutModeUpdate.emit(this.user.preferences.bookReaderLayoutMode);
|
||||
this.immersiveMode.emit(this.user.preferences.bookReaderImmersiveMode);
|
||||
|
||||
@ -227,7 +227,7 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
this.resetSettings();
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@ -243,14 +243,14 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
} else {
|
||||
this.setPageStyles();
|
||||
}
|
||||
|
||||
|
||||
this.settingsForm.get('bookReaderFontFamily')?.setValue(this.user.preferences.bookReaderFontFamily);
|
||||
this.settingsForm.get('bookReaderFontSize')?.setValue(this.user.preferences.bookReaderFontSize);
|
||||
this.settingsForm.get('bookReaderLineSpacing')?.setValue(this.user.preferences.bookReaderLineSpacing);
|
||||
this.settingsForm.get('bookReaderMargin')?.setValue(this.user.preferences.bookReaderMargin);
|
||||
this.settingsForm.get('bookReaderReadingDirection')?.setValue(this.user.preferences.bookReaderReadingDirection);
|
||||
this.settingsForm.get('bookReaderTapToPaginate')?.setValue(this.user.preferences.bookReaderTapToPaginate);
|
||||
this.settingsForm.get('layoutMode')?.setValue(this.user.preferences.layoutMode);
|
||||
this.settingsForm.get('bookReaderLayoutMode')?.setValue(this.user.preferences.bookReaderLayoutMode);
|
||||
this.settingsForm.get('bookReaderImmersiveMode')?.setValue(this.user.preferences.bookReaderImmersiveMode);
|
||||
this.cdRef.detectChanges();
|
||||
this.styleUpdate.emit(this.pageStyles);
|
||||
@ -263,7 +263,7 @@ export class ReaderSettingsComponent implements OnInit, OnDestroy {
|
||||
const windowWidth = window.innerWidth
|
||||
|| this.document.documentElement.clientWidth
|
||||
|| this.document.body.clientWidth;
|
||||
|
||||
|
||||
|
||||
let defaultMargin = '15%';
|
||||
if (windowWidth <= mobileBreakpointMarginOverride) {
|
||||
|
@ -44,7 +44,7 @@
|
||||
<!-- Pagination controls and screen hints-->
|
||||
<div class="pagination-area">
|
||||
<div class="{{readerMode === ReaderMode.LeftRight ? 'left' : 'top'}} {{clickOverlayClass('left')}}" (click)="handlePageChange($event, KeyDirection.Left)"
|
||||
[ngStyle]="{'height': (readerMode === ReaderMode.LeftRight ? ImageHeight: '25%')}">
|
||||
[ngStyle]="{'height': (readerMode === ReaderMode.LeftRight ? ImageHeight: '25%'), 'max-height': MaxHeight}">
|
||||
<div *ngIf="showClickOverlay">
|
||||
<i class="fa fa-angle-{{readingDirection === ReadingDirection.RightToLeft ? 'double-' : ''}}{{readerMode === ReaderMode.LeftRight ? 'left' : 'up'}}"
|
||||
title="Previous Page" aria-hidden="true"></i>
|
||||
@ -53,7 +53,8 @@
|
||||
<div class="{{readerMode === ReaderMode.LeftRight ? 'right' : 'bottom'}} {{clickOverlayClass('right')}}" (click)="handlePageChange($event, KeyDirection.Right)"
|
||||
[ngStyle]="{'height': (readerMode === ReaderMode.LeftRight ? ImageHeight: '25%'),
|
||||
'left': 'inherit',
|
||||
'right': RightPaginationOffset + 'px'}">
|
||||
'right': RightPaginationOffset + 'px',
|
||||
'max-height': MaxHeight}">
|
||||
<div *ngIf="showClickOverlay">
|
||||
<i class="fa fa-angle-{{readingDirection === ReadingDirection.LeftToRight ? 'double-' : ''}}{{readerMode === ReaderMode.LeftRight ? 'right' : 'down'}}"
|
||||
title="Next Page" aria-hidden="true"></i>
|
||||
|
@ -370,12 +370,22 @@ export class MangaReaderComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||
}
|
||||
|
||||
get ImageHeight() {
|
||||
if (this.FittingOption !== FITTING_OPTION.HEIGHT) return this.mangaReaderService.getPageDimensions(this.pageNum)?.height + 'px';
|
||||
if (this.FittingOption !== FITTING_OPTION.HEIGHT) {
|
||||
return this.mangaReaderService.getPageDimensions(this.pageNum)?.height + 'px';
|
||||
}
|
||||
return this.readingArea?.nativeElement?.clientHeight + 'px';
|
||||
}
|
||||
|
||||
// This is for the pagination area
|
||||
get MaxHeight() {
|
||||
if (this.FittingOption !== FITTING_OPTION.HEIGHT) {
|
||||
return this.mangaReaderService.getPageDimensions(this.pageNum)?.height + 'px';
|
||||
}
|
||||
return 'calc(var(--vh) * 100)';
|
||||
}
|
||||
|
||||
get RightPaginationOffset() {
|
||||
if (this.readerMode === ReaderMode.LeftRight && this.FittingOption === FITTING_OPTION.HEIGHT) {
|
||||
if (this.readerMode === ReaderMode.LeftRight && this.FittingOption !== FITTING_OPTION.WIDTH) {
|
||||
return (this.readingArea?.nativeElement?.scrollLeft || 0) * -1;
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user