Add missing translation keys to list filters
This commit is contained in:
parent
364f53e124
commit
fd851714ae
6 changed files with 347 additions and 73 deletions
|
@ -155,11 +155,15 @@
|
||||||
"systemFontError": "an error occurred when trying to get system fonts"
|
"systemFontError": "an error occurred when trying to get system fonts"
|
||||||
},
|
},
|
||||||
"filter": {
|
"filter": {
|
||||||
|
"album": "$t(entity.album_one)",
|
||||||
"albumArtist": "$t(entity.albumArtist_one)",
|
"albumArtist": "$t(entity.albumArtist_one)",
|
||||||
|
"albumCount": "$t(entity.album_other) count",
|
||||||
"artist": "$t(entity.artist_one)",
|
"artist": "$t(entity.artist_one)",
|
||||||
"biography": "biography",
|
"biography": "biography",
|
||||||
"bitrate": "bitrate",
|
"bitrate": "bitrate",
|
||||||
"bpm": "bpm",
|
"bpm": "bpm",
|
||||||
|
"channels": "$t(common.channel_other)",
|
||||||
|
"comment": "comment",
|
||||||
"communityRating": "community rating",
|
"communityRating": "community rating",
|
||||||
"criticRating": "critic rating",
|
"criticRating": "critic rating",
|
||||||
"dateAdded": "date added",
|
"dateAdded": "date added",
|
||||||
|
@ -167,20 +171,25 @@
|
||||||
"duration": "duration",
|
"duration": "duration",
|
||||||
"favorited": "favorited",
|
"favorited": "favorited",
|
||||||
"fromYear": "from year",
|
"fromYear": "from year",
|
||||||
|
"genre": "$t(entity.genre_one)",
|
||||||
|
"id": "id",
|
||||||
"isCompilation": "is compilation",
|
"isCompilation": "is compilation",
|
||||||
"isFavorited": "is favorited",
|
"isFavorited": "is favorited",
|
||||||
|
"isPublic": "is public",
|
||||||
"isRated": "is rated",
|
"isRated": "is rated",
|
||||||
"isRecentlyPlayed": "is recently played",
|
"isRecentlyPlayed": "is recently played",
|
||||||
"lastPlayed": "last played",
|
"lastPlayed": "last played",
|
||||||
"mostPlayed": "most played",
|
"mostPlayed": "most played",
|
||||||
"name": "name",
|
"name": "name",
|
||||||
"note": "note",
|
"note": "note",
|
||||||
|
"owner": "$t(common.owner)",
|
||||||
"path": "path",
|
"path": "path",
|
||||||
"playCount": "play count",
|
"playCount": "play count",
|
||||||
"random": "random",
|
"random": "random",
|
||||||
"rating": "rating",
|
"rating": "rating",
|
||||||
"recentlyAdded": "recently added",
|
"recentlyAdded": "recently added",
|
||||||
"recentlyPlayed": "recently played",
|
"recentlyPlayed": "recently played",
|
||||||
|
"recentlyUpdated": "recently updated",
|
||||||
"releaseDate": "release date",
|
"releaseDate": "release date",
|
||||||
"releaseYear": "release year",
|
"releaseYear": "release year",
|
||||||
"search": "search",
|
"search": "search",
|
||||||
|
|
|
@ -22,16 +22,33 @@ import {
|
||||||
useListStoreByKey,
|
useListStoreByKey,
|
||||||
} from '/@/renderer/store';
|
} from '/@/renderer/store';
|
||||||
import { ListDisplayType, ServerType, TableColumn } from '/@/renderer/types';
|
import { ListDisplayType, ServerType, TableColumn } from '/@/renderer/types';
|
||||||
|
import i18n from '/@/i18n/i18n';
|
||||||
|
|
||||||
const FILTERS = {
|
const FILTERS = {
|
||||||
jellyfin: [
|
jellyfin: [
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album', value: AlbumArtistListSort.ALBUM },
|
{
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Duration', value: AlbumArtistListSort.DURATION },
|
defaultOrder: SortOrder.ASC,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: AlbumArtistListSort.NAME },
|
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Random', value: AlbumArtistListSort.RANDOM },
|
value: AlbumArtistListSort.ALBUM,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.DESC,
|
defaultOrder: SortOrder.DESC,
|
||||||
name: 'Recently Added',
|
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||||
|
value: AlbumArtistListSort.DURATION,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: AlbumArtistListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||||
|
value: AlbumArtistListSort.RANDOM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||||
value: AlbumArtistListSort.RECENTLY_ADDED,
|
value: AlbumArtistListSort.RECENTLY_ADDED,
|
||||||
},
|
},
|
||||||
// { defaultOrder: SortOrder.DESC, name: 'Release Date', value: AlbumArtistListSort.RELEASE_DATE },
|
// { defaultOrder: SortOrder.DESC, name: 'Release Date', value: AlbumArtistListSort.RELEASE_DATE },
|
||||||
|
@ -39,18 +56,34 @@ const FILTERS = {
|
||||||
navidrome: [
|
navidrome: [
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.DESC,
|
defaultOrder: SortOrder.DESC,
|
||||||
name: 'Album Count',
|
name: i18n.t('filter.albumCount', { postProcess: 'titleCase' }),
|
||||||
value: AlbumArtistListSort.ALBUM_COUNT,
|
value: AlbumArtistListSort.ALBUM_COUNT,
|
||||||
},
|
},
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Favorited', value: AlbumArtistListSort.FAVORITED },
|
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.DESC,
|
defaultOrder: SortOrder.DESC,
|
||||||
name: 'Most Played',
|
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||||
|
value: AlbumArtistListSort.FAVORITED,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.mostPlayed', { postProcess: 'titleCase' }),
|
||||||
value: AlbumArtistListSort.PLAY_COUNT,
|
value: AlbumArtistListSort.PLAY_COUNT,
|
||||||
},
|
},
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: AlbumArtistListSort.NAME },
|
{
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Rating', value: AlbumArtistListSort.RATING },
|
defaultOrder: SortOrder.ASC,
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Song Count', value: AlbumArtistListSort.SONG_COUNT },
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: AlbumArtistListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||||
|
value: AlbumArtistListSort.RATING,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||||
|
value: AlbumArtistListSort.SONG_COUNT,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -20,10 +20,23 @@ import {
|
||||||
useListStoreByKey,
|
useListStoreByKey,
|
||||||
} from '/@/renderer/store';
|
} from '/@/renderer/store';
|
||||||
import { ListDisplayType, ServerType, TableColumn } from '/@/renderer/types';
|
import { ListDisplayType, ServerType, TableColumn } from '/@/renderer/types';
|
||||||
|
import i18n from '/@/i18n/i18n';
|
||||||
|
|
||||||
const FILTERS = {
|
const FILTERS = {
|
||||||
jellyfin: [{ defaultOrder: SortOrder.ASC, name: 'Name', value: GenreListSort.NAME }],
|
jellyfin: [
|
||||||
navidrome: [{ defaultOrder: SortOrder.ASC, name: 'Name', value: GenreListSort.NAME }],
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: GenreListSort.NAME,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
navidrome: [
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: GenreListSort.NAME,
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
interface GenreListHeaderFiltersProps {
|
interface GenreListHeaderFiltersProps {
|
||||||
|
|
|
@ -47,49 +47,142 @@ import { openUpdatePlaylistModal } from '/@/renderer/features/playlists/componen
|
||||||
import { useDeletePlaylist } from '/@/renderer/features/playlists/mutations/delete-playlist-mutation';
|
import { useDeletePlaylist } from '/@/renderer/features/playlists/mutations/delete-playlist-mutation';
|
||||||
import { AppRoute } from '/@/renderer/router/routes';
|
import { AppRoute } from '/@/renderer/router/routes';
|
||||||
import { OrderToggleButton } from '/@/renderer/features/shared';
|
import { OrderToggleButton } from '/@/renderer/features/shared';
|
||||||
|
import i18n from '/@/i18n/i18n';
|
||||||
|
|
||||||
const FILTERS = {
|
const FILTERS = {
|
||||||
jellyfin: [
|
jellyfin: [
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album', value: SongListSort.ALBUM },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album Artist', value: SongListSort.ALBUM_ARTIST },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Artist', value: SongListSort.ARTIST },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Duration', value: SongListSort.DURATION },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Most Played', value: SongListSort.PLAY_COUNT },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: SongListSort.NAME },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Random', value: SongListSort.RANDOM },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Recently Added', value: SongListSort.RECENTLY_ADDED },
|
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.ASC,
|
defaultOrder: SortOrder.ASC,
|
||||||
name: 'Recently Played',
|
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ALBUM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ALBUM_ARTIST,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ARTIST,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.DURATION,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.PLAY_COUNT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RANDOM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RECENTLY_ADDED,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||||
value: SongListSort.RECENTLY_PLAYED,
|
value: SongListSort.RECENTLY_PLAYED,
|
||||||
},
|
},
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Release Date', value: SongListSort.RELEASE_DATE },
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.releaseDate', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RELEASE_DATE,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
navidrome: [
|
navidrome: [
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album', value: SongListSort.ALBUM },
|
{
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album Artist', value: SongListSort.ALBUM_ARTIST },
|
defaultOrder: SortOrder.ASC,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Artist', value: SongListSort.ARTIST },
|
name: i18n.t('filter.id', { postProcess: 'titleCase' }),
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'BPM', value: SongListSort.BPM },
|
value: SongListSort.ID,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Channels', value: SongListSort.CHANNELS },
|
},
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Comment', value: SongListSort.COMMENT },
|
{
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Duration', value: SongListSort.DURATION },
|
defaultOrder: SortOrder.ASC,
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Favorited', value: SongListSort.FAVORITED },
|
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Genre', value: SongListSort.GENRE },
|
value: SongListSort.ALBUM,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Id', value: SongListSort.ID },
|
},
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: SongListSort.NAME },
|
{
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Play Count', value: SongListSort.PLAY_COUNT },
|
defaultOrder: SortOrder.ASC,
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Rating', value: SongListSort.RATING },
|
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ALBUM_ARTIST,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ARTIST,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.DESC,
|
defaultOrder: SortOrder.DESC,
|
||||||
name: 'Recently Added',
|
name: i18n.t('filter.bpm', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.BPM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('common.channel', { count: 2, postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.CHANNELS,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.comment', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.COMMENT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.DURATION,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.FAVORITED,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.GENRE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.PLAY_COUNT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RATING,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||||
value: SongListSort.RECENTLY_ADDED,
|
value: SongListSort.RECENTLY_ADDED,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.DESC,
|
defaultOrder: SortOrder.DESC,
|
||||||
name: 'Recently Played',
|
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||||
value: SongListSort.RECENTLY_PLAYED,
|
value: SongListSort.RECENTLY_PLAYED,
|
||||||
},
|
},
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Year', value: SongListSort.YEAR },
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.releaseYear', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.YEAR,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,20 +17,57 @@ import { OrderToggleButton } from '/@/renderer/features/shared';
|
||||||
import { useContainerQuery } from '/@/renderer/hooks';
|
import { useContainerQuery } from '/@/renderer/hooks';
|
||||||
import { PlaylistListFilter, useCurrentServer, useListStoreActions } from '/@/renderer/store';
|
import { PlaylistListFilter, useCurrentServer, useListStoreActions } from '/@/renderer/store';
|
||||||
import { ListDisplayType, TableColumn } from '/@/renderer/types';
|
import { ListDisplayType, TableColumn } from '/@/renderer/types';
|
||||||
|
import i18n from '/@/i18n/i18n';
|
||||||
|
|
||||||
const FILTERS = {
|
const FILTERS = {
|
||||||
jellyfin: [
|
jellyfin: [
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Duration', value: PlaylistListSort.DURATION },
|
{
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: PlaylistListSort.NAME },
|
defaultOrder: SortOrder.DESC,
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Song Count', value: PlaylistListSort.SONG_COUNT },
|
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.DURATION,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.SONG_COUNT,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
navidrome: [
|
navidrome: [
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Duration', value: PlaylistListSort.DURATION },
|
{
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: PlaylistListSort.NAME },
|
defaultOrder: SortOrder.DESC,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Owner', value: PlaylistListSort.OWNER },
|
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Public', value: PlaylistListSort.PUBLIC },
|
value: PlaylistListSort.DURATION,
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Song Count', value: PlaylistListSort.SONG_COUNT },
|
},
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Updated At', value: PlaylistListSort.UPDATED_AT },
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.owner', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.OWNER,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.isPublic', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.PUBLIC,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.songCount', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.SONG_COUNT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.recentlyUpdated', { postProcess: 'titleCase' }),
|
||||||
|
value: PlaylistListSort.UPDATED_AT,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,48 +28,137 @@ import { useListFilterRefresh } from '/@/renderer/hooks/use-list-filter-refresh'
|
||||||
import { queryClient } from '/@/renderer/lib/react-query';
|
import { queryClient } from '/@/renderer/lib/react-query';
|
||||||
import { SongListFilter, useCurrentServer, useListStoreActions } from '/@/renderer/store';
|
import { SongListFilter, useCurrentServer, useListStoreActions } from '/@/renderer/store';
|
||||||
import { ListDisplayType, Play, ServerType, TableColumn } from '/@/renderer/types';
|
import { ListDisplayType, Play, ServerType, TableColumn } from '/@/renderer/types';
|
||||||
|
import i18n from '/@/i18n/i18n';
|
||||||
|
|
||||||
const FILTERS = {
|
const FILTERS = {
|
||||||
jellyfin: [
|
jellyfin: [
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album', value: SongListSort.ALBUM },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album Artist', value: SongListSort.ALBUM_ARTIST },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Artist', value: SongListSort.ARTIST },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Duration', value: SongListSort.DURATION },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Most Played', value: SongListSort.PLAY_COUNT },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: SongListSort.NAME },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Random', value: SongListSort.RANDOM },
|
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Recently Added', value: SongListSort.RECENTLY_ADDED },
|
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.ASC,
|
defaultOrder: SortOrder.ASC,
|
||||||
name: 'Recently Played',
|
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ALBUM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ALBUM_ARTIST,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ARTIST,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.DURATION,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.PLAY_COUNT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.random', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RANDOM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RECENTLY_ADDED,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||||
value: SongListSort.RECENTLY_PLAYED,
|
value: SongListSort.RECENTLY_PLAYED,
|
||||||
},
|
},
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Release Date', value: SongListSort.RELEASE_DATE },
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.releaseDate', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RELEASE_DATE,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
navidrome: [
|
navidrome: [
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album', value: SongListSort.ALBUM },
|
{
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Album Artist', value: SongListSort.ALBUM_ARTIST },
|
defaultOrder: SortOrder.ASC,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Artist', value: SongListSort.ARTIST },
|
name: i18n.t('filter.album', { postProcess: 'titleCase' }),
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'BPM', value: SongListSort.BPM },
|
value: SongListSort.ALBUM,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Channels', value: SongListSort.CHANNELS },
|
},
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Comment', value: SongListSort.COMMENT },
|
{
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Duration', value: SongListSort.DURATION },
|
defaultOrder: SortOrder.ASC,
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Favorited', value: SongListSort.FAVORITED },
|
name: i18n.t('filter.albumArtist', { postProcess: 'titleCase' }),
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Genre', value: SongListSort.GENRE },
|
value: SongListSort.ALBUM_ARTIST,
|
||||||
{ defaultOrder: SortOrder.ASC, name: 'Name', value: SongListSort.NAME },
|
},
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Play Count', value: SongListSort.PLAY_COUNT },
|
{
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Rating', value: SongListSort.RATING },
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.artist', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.ARTIST,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.DESC,
|
defaultOrder: SortOrder.DESC,
|
||||||
name: 'Recently Added',
|
name: i18n.t('filter.bpm', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.BPM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('common.channel', { count: 2, postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.CHANNELS,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.comment', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.COMMENT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.duration', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.DURATION,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.isFavorited', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.FAVORITED,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.GENRE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.ASC,
|
||||||
|
name: i18n.t('filter.name', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.NAME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.playCount', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.PLAY_COUNT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.rating', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.RATING,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.recentlyAdded', { postProcess: 'titleCase' }),
|
||||||
value: SongListSort.RECENTLY_ADDED,
|
value: SongListSort.RECENTLY_ADDED,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
defaultOrder: SortOrder.DESC,
|
defaultOrder: SortOrder.DESC,
|
||||||
name: 'Recently Played',
|
name: i18n.t('filter.recentlyPlayed', { postProcess: 'titleCase' }),
|
||||||
value: SongListSort.RECENTLY_PLAYED,
|
value: SongListSort.RECENTLY_PLAYED,
|
||||||
},
|
},
|
||||||
{ defaultOrder: SortOrder.DESC, name: 'Year', value: SongListSort.YEAR },
|
{
|
||||||
|
defaultOrder: SortOrder.DESC,
|
||||||
|
name: i18n.t('filter.releaseYear', { postProcess: 'titleCase' }),
|
||||||
|
value: SongListSort.YEAR,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Reference in a new issue