mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #411 from grafixeyehero/filterdialoge
Clean up unused filter audio language
This commit is contained in:
commit
166d0df0b4
21 changed files with 401 additions and 215 deletions
|
@ -1,29 +1,48 @@
|
||||||
define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "require", "emby-checkbox", "emby-collapse", "css!./style"], function(dialogHelper, globalize, connectionManager, events, browser, require) {
|
define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "require", "emby-checkbox", "emby-collapse", "css!./style"], function (dialogHelper, globalize, connectionManager, events, browser, require) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function renderOptions(context, selector, cssClass, items, isCheckedFn) {
|
function renderOptions(context, selector, cssClass, items, isCheckedFn) {
|
||||||
var elem = context.querySelector(selector);
|
var elem = context.querySelector(selector);
|
||||||
items.length ? elem.classList.remove("hide") : elem.classList.add("hide");
|
if (items.length) {
|
||||||
|
elem.classList.remove("hide");
|
||||||
|
} else {
|
||||||
|
elem.classList.add("hide");
|
||||||
|
}
|
||||||
var html = "";
|
var html = "";
|
||||||
html += '<div class="checkboxList">', html += items.map(function(filter) {
|
html += '<div class="checkboxList">';
|
||||||
var itemHtml = "",
|
html += items.map(function (filter) {
|
||||||
checkedHtml = isCheckedFn(filter) ? " checked" : "";
|
var itemHtml = "";
|
||||||
return itemHtml += "<label>", itemHtml += '<input is="emby-checkbox" type="checkbox"' + checkedHtml + ' data-filter="' + filter + '" class="' + cssClass + '"/>', itemHtml += "<span>" + filter + "</span>", itemHtml += "</label>"
|
var checkedHtml = isCheckedFn(filter) ? " checked" : "";
|
||||||
}).join(""), html += "</div>", elem.querySelector(".filterOptions").innerHTML = html
|
itemHtml += "<label>";
|
||||||
|
itemHtml += '<input is="emby-checkbox" type="checkbox"' + checkedHtml + ' data-filter="' + filter + '" class="' + cssClass + '"/>';
|
||||||
|
itemHtml += "<span>" + filter + "</span>";
|
||||||
|
itemHtml += "</label>";
|
||||||
|
return itemHtml;
|
||||||
|
}).join("");
|
||||||
|
html += "</div>";
|
||||||
|
elem.querySelector(".filterOptions").innerHTML = html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderFilters(context, result, query) {
|
function renderFilters(context, result, query) {
|
||||||
result.Tags && (result.Tags.length = Math.min(result.Tags.length, 50)), renderOptions(context, ".genreFilters", "chkGenreFilter", result.Genres, function(i) {
|
if (result.Tags) {
|
||||||
return -1 != ("|" + (query.Genres || "") + "|").indexOf("|" + i + "|")
|
result.Tags.length = Math.min(result.Tags.length, 50);
|
||||||
}), renderOptions(context, ".officialRatingFilters", "chkOfficialRatingFilter", result.OfficialRatings, function(i) {
|
}
|
||||||
return -1 != ("|" + (query.OfficialRatings || "") + "|").indexOf("|" + i + "|")
|
renderOptions(context, ".genreFilters", "chkGenreFilter", result.Genres, function (i) {
|
||||||
}), renderOptions(context, ".tagFilters", "chkTagFilter", result.Tags, function(i) {
|
var delimeter = "|";
|
||||||
return -1 != ("|" + (query.Tags || "") + "|").indexOf("|" + i + "|")
|
return (delimeter + (query.Genres || "") + delimeter).indexOf(delimeter + i + delimeter) != -1;
|
||||||
}), renderOptions(context, ".yearFilters", "chkYearFilter", result.Years, function(i) {
|
});
|
||||||
return -1 != ("," + (query.Years || "") + ",").indexOf("," + i + ",")
|
renderOptions(context, ".officialRatingFilters", "chkOfficialRatingFilter", result.OfficialRatings, function (i) {
|
||||||
}), renderOptions(context, ".audioLanguagesFilters", "chkAudioLanguagesFilter", result.AudioLanguages, function(i) {
|
var delimeter = "|";
|
||||||
return -1 != ("," + (query.AudioLanguages || "") + ",").indexOf("," + i + ",")
|
return (delimeter + (query.OfficialRatings || "") + delimeter).indexOf(delimeter + i + delimeter) != -1;
|
||||||
})
|
});
|
||||||
|
renderOptions(context, ".tagFilters", "chkTagFilter", result.Tags, function (i) {
|
||||||
|
var delimeter = "|";
|
||||||
|
return (delimeter + (query.Tags || "") + delimeter).indexOf(delimeter + i + delimeter) != -1;
|
||||||
|
});
|
||||||
|
renderOptions(context, ".yearFilters", "chkYearFilter", result.Years, function (i) {
|
||||||
|
var delimeter = ",";
|
||||||
|
return (delimeter + (query.Years || "") + delimeter).indexOf(delimeter + i + delimeter) != -1;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadDynamicFilters(context, apiClient, userId, itemQuery) {
|
function loadDynamicFilters(context, apiClient, userId, itemQuery) {
|
||||||
|
@ -31,177 +50,361 @@ define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "
|
||||||
UserId: userId,
|
UserId: userId,
|
||||||
ParentId: itemQuery.ParentId,
|
ParentId: itemQuery.ParentId,
|
||||||
IncludeItemTypes: itemQuery.IncludeItemTypes
|
IncludeItemTypes: itemQuery.IncludeItemTypes
|
||||||
})).then(function(result) {
|
})).then(function (result) {
|
||||||
renderFilters(context, result, itemQuery)
|
renderFilters(context, result, itemQuery);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFilterControls(context, options) {
|
function updateFilterControls(context, options) {
|
||||||
var elems, i, length, query = options.query;
|
var elems;
|
||||||
if ("livetvchannels" == options.mode) context.querySelector(".chkFavorite").checked = 1 == query.IsFavorite, context.querySelector(".chkLikes").checked = 1 == query.IsLiked, context.querySelector(".chkDislikes").checked = 1 == query.IsDisliked;
|
var i;
|
||||||
else
|
var length;
|
||||||
for (elems = context.querySelectorAll(".chkStandardFilter"), i = 0, length = elems.length; i < length; i++) {
|
var query = options.query;
|
||||||
var chkStandardFilter = elems[i],
|
|
||||||
filters = "," + (query.Filters || ""),
|
if (options.mode == "livetvchannels") {
|
||||||
filterName = chkStandardFilter.getAttribute("data-filter");
|
context.querySelector(".chkFavorite").checked = query.IsFavorite == true;
|
||||||
chkStandardFilter.checked = -1 != filters.indexOf("," + filterName)
|
context.querySelector(".chkLikes").checked = query.IsLiked == true;
|
||||||
|
context.querySelector(".chkDislikes").checked = query.IsDisliked == true;
|
||||||
|
} else {
|
||||||
|
elems = context.querySelectorAll(".chkStandardFilter");
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
var chkStandardFilter = elems[i];
|
||||||
|
var filters = "," + (query.Filters || "");
|
||||||
|
var filterName = chkStandardFilter.getAttribute("data-filter");
|
||||||
|
chkStandardFilter.checked = filters.indexOf("," + filterName) != -1;
|
||||||
}
|
}
|
||||||
for (elems = context.querySelectorAll(".chkVideoTypeFilter"), i = 0, length = elems.length; i < length; i++) {
|
|
||||||
var chkVideoTypeFilter = elems[i],
|
|
||||||
filters = "," + (query.VideoTypes || ""),
|
|
||||||
filterName = chkVideoTypeFilter.getAttribute("data-filter");
|
|
||||||
chkVideoTypeFilter.checked = -1 != filters.indexOf("," + filterName)
|
|
||||||
}
|
}
|
||||||
for (context.querySelector(".chk3DFilter").checked = 1 == query.Is3D, context.querySelector(".chkHDFilter").checked = 1 == query.IsHD, context.querySelector(".chk4KFilter").checked = 1 == query.Is4K, context.querySelector(".chkSDFilter").checked = 1 == query.IsHD, context.querySelector("#chkSubtitle").checked = 1 == query.HasSubtitles, context.querySelector("#chkTrailer").checked = 1 == query.HasTrailer, context.querySelector("#chkThemeSong").checked = 1 == query.HasThemeSong, context.querySelector("#chkThemeVideo").checked = 1 == query.HasThemeVideo, context.querySelector("#chkSpecialFeature").checked = 1 == query.HasSpecialFeature, context.querySelector("#chkSpecialEpisode").checked = 0 == query.ParentIndexNumber, context.querySelector("#chkMissingEpisode").checked = 1 == query.IsMissing, context.querySelector("#chkFutureEpisode").checked = 1 == query.IsUnaired, i = 0, length = elems.length; i < length; i++) {
|
|
||||||
var chkStatus = elems[i],
|
elems = context.querySelectorAll(".chkVideoTypeFilter");
|
||||||
filters = "," + (query.SeriesStatus || ""),
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
filterName = chkStatus.getAttribute("data-filter");
|
var chkVideoTypeFilter = elems[i];
|
||||||
chkStatus.checked = -1 != filters.indexOf("," + filterName)
|
var filters = "," + (query.VideoTypes || "");
|
||||||
|
var filterName = chkVideoTypeFilter.getAttribute("data-filter");
|
||||||
|
chkVideoTypeFilter.checked = filters.indexOf("," + filterName) != -1;
|
||||||
|
}
|
||||||
|
context.querySelector(".chk3DFilter").checked = query.Is3D == true;
|
||||||
|
context.querySelector(".chkHDFilter").checked = query.IsHD == true;
|
||||||
|
context.querySelector(".chk4KFilter").checked = query.Is4K == true;
|
||||||
|
context.querySelector(".chkSDFilter").checked = query.IsHD == true;
|
||||||
|
context.querySelector("#chkSubtitle").checked = query.HasSubtitles == true;
|
||||||
|
context.querySelector("#chkTrailer").checked = query.HasTrailer == true;
|
||||||
|
context.querySelector("#chkThemeSong").checked = query.HasThemeSong == true;
|
||||||
|
context.querySelector("#chkThemeVideo").checked = query.HasThemeVideo == true;
|
||||||
|
context.querySelector("#chkSpecialFeature").checked = query.HasSpecialFeature == true;
|
||||||
|
context.querySelector("#chkSpecialEpisode").checked = query.ParentIndexNumber == 0;
|
||||||
|
context.querySelector("#chkMissingEpisode").checked = query.IsMissing == true;
|
||||||
|
context.querySelector("#chkFutureEpisode").checked = query.IsUnaired == true;
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
var chkStatus = elems[i];
|
||||||
|
var filters = "," + (query.SeriesStatus || "");
|
||||||
|
var filterName = chkStatus.getAttribute("data-filter");
|
||||||
|
chkStatus.checked = filters.indexOf("," + filterName) != -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function triggerChange(instance) {
|
function triggerChange(instance) {
|
||||||
events.trigger(instance, "filterchange")
|
events.trigger(instance, "filterchange");
|
||||||
}
|
}
|
||||||
|
|
||||||
function parentWithClass(elem, className) {
|
function parentWithClass(elem, className) {
|
||||||
for (; !elem.classList || !elem.classList.contains(className);)
|
while (!elem.classList || !elem.classList.contains(className)) {
|
||||||
if (!(elem = elem.parentNode)) return null;
|
elem = elem.parentNode;
|
||||||
return elem
|
if (!elem) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return elem;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setVisibility(context, options) {
|
function setVisibility(context, options) {
|
||||||
"livetvchannels" != options.mode && "albums" != options.mode && "artists" != options.mode && "albumartists" != options.mode && "songs" != options.mode || hideByClass(context, "videoStandard"), enableDynamicFilters(options.mode) && (context.querySelector(".genreFilters").classList.remove("hide"), context.querySelector(".officialRatingFilters").classList.remove("hide"), context.querySelector(".tagFilters").classList.remove("hide"), context.querySelector(".yearFilters").classList.remove("hide"), context.querySelector(".audioLanguagesFilters").classList.remove("hide")), "movies" != options.mode && "episodes" != options.mode || context.querySelector(".videoTypeFilters").classList.remove("hide"), options.mode, "movies" != options.mode && "series" != options.mode && "episodes" != options.mode || context.querySelector(".features").classList.remove("hide"), "series" == options.mode && context.querySelector(".seriesStatus").classList.remove("hide"), "episodes" == options.mode && showByClass(context, "episodeFilter")
|
if (options.mode == "livetvchannels" || options.mode == "albums" || options.mode == "artists" || options.mode == "albumartists" || options.mode == "songs") {
|
||||||
|
hideByClass(context, "videoStandard");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enableDynamicFilters(options.mode)) {
|
||||||
|
context.querySelector(".genreFilters").classList.remove("hide");
|
||||||
|
context.querySelector(".officialRatingFilters").classList.remove("hide");
|
||||||
|
context.querySelector(".tagFilters").classList.remove("hide");
|
||||||
|
context.querySelector(".yearFilters").classList.remove("hide");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.mode == "movies" || options.mode == "episodes") {
|
||||||
|
context.querySelector(".videoTypeFilters").classList.remove("hide");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.mode == "movies" || options.mode == "series" || options.mode == "episodes") {
|
||||||
|
context.querySelector(".features").classList.remove("hide");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.mode == "series") {
|
||||||
|
context.querySelector(".seriesStatus").classList.remove("hide");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.mode == "episodes") {
|
||||||
|
showByClass(context, "episodeFilter");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function showByClass(context, className) {
|
function showByClass(context, className) {
|
||||||
for (var elems = context.querySelectorAll("." + className), i = 0, length = elems.length; i < length; i++) elems[i].classList.remove("hide")
|
var elems = context.querySelectorAll("." + className);
|
||||||
|
|
||||||
|
for (var i = 0, length = elems.length; i < length; i++) {
|
||||||
|
elems[i].classList.remove("hide");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideByClass(context, className) {
|
function hideByClass(context, className) {
|
||||||
for (var elems = context.querySelectorAll("." + className), i = 0, length = elems.length; i < length; i++) elems[i].classList.add("hide")
|
var elems = context.querySelectorAll("." + className);
|
||||||
|
|
||||||
|
for (var i = 0, length = elems.length; i < length; i++) {
|
||||||
|
elems[i].classList.add("hide");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function enableDynamicFilters(mode) {
|
function enableDynamicFilters(mode) {
|
||||||
return "movies" == mode || "series" == mode || "albums" == mode || "albumartists" == mode || "artists" == mode || "songs" == mode || "episodes" == mode
|
return mode == "movies" || mode == "series" || mode == "albums" || mode == "albumartists" || mode == "artists" || mode == "songs" || mode == "episodes";
|
||||||
}
|
}
|
||||||
return function(options) {
|
|
||||||
|
return function (options) {
|
||||||
function onFavoriteChange() {
|
function onFavoriteChange() {
|
||||||
var query = options.query;
|
var query = options.query;
|
||||||
query.StartIndex = 0, query.IsFavorite = !!this.checked || null, triggerChange(self)
|
query.StartIndex = 0;
|
||||||
|
query.IsFavorite = !!this.checked || null;
|
||||||
|
triggerChange(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onStandardFilterChange() {
|
function onStandardFilterChange() {
|
||||||
var query = options.query,
|
var query = options.query;
|
||||||
filterName = this.getAttribute("data-filter"),
|
var filterName = this.getAttribute("data-filter");
|
||||||
filters = query.Filters || "";
|
var filters = query.Filters || "";
|
||||||
filters = ("," + filters).replace("," + filterName, "").substring(1), this.checked && (filters = filters ? filters + "," + filterName : filterName), query.StartIndex = 0, query.Filters = filters, triggerChange(self)
|
filters = ("," + filters).replace("," + filterName, "").substring(1);
|
||||||
|
|
||||||
|
if (this.checked) {
|
||||||
|
filters = filters ? filters + "," + filterName : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.Filters = filters;
|
||||||
|
triggerChange(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onVideoTypeFilterChange() {
|
function onVideoTypeFilterChange() {
|
||||||
var query = options.query,
|
var query = options.query;
|
||||||
filterName = this.getAttribute("data-filter"),
|
var filterName = this.getAttribute("data-filter");
|
||||||
filters = query.VideoTypes || "";
|
var filters = query.VideoTypes || "";
|
||||||
filters = ("," + filters).replace("," + filterName, "").substring(1), this.checked && (filters = filters ? filters + "," + filterName : filterName), query.StartIndex = 0, query.VideoTypes = filters, triggerChange(self)
|
filters = ("," + filters).replace("," + filterName, "").substring(1);
|
||||||
|
|
||||||
|
if (this.checked) {
|
||||||
|
filters = filters ? filters + "," + filterName : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.VideoTypes = filters;
|
||||||
|
triggerChange(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onStatusChange() {
|
function onStatusChange() {
|
||||||
var query = options.query,
|
var query = options.query;
|
||||||
filterName = this.getAttribute("data-filter"),
|
var filterName = this.getAttribute("data-filter");
|
||||||
filters = query.SeriesStatus || "";
|
var filters = query.SeriesStatus || "";
|
||||||
filters = ("," + filters).replace("," + filterName, "").substring(1), this.checked && (filters = filters ? filters + "," + filterName : filterName), query.SeriesStatus = filters, query.StartIndex = 0, triggerChange(self)
|
filters = ("," + filters).replace("," + filterName, "").substring(1);
|
||||||
|
|
||||||
|
if (this.checked) {
|
||||||
|
filters = filters ? filters + "," + filterName : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.SeriesStatus = filters;
|
||||||
|
query.StartIndex = 0;
|
||||||
|
triggerChange(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
function bindEvents(context) {
|
function bindEvents(context) {
|
||||||
var elems, i, length, query = options.query;
|
var elems;
|
||||||
if ("livetvchannels" == options.mode) {
|
var i;
|
||||||
for (elems = context.querySelectorAll(".chkFavorite"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("change", onFavoriteChange);
|
var length;
|
||||||
context.querySelector(".chkLikes").addEventListener("change", function() {
|
var query = options.query;
|
||||||
query.StartIndex = 0, query.IsLiked = !!this.checked || null, triggerChange(self)
|
|
||||||
}), context.querySelector(".chkDislikes").addEventListener("change", function() {
|
if (options.mode == "livetvchannels") {
|
||||||
query.StartIndex = 0, query.IsDisliked = !!this.checked || null, triggerChange(self)
|
elems = context.querySelectorAll(".chkFavorite");
|
||||||
})
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
} else
|
elems[i].addEventListener("change", onFavoriteChange);
|
||||||
for (elems = context.querySelectorAll(".chkStandardFilter"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("change", onStandardFilterChange);
|
}
|
||||||
for (elems = context.querySelectorAll(".chkVideoTypeFilter"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("change", onVideoTypeFilterChange);
|
context.querySelector(".chkLikes").addEventListener("change", function () {
|
||||||
for (context.querySelector(".chk3DFilter").addEventListener("change", function() {
|
query.StartIndex = 0;
|
||||||
query.StartIndex = 0, query.Is3D = !!this.checked || null, triggerChange(self)
|
query.IsLiked = this.checked ? true : null;
|
||||||
}), context.querySelector(".chk4KFilter").addEventListener("change", function() {
|
triggerChange(self);
|
||||||
query.StartIndex = 0, query.Is4K = !!this.checked || null, triggerChange(self)
|
});
|
||||||
}), context.querySelector(".chkHDFilter").addEventListener("change", function() {
|
context.querySelector(".chkDislikes").addEventListener("change", function () {
|
||||||
query.StartIndex = 0, query.IsHD = !!this.checked || null, triggerChange(self)
|
query.StartIndex = 0;
|
||||||
}), context.querySelector(".chkSDFilter").addEventListener("change", function() {
|
query.IsDisliked = this.checked ? true : null;
|
||||||
query.StartIndex = 0, query.IsHD = !this.checked && null, triggerChange(self)
|
triggerChange(self);
|
||||||
}), elems = context.querySelectorAll(".chkStatus"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("change", onStatusChange);
|
});
|
||||||
context.querySelector("#chkTrailer").addEventListener("change", function() {
|
} else {
|
||||||
query.StartIndex = 0, query.HasTrailer = !!this.checked || null, triggerChange(self)
|
elems = context.querySelectorAll(".chkStandardFilter");
|
||||||
}), context.querySelector("#chkThemeSong").addEventListener("change", function() {
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
query.StartIndex = 0, query.HasThemeSong = !!this.checked || null, triggerChange(self)
|
elems[i].addEventListener("change", onStandardFilterChange);
|
||||||
}), context.querySelector("#chkSpecialFeature").addEventListener("change", function() {
|
}
|
||||||
query.StartIndex = 0, query.HasSpecialFeature = !!this.checked || null, triggerChange(self)
|
}
|
||||||
}), context.querySelector("#chkThemeVideo").addEventListener("change", function() {
|
elems = context.querySelectorAll(".chkVideoTypeFilter");
|
||||||
query.StartIndex = 0, query.HasThemeVideo = !!this.checked || null, triggerChange(self)
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
}), context.querySelector("#chkMissingEpisode").addEventListener("change", function() {
|
elems[i].addEventListener("change", onVideoTypeFilterChange);
|
||||||
query.StartIndex = 0, this.checked ? (query.IsMissing = !0, query.IsUnaired = !1) : (query.IsMissing = !1, query.IsUnaired = context.querySelector("#chkFutureEpisode").checked || null), triggerChange(self)
|
}
|
||||||
}), context.querySelector("#chkSpecialEpisode").addEventListener("change", function() {
|
context.querySelector(".chk3DFilter").addEventListener("change", function () {
|
||||||
query.StartIndex = 0, query.ParentIndexNumber = this.checked ? 0 : null, triggerChange(self)
|
query.StartIndex = 0;
|
||||||
}), context.querySelector("#chkFutureEpisode").addEventListener("change", function() {
|
query.Is3D = this.checked ? true : null;
|
||||||
query.StartIndex = 0, this.checked ? (query.IsUnaired = !0, query.IsMissing = null) : (query.IsUnaired = null, query.IsMissing = context.querySelector("#chkMissingEpisode").checked), triggerChange(self)
|
triggerChange(self);
|
||||||
}), context.querySelector("#chkSubtitle").addEventListener("change", function() {
|
});
|
||||||
query.StartIndex = 0, query.HasSubtitles = !!this.checked || null, triggerChange(self)
|
context.querySelector(".chk4KFilter").addEventListener("change", function () {
|
||||||
}), context.addEventListener("change", function(e) {
|
query.StartIndex = 0;
|
||||||
|
query.Is4K = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector(".chkHDFilter").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsHD = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector(".chkSDFilter").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsHD = this.checked ? false : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
elems = context.querySelectorAll(".chkStatus");
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
elems[i].addEventListener("change", onStatusChange);
|
||||||
|
}
|
||||||
|
context.querySelector("#chkTrailer").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.HasTrailer = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector("#chkThemeSong").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.HasThemeSong = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector("#chkSpecialFeature").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.HasSpecialFeature = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector("#chkThemeVideo").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.HasThemeVideo = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector("#chkMissingEpisode").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsMissing = this.checked ? true : false;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector("#chkSpecialEpisode").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.ParentIndexNumber = this.checked ? 0 : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector("#chkFutureEpisode").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
if (this.checked) {
|
||||||
|
query.IsUnaired = true;
|
||||||
|
query.IsVirtualUnaired = null;
|
||||||
|
} else {
|
||||||
|
query.IsUnaired = null;
|
||||||
|
query.IsVirtualUnaired = false;
|
||||||
|
}
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.querySelector("#chkSubtitle").addEventListener("change", function () {
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.HasSubtitles = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
context.addEventListener("change", function (e) {
|
||||||
var chkGenreFilter = parentWithClass(e.target, "chkGenreFilter");
|
var chkGenreFilter = parentWithClass(e.target, "chkGenreFilter");
|
||||||
if (chkGenreFilter) {
|
if (chkGenreFilter) {
|
||||||
var filterName = chkGenreFilter.getAttribute("data-filter"),
|
var filterName = chkGenreFilter.getAttribute("data-filter");
|
||||||
filters = query.Genres || "",
|
var filters = query.Genres || "";
|
||||||
delimiter = "|";
|
var delimiter = "|";
|
||||||
return filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1), chkGenreFilter.checked && (filters = filters ? filters + delimiter + filterName : filterName), query.StartIndex = 0, query.Genres = filters, void triggerChange(self)
|
filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1);
|
||||||
|
if (chkGenreFilter.checked) {
|
||||||
|
filters = filters ? (filters + delimiter + filterName) : filterName;
|
||||||
|
}
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.Genres = filters;
|
||||||
|
triggerChange(self);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
var chkTagFilter = parentWithClass(e.target, "chkTagFilter");
|
var chkTagFilter = parentWithClass(e.target, "chkTagFilter");
|
||||||
if (chkTagFilter) {
|
if (chkTagFilter) {
|
||||||
var filterName = chkTagFilter.getAttribute("data-filter"),
|
var filterName = chkTagFilter.getAttribute("data-filter");
|
||||||
filters = query.Tags || "",
|
var filters = query.Tags || "";
|
||||||
delimiter = "|";
|
var delimiter = "|";
|
||||||
return filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1), chkTagFilter.checked && (filters = filters ? filters + delimiter + filterName : filterName), query.StartIndex = 0, query.Tags = filters, void triggerChange(self)
|
filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1);
|
||||||
|
if (chkTagFilter.checked) {
|
||||||
|
filters = filters ? (filters + delimiter + filterName) : filterName;
|
||||||
|
}
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.Tags = filters;
|
||||||
|
triggerChange(self);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
var chkYearFilter = parentWithClass(e.target, "chkYearFilter");
|
var chkYearFilter = parentWithClass(e.target, "chkYearFilter");
|
||||||
if (chkYearFilter) {
|
if (chkYearFilter) {
|
||||||
var filterName = chkYearFilter.getAttribute("data-filter"),
|
var filterName = chkYearFilter.getAttribute("data-filter");
|
||||||
filters = query.Years || "",
|
var filters = query.Years || "";
|
||||||
delimiter = ",";
|
var delimiter = ",";
|
||||||
return filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1), chkYearFilter.checked && (filters = filters ? filters + delimiter + filterName : filterName), query.StartIndex = 0, query.Years = filters, void triggerChange(self)
|
filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1);
|
||||||
}
|
if (chkYearFilter.checked) {
|
||||||
var chkAudioLanguagesFilter = parentWithClass(e.target, "chkAudioLanguagesFilter");
|
filters = filters ? (filters + delimiter + filterName) : filterName;
|
||||||
if (chkAudioLanguagesFilter) {
|
}
|
||||||
var filterName = chkAudioLanguagesFilter.getAttribute("data-filter"),
|
query.StartIndex = 0;
|
||||||
filters = query.AudioLanguages || "",
|
query.Years = filters;
|
||||||
delimiter = ",";
|
triggerChange(self);
|
||||||
return filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1), chkAudioLanguagesFilter.checked && (filters = filters ? filters + delimiter + filterName : filterName), query.StartIndex = 0, query.AudioLanguages = filters, void triggerChange(self)
|
return;
|
||||||
}
|
}
|
||||||
var chkOfficialRatingFilter = parentWithClass(e.target, "chkOfficialRatingFilter");
|
var chkOfficialRatingFilter = parentWithClass(e.target, "chkOfficialRatingFilter");
|
||||||
if (chkOfficialRatingFilter) {
|
if (chkOfficialRatingFilter) {
|
||||||
var filterName = chkOfficialRatingFilter.getAttribute("data-filter"),
|
var filterName = chkOfficialRatingFilter.getAttribute("data-filter");
|
||||||
filters = query.OfficialRatings || "",
|
var filters = query.OfficialRatings || "";
|
||||||
delimiter = "|";
|
var delimiter = "|";
|
||||||
return filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1), chkOfficialRatingFilter.checked && (filters = filters ? filters + delimiter + filterName : filterName), query.StartIndex = 0, query.OfficialRatings = filters, void triggerChange(self)
|
filters = (delimiter + filters).replace(delimiter + filterName, "").substring(1);
|
||||||
|
if (chkOfficialRatingFilter.checked) {
|
||||||
|
filters = filters ? (filters + delimiter + filterName) : filterName;
|
||||||
|
}
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.OfficialRatings = filters;
|
||||||
|
triggerChange(self);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
self.show = function() {
|
|
||||||
return new Promise(function(resolve, reject) {
|
self.show = function () {
|
||||||
require(["text!./filterdialog.template.html"], function(template) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
require(["text!./filterdialog.template.html"], function (template) {
|
||||||
var dlg = dialogHelper.createDialog({
|
var dlg = dialogHelper.createDialog({
|
||||||
removeOnClose: !0,
|
removeOnClose: true,
|
||||||
modal: !1
|
modal: false
|
||||||
});
|
});
|
||||||
if (dlg.classList.add("ui-body-a"), dlg.classList.add("background-theme-a"), dlg.classList.add("formDialog"), dlg.classList.add("filterDialog"), dlg.innerHTML = globalize.translateDocument(template), setVisibility(dlg, options), dialogHelper.open(dlg), dlg.addEventListener("close", resolve), updateFilterControls(dlg, options), bindEvents(dlg), enableDynamicFilters(options.mode)) {
|
dlg.classList.add("ui-body-a");
|
||||||
|
dlg.classList.add("background-theme-a");
|
||||||
|
dlg.classList.add("formDialog");
|
||||||
|
dlg.classList.add("filterDialog");
|
||||||
|
dlg.innerHTML = globalize.translateDocument(template);
|
||||||
|
setVisibility(dlg, options);
|
||||||
|
dialogHelper.open(dlg);
|
||||||
|
dlg.addEventListener("close", resolve);
|
||||||
|
updateFilterControls(dlg, options);
|
||||||
|
bindEvents(dlg);
|
||||||
|
if (enableDynamicFilters(options.mode)) {
|
||||||
dlg.classList.add("dynamicFilterDialog");
|
dlg.classList.add("dynamicFilterDialog");
|
||||||
var apiClient = connectionManager.getApiClient(options.serverId);
|
var apiClient = connectionManager.getApiClient(options.serverId);
|
||||||
loadDynamicFilters(dlg, apiClient, apiClient.getCurrentUserId(), options.query)
|
loadDynamicFilters(dlg, apiClient, apiClient.getCurrentUserId(), options.query);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,62 +1,67 @@
|
||||||
<div style="margin: 0;padding:1.5em 2em;" class="filterDialogContent">
|
<div style="margin: 0;padding:1.5em 2em;" class="filterDialogContent">
|
||||||
<h2 style="margin-bottom: .25em;">
|
|
||||||
${HeaderFilters}
|
<div is="emby-collapse" title="${HeaderFilters}">
|
||||||
</h2>
|
<div class="collapseContent">
|
||||||
<div class="checkboxList">
|
<div class="checkboxList">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter videoStandard" data-filter="IsPlayed" />
|
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter videoStandard"
|
||||||
<span>${OptionPlayed}</span>
|
data-filter="IsPlayed" />
|
||||||
</label>
|
<span>${OptionPlayed}</span>
|
||||||
<label>
|
</label>
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter videoStandard" data-filter="IsUnPlayed" />
|
<label>
|
||||||
<span>${OptionUnplayed}</span>
|
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter videoStandard"
|
||||||
</label>
|
data-filter="IsUnPlayed" />
|
||||||
<label>
|
<span>${OptionUnplayed}</span>
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter videoStandard" data-filter="IsResumable" />
|
</label>
|
||||||
<span>${OptionResumable}</span>
|
<label>
|
||||||
</label>
|
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter videoStandard"
|
||||||
<label>
|
data-filter="IsResumable" />
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter chkFavorite" data-filter="IsFavorite" />
|
<span>${OptionResumable}</span>
|
||||||
<span>${OptionFavorite}</span>
|
</label>
|
||||||
</label>
|
<label>
|
||||||
<label>
|
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter chkFavorite"
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter chkLikes" data-filter="Likes" />
|
data-filter="IsFavorite" />
|
||||||
<span>${OptionLikes}</span>
|
<span>${OptionFavorite}</span>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter chkDislikes" data-filter="Dislikes" />
|
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter chkLikes" data-filter="Likes" />
|
||||||
<span>${OptionDislikes}</span>
|
<span>${OptionLikes}</span>
|
||||||
</label>
|
</label>
|
||||||
<label class="episodeFilter hide">
|
<label>
|
||||||
<input type="checkbox" is="emby-checkbox" id="chkSpecialEpisode" />
|
<input type="checkbox" is="emby-checkbox" class="chkStandardFilter chkDislikes"
|
||||||
<span>${OptionSpecialEpisode}</span>
|
data-filter="Dislikes" />
|
||||||
</label>
|
<span>${OptionDislikes}</span>
|
||||||
<label class="episodeFilter hide">
|
</label>
|
||||||
<input type="checkbox" is="emby-checkbox" id="chkMissingEpisode" />
|
<label class="episodeFilter hide">
|
||||||
<span>${OptionMissingEpisode}</span>
|
<input type="checkbox" is="emby-checkbox" id="chkSpecialEpisode" />
|
||||||
</label>
|
<span>${OptionSpecialEpisode}</span>
|
||||||
<label class="episodeFilter hide">
|
</label>
|
||||||
<input type="checkbox" is="emby-checkbox" id="chkFutureEpisode" />
|
<label class="episodeFilter hide">
|
||||||
<span>${OptionUnairedEpisode}</span>
|
<input type="checkbox" is="emby-checkbox" id="chkMissingEpisode" />
|
||||||
</label>
|
<span>${OptionMissingEpisode}</span>
|
||||||
</div>
|
</label>
|
||||||
<div class="seriesStatus hide">
|
<label class="episodeFilter hide">
|
||||||
<br />
|
<input type="checkbox" is="emby-checkbox" id="chkFutureEpisode" />
|
||||||
<h2 style="margin-bottom: .25em;">
|
<span>${OptionUnairedEpisode}</span>
|
||||||
${HeaderStatus}
|
</label>
|
||||||
</h2>
|
</div>
|
||||||
<div class="checkboxList">
|
</div>
|
||||||
<label>
|
</div>
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStatus" data-filter="Continuing" />
|
|
||||||
<span>${OptionContinuing}</span>
|
<div is="emby-collapse" title="${HeaderStatus}" class="seriesStatus hide">
|
||||||
</label>
|
<div class="collapseContent">
|
||||||
<label>
|
<div class="checkboxList">
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStatus" data-filter="Ended" />
|
<label>
|
||||||
<span>${OptionEnded}</span>
|
<input type="checkbox" is="emby-checkbox" class="chkStatus" data-filter="Continuing" />
|
||||||
</label>
|
<span>${OptionContinuing}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" class="chkStatus" data-filter="Ended" />
|
||||||
|
<span>${OptionEnded}</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
|
||||||
|
|
||||||
<div is="emby-collapse" title="${HeaderFeatures}" class="features hide">
|
<div is="emby-collapse" title="${HeaderFeatures}" class="features hide">
|
||||||
<div class="collapseContent">
|
<div class="collapseContent">
|
||||||
|
@ -104,7 +109,8 @@
|
||||||
<div class="collapseContent">
|
<div class="collapseContent">
|
||||||
<div class="checkboxList">
|
<div class="checkboxList">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkVideoTypeFilter chkBluray" data-filter="Bluray" />
|
<input type="checkbox" is="emby-checkbox" class="chkVideoTypeFilter chkBluray"
|
||||||
|
data-filter="Bluray" />
|
||||||
<span>${OptionBluray}</span>
|
<span>${OptionBluray}</span>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
|
@ -139,9 +145,4 @@
|
||||||
<div class="collapseContent filterOptions">
|
<div class="collapseContent filterOptions">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div is="emby-collapse" title="${HeaderAudioLanguages}" class="audioLanguagesFilters hide">
|
|
||||||
<div class="collapseContent filterOptions">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
@media all and (min-height:600px) {
|
@media all and (min-height:600px) {
|
||||||
.dynamicFilterDialog {
|
.dynamicFilterDialog {
|
||||||
top: 10% !important;
|
top: 10% !important;
|
||||||
bottom: 10% !important
|
bottom: 25% !important
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,4 +33,4 @@
|
||||||
margin-left: -150px !important;
|
margin-left: -150px !important;
|
||||||
left: 50% !important
|
left: 50% !important
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1314,7 +1314,6 @@
|
||||||
"HeaderAllowMediaDeletionFrom": "Povolit smazání médií z",
|
"HeaderAllowMediaDeletionFrom": "Povolit smazání médií z",
|
||||||
"HeaderAppearsOn": "Appears On",
|
"HeaderAppearsOn": "Appears On",
|
||||||
"HeaderAudio": "Audio",
|
"HeaderAudio": "Audio",
|
||||||
"HeaderAudioLanguages": "Jazyk zvuku",
|
|
||||||
"HeaderBlockItemsWithNoRating": "Blokovat položky s žádnými nebo nerozpoznanými informacemi o hodnocení:",
|
"HeaderBlockItemsWithNoRating": "Blokovat položky s žádnými nebo nerozpoznanými informacemi o hodnocení:",
|
||||||
"HeaderCameraUploadHelp": "Aplikace Jellyfin mohou automaticky nahrávat fotografie z mobilních zařízení do serveru Jellyfin.",
|
"HeaderCameraUploadHelp": "Aplikace Jellyfin mohou automaticky nahrávat fotografie z mobilních zařízení do serveru Jellyfin.",
|
||||||
"HeaderChapterImages": "Obrázky kapitol",
|
"HeaderChapterImages": "Obrázky kapitol",
|
||||||
|
|
|
@ -1227,7 +1227,6 @@
|
||||||
"HeaderApp": "App",
|
"HeaderApp": "App",
|
||||||
"HeaderAppearsOn": "Forekommer I",
|
"HeaderAppearsOn": "Forekommer I",
|
||||||
"HeaderAudioBooks": "Lydbøger",
|
"HeaderAudioBooks": "Lydbøger",
|
||||||
"HeaderAudioLanguages": "Lyd Sprog",
|
|
||||||
"HeaderBranding": "Mærkning",
|
"HeaderBranding": "Mærkning",
|
||||||
"HeaderContinueListening": "Fortsæt med At Høre",
|
"HeaderContinueListening": "Fortsæt med At Høre",
|
||||||
"HeaderDestination": "Destination",
|
"HeaderDestination": "Destination",
|
||||||
|
|
|
@ -285,7 +285,6 @@
|
||||||
"HeaderApiKeysHelp": "Externe Applikationen benötigen einen API-Schlüssel, um mit dem Jellyfin-Server zu kommunizieren. API-Schlüssel werden beim Anmelden mit einem Jellyfin-Konto oder durch eine manuelle Freigabe vergeben.",
|
"HeaderApiKeysHelp": "Externe Applikationen benötigen einen API-Schlüssel, um mit dem Jellyfin-Server zu kommunizieren. API-Schlüssel werden beim Anmelden mit einem Jellyfin-Konto oder durch eine manuelle Freigabe vergeben.",
|
||||||
"HeaderAppearsOn": "Erscheint auf",
|
"HeaderAppearsOn": "Erscheint auf",
|
||||||
"HeaderAudioBooks": "Hörbücher",
|
"HeaderAudioBooks": "Hörbücher",
|
||||||
"HeaderAudioLanguages": "Audiosprachen",
|
|
||||||
"HeaderAudioSettings": "Audioeinstellungen",
|
"HeaderAudioSettings": "Audioeinstellungen",
|
||||||
"HeaderAutomaticUpdates": "Automatische Updates",
|
"HeaderAutomaticUpdates": "Automatische Updates",
|
||||||
"HeaderBlockItemsWithNoRating": "Blockiere Inhalte mit keiner oder nicht erkannter Altersfreigabe:",
|
"HeaderBlockItemsWithNoRating": "Blockiere Inhalte mit keiner oder nicht erkannter Altersfreigabe:",
|
||||||
|
|
|
@ -336,7 +336,6 @@
|
||||||
"HeaderApp": "App",
|
"HeaderApp": "App",
|
||||||
"HeaderAppearsOn": "Appears On",
|
"HeaderAppearsOn": "Appears On",
|
||||||
"HeaderAudioBooks": "Audio Books",
|
"HeaderAudioBooks": "Audio Books",
|
||||||
"HeaderAudioLanguages": "Audio Languages",
|
|
||||||
"HeaderAudioSettings": "Audio Settings",
|
"HeaderAudioSettings": "Audio Settings",
|
||||||
"HeaderAutomaticUpdates": "Automatic Updates",
|
"HeaderAutomaticUpdates": "Automatic Updates",
|
||||||
"HeaderBooks": "Books",
|
"HeaderBooks": "Books",
|
||||||
|
|
|
@ -305,7 +305,6 @@
|
||||||
"HeaderApp": "App",
|
"HeaderApp": "App",
|
||||||
"HeaderAppearsOn": "Appears On",
|
"HeaderAppearsOn": "Appears On",
|
||||||
"HeaderAudioBooks": "Audio Books",
|
"HeaderAudioBooks": "Audio Books",
|
||||||
"HeaderAudioLanguages": "Audio Languages",
|
|
||||||
"HeaderAudioSettings": "Audio Settings",
|
"HeaderAudioSettings": "Audio Settings",
|
||||||
"HeaderAutomaticUpdates": "Automatic Updates",
|
"HeaderAutomaticUpdates": "Automatic Updates",
|
||||||
"HeaderBlockItemsWithNoRating": "Block items with no or unrecognized rating information:",
|
"HeaderBlockItemsWithNoRating": "Block items with no or unrecognized rating information:",
|
||||||
|
|
|
@ -1365,7 +1365,6 @@
|
||||||
"General": "General",
|
"General": "General",
|
||||||
"HeaderAdmin": "Administrador",
|
"HeaderAdmin": "Administrador",
|
||||||
"HeaderApp": "App",
|
"HeaderApp": "App",
|
||||||
"HeaderAudioLanguages": "Idiomas de audio",
|
|
||||||
"HeaderError": "Error",
|
"HeaderError": "Error",
|
||||||
"HeaderFavoriteMovies": "Peliculas favoritas",
|
"HeaderFavoriteMovies": "Peliculas favoritas",
|
||||||
"HeaderFavoriteShows": "Programas favoritos",
|
"HeaderFavoriteShows": "Programas favoritos",
|
||||||
|
|
|
@ -1290,7 +1290,6 @@
|
||||||
"HeaderAlbums": "Álbumes",
|
"HeaderAlbums": "Álbumes",
|
||||||
"HeaderApp": "Aplicación",
|
"HeaderApp": "Aplicación",
|
||||||
"HeaderAppearsOn": "Aparece en",
|
"HeaderAppearsOn": "Aparece en",
|
||||||
"HeaderAudioLanguages": "Idiomas de audio",
|
|
||||||
"HeaderBranding": "Remarcado",
|
"HeaderBranding": "Remarcado",
|
||||||
"HeaderError": "Error",
|
"HeaderError": "Error",
|
||||||
"HeaderMusicQuality": "Calidad de sonido",
|
"HeaderMusicQuality": "Calidad de sonido",
|
||||||
|
|
|
@ -288,7 +288,6 @@
|
||||||
"HeaderApp": "Application",
|
"HeaderApp": "Application",
|
||||||
"HeaderAppearsOn": "Apparait dans",
|
"HeaderAppearsOn": "Apparait dans",
|
||||||
"HeaderAudioBooks": "Livres audios",
|
"HeaderAudioBooks": "Livres audios",
|
||||||
"HeaderAudioLanguages": "Langues audio",
|
|
||||||
"HeaderAudioSettings": "Réglages audio",
|
"HeaderAudioSettings": "Réglages audio",
|
||||||
"HeaderAutomaticUpdates": "Mises à jour automatiques",
|
"HeaderAutomaticUpdates": "Mises à jour automatiques",
|
||||||
"HeaderBlockItemsWithNoRating": "Bloquer les éléments avec des informations de classification inconnues ou n'en disposant pas :",
|
"HeaderBlockItemsWithNoRating": "Bloquer les éléments avec des informations de classification inconnues ou n'en disposant pas :",
|
||||||
|
|
|
@ -724,7 +724,6 @@
|
||||||
"HeaderApiKey": "API Kulcs",
|
"HeaderApiKey": "API Kulcs",
|
||||||
"HeaderApiKeys": "API Kulcsok",
|
"HeaderApiKeys": "API Kulcsok",
|
||||||
"HeaderAppearsOn": "Megjelenik",
|
"HeaderAppearsOn": "Megjelenik",
|
||||||
"HeaderAudioLanguages": "Audió nyelv",
|
|
||||||
"HeaderBooks": "Könyvek",
|
"HeaderBooks": "Könyvek",
|
||||||
"HeaderCancelRecording": "Felvétel törlése",
|
"HeaderCancelRecording": "Felvétel törlése",
|
||||||
"HeaderCancelSeries": "Sorozat törlése",
|
"HeaderCancelSeries": "Sorozat törlése",
|
||||||
|
|
|
@ -1312,7 +1312,6 @@
|
||||||
"General": "Generale",
|
"General": "Generale",
|
||||||
"HeaderApp": "Applicazione",
|
"HeaderApp": "Applicazione",
|
||||||
"HeaderAppearsOn": "Appare In",
|
"HeaderAppearsOn": "Appare In",
|
||||||
"HeaderAudioLanguages": "Lingue Audio",
|
|
||||||
"HeaderCastAndCrew": "Cast",
|
"HeaderCastAndCrew": "Cast",
|
||||||
"HeaderCastCrew": "Cast",
|
"HeaderCastCrew": "Cast",
|
||||||
"HeaderMedia": "Media",
|
"HeaderMedia": "Media",
|
||||||
|
|
|
@ -306,7 +306,6 @@
|
||||||
"HeaderApp": "アプリ",
|
"HeaderApp": "アプリ",
|
||||||
"HeaderAppearsOn": "表示",
|
"HeaderAppearsOn": "表示",
|
||||||
"HeaderAudioBooks": "オーディオブック",
|
"HeaderAudioBooks": "オーディオブック",
|
||||||
"HeaderAudioLanguages": "音声言語",
|
|
||||||
"HeaderAudioSettings": "音声設定",
|
"HeaderAudioSettings": "音声設定",
|
||||||
"HeaderAutomaticUpdates": "自動更新",
|
"HeaderAutomaticUpdates": "自動更新",
|
||||||
"HeaderBlockItemsWithNoRating": "評価情報がない、または認識できないアイテムをブロックします。",
|
"HeaderBlockItemsWithNoRating": "評価情報がない、または認識できないアイテムをブロックします。",
|
||||||
|
|
|
@ -1416,7 +1416,6 @@
|
||||||
"Yes": "Iá",
|
"Yes": "Iá",
|
||||||
"Yesterday": "Keshe",
|
"Yesterday": "Keshe",
|
||||||
"ChangingMetadataImageSettingsNewContent": "Metaderekterdi nemese sýretterdi júkteý parametrlerin ózgertýi tek tasyǵyshhanaǵa ústelgen jańa mazmunǵa qoldanylady. Ózgeristerdi qoldanystaǵy ataýlarǵa qoldaný úshin olardyń metaderekterin qolmen jańǵyrtý qajet.",
|
"ChangingMetadataImageSettingsNewContent": "Metaderekterdi nemese sýretterdi júkteý parametrlerin ózgertýi tek tasyǵyshhanaǵa ústelgen jańa mazmunǵa qoldanylady. Ózgeristerdi qoldanystaǵy ataýlarǵa qoldaný úshin olardyń metaderekterin qolmen jańǵyrtý qajet.",
|
||||||
"HeaderAudioLanguages": "Dybys tilderi",
|
|
||||||
"LabelDynamicExternalId": "{0} Id:",
|
"LabelDynamicExternalId": "{0} Id:",
|
||||||
"LeaveBlankToNotSetAPassword": "Paróldi ornatpaý úshin bul óristi bos qaldyrýǵa bolady.",
|
"LeaveBlankToNotSetAPassword": "Paróldi ornatpaý úshin bul óristi bos qaldyrýǵa bolady.",
|
||||||
"MessageImageFileTypeAllowed": "Tek qana JPEG jáne PNG faıldary qoldaýda.",
|
"MessageImageFileTypeAllowed": "Tek qana JPEG jáne PNG faıldary qoldaýda.",
|
||||||
|
|
|
@ -1283,7 +1283,6 @@
|
||||||
"Genres": "Genres",
|
"Genres": "Genres",
|
||||||
"GenresValue": "Genres: {0}",
|
"GenresValue": "Genres: {0}",
|
||||||
"HeaderAlbums": "Albums",
|
"HeaderAlbums": "Albums",
|
||||||
"HeaderAudioLanguages": "Geluidstalen",
|
|
||||||
"HeaderCastAndCrew": "Cast & Crew",
|
"HeaderCastAndCrew": "Cast & Crew",
|
||||||
"HeaderCastCrew": "Cast & Crew",
|
"HeaderCastCrew": "Cast & Crew",
|
||||||
"Art": "Afbeeldingen",
|
"Art": "Afbeeldingen",
|
||||||
|
|
|
@ -1371,7 +1371,6 @@
|
||||||
"ButtonOk": "Ok",
|
"ButtonOk": "Ok",
|
||||||
"ButtonStart": "Start",
|
"ButtonStart": "Start",
|
||||||
"FormatValue": "Format: {0}",
|
"FormatValue": "Format: {0}",
|
||||||
"HeaderAudioLanguages": "Języki Audio",
|
|
||||||
"HeaderFavoriteMovies": "Ulubione filmy",
|
"HeaderFavoriteMovies": "Ulubione filmy",
|
||||||
"HeaderFavoriteShows": "Ulubione seriale",
|
"HeaderFavoriteShows": "Ulubione seriale",
|
||||||
"HeaderFavoriteEpisodes": "Ulubione odcinki",
|
"HeaderFavoriteEpisodes": "Ulubione odcinki",
|
||||||
|
|
|
@ -1331,7 +1331,6 @@
|
||||||
"GuideProviderLogin": "Provedor",
|
"GuideProviderLogin": "Provedor",
|
||||||
"HeaderAdmin": "Administrador",
|
"HeaderAdmin": "Administrador",
|
||||||
"HeaderApp": "Aplicativo",
|
"HeaderApp": "Aplicativo",
|
||||||
"HeaderAudioLanguages": "Opções de áudio",
|
|
||||||
"HeaderStatus": "Status",
|
"HeaderStatus": "Status",
|
||||||
"HeaderTags": "Marcações",
|
"HeaderTags": "Marcações",
|
||||||
"Horizontal": "Horizontal",
|
"Horizontal": "Horizontal",
|
||||||
|
|
|
@ -1381,7 +1381,6 @@
|
||||||
"Yes": "Да",
|
"Yes": "Да",
|
||||||
"Yesterday": "Вчера",
|
"Yesterday": "Вчера",
|
||||||
"ChangingMetadataImageSettingsNewContent": "Изменения в настройках загрузки метаданных или иллюстраций применяются только к новому содержанию, добавляемому в медиатеку. Чтобы применить изменения к наличным произведениям, необходимо обновить их метаданные вручную.",
|
"ChangingMetadataImageSettingsNewContent": "Изменения в настройках загрузки метаданных или иллюстраций применяются только к новому содержанию, добавляемому в медиатеку. Чтобы применить изменения к наличным произведениям, необходимо обновить их метаданные вручную.",
|
||||||
"HeaderAudioLanguages": "Языки аудио",
|
|
||||||
"LabelDynamicExternalId": "{0} Ид:",
|
"LabelDynamicExternalId": "{0} Ид:",
|
||||||
"LeaveBlankToNotSetAPassword": "Оставьте пустым, чтобы не назначать пароль.",
|
"LeaveBlankToNotSetAPassword": "Оставьте пустым, чтобы не назначать пароль.",
|
||||||
"MessageImageFileTypeAllowed": "Поддерживаются только файлы JPEG и PNG.",
|
"MessageImageFileTypeAllowed": "Поддерживаются только файлы JPEG и PNG.",
|
||||||
|
|
|
@ -1345,7 +1345,6 @@
|
||||||
"ErrorDeletingItem": "服务器删除项目时出错。请确认服务器具有对媒体文件夹的写入权限并重试。",
|
"ErrorDeletingItem": "服务器删除项目时出错。请确认服务器具有对媒体文件夹的写入权限并重试。",
|
||||||
"GroupBySeries": "按系列分组",
|
"GroupBySeries": "按系列分组",
|
||||||
"HeaderApp": "应用程序",
|
"HeaderApp": "应用程序",
|
||||||
"HeaderAudioLanguages": "音频语言",
|
|
||||||
"DirectStreamHelp1": "该媒体文件的分辨率和编码(H.264、AC3 等)与您的设备兼容,但容器格式(.mkv、.avi、.wmv 等)不受支持。因此,视频在串流至您的设备之前将会被即时封装为另一种格式。",
|
"DirectStreamHelp1": "该媒体文件的分辨率和编码(H.264、AC3 等)与您的设备兼容,但容器格式(.mkv、.avi、.wmv 等)不受支持。因此,视频在串流至您的设备之前将会被即时封装为另一种格式。",
|
||||||
"HeaderAppearsOn": "出现于",
|
"HeaderAppearsOn": "出现于",
|
||||||
"HeaderCancelSeries": "取消系列",
|
"HeaderCancelSeries": "取消系列",
|
||||||
|
|
|
@ -582,7 +582,6 @@
|
||||||
"HeaderAppearsOn": "同時出現於",
|
"HeaderAppearsOn": "同時出現於",
|
||||||
"HeaderAudio": "音訊",
|
"HeaderAudio": "音訊",
|
||||||
"HeaderAudioBooks": "有聲書",
|
"HeaderAudioBooks": "有聲書",
|
||||||
"HeaderAudioLanguages": "音訊語言",
|
|
||||||
"HeaderAudioSettings": "音訊設定",
|
"HeaderAudioSettings": "音訊設定",
|
||||||
"HeaderAudioTracks": "音軌",
|
"HeaderAudioTracks": "音軌",
|
||||||
"HeaderBackdrops": "背景",
|
"HeaderBackdrops": "背景",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue