mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
fixes #640 - Add management filters
This commit is contained in:
parent
c6dd5d44df
commit
0605bfbaaa
9 changed files with 294 additions and 116 deletions
|
@ -58,6 +58,7 @@ body {
|
|||
|
||||
h1 {
|
||||
font-weight: 300;
|
||||
font-size: 2.22em;
|
||||
}
|
||||
|
||||
.toolsSidebar h1 {
|
||||
|
@ -71,6 +72,7 @@ h1 {
|
|||
|
||||
h2 {
|
||||
font-weight: 400;
|
||||
font-size: 1.68em;
|
||||
}
|
||||
|
||||
h1 a {
|
||||
|
|
|
@ -316,7 +316,7 @@
|
|||
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listTags"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div data-role="collapsible" data-mini="true" id="metadataSettingsCollapsible" style="display: none;">
|
||||
<div data-role="collapsible" data-mini="true" id="metadataSettingsCollapsible" style="display: none;" data-collapsed="false">
|
||||
<h3>Metadata Settings</h3>
|
||||
<div>
|
||||
<p>
|
||||
|
|
|
@ -97,9 +97,18 @@
|
|||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="b" data-position-fixed="true">
|
||||
<form>
|
||||
|
||||
<fieldset data-role="controlgroup" data-type="horizontal" style="margin-bottom: 1em;">
|
||||
<legend>Filters:</legend>
|
||||
<input type="radio" name="radioFilterTypes" id="radioBasicFilters" value="on" checked="checked" data-mini="true" data-theme="c">
|
||||
<label for="radioBasicFilters">Basic</label>
|
||||
<input type="radio" name="radioFilterTypes" id="radioAdvancedFilters" value="off" data-mini="true" data-theme="c">
|
||||
<label for="radioAdvancedFilters">Advanced</label>
|
||||
</fieldset>
|
||||
<div class="basicFilters">
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Filters:</strong>
|
||||
<strong>User Data:</strong>
|
||||
</legend>
|
||||
<input class="chkStandardFilter" type="checkbox" data-theme="c" name="chkPlayed" id="chkPlayed" data-filter="IsPlayed" data-mini="true">
|
||||
<label for="chkPlayed">Watched</label>
|
||||
|
@ -142,6 +151,28 @@
|
|||
<input class="chk3DFilter" type="checkbox" data-theme="c" name="chk3D" id="chk3D" data-filter="Digital3D,Sbs3D" data-mini="true">
|
||||
<label for="chk3D">3D</label>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div class="advancedFilters" style="display: none;">
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Management:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="chkMissingImdbId" type="checkbox" data-theme="c" name="chkMissingImdbId" id="chkMissingImdbId" data-mini="true">
|
||||
<label for="chkMissingImdbId">Missing IMDb Id</label>
|
||||
|
||||
<input class="chkMissingTmdbId" type="checkbox" data-theme="c" name="chkMissingTmdbId" id="chkMissingTmdbId" data-mini="true">
|
||||
<label for="chkMissingTmdbId">Missing Tmdb Id</label>
|
||||
|
||||
<input class="chkMissingOverview" type="checkbox" data-theme="c" name="chkMissingOverview" id="chkMissingOverview" data-mini="true">
|
||||
<label for="chkMissingOverview">Missing Overview</label>
|
||||
|
||||
<input class="chkYearMismatch" type="checkbox" data-theme="c" name="chkYearMismatch" id="chkYearMismatch" data-mini="true">
|
||||
<label for="chkYearMismatch">File/Metadata Years Mismatched</label>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
|
@ -164,6 +195,7 @@
|
|||
<label for="chkThemeVideo">Theme video</label>
|
||||
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -516,17 +516,16 @@
|
|||
userId: Dashboard.getCurrentUserId()
|
||||
});
|
||||
}
|
||||
else if (item.Type == "Season" && item.IndexNumber != null) {
|
||||
else if (item.Type == "Season") {
|
||||
|
||||
if (item.IndexNumber == null) {
|
||||
|
||||
// If there's no known season number, just use generic folder browsing
|
||||
if (!user.Configuration.DisplayMissingEpisodes) {
|
||||
query.IsMissing = false;
|
||||
}
|
||||
if (!user.Configuration.DisplayUnairedEpisodes) {
|
||||
query.IsVirtualUnaired = false;
|
||||
}
|
||||
// Use dedicated episodes endpoint
|
||||
promise = ApiClient.getEpisodes(item.SeriesId, {
|
||||
|
||||
seasonId: item.Id,
|
||||
userId: Dashboard.getCurrentUserId()
|
||||
});
|
||||
} else {
|
||||
|
||||
// Use dedicated episodes endpoint
|
||||
|
|
|
@ -142,6 +142,11 @@
|
|||
$('#chkThemeSong', page).checked(query.HasThemeSong == true).checkboxradio('refresh');
|
||||
$('#chkThemeVideo', page).checked(query.HasThemeVideo == true).checkboxradio('refresh');
|
||||
|
||||
$('#chkMissingImdbId', page).checked(query.HasImdbId == false).checkboxradio('refresh');
|
||||
$('#chkMissingTmdbId', page).checked(query.HasTmdbId == false).checkboxradio('refresh');
|
||||
$('#chkMissingOverview', page).checked(query.HasOverview == false).checkboxradio('refresh');
|
||||
$('#chkYearMismatch', page).checked(query.IsYearMismatched == true).checkboxradio('refresh');
|
||||
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
|
@ -290,6 +295,58 @@
|
|||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#radioBasicFilters', this).on('change', function () {
|
||||
|
||||
if (this.checked) {
|
||||
$('.basicFilters', page).show();
|
||||
$('.advancedFilters', page).hide();
|
||||
} else {
|
||||
$('.basicFilters', page).hide();
|
||||
}
|
||||
});
|
||||
|
||||
$('#radioAdvancedFilters', this).on('change', function () {
|
||||
|
||||
if (this.checked) {
|
||||
$('.advancedFilters', page).show();
|
||||
$('.basicFilters', page).hide();
|
||||
} else {
|
||||
$('.advancedFilters', page).hide();
|
||||
}
|
||||
});
|
||||
|
||||
$('#chkMissingImdbId', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.HasImdbId = this.checked ? false : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#chkMissingTmdbId', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.HasTmdbId = this.checked ? false : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#chkMissingOverview', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.HasOverview = this.checked ? false : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#chkYearMismatch', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.IsYearMismatched = this.checked ? true : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#moviesPage", function () {
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
|
||||
html += "<h3>" + plugin.Name + "</h3>";
|
||||
|
||||
html += "<p><strong>" + plugin.Version + "</strong></p>";
|
||||
html += "<p>" + plugin.Version + "</p>";
|
||||
|
||||
html += "</a>";
|
||||
|
||||
|
|
|
@ -644,7 +644,7 @@ var Dashboard = {
|
|||
}
|
||||
}
|
||||
|
||||
html += '<a href="edititemmetadata.html" style="margin-top: .5em;">Metadata Manager</a>';
|
||||
html += '<a href="edititemmetadata.html" style="margin-top: 1em;">Metadata Manager</a>';
|
||||
|
||||
// collapsible
|
||||
html += '</div>';
|
||||
|
|
|
@ -143,6 +143,11 @@
|
|||
$('#chkThemeVideo', page).checked(query.HasThemeVideo == true).checkboxradio('refresh');
|
||||
$('#chkSpecialFeature', page).checked(query.HasSpecialFeature == true).checkboxradio('refresh');
|
||||
|
||||
$('#chkMissingImdbId', page).checked(query.HasImdbId == false).checkboxradio('refresh');
|
||||
$('#chkMissingTvdbId', page).checked(query.HasTvdbId == false).checkboxradio('refresh');
|
||||
$('#chkMissingOverview', page).checked(query.HasOverview == false).checkboxradio('refresh');
|
||||
$('#chkYearMismatch', page).checked(query.IsYearMismatched == true).checkboxradio('refresh');
|
||||
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWith);
|
||||
}
|
||||
|
||||
|
@ -271,6 +276,58 @@
|
|||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#radioBasicFilters', this).on('change', function () {
|
||||
|
||||
if (this.checked) {
|
||||
$('.basicFilters', page).show();
|
||||
$('.advancedFilters', page).hide();
|
||||
} else {
|
||||
$('.basicFilters', page).hide();
|
||||
}
|
||||
});
|
||||
|
||||
$('#radioAdvancedFilters', this).on('change', function () {
|
||||
|
||||
if (this.checked) {
|
||||
$('.advancedFilters', page).show();
|
||||
$('.basicFilters', page).hide();
|
||||
} else {
|
||||
$('.advancedFilters', page).hide();
|
||||
}
|
||||
});
|
||||
|
||||
$('#chkMissingImdbId', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.HasImdbId = this.checked ? false : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#chkMissingTvdbId', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.HasTvdbId = this.checked ? false : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#chkMissingOverview', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.HasOverview = this.checked ? false : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#chkYearMismatch', this).on('change', function () {
|
||||
|
||||
query.StartIndex = 0;
|
||||
query.IsYearMismatched = this.checked ? true : null;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#tvShowsPage", function () {
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
|
|
@ -78,6 +78,15 @@
|
|||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="b" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup" data-type="horizontal" style="margin-bottom: 1em;">
|
||||
<legend>Filters:</legend>
|
||||
<input type="radio" name="radioFilterTypes" id="radioBasicFilters" value="on" checked="checked" data-mini="true" data-theme="c">
|
||||
<label for="radioBasicFilters">Basic</label>
|
||||
<input type="radio" name="radioFilterTypes" id="radioAdvancedFilters" value="off" data-mini="true" data-theme="c">
|
||||
<label for="radioAdvancedFilters">Advanced</label>
|
||||
</fieldset>
|
||||
|
||||
<div class="basicFilters">
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Filters:</strong>
|
||||
|
@ -121,6 +130,27 @@
|
|||
<input class="chkAirDays" type="checkbox" name="chkSaturday" id="chkSaturday" data-theme="c" data-filter="Saturday" data-mini="true">
|
||||
<label for="chkSaturday">Saturday</label>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="advancedFilters" style="display: none;">
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Management:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="chkMissingImdbId" type="checkbox" data-theme="c" name="chkMissingImdbId" id="chkMissingImdbId" data-mini="true">
|
||||
<label for="chkMissingImdbId">Missing IMDb Id</label>
|
||||
|
||||
<input class="chkMissingTvdbId" type="checkbox" data-theme="c" name="chkMissingTvdbId" id="chkMissingTvdbId" data-mini="true">
|
||||
<label for="chkMissingTvdbId">Missing Tvdb Id</label>
|
||||
|
||||
<input class="chkMissingOverview" type="checkbox" data-theme="c" name="chkMissingOverview" id="chkMissingOverview" data-mini="true">
|
||||
<label for="chkMissingOverview">Missing Overview</label>
|
||||
|
||||
<input class="chkYearMismatch" type="checkbox" data-theme="c" name="chkYearMismatch" id="chkYearMismatch" data-mini="true">
|
||||
<label for="chkYearMismatch">File/Metadata Years Mismatched</label>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
|
@ -140,6 +170,7 @@
|
|||
<label for="chkThemeVideo">Theme video</label>
|
||||
|
||||
</fieldset>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue