mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-08-31 15:19:34 +02:00
Update:Collections page show total duration #303
This commit is contained in:
parent
9082b76707
commit
92a31c246c
2 changed files with 26 additions and 3 deletions
|
@ -8,7 +8,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex-grow" />
|
<div class="flex-grow" />
|
||||||
<p v-if="totalDuration">{{ totalDurationPretty }}</p>
|
<p v-if="totalDuration" class="text-sm text-gray-200">{{ totalDurationPretty }}</p>
|
||||||
</div>
|
</div>
|
||||||
<template v-for="book in booksCopy">
|
<template v-for="book in booksCopy">
|
||||||
<tables-collection-book-table-row :key="book.id" :book="book" :collection-id="collectionId" class="item collection-book-item" @edit="editBook" />
|
<tables-collection-book-table-row :key="book.id" :book="book" :collection-id="collectionId" class="item collection-book-item" @edit="editBook" />
|
||||||
|
@ -41,12 +41,12 @@ export default {
|
||||||
totalDuration() {
|
totalDuration() {
|
||||||
var _total = 0
|
var _total = 0
|
||||||
this.books.forEach((book) => {
|
this.books.forEach((book) => {
|
||||||
_total += book.duration
|
_total += book.media.duration
|
||||||
})
|
})
|
||||||
return _total
|
return _total
|
||||||
},
|
},
|
||||||
totalDurationPretty() {
|
totalDurationPretty() {
|
||||||
return this.$elapsedPretty(this.totalDuration)
|
return this.$elapsedPrettyExtended(this.totalDuration)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
@ -66,6 +66,29 @@ Vue.prototype.$elapsedPretty = (seconds, useFullNames = false) => {
|
||||||
return `${hours} ${useFullNames ? `hour${hours === 1 ? '' : 's'}` : 'hr'} ${minutes} ${useFullNames ? `minute${minutes === 1 ? '' : 's'}` : 'min'}`
|
return `${hours} ${useFullNames ? `hour${hours === 1 ? '' : 's'}` : 'hr'} ${minutes} ${useFullNames ? `minute${minutes === 1 ? '' : 's'}` : 'min'}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vue.prototype.$elapsedPrettyExtended = (seconds, useDays = true) => {
|
||||||
|
if (isNaN(seconds) || seconds === null) return ''
|
||||||
|
seconds = Math.round(seconds)
|
||||||
|
|
||||||
|
var minutes = Math.floor(seconds / 60)
|
||||||
|
seconds -= minutes * 60
|
||||||
|
var hours = Math.floor(minutes / 60)
|
||||||
|
minutes -= hours * 60
|
||||||
|
|
||||||
|
var days = 0
|
||||||
|
if (useDays || Math.floor(hours / 24) >= 100) {
|
||||||
|
days = Math.floor(hours / 24)
|
||||||
|
hours -= days * 24
|
||||||
|
}
|
||||||
|
|
||||||
|
var strs = []
|
||||||
|
if (days) strs.push(`${days}d`)
|
||||||
|
if (hours) strs.push(`${hours}h`)
|
||||||
|
if (minutes) strs.push(`${minutes}m`)
|
||||||
|
if (seconds) strs.push(`${seconds}s`)
|
||||||
|
return strs.join(' ')
|
||||||
|
}
|
||||||
|
|
||||||
Vue.prototype.$secondsToTimestamp = (seconds) => {
|
Vue.prototype.$secondsToTimestamp = (seconds) => {
|
||||||
var _seconds = seconds
|
var _seconds = seconds
|
||||||
var _minutes = Math.floor(seconds / 60)
|
var _minutes = Math.floor(seconds / 60)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue