mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-17 19:08:18 -07:00
rework filter dialog
This commit is contained in:
parent
1da9f23413
commit
902dc76b59
@ -1,17 +0,0 @@
|
|||||||
<div id="boxsetsPage" data-role="page" class="page libraryPage backdropPage collectionEditorPage noSecondaryNavPage" data-backdroptype="movie,boxset" data-require="scripts/moviecollections,paper-fab">
|
|
||||||
|
|
||||||
<div data-role="content">
|
|
||||||
<div class="viewSettings">
|
|
||||||
|
|
||||||
<div class="listTopPaging">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="itemsContainer paddedItemsContainer" style="text-align:center;"></div>
|
|
||||||
<div class="noItemsMessage" style="display: none; text-align: center;">
|
|
||||||
<p>${MessageNoCollectionsAvailable}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<paper-fab class="btnNewCollection bottomFab" icon="add" style="position:fixed;right:20px;background-color:#db4437;"></paper-fab>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,4 +1,4 @@
|
|||||||
define(['dialogHelper', 'events', 'browser', 'jQuery', 'emby-checkbox', 'emby-collapsible', 'css!components/filterdialog/style', 'paper-radio-button', 'paper-radio-group'], function (dialogHelper, events, browser, $) {
|
define(['dialogHelper', 'events', 'browser', 'emby-checkbox', 'emby-collapsible', 'css!components/filterdialog/style', 'paper-radio-button', 'paper-radio-group'], function (dialogHelper, events, browser) {
|
||||||
|
|
||||||
function renderOptions(context, selector, cssClass, items, isCheckedFn) {
|
function renderOptions(context, selector, cssClass, items, isCheckedFn) {
|
||||||
|
|
||||||
@ -85,6 +85,8 @@
|
|||||||
|
|
||||||
var query = options.query;
|
var query = options.query;
|
||||||
|
|
||||||
|
var elems, i, length;
|
||||||
|
|
||||||
if (options.mode == 'livetvchannels') {
|
if (options.mode == 'livetvchannels') {
|
||||||
|
|
||||||
context.querySelector('.chkFavorite').checked = query.IsFavorite == true;
|
context.querySelector('.chkFavorite').checked = query.IsFavorite == true;
|
||||||
@ -92,22 +94,26 @@
|
|||||||
context.querySelector('.chkDislikes').checked = query.IsDisliked == true;
|
context.querySelector('.chkDislikes').checked = query.IsDisliked == true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$('.chkStandardFilter', context).each(function () {
|
elems = context.querySelectorAll('.chkStandardFilter');
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
|
||||||
|
var chkStandardFilter = elems[i];
|
||||||
var filters = "," + (query.Filters || "");
|
var filters = "," + (query.Filters || "");
|
||||||
var filterName = this.getAttribute('data-filter');
|
var filterName = chkStandardFilter.getAttribute('data-filter');
|
||||||
|
|
||||||
this.checked = filters.indexOf(',' + filterName) != -1;
|
chkStandardFilter.checked = filters.indexOf(',' + filterName) != -1;
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.chkVideoTypeFilter', context).each(function () {
|
elems = context.querySelectorAll('.chkVideoTypeFilter');
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
|
||||||
|
var chkVideoTypeFilter = elems[i];
|
||||||
var filters = "," + (query.VideoTypes || "");
|
var filters = "," + (query.VideoTypes || "");
|
||||||
var filterName = this.getAttribute('data-filter');
|
var filterName = chkVideoTypeFilter.getAttribute('data-filter');
|
||||||
|
|
||||||
this.checked = filters.indexOf(',' + filterName) != -1;
|
chkVideoTypeFilter.checked = filters.indexOf(',' + filterName) != -1;
|
||||||
});
|
}
|
||||||
|
|
||||||
context.querySelector('.chk3DFilter').checked = query.Is3D == true;
|
context.querySelector('.chk3DFilter').checked = query.Is3D == true;
|
||||||
context.querySelector('.chkHDFilter').checked = query.IsHD == true;
|
context.querySelector('.chkHDFilter').checked = query.IsHD == true;
|
||||||
@ -119,27 +125,30 @@
|
|||||||
context.querySelector('#chkThemeVideo').checked = query.HasThemeVideo == true;
|
context.querySelector('#chkThemeVideo').checked = query.HasThemeVideo == true;
|
||||||
context.querySelector('#chkSpecialFeature').checked = query.HasSpecialFeature == true;
|
context.querySelector('#chkSpecialFeature').checked = query.HasSpecialFeature == true;
|
||||||
|
|
||||||
$('#chkSpecialEpisode', context).checked(query.ParentIndexNumber == 0);
|
context.querySelector('#chkSpecialEpisode').checked = query.ParentIndexNumber == 0;
|
||||||
$('#chkMissingEpisode', context).checked(query.IsMissing == true);
|
context.querySelector('#chkMissingEpisode').checked = query.IsMissing == true;
|
||||||
$('#chkFutureEpisode', context).checked(query.IsUnaired == true);
|
context.querySelector('#chkFutureEpisode').checked = query.IsUnaired == true;
|
||||||
|
|
||||||
context.querySelector('.playersRadioGroup').selected = query.MinPlayers == null ? 'all' : query.MinPlayers;
|
context.querySelector('.playersRadioGroup').selected = query.MinPlayers == null ? 'all' : query.MinPlayers;
|
||||||
|
|
||||||
$('.chkStatus', context).each(function () {
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
|
||||||
|
var chkStatus = elems[i];
|
||||||
var filters = "," + (query.SeriesStatus || "");
|
var filters = "," + (query.SeriesStatus || "");
|
||||||
var filterName = this.getAttribute('data-filter');
|
var filterName = chkStatus.getAttribute('data-filter');
|
||||||
|
|
||||||
this.checked = filters.indexOf(',' + filterName) != -1;
|
chkStatus.checked = filters.indexOf(',' + filterName) != -1;
|
||||||
});
|
}
|
||||||
|
|
||||||
$('.chkAirDays', context).each(function () {
|
elems = context.querySelectorAll('.chkAirDays');
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
|
||||||
|
var chkAirDays = elems[i];
|
||||||
var filters = "," + (query.AirDays || "");
|
var filters = "," + (query.AirDays || "");
|
||||||
var filterName = this.getAttribute('data-filter');
|
var filterName = chkAirDays.getAttribute('data-filter');
|
||||||
|
|
||||||
this.checked = filters.indexOf(',' + filterName) != -1;
|
chkAirDays.checked = filters.indexOf(',' + filterName) != -1;
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function triggerChange(instance) {
|
function triggerChange(instance) {
|
||||||
@ -160,286 +169,6 @@
|
|||||||
return elem;
|
return elem;
|
||||||
}
|
}
|
||||||
|
|
||||||
function bindEvents(instance, context, options) {
|
|
||||||
|
|
||||||
var query = options.query;
|
|
||||||
|
|
||||||
if (options.mode == 'livetvchannels') {
|
|
||||||
|
|
||||||
$('.chkFavorite', context).on('change', function () {
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.IsFavorite = this.checked ? true : null;
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$('.chkLikes', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.IsLiked = this.checked ? true : null;
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.chkDislikes', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.IsDisliked = this.checked ? true : null;
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$('.chkStandardFilter', context).on('change', function () {
|
|
||||||
|
|
||||||
var filterName = this.getAttribute('data-filter');
|
|
||||||
var filters = query.Filters || "";
|
|
||||||
|
|
||||||
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (this.checked) {
|
|
||||||
filters = filters ? (filters + ',' + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.Filters = filters;
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$('.chkVideoTypeFilter', context).on('change', function () {
|
|
||||||
|
|
||||||
var filterName = this.getAttribute('data-filter');
|
|
||||||
var filters = query.VideoTypes || "";
|
|
||||||
|
|
||||||
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (this.checked) {
|
|
||||||
filters = filters ? (filters + ',' + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.VideoTypes = filters;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.chk3DFilter', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.Is3D = this.checked ? true : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.chkHDFilter', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.IsHD = this.checked ? true : null;
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.chkSDFilter', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.IsHD = this.checked ? false : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.chkStatus', context).on('change', function () {
|
|
||||||
|
|
||||||
var filterName = this.getAttribute('data-filter');
|
|
||||||
var filters = query.SeriesStatus || "";
|
|
||||||
|
|
||||||
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (this.checked) {
|
|
||||||
filters = filters ? (filters + ',' + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.SeriesStatus = filters;
|
|
||||||
query.StartIndex = 0;
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.chkAirDays', context).on('change', function () {
|
|
||||||
|
|
||||||
var filterName = this.getAttribute('data-filter');
|
|
||||||
var filters = query.AirDays || "";
|
|
||||||
|
|
||||||
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (this.checked) {
|
|
||||||
filters = filters ? (filters + ',' + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.AirDays = filters;
|
|
||||||
query.StartIndex = 0;
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkTrailer', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.HasTrailer = this.checked ? true : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkThemeSong', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.HasThemeSong = this.checked ? true : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkSpecialFeature', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.HasSpecialFeature = this.checked ? true : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkThemeVideo', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.HasThemeVideo = this.checked ? true : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkMissingEpisode', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.IsMissing = this.checked ? true : false;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkSpecialEpisode', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.ParentIndexNumber = this.checked ? 0 : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkFutureEpisode', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
|
|
||||||
if (this.checked) {
|
|
||||||
query.IsUnaired = true;
|
|
||||||
query.IsVirtualUnaired = null;
|
|
||||||
} else {
|
|
||||||
query.IsUnaired = null;
|
|
||||||
query.IsVirtualUnaired = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#chkSubtitle', context).on('change', function () {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.HasSubtitles = this.checked ? true : null;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
});
|
|
||||||
|
|
||||||
context.querySelector('.playersRadioGroup').addEventListener('iron-select', function (e) {
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
var val = e.target.selected;
|
|
||||||
var newValue = val == "all" ? null : val;
|
|
||||||
var changed = query.MinPlayers != newValue;
|
|
||||||
query.MinPlayers = newValue;
|
|
||||||
if (changed) {
|
|
||||||
triggerChange(instance);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
context.addEventListener('change', function (e) {
|
|
||||||
|
|
||||||
var chkGenreFilter = parentWithClass(e.target, 'chkGenreFilter');
|
|
||||||
if (chkGenreFilter) {
|
|
||||||
var filterName = chkGenreFilter.getAttribute('data-filter');
|
|
||||||
var filters = query.Genres || "";
|
|
||||||
var delimiter = '|';
|
|
||||||
|
|
||||||
filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (chkGenreFilter.checked) {
|
|
||||||
filters = filters ? (filters + delimiter + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.Genres = filters;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var chkTagFilter = parentWithClass(e.target, 'chkTagFilter');
|
|
||||||
if (chkTagFilter) {
|
|
||||||
var filterName = chkTagFilter.getAttribute('data-filter');
|
|
||||||
var filters = query.Tags || "";
|
|
||||||
var delimiter = '|';
|
|
||||||
|
|
||||||
filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (chkTagFilter.checked) {
|
|
||||||
filters = filters ? (filters + delimiter + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.Tags = filters;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var chkYearFilter = parentWithClass(e.target, 'chkYearFilter');
|
|
||||||
if (chkYearFilter) {
|
|
||||||
var filterName = chkYearFilter.getAttribute('data-filter');
|
|
||||||
var filters = query.Years || "";
|
|
||||||
var delimiter = ',';
|
|
||||||
|
|
||||||
filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (chkYearFilter.checked) {
|
|
||||||
filters = filters ? (filters + delimiter + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.Years = filters;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var chkOfficialRatingFilter = parentWithClass(e.target, 'chkOfficialRatingFilter');
|
|
||||||
if (chkOfficialRatingFilter) {
|
|
||||||
var filterName = chkOfficialRatingFilter.getAttribute('data-filter');
|
|
||||||
var filters = query.OfficialRatings || "";
|
|
||||||
var delimiter = '|';
|
|
||||||
|
|
||||||
filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (chkOfficialRatingFilter.checked) {
|
|
||||||
filters = filters ? (filters + delimiter + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.OfficialRatings = filters;
|
|
||||||
|
|
||||||
triggerChange(instance);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function setVisibility(context, options) {
|
function setVisibility(context, options) {
|
||||||
|
|
||||||
if (options.mode == 'livetvchannels' || options.mode == 'albums' || options.mode == 'artists' || options.mode == 'albumartists' || options.mode == 'songs') {
|
if (options.mode == 'livetvchannels' || options.mode == 'albums' || options.mode == 'artists' || options.mode == 'albumartists' || options.mode == 'songs') {
|
||||||
@ -501,6 +230,314 @@
|
|||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
function onFavoriteChange() {
|
||||||
|
var query = options.query;
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsFavorite = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onStandardFilterChange() {
|
||||||
|
|
||||||
|
var query = options.query;
|
||||||
|
var filterName = this.getAttribute('data-filter');
|
||||||
|
var filters = query.Filters || "";
|
||||||
|
|
||||||
|
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
||||||
|
|
||||||
|
if (this.checked) {
|
||||||
|
filters = filters ? (filters + ',' + filterName) : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.Filters = filters;
|
||||||
|
triggerChange(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onVideoTypeFilterChange() {
|
||||||
|
|
||||||
|
var query = options.query;
|
||||||
|
var filterName = this.getAttribute('data-filter');
|
||||||
|
var filters = query.VideoTypes || "";
|
||||||
|
|
||||||
|
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
||||||
|
|
||||||
|
if (this.checked) {
|
||||||
|
filters = filters ? (filters + ',' + filterName) : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.VideoTypes = filters;
|
||||||
|
|
||||||
|
triggerChange(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onStatusChange() {
|
||||||
|
var query = options.query;
|
||||||
|
var filterName = this.getAttribute('data-filter');
|
||||||
|
var filters = query.SeriesStatus || "";
|
||||||
|
|
||||||
|
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
||||||
|
|
||||||
|
if (this.checked) {
|
||||||
|
filters = filters ? (filters + ',' + filterName) : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.SeriesStatus = filters;
|
||||||
|
query.StartIndex = 0;
|
||||||
|
triggerChange(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onAirDayChange() {
|
||||||
|
|
||||||
|
var query = options.query;
|
||||||
|
var filterName = this.getAttribute('data-filter');
|
||||||
|
var filters = query.AirDays || "";
|
||||||
|
|
||||||
|
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
||||||
|
|
||||||
|
if (this.checked) {
|
||||||
|
filters = filters ? (filters + ',' + filterName) : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.AirDays = filters;
|
||||||
|
query.StartIndex = 0;
|
||||||
|
triggerChange(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindEvents(context) {
|
||||||
|
|
||||||
|
var query = options.query;
|
||||||
|
var elems, i, length;
|
||||||
|
|
||||||
|
if (options.mode == 'livetvchannels') {
|
||||||
|
|
||||||
|
elems = context.querySelectorAll('.chkFavorite');
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
|
||||||
|
elems[i].addEventListener('change', onFavoriteChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
context.querySelector('.chkLikes').addEventListener('change', function () {
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsLiked = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
|
||||||
|
context.querySelector('.chkDislikes').addEventListener('change', function () {
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsDisliked = this.checked ? true : null;
|
||||||
|
triggerChange(self);
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
elems = context.querySelectorAll('.chkStandardFilter');
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
elems[i].addEventListener('change', onStandardFilterChange);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elems = context.querySelectorAll('.chkVideoTypeFilter');
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
elems[i].addEventListener('change', onVideoTypeFilterChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
context.querySelector('.chk3DFilter').addEventListener('change', function () {
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.Is3D = 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
elems = context.querySelectorAll('.chkAirDays');
|
||||||
|
for (i = 0, length = elems.length; i < length; i++) {
|
||||||
|
elems[i].addEventListener('change', onAirDayChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
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.querySelector('.playersRadioGroup').addEventListener('iron-select', function (e) {
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
var val = e.target.selected;
|
||||||
|
var newValue = val == "all" ? null : val;
|
||||||
|
var changed = query.MinPlayers != newValue;
|
||||||
|
query.MinPlayers = newValue;
|
||||||
|
if (changed) {
|
||||||
|
triggerChange(self);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
context.addEventListener('change', function (e) {
|
||||||
|
|
||||||
|
var chkGenreFilter = parentWithClass(e.target, 'chkGenreFilter');
|
||||||
|
if (chkGenreFilter) {
|
||||||
|
var filterName = chkGenreFilter.getAttribute('data-filter');
|
||||||
|
var filters = query.Genres || "";
|
||||||
|
var delimiter = '|';
|
||||||
|
|
||||||
|
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');
|
||||||
|
if (chkTagFilter) {
|
||||||
|
var filterName = chkTagFilter.getAttribute('data-filter');
|
||||||
|
var filters = query.Tags || "";
|
||||||
|
var delimiter = '|';
|
||||||
|
|
||||||
|
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');
|
||||||
|
if (chkYearFilter) {
|
||||||
|
var filterName = chkYearFilter.getAttribute('data-filter');
|
||||||
|
var filters = query.Years || "";
|
||||||
|
var delimiter = ',';
|
||||||
|
|
||||||
|
filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1);
|
||||||
|
|
||||||
|
if (chkYearFilter.checked) {
|
||||||
|
filters = filters ? (filters + delimiter + filterName) : filterName;
|
||||||
|
}
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.Years = filters;
|
||||||
|
|
||||||
|
triggerChange(self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var chkOfficialRatingFilter = parentWithClass(e.target, 'chkOfficialRatingFilter');
|
||||||
|
if (chkOfficialRatingFilter) {
|
||||||
|
var filterName = chkOfficialRatingFilter.getAttribute('data-filter');
|
||||||
|
var filters = query.OfficialRatings || "";
|
||||||
|
var delimiter = '|';
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
self.show = function () {
|
self.show = function () {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
@ -535,7 +572,7 @@
|
|||||||
|
|
||||||
var onTimeout = function () {
|
var onTimeout = function () {
|
||||||
updateFilterControls(dlg, options);
|
updateFilterControls(dlg, options);
|
||||||
bindEvents(self, dlg, options);
|
bindEvents(dlg);
|
||||||
|
|
||||||
if (enableDynamicFilters(options.mode)) {
|
if (enableDynamicFilters(options.mode)) {
|
||||||
dlg.classList.add('dynamicFilterDialog');
|
dlg.classList.add('dynamicFilterDialog');
|
||||||
|
@ -47,11 +47,11 @@
|
|||||||
</h2>
|
</h2>
|
||||||
<div class="checkboxList">
|
<div class="checkboxList">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" is="emby-checkbox" class="chkStatus" id="chkStatusContinuing" data-filter="Continuing"/>
|
<input type="checkbox" is="emby-checkbox" class="chkStatus" data-filter="Continuing"/>
|
||||||
<span>${OptionContinuing}</span>
|
<span>${OptionContinuing}</span>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" is="emby-checkbox" id="chkStatusContinuing" data-filter="Continuing" />
|
<input type="checkbox" is="emby-checkbox" class="chkStatus" data-filter="Ended" />
|
||||||
<span>${OptionEnded}</span>
|
<span>${OptionEnded}</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<button is="paper-icon-button-light" class="btnSelectView" title="${ButtonSelectView}"><iron-icon icon="view-comfy"></iron-icon></button>
|
<button is="paper-icon-button-light" class="btnSelectView" title="${ButtonSelectView}"><iron-icon icon="view-comfy"></iron-icon></button>
|
||||||
<button is="paper-icon-button-light" class="btnSort" title="${ButtonSort}"><iron-icon icon="sort-by-alpha"></iron-icon></button>
|
<button is="paper-icon-button-light" class="btnSort" title="${ButtonSort}"><iron-icon icon="sort-by-alpha"></iron-icon></button>
|
||||||
<button is="paper-icon-button-light" class="btnFilter" title="${ButtonFilter}"><iron-icon icon="filter-list"></iron-icon></button>
|
<button is="paper-icon-button-light" class="btnFilter" title="${ButtonFilter}"><iron-icon icon="filter-list"></iron-icon></button>
|
||||||
|
<button type="button" is="paper-icon-button-light" class="btnNewCollection autoSize hide"><i class="md-icon">add</i></button>
|
||||||
</div>
|
</div>
|
||||||
<div id="items" class="itemsContainer paddedItemsContainer itemsContainerWithAlphaPicker" style="text-align:center;"></div>
|
<div id="items" class="itemsContainer paddedItemsContainer itemsContainerWithAlphaPicker" style="text-align:center;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -118,7 +118,7 @@
|
|||||||
posterOptions.shape = "backdrop";
|
posterOptions.shape = "backdrop";
|
||||||
html = libraryBrowser.getPosterViewHtml(posterOptions);
|
html = libraryBrowser.getPosterViewHtml(posterOptions);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Poster
|
// Poster
|
||||||
posterOptions.showTitle = context == 'photos' ? 'auto' : true;
|
posterOptions.showTitle = context == 'photos' ? 'auto' : true;
|
||||||
posterOptions.overlayText = context == 'photos';
|
posterOptions.overlayText = context == 'photos';
|
||||||
@ -126,6 +126,15 @@
|
|||||||
html = libraryBrowser.getPosterViewHtml(posterOptions);
|
html = libraryBrowser.getPosterViewHtml(posterOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (currentItem.CollectionType == 'boxsets') {
|
||||||
|
view.querySelector('.btnNewCollection').classList.remove('hide');
|
||||||
|
if (!result.Items.length) {
|
||||||
|
html = '<p style="text-align:center;">' + Globalize.translate('MessageNoCollectionsAvailable') + '</p>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
view.querySelector('.btnNewCollection').classList.add('hide');
|
||||||
|
}
|
||||||
|
|
||||||
var elem = view.querySelector('#items');
|
var elem = view.querySelector('#items');
|
||||||
elem.innerHTML = html + pagingHtml;
|
elem.innerHTML = html + pagingHtml;
|
||||||
ImageLoader.lazyChildren(elem);
|
ImageLoader.lazyChildren(elem);
|
||||||
@ -310,6 +319,20 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// The button is created dynamically
|
||||||
|
view.querySelector('.btnNewCollection').addEventListener('click', function () {
|
||||||
|
|
||||||
|
require(['collectionEditor'], function (collectionEditor) {
|
||||||
|
|
||||||
|
var serverId = ApiClient.serverInfo().Id;
|
||||||
|
new collectionEditor().show({
|
||||||
|
items: [],
|
||||||
|
serverId: serverId
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
view.addEventListener('viewbeforeshow', function (e) {
|
view.addEventListener('viewbeforeshow', function (e) {
|
||||||
reloadItems(view);
|
reloadItems(view);
|
||||||
updateFilterControls();
|
updateFilterControls();
|
||||||
|
@ -1033,7 +1033,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (item.CollectionType == 'boxsets') {
|
if (item.CollectionType == 'boxsets') {
|
||||||
return 'collections.html?topParentId=' + item.Id;
|
return 'itemlist.html?topParentId=' + item.Id + '&parentId=' + item.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.CollectionType == 'tvshows') {
|
if (item.CollectionType == 'tvshows') {
|
||||||
|
@ -2423,12 +2423,6 @@ var AppInfo = {};
|
|||||||
roles: 'admin'
|
roles: 'admin'
|
||||||
});
|
});
|
||||||
|
|
||||||
defineRoute({
|
|
||||||
path: '/collections.html',
|
|
||||||
dependencies: [],
|
|
||||||
autoFocus: false
|
|
||||||
});
|
|
||||||
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/connectlogin.html',
|
path: '/connectlogin.html',
|
||||||
dependencies: ['emby-button', 'emby-input'],
|
dependencies: ['emby-button', 'emby-input'],
|
||||||
|
Loading…
Reference in New Issue
Block a user