mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-07-16 00:44:51 +02:00
Ebook and comic reader #14
This commit is contained in:
parent
3234e7ef06
commit
5a025b3a03
21 changed files with 2139 additions and 14 deletions
|
@ -11,14 +11,17 @@
|
|||
<!-- <button class="mx-1" @click="editAudiobook(ab)">
|
||||
<span class="material-icons text-icon pb-px">edit</span>
|
||||
</button> -->
|
||||
<button v-if="!isPlaying" class="mx-1 rounded-full w-6 h-6" @click="playAudiobook">
|
||||
<button v-if="showRead" class="mx-1 rounded-full w-6 h-6" @click="readBook">
|
||||
<span class="material-icons">auto_stories</span>
|
||||
</button>
|
||||
<button v-if="showPlay" class="mx-1 rounded-full w-6 h-6" @click="playAudiobook">
|
||||
<span class="material-icons">play_arrow</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<p v-if="audiobook.book.subtitle" class="text-gray-200 leading-6 truncate" style="font-size: 0.9rem">{{ audiobook.book.subtitle }}</p>
|
||||
<p class="text-sm text-gray-200">by {{ audiobook.book.author }}</p>
|
||||
<div class="flex items-center py-1">
|
||||
<div v-if="numTracks" class="flex items-center py-1">
|
||||
<p class="text-xs text-gray-300">{{ $elapsedPretty(audiobook.duration) }}</p>
|
||||
<span class="px-3 text-xs text-gray-300">•</span>
|
||||
<p class="text-xs text-gray-300 font-mono">{{ $bytesPretty(audiobook.size, 0) }}</p>
|
||||
|
@ -38,6 +41,9 @@
|
|||
<div v-if="isPlaying" class="w-min my-1 mx-1">
|
||||
<div class="bg-info bg-opacity-70 text-sm px-2 py-px rounded-full whitespace-nowrap">{{ isStreaming ? 'Streaming' : 'Playing' }}</div>
|
||||
</div>
|
||||
<div v-if="hasEbook" class="w-min my-1 mx-1">
|
||||
<div class="bg-bg bg-opacity-70 text-sm px-2 py-px rounded-full whitespace-nowrap">{{ ebookFormat }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -96,12 +102,34 @@ export default {
|
|||
isPlaying() {
|
||||
return this.$store.getters['isAudiobookPlaying'](this.audiobookId)
|
||||
},
|
||||
isMissing() {
|
||||
return this.audiobook.isMissing
|
||||
},
|
||||
isIncomplete() {
|
||||
return this.audiobook.isIncomplete
|
||||
},
|
||||
numTracks() {
|
||||
if (this.audiobook.tracks) return this.audiobook.tracks.length
|
||||
return this.audiobook.numTracks || 0
|
||||
},
|
||||
showPlay() {
|
||||
return !this.isPlaying && !this.isMissing && !this.isIncomplete && this.numTracks
|
||||
},
|
||||
showRead() {
|
||||
return this.hasEbook && this.ebookFormat !== '.pdf'
|
||||
},
|
||||
hasEbook() {
|
||||
return this.audiobook.numEbooks
|
||||
},
|
||||
ebookFormat() {
|
||||
if (!this.audiobook || !this.audiobook.ebooks || !this.audiobook.ebooks.length) return null
|
||||
return this.audiobook.ebooks[0].ext.substr(1)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
readBook() {
|
||||
this.$store.commit('openReader', this.audiobook)
|
||||
},
|
||||
playAudiobook() {
|
||||
if (this.isPlaying) {
|
||||
return
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue