mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-01-22 00:07:52 +01:00
Add expand library item authors to /items/:id route
This commit is contained in:
parent
e1e6b46456
commit
28d76d21f1
@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div @mouseover="mouseover" @mouseout="mouseout">
|
<div @mouseover="mouseover" @mouseout="mouseout">
|
||||||
<div :style="{ width: width + 'px', height: height + 'px' }" class="bg-primary box-shadow-book rounded-lg relative overflow-hidden">
|
<div :style="{ width: width + 'px', height: height + 'px' }" class="bg-primary box-shadow-book rounded-md relative overflow-hidden">
|
||||||
<!-- Image or placeholder -->
|
<!-- Image or placeholder -->
|
||||||
<covers-author-image :author="author" />
|
<covers-author-image :author="author" />
|
||||||
|
|
||||||
<!-- Author name & num books overlay -->
|
<!-- Author name & num books overlay -->
|
||||||
<div v-show="!searching" class="absolute bottom-0 left-0 w-full py-1 bg-black bg-opacity-60 px-2">
|
<div v-show="!searching && !nameBelow" class="absolute bottom-0 left-0 w-full py-1 bg-black bg-opacity-60 px-2">
|
||||||
<p class="text-center font-semibold truncate" :style="{ fontSize: sizeMultiplier * 0.75 + 'rem' }">{{ name }}</p>
|
<p class="text-center font-semibold truncate" :style="{ fontSize: sizeMultiplier * 0.75 + 'rem' }">{{ name }}</p>
|
||||||
<p class="text-center text-gray-200" :style="{ fontSize: sizeMultiplier * 0.65 + 'rem' }">{{ numBooks }} Book{{ numBooks === 1 ? '' : 's' }}</p>
|
<p class="text-center text-gray-200" :style="{ fontSize: sizeMultiplier * 0.65 + 'rem' }">{{ numBooks }} Book{{ numBooks === 1 ? '' : 's' }}</p>
|
||||||
</div>
|
</div>
|
||||||
@ -23,6 +23,9 @@
|
|||||||
<widgets-loading-spinner size="" />
|
<widgets-loading-spinner size="" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-show="nameBelow" class="w-full py-1 px-2">
|
||||||
|
<p class="text-center font-semibold truncate text-gray-200" :style="{ fontSize: sizeMultiplier * 0.75 + 'rem' }">{{ name }}</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -38,7 +41,8 @@ export default {
|
|||||||
sizeMultiplier: {
|
sizeMultiplier: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 1
|
default: 1
|
||||||
}
|
},
|
||||||
|
nameBelow: Boolean
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -158,10 +158,11 @@ export default {
|
|||||||
if (!store.state.user.user) {
|
if (!store.state.user.user) {
|
||||||
return redirect(`/login?redirect=${route.path}`)
|
return redirect(`/login?redirect=${route.path}`)
|
||||||
}
|
}
|
||||||
var item = await app.$axios.$get(`/api/items/${params.id}?expanded=1`).catch((error) => {
|
var item = await app.$axios.$get(`/api/items/${params.id}?expanded=1&include=authors`).catch((error) => {
|
||||||
console.error('Failed', error)
|
console.error('Failed', error)
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
console.log(item)
|
||||||
if (!item) {
|
if (!item) {
|
||||||
console.error('No item...', params.id)
|
console.error('No item...', params.id)
|
||||||
return redirect('/')
|
return redirect('/')
|
||||||
|
@ -5,8 +5,26 @@ const { ScanResult } = require('../utils/constants')
|
|||||||
class LibraryItemController {
|
class LibraryItemController {
|
||||||
constructor() { }
|
constructor() { }
|
||||||
|
|
||||||
|
// Example expand with authors: api/items/:id?expanded=1&include=authors
|
||||||
findOne(req, res) {
|
findOne(req, res) {
|
||||||
if (req.query.expanded == 1) return res.json(req.libraryItem.toJSONExpanded())
|
const includeEntities = (req.query.include || '').split(',')
|
||||||
|
if (req.query.expanded == 1) {
|
||||||
|
var item = req.libraryItem.toJSONExpanded()
|
||||||
|
|
||||||
|
if (item.mediaType == 'book') {
|
||||||
|
if (includeEntities.includes('authors')) {
|
||||||
|
item.media.metadata.authors = item.media.metadata.authors.map(au => {
|
||||||
|
var author = this.db.authors.find(_au => _au.id === au.id)
|
||||||
|
if (!author) return null
|
||||||
|
return {
|
||||||
|
...author
|
||||||
|
}
|
||||||
|
}).filter(au => au)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.json(item)
|
||||||
|
}
|
||||||
res.json(req.libraryItem)
|
res.json(req.libraryItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user