1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

add filters for audio and subtitle languages

This commit is contained in:
TheMelmacian 2023-05-15 20:22:36 +02:00
parent d2969a33e7
commit f5af7987d5
3 changed files with 51 additions and 1 deletions

View file

@ -47,6 +47,14 @@ function renderFilters(context, result, query) {
const delimeter = ',';
return (delimeter + (query.Years || '') + delimeter).includes(delimeter + i + delimeter);
});
renderOptions(context, '.audioLanguageFilters', 'chkAudioLanguageFilter', result.AudioLanguages, function (i) {
const delimeter = ',';
return (delimeter + (query.AudioLanguages || '') + delimeter).includes(delimeter + i + delimeter);
});
renderOptions(context, '.subtitleLanguageFilters', 'chkSubtitleLanguageFilter', result.SubtitleLanguages, function (i) {
const delimeter = ',';
return (delimeter + (query.SubtitleLanguages || '') + delimeter).includes(delimeter + i + delimeter);
});
}
function loadDynamicFilters(context, apiClient, userId, itemQuery) {
@ -110,6 +118,7 @@ function triggerChange(instance) {
function setVisibility(context, options) {
if (options.mode === 'livetvchannels' || options.mode === 'albums' || options.mode === 'artists' || options.mode === 'albumartists' || options.mode === 'songs') {
hideByClass(context, 'videoStandard');
hideByClass(context, 'languageFilters');
}
if (enableDynamicFilters(options.mode)) {
@ -125,6 +134,7 @@ function setVisibility(context, options) {
if (options.mode === 'movies' || options.mode === 'series' || options.mode === 'episodes') {
context.querySelector('.features').classList.remove('hide');
context.querySelector('.languageFilters').classList.remove('hide');
}
if (options.mode === 'series') {
@ -389,6 +399,34 @@ class FilterDialog {
query.StartIndex = 0;
query.OfficialRatings = filters;
triggerChange(this);
return;
}
const chkAudioLanguageFilter = dom.parentWithClass(e.target, 'chkAudioLanguageFilter');
if (chkAudioLanguageFilter) {
const filterName = chkAudioLanguageFilter.getAttribute('data-filter');
let filters = query.AudioLanguages || '';
const delimiter = ',';
filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1);
if (chkAudioLanguageFilter.checked) {
filters = filters ? (filters + delimiter + filterName) : filterName;
}
query.StartIndex = 0;
query.AudioLanguages = filters;
triggerChange(this);
return;
}
const chkSubtitleLanguageFilter = dom.parentWithClass(e.target, 'chkSubtitleLanguageFilter');
if (chkSubtitleLanguageFilter) {
const filterName = chkSubtitleLanguageFilter.getAttribute('data-filter');
let filters = query.SubtitleLanguages || '';
const delimiter = ',';
filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1);
if (chkSubtitleLanguageFilter.checked) {
filters = filters ? (filters + delimiter + filterName) : filterName;
}
query.StartIndex = 0;
query.SubtitleLanguages = filters;
triggerChange(this);
}
});
}

View file

@ -140,4 +140,14 @@
<div class="collapseContent filterOptions">
</div>
</div>
<div is="emby-collapse" title="${AudioLanguages}" class="audioLanguageFilters languageFilters hide">
<div class="collapseContent filterOptions">
</div>
</div>
<div is="emby-collapse" title="${SubtitleLanguages}" class="subtitleLanguageFilters languageFilters hide">
<div class="collapseContent filterOptions">
</div>
</div>
</div>

View file

@ -1730,5 +1730,7 @@
"MachineTranslated": "Machine Translated",
"ForeignPartsOnly": "Forced/Foreign parts only",
"HearingImpairedShort": "HI/SDH",
"LabelIsHearingImpaired": "For hearing impaired (SDH)"
"LabelIsHearingImpaired": "For hearing impaired (SDH)",
"AudioLanguages": "Audio languages",
"SubtitleLanguages": "Subtitle languages"
}