Configure Scanner
@@ -119,6 +122,9 @@ export default {
collapseSeries() {
return this.$store.getters['user/getUserSetting']('collapseSeries')
},
+ collapseBookSeries() {
+ return this.$store.getters['user/getUserSetting']('collapseBookSeries')
+ },
coverAspectRatio() {
return this.$store.getters['libraries/getBookCoverAspectRatio']
},
@@ -319,7 +325,6 @@ export default {
this.totalEntities = payload.total
this.totalShelves = Math.ceil(this.totalEntities / this.entitiesPerShelf)
this.entities = new Array(this.totalEntities)
- this.$eventBus.$emit('bookshelf-total-entities', this.totalEntities)
}
for (let i = 0; i < payload.results.length; i++) {
@@ -329,8 +334,21 @@ export default {
this.entityComponentRefs[index].setEntity(this.entities[index])
}
}
+
+ this.$eventBus.$emit('bookshelf-total-entities', this.getEntitiesCount())
}
},
+ getEntitiesCount() {
+ let uniqueEntities = new Set()
+ this.entities.forEach(entity => {
+ if (entity.collapsedSeries) {
+ entity.collapsedSeries.libraryItemIds.forEach(uniqueEntities.add, uniqueEntities)
+ } else {
+ uniqueEntities.add(entity.id)
+ }
+ });
+ return uniqueEntities.size
+ },
loadPage(page) {
this.pagesLoaded[page] = true
this.fetchEntites(page)
@@ -437,6 +455,9 @@ export default {
searchParams.set('filter', this.seriesFilterBy)
} else if (this.page === 'series-books') {
searchParams.set('filter', `series.${this.$encode(this.seriesId)}`)
+ if (this.collapseBookSeries) {
+ searchParams.set('collapseseries', 1)
+ }
} else {
if (this.filterBy && this.filterBy !== 'all') {
searchParams.set('filter', this.filterBy)
@@ -452,8 +473,6 @@ export default {
return searchParams.toString()
},
checkUpdateSearchParams() {
- if (this.page === 'series-books') return false
-
var newSearchParams = this.buildSearchParams()
var currentQueryString = window.location.search
if (currentQueryString && currentQueryString.startsWith('?')) currentQueryString = currentQueryString.slice(1)
@@ -513,7 +532,7 @@ export default {
if (indexOf >= 0) {
this.entities = this.entities.filter((ent) => ent.id !== libraryItem.id)
this.totalEntities = this.entities.length
- this.$eventBus.$emit('bookshelf-total-entities', this.totalEntities)
+ this.$eventBus.$emit('bookshelf-total-entities', this.getEntitiesCount())
this.executeRebuild()
}
}
@@ -551,7 +570,7 @@ export default {
if (indexOf >= 0) {
this.entities = this.entities.filter((ent) => ent.id !== collection.id)
this.totalEntities = this.entities.length
- this.$eventBus.$emit('bookshelf-total-entities', this.totalEntities)
+ this.$eventBus.$emit('bookshelf-total-entities', this.getEntitiesCount())
this.executeRebuild()
}
},
@@ -715,6 +734,7 @@ export default {
.bookshelfRow {
background-image: var(--bookshelf-texture-img);
}
+
.bookshelfDivider {
background: rgb(149, 119, 90);
background: var(--bookshelf-divider-bg);
diff --git a/client/components/cards/LazyBookCard.vue b/client/components/cards/LazyBookCard.vue
index d437c67d..85ac20a5 100644
--- a/client/components/cards/LazyBookCard.vue
+++ b/client/components/cards/LazyBookCard.vue
@@ -1,106 +1,164 @@
-
+
-
+
{{ displayTitle }}
-
{{ displayLineTwo || ' ' }}
-
{{ displaySortLine }}
+
{{ displayLineTwo ||
+ ' '
+ }}
+
{{
+ displaySortLine
+ }}
-
{{ booksInSeries }}
+
+
#{{ seriesSequenceList }}
+
+
-
-
{{ title }}
+
-
![]()
+
![]()
-
+
-
{{ titleCleaned }}
+
+ {{ titleCleaned }}
-
-
+
+
-
+
-
+
-
-
-
+
edit
-
-
{{ selected ? 'radio_button_checked' : 'radio_button_unchecked' }}
+
+ {{ selected ? 'radio_button_checked' :
+ 'radio_button_unchecked'
+ }}
-
-
+
-
+
-
-
priority_high
+
+ priority_high
-
+
rss_feed
-
+
-
+
Episode #{{ recentEpisodeNumber }}
-
@@ -236,6 +294,9 @@ export default {
// Only added to item object when collapseSeries is enabled
return this.collapsedSeries ? this.collapsedSeries.numBooks : 0
},
+ seriesSequenceList() {
+ return this.collapsedSeries ? this.collapsedSeries.seriesSequenceList : null
+ },
libraryItemIdsInSeries() {
// Only added to item object when collapseSeries is enabled
return this.collapsedSeries ? this.collapsedSeries.libraryItemIds || [] : []
@@ -515,7 +576,7 @@ export default {
}
}
var mediaMetadata = libraryItem.media.metadata
- if (mediaMetadata.series) {
+ if (mediaMetadata.series && Array.isArray(mediaMetadata.series)) {
var newSeries = mediaMetadata.series.find((se) => se.id === this.series.id)
if (newSeries) {
// update selected series
diff --git a/client/components/controls/LibrarySortSelect.vue b/client/components/controls/LibrarySortSelect.vue
index 88363583..1bb6e9bb 100644
--- a/client/components/controls/LibrarySortSelect.vue
+++ b/client/components/controls/LibrarySortSelect.vue
@@ -1,19 +1,27 @@
-