mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-06-05 01:19:34 +02:00
Merge 25eefa93d6
into fd84cd0d7f
This commit is contained in:
commit
144f1ccee1
@ -72,6 +72,17 @@
|
|||||||
</ui-tooltip>
|
</ui-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="p-2 w-full md:w-1/2">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<ui-toggle-switch v-model="listenAgainOrdered" size="sm" @input="formUpdated" />
|
||||||
|
<ui-tooltip :text="$strings.LabelListenAgainOrderedHelp">
|
||||||
|
<p class="pl-4 text-sm">
|
||||||
|
{{ $strings.LabelListenAgainOrdered }}
|
||||||
|
<span class="material-symbols icon-text text-sm">info</span>
|
||||||
|
</p>
|
||||||
|
</ui-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div v-if="isPodcastLibrary" class="p-2 w-full md:w-1/2">
|
<div v-if="isPodcastLibrary" class="p-2 w-full md:w-1/2">
|
||||||
<ui-dropdown :label="$strings.LabelPodcastSearchRegion" v-model="podcastSearchRegion" :items="$podcastSearchRegionOptions" small class="max-w-72" menu-max-height="200px" @input="formUpdated" />
|
<ui-dropdown :label="$strings.LabelPodcastSearchRegion" v-model="podcastSearchRegion" :items="$podcastSearchRegionOptions" small class="max-w-72" menu-max-height="200px" @input="formUpdated" />
|
||||||
</div>
|
</div>
|
||||||
@ -115,7 +126,8 @@ export default {
|
|||||||
onlyShowLaterBooksInContinueSeries: false,
|
onlyShowLaterBooksInContinueSeries: false,
|
||||||
podcastSearchRegion: 'us',
|
podcastSearchRegion: 'us',
|
||||||
markAsFinishedWhen: 'timeRemaining',
|
markAsFinishedWhen: 'timeRemaining',
|
||||||
markAsFinishedValue: 10
|
markAsFinishedValue: 10,
|
||||||
|
listenAgainOrdered: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -177,7 +189,8 @@ export default {
|
|||||||
onlyShowLaterBooksInContinueSeries: !!this.onlyShowLaterBooksInContinueSeries,
|
onlyShowLaterBooksInContinueSeries: !!this.onlyShowLaterBooksInContinueSeries,
|
||||||
podcastSearchRegion: this.podcastSearchRegion,
|
podcastSearchRegion: this.podcastSearchRegion,
|
||||||
markAsFinishedTimeRemaining: markAsFinishedTimeRemaining,
|
markAsFinishedTimeRemaining: markAsFinishedTimeRemaining,
|
||||||
markAsFinishedPercentComplete: markAsFinishedPercentComplete
|
markAsFinishedPercentComplete: markAsFinishedPercentComplete,
|
||||||
|
listenAgainOrdered: !!this.listenAgainOrdered
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -199,6 +212,7 @@ export default {
|
|||||||
this.markAsFinishedWhen = 'timeRemaining'
|
this.markAsFinishedWhen = 'timeRemaining'
|
||||||
}
|
}
|
||||||
this.markAsFinishedValue = this.librarySettings.markAsFinishedTimeRemaining || this.librarySettings.markAsFinishedPercentComplete || 10
|
this.markAsFinishedValue = this.librarySettings.markAsFinishedTimeRemaining || this.librarySettings.markAsFinishedPercentComplete || 10
|
||||||
|
this.listenAgainOrdered = !!this.librarySettings.listenAgainOrdered
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -419,6 +419,8 @@
|
|||||||
"LabelLimit": "Limit",
|
"LabelLimit": "Limit",
|
||||||
"LabelLineSpacing": "Line spacing",
|
"LabelLineSpacing": "Line spacing",
|
||||||
"LabelListenAgain": "Listen Again",
|
"LabelListenAgain": "Listen Again",
|
||||||
|
"LabelListenAgainOrdered": "Sort listen again by finish date",
|
||||||
|
"LabelListenAgainOrderedHelp": "If enabled, the listen again section in the shelf view will be sorted by the finish date instead of random order.",
|
||||||
"LabelLogLevelDebug": "Debug",
|
"LabelLogLevelDebug": "Debug",
|
||||||
"LabelLogLevelInfo": "Info",
|
"LabelLogLevelInfo": "Info",
|
||||||
"LabelLogLevelWarn": "Warn",
|
"LabelLogLevelWarn": "Warn",
|
||||||
|
@ -14,6 +14,7 @@ const Logger = require('../Logger')
|
|||||||
* @property {string[]} metadataPrecedence
|
* @property {string[]} metadataPrecedence
|
||||||
* @property {number} markAsFinishedTimeRemaining Time remaining in seconds to mark as finished. (defaults to 10s)
|
* @property {number} markAsFinishedTimeRemaining Time remaining in seconds to mark as finished. (defaults to 10s)
|
||||||
* @property {number} markAsFinishedPercentComplete Percent complete to mark as finished (0-100). If this is set it will be used over markAsFinishedTimeRemaining.
|
* @property {number} markAsFinishedPercentComplete Percent complete to mark as finished (0-100). If this is set it will be used over markAsFinishedTimeRemaining.
|
||||||
|
* @property {boolean} listenAgainOrdered Order listen again items by progress or random
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Library extends Model {
|
class Library extends Model {
|
||||||
@ -61,7 +62,8 @@ class Library extends Model {
|
|||||||
autoScanCronExpression: null,
|
autoScanCronExpression: null,
|
||||||
podcastSearchRegion: 'us',
|
podcastSearchRegion: 'us',
|
||||||
markAsFinishedPercentComplete: null,
|
markAsFinishedPercentComplete: null,
|
||||||
markAsFinishedTimeRemaining: 10
|
markAsFinishedTimeRemaining: 10,
|
||||||
|
listenAgainOrdered: false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
@ -76,7 +78,8 @@ class Library extends Model {
|
|||||||
onlyShowLaterBooksInContinueSeries: false,
|
onlyShowLaterBooksInContinueSeries: false,
|
||||||
metadataPrecedence: this.defaultMetadataPrecedence,
|
metadataPrecedence: this.defaultMetadataPrecedence,
|
||||||
markAsFinishedPercentComplete: null,
|
markAsFinishedPercentComplete: null,
|
||||||
markAsFinishedTimeRemaining: 10
|
markAsFinishedTimeRemaining: 10,
|
||||||
|
listenAgainOrdered: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,8 +163,9 @@ module.exports = {
|
|||||||
* @returns {Promise<{ items:oldLibraryItem[], count:number }>}
|
* @returns {Promise<{ items:oldLibraryItem[], count:number }>}
|
||||||
*/
|
*/
|
||||||
async getMediaFinished(library, user, include, limit) {
|
async getMediaFinished(library, user, include, limit) {
|
||||||
|
const sortBy = library.settings.listenAgainOrdered ? 'progress' : 'random'
|
||||||
if (library.isBook) {
|
if (library.isBook) {
|
||||||
const { libraryItems, count } = await libraryItemsBookFilters.getFilteredLibraryItems(library.id, user, 'progress', 'finished', 'progress', true, false, include, limit, 0)
|
const { libraryItems, count } = await libraryItemsBookFilters.getFilteredLibraryItems(library.id, user, 'progress', 'finished', sortBy, true, false, include, limit, 0)
|
||||||
return {
|
return {
|
||||||
items: libraryItems.map((li) => {
|
items: libraryItems.map((li) => {
|
||||||
const oldLibraryItem = li.toOldJSONMinified()
|
const oldLibraryItem = li.toOldJSONMinified()
|
||||||
@ -179,7 +180,7 @@ module.exports = {
|
|||||||
count
|
count
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const { libraryItems, count } = await libraryItemsPodcastFilters.getFilteredPodcastEpisodes(library.id, user, 'progress', 'finished', 'progress', true, limit, 0)
|
const { libraryItems, count } = await libraryItemsPodcastFilters.getFilteredPodcastEpisodes(library.id, user, 'progress', 'finished', sortBy, true, limit, 0)
|
||||||
return {
|
return {
|
||||||
count,
|
count,
|
||||||
items: libraryItems.map((li) => {
|
items: libraryItems.map((li) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user