diff --git a/client/components/controls/LibraryFilterSelect.vue b/client/components/controls/LibraryFilterSelect.vue index 4834a1a25..66c41c839 100644 --- a/client/components/controls/LibraryFilterSelect.vue +++ b/client/components/controls/LibraryFilterSelect.vue @@ -389,7 +389,7 @@ export default { return this.filterData.publishedDecades || [] }, progress() { - return [ + const items = [ { id: 'finished', name: this.$strings.LabelFinished @@ -398,6 +398,15 @@ export default { id: 'in-progress', name: this.$strings.LabelInProgress }, + ] + // only add "started series" filter in series view + if (this.isSeries) { + items.push({ + id: 'started-series', + name: this.$strings.LabelStarted + }) + } + items.push( { id: 'not-started', name: this.$strings.LabelNotStarted @@ -406,7 +415,8 @@ export default { id: 'not-finished', name: this.$strings.LabelNotFinished } - ] + ) + return items }, tracks() { return [ diff --git a/server/utils/queries/seriesFilters.js b/server/utils/queries/seriesFilters.js index ed71e5b3f..578934809 100644 --- a/server/utils/queries/seriesFilters.js +++ b/server/utils/queries/seriesFilters.js @@ -83,6 +83,9 @@ module.exports = { const progQuery = 'SELECT count(*) FROM books b, bookSeries bs LEFT OUTER JOIN mediaProgresses mp ON mp.mediaItemId = b.id AND mp.userId = :userId WHERE bs.seriesId = series.id AND bs.bookId = b.id AND (mp.isFinished = 1 OR mp.currentTime > 0)' seriesWhere.push(Sequelize.where(Sequelize.literal(`(${progQuery})`), 0)) userPermissionBookWhere.replacements.userId = user.id + } else if (filterValue === 'started-series') { + attrQuery = 'SELECT count(*) FROM books b, bookSeries bs LEFT OUTER JOIN mediaProgresses mp ON mp.mediaItemId = b.id AND mp.userId = :userId WHERE bs.seriesId = series.id AND bs.bookId = b.id AND (mp.isFinished = 1 OR mp.currentTime > 0 OR mp.ebookProgress > 0)' + userPermissionBookWhere.replacements.userId = user.id } else if (filterValue === 'in-progress') { attrQuery = 'SELECT count(*) FROM books b, bookSeries bs LEFT OUTER JOIN mediaProgresses mp ON mp.mediaItemId = b.id AND mp.userId = :userId WHERE bs.seriesId = series.id AND bs.bookId = b.id AND (mp.currentTime > 0 OR mp.ebookProgress > 0) AND mp.isFinished = 0' userPermissionBookWhere.replacements.userId = user.id