mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Add:Ebook and supplementary ebook library filters
This commit is contained in:
		
							parent
							
								
									a9f5c64204
								
							
						
					
					
						commit
						aae92649b1
					
				@ -188,9 +188,9 @@ export default {
 | 
			
		||||
          sublist: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          text: this.$strings.LabelEbook,
 | 
			
		||||
          value: 'ebook',
 | 
			
		||||
          sublist: false
 | 
			
		||||
          text: this.$strings.LabelEbooks,
 | 
			
		||||
          value: 'ebooks',
 | 
			
		||||
          sublist: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          text: this.$strings.LabelAbridged,
 | 
			
		||||
@ -341,6 +341,18 @@ export default {
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    ebooks() {
 | 
			
		||||
      return [
 | 
			
		||||
        {
 | 
			
		||||
          id: 'ebook',
 | 
			
		||||
          name: this.$strings.LabelHasEbook
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 'supplementary',
 | 
			
		||||
          name: this.$strings.LabelHasSupplementaryEbook
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    missing() {
 | 
			
		||||
      return [
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
@ -80,7 +80,7 @@ export const actions = {
 | 
			
		||||
      if (state.settings.orderBy == 'media.metadata.publishedYear') {
 | 
			
		||||
        settingsUpdate.orderBy = 'media.metadata.title'
 | 
			
		||||
      }
 | 
			
		||||
      const invalidFilters = ['series', 'authors', 'narrators', 'languages', 'progress', 'issues']
 | 
			
		||||
      const invalidFilters = ['series', 'authors', 'narrators', 'languages', 'progress', 'issues', 'ebooks', 'abridged']
 | 
			
		||||
      const filterByFirstPart = (state.settings.filterBy || '').split('.').shift()
 | 
			
		||||
      if (invalidFilters.includes(filterByFirstPart)) {
 | 
			
		||||
        settingsUpdate.filterBy = 'all'
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Laufzeit",
 | 
			
		||||
  "LabelDurationFound": "Gefundene Laufzeit:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Bearbeiten",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Kategorie",
 | 
			
		||||
  "LabelGenres": "Kategorien",
 | 
			
		||||
  "LabelHardDeleteFile": "Datei dauerhaft löschen",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Stunde",
 | 
			
		||||
  "LabelIcon": "Symbol",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Duration",
 | 
			
		||||
  "LabelDurationFound": "Duration found:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Edit",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genre",
 | 
			
		||||
  "LabelGenres": "Genres",
 | 
			
		||||
  "LabelHardDeleteFile": "Hard delete file",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Hour",
 | 
			
		||||
  "LabelIcon": "Icon",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Duración",
 | 
			
		||||
  "LabelDurationFound": "Duración Comprobada:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Editar",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genero",
 | 
			
		||||
  "LabelGenres": "Géneros",
 | 
			
		||||
  "LabelHardDeleteFile": "Eliminar Definitivamente",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Hora",
 | 
			
		||||
  "LabelIcon": "Icono",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Durée",
 | 
			
		||||
  "LabelDurationFound": "Durée trouvée :",
 | 
			
		||||
  "LabelEbook": "E-book",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Modifier",
 | 
			
		||||
  "LabelEmail": "E-mail",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "Expéditeur",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genre",
 | 
			
		||||
  "LabelGenres": "Genres",
 | 
			
		||||
  "LabelHardDeleteFile": "Suppression du fichier",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Hôte",
 | 
			
		||||
  "LabelHour": "Heure",
 | 
			
		||||
  "LabelIcon": "Icone",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Duration",
 | 
			
		||||
  "LabelDurationFound": "Duration found:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Edit",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genre",
 | 
			
		||||
  "LabelGenres": "Genres",
 | 
			
		||||
  "LabelHardDeleteFile": "Hard delete file",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Hour",
 | 
			
		||||
  "LabelIcon": "Icon",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Duration",
 | 
			
		||||
  "LabelDurationFound": "Duration found:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Edit",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genre",
 | 
			
		||||
  "LabelGenres": "Genres",
 | 
			
		||||
  "LabelHardDeleteFile": "Hard delete file",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Hour",
 | 
			
		||||
  "LabelIcon": "Icon",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Trajanje",
 | 
			
		||||
  "LabelDurationFound": "Pronađeno trajanje:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Uredi",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genre",
 | 
			
		||||
  "LabelGenres": "Žanrovi",
 | 
			
		||||
  "LabelHardDeleteFile": "Obriši datoteku zauvijek",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Sat",
 | 
			
		||||
  "LabelIcon": "Ikona",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Durata",
 | 
			
		||||
  "LabelDurationFound": "Durata Trovata:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Modifica",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genere",
 | 
			
		||||
  "LabelGenres": "Generi",
 | 
			
		||||
  "LabelHardDeleteFile": "Elimina Definitivamente",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Ora",
 | 
			
		||||
  "LabelIcon": "Icona",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Duur",
 | 
			
		||||
  "LabelDurationFound": "Gevonden duur:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Wijzig",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Genre",
 | 
			
		||||
  "LabelGenres": "Genres",
 | 
			
		||||
  "LabelHardDeleteFile": "Hard-delete bestand",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Uur",
 | 
			
		||||
  "LabelIcon": "Icoon",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Czas trwania",
 | 
			
		||||
  "LabelDurationFound": "Znaleziona długość:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Edytuj",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Gatunek",
 | 
			
		||||
  "LabelGenres": "Gatunki",
 | 
			
		||||
  "LabelHardDeleteFile": "Usuń trwale plik",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Godzina",
 | 
			
		||||
  "LabelIcon": "Ikona",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "Длина",
 | 
			
		||||
  "LabelDurationFound": "Найденная длина:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "Редактировать",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "Жанр",
 | 
			
		||||
  "LabelGenres": "Жанры",
 | 
			
		||||
  "LabelHardDeleteFile": "Жесткое удаление файла",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "Часы",
 | 
			
		||||
  "LabelIcon": "Иконка",
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,7 @@
 | 
			
		||||
  "LabelDuration": "持续时间",
 | 
			
		||||
  "LabelDurationFound": "找到持续时间:",
 | 
			
		||||
  "LabelEbook": "Ebook",
 | 
			
		||||
  "LabelEbooks": "Ebooks",
 | 
			
		||||
  "LabelEdit": "编辑",
 | 
			
		||||
  "LabelEmail": "Email",
 | 
			
		||||
  "LabelEmailSettingsFromAddress": "From Address",
 | 
			
		||||
@ -251,6 +252,8 @@
 | 
			
		||||
  "LabelGenre": "流派",
 | 
			
		||||
  "LabelGenres": "流派",
 | 
			
		||||
  "LabelHardDeleteFile": "完全删除文件",
 | 
			
		||||
  "LabelHasEbook": "Has ebook",
 | 
			
		||||
  "LabelHasSupplementaryEbook": "Has supplementary ebook",
 | 
			
		||||
  "LabelHost": "Host",
 | 
			
		||||
  "LabelHour": "小时",
 | 
			
		||||
  "LabelIcon": "图标",
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ module.exports = {
 | 
			
		||||
  getFilteredLibraryItems(libraryItems, filterBy, user, feedsArray) {
 | 
			
		||||
    let filtered = libraryItems
 | 
			
		||||
 | 
			
		||||
    const searchGroups = ['genres', 'tags', 'series', 'authors', 'progress', 'narrators', 'missing', 'languages', 'tracks']
 | 
			
		||||
    const searchGroups = ['genres', 'tags', 'series', 'authors', 'progress', 'narrators', 'missing', 'languages', 'tracks', 'ebooks']
 | 
			
		||||
    const group = searchGroups.find(_group => filterBy.startsWith(_group + '.'))
 | 
			
		||||
    if (group) {
 | 
			
		||||
      const filterVal = filterBy.replace(`${group}.`, '')
 | 
			
		||||
@ -62,6 +62,9 @@ module.exports = {
 | 
			
		||||
      } else if (group === 'tracks') {
 | 
			
		||||
        if (filter === 'single') filtered = filtered.filter(li => li.isBook && li.media.numTracks === 1)
 | 
			
		||||
        else if (filter === 'multi') filtered = filtered.filter(li => li.isBook && li.media.numTracks > 1)
 | 
			
		||||
      } else if (group === 'ebooks') {
 | 
			
		||||
        if (filter === 'ebook') filtered = filtered.filter(li => li.media.ebookFile)
 | 
			
		||||
        else if (filter === 'supplementary') filtered = filtered.filter(li => li.libraryFiles.some(lf => lf.isEBookFile && lf.ino !== li.media.ebookFile?.ino))
 | 
			
		||||
      }
 | 
			
		||||
    } else if (filterBy === 'issues') {
 | 
			
		||||
      filtered = filtered.filter(li => li.hasIssues)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user