mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-11 15:56:07 -07:00
Add top level info pages with history table
* Movies / TV Shows / Music
This commit is contained in:
parent
2616e14c83
commit
5b88058133
2 changed files with 48 additions and 12 deletions
|
@ -60,27 +60,37 @@ DOCUMENTATION :: END
|
||||||
% if data:
|
% if data:
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
% if data['type'] != 'library':
|
||||||
<div class="art-face" style="background-image:url(pms_image_proxy?img=${data['art']}&width=1920&height=1080)"></div>
|
<div class="art-face" style="background-image:url(pms_image_proxy?img=${data['art']}&width=1920&height=1080)"></div>
|
||||||
|
% endif
|
||||||
<div class="summary-container">
|
<div class="summary-container">
|
||||||
<div class="summary-navbar">
|
<div class="summary-navbar">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="summary-navbar-list">
|
<div class="summary-navbar-list">
|
||||||
% if data['type'] == 'movie':
|
% if data['type'] == 'library':
|
||||||
<span>Movies</span>
|
% if data['library'] == 'movie':
|
||||||
|
<span><a href="#">Movies</a></span>
|
||||||
|
% elif data['library'] == 'show':
|
||||||
|
<span><a href="#">TV Shows</a></span>
|
||||||
|
% elif data['library'] == 'music':
|
||||||
|
<span><a href="#">Music</a></span>
|
||||||
|
% endif
|
||||||
|
% elif data['type'] == 'movie':
|
||||||
|
<span><a href="info?item_id=movie">Movies</a></span>
|
||||||
<span><i class="fa fa-chevron-right"></i></span>
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="#">${data['title']}</a></span>
|
<span><a href="#">${data['title']}</a></span>
|
||||||
% elif data['type'] == 'show':
|
% elif data['type'] == 'show':
|
||||||
<span>TV Shows</span>
|
<span><a href="info?item_id=show">TV Shows</a></span>
|
||||||
<span><i class="fa fa-chevron-right"></i></span>
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="#">${data['title']}</a></span>
|
<span><a href="#">${data['title']}</a></span>
|
||||||
% elif data['type'] == 'season':
|
% elif data['type'] == 'season':
|
||||||
<span class="hidden-xs hidden-sm">TV Shows</span>
|
<span class="hidden-xs hidden-sm"><a href="info?item_id=show">TV Shows</a></span>
|
||||||
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></span>
|
<span><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></span>
|
||||||
<span><i class="fa fa-chevron-right"></i></span>
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="#">Season ${data['index']}</a></span>
|
<span><a href="#">Season ${data['index']}</a></span>
|
||||||
% elif data['type'] == 'episode':
|
% elif data['type'] == 'episode':
|
||||||
<span class="hidden-xs hidden-sm">TV Shows</span>
|
<span class="hidden-xs hidden-sm"><a href="info?item_id=show">TV Shows</a></span>
|
||||||
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
||||||
<span class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></span>
|
<span class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></span>
|
||||||
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
||||||
|
@ -88,17 +98,17 @@ DOCUMENTATION :: END
|
||||||
<span><i class="fa fa-chevron-right"></i></span>
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="#">Episode ${data['index']} - ${data['title']}</a></span>
|
<span><a href="#">Episode ${data['index']} - ${data['title']}</a></span>
|
||||||
% elif data['type'] == 'artist':
|
% elif data['type'] == 'artist':
|
||||||
<span>Music</span>
|
<span><a href="info?item_id=music">Music</a></span>
|
||||||
<span><i class="fa fa-chevron-right"></i></span>
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="#">${data['title']}</a></span>
|
<span><a href="#">${data['title']}</a></span>
|
||||||
% elif data['type'] == 'album':
|
% elif data['type'] == 'album':
|
||||||
<span class="hidden-xs hidden-sm">Music</span>
|
<span class="hidden-xs hidden-sm"><a href="info?item_id=music">Music</a></span>
|
||||||
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></span>
|
<span><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></span>
|
||||||
<span><i class="fa fa-chevron-right"></i></span>
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
<span><a href="#">${data['title']}</a></span>
|
<span><a href="#">${data['title']}</a></span>
|
||||||
% elif data['type'] == 'track':
|
% elif data['type'] == 'track':
|
||||||
<span class="hidden-xs hidden-sm">Music</span>
|
<span class="hidden-xs hidden-sm"><a href="info?item_id=music">Music</a></span>
|
||||||
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
||||||
<span class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></span>
|
<span class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></span>
|
||||||
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
<span class="hidden-xs hidden-sm"><i class="fa fa-chevron-right"></i></span>
|
||||||
|
@ -109,12 +119,13 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% if data['type'] != 'library':
|
||||||
<div class="summary-content-title-wrapper">
|
<div class="summary-content-title-wrapper">
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<div class="summary-content-poster hidden-xs hidden-sm">
|
<div class="summary-content-poster hidden-xs hidden-sm">
|
||||||
% if data['type'] == 'track':
|
% if data['type'] == 'track':
|
||||||
<a href="http://app.plex.tv/web/app#!/server/${config['pms_identifier']}/details/%2Flibrary%2Fmetadata%2F${data['parent_rating_key']}" target="Plex/Web" title="View in Plex/Web">
|
<a href="http://app.plex.tv/web/app#!/server/${config['pms_identifier']}/details/%2Flibrary%2Fmetadata%2F${data['parent_rating_key']}" target="Plex/Web" title="View in Plex/Web">
|
||||||
% else:
|
% elif data['type'] != 'library':
|
||||||
<a href="http://app.plex.tv/web/app#!/server/${config['pms_identifier']}/details/%2Flibrary%2Fmetadata%2F${data['rating_key']}" target="Plex/Web" title="View in Plex/Web">
|
<a href="http://app.plex.tv/web/app#!/server/${config['pms_identifier']}/details/%2Flibrary%2Fmetadata%2F${data['rating_key']}" target="Plex/Web" title="View in Plex/Web">
|
||||||
% endif
|
% endif
|
||||||
% if data['type'] == 'episode':
|
% if data['type'] == 'episode':
|
||||||
|
@ -129,7 +140,7 @@ DOCUMENTATION :: END
|
||||||
<span></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
% else:
|
% elif data['type'] != 'library':
|
||||||
<div class="summary-poster-face" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=300&height=450&fallback=poster);">
|
<div class="summary-poster-face" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=300&height=450&fallback=poster);">
|
||||||
<div class="summary-poster-face-overlay">
|
<div class="summary-poster-face-overlay">
|
||||||
<span></span>
|
<span></span>
|
||||||
|
@ -159,7 +170,9 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% endif
|
||||||
<div class="summary-content-wrapper">
|
<div class="summary-content-wrapper">
|
||||||
|
% if data['type'] != 'library':
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
% if data['type'] == 'movie' or data['type'] == 'show' or data['type'] == 'season':
|
% if data['type'] == 'movie' or data['type'] == 'show' or data['type'] == 'season':
|
||||||
<div class="summary-content-padding hidden-xs hidden-sm" style="height: 275px;"></div>
|
<div class="summary-content-padding hidden-xs hidden-sm" style="height: 275px;"></div>
|
||||||
|
@ -311,6 +324,7 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
% endif
|
% endif
|
||||||
|
% endif
|
||||||
<div class='col-md-12'>
|
<div class='col-md-12'>
|
||||||
<div class='table-card-header'>
|
<div class='table-card-header'>
|
||||||
<div class="header-bar">
|
<div class="header-bar">
|
||||||
|
@ -507,7 +521,20 @@ DOCUMENTATION :: END
|
||||||
|
|
||||||
% if data:
|
% if data:
|
||||||
<script src="interfaces/default/js/tables/history_table.js"></script>
|
<script src="interfaces/default/js/tables/history_table.js"></script>
|
||||||
% if data['type'] == 'show' or data['type'] == 'artist':
|
% if data['type'] == 'library':
|
||||||
|
<script>
|
||||||
|
function get_history() {
|
||||||
|
history_table_options.ajax = {
|
||||||
|
"url": "get_history",
|
||||||
|
type: 'post',
|
||||||
|
data: function ( d ) {
|
||||||
|
return { 'json_data': JSON.stringify( d ),
|
||||||
|
'media_type': '${data['media_type']}' };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
% elif data['type'] == 'show' or data['type'] == 'artist':
|
||||||
<script>
|
<script>
|
||||||
function get_history() {
|
function get_history() {
|
||||||
history_table_options.ajax = {
|
history_table_options.ajax = {
|
||||||
|
@ -606,7 +633,7 @@ DOCUMENTATION :: END
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
% endif
|
% endif
|
||||||
% if data['rating']:
|
% if data['type'] != 'library' and data['rating']:
|
||||||
<script>
|
<script>
|
||||||
// Convert rating to 5 star rating type
|
// Convert rating to 5 star rating type
|
||||||
var starRating = Math.round(${data['rating']} / 2);
|
var starRating = Math.round(${data['rating']} / 2);
|
||||||
|
|
|
@ -587,6 +587,9 @@ class WebInterface(object):
|
||||||
if 'reference_id' in kwargs:
|
if 'reference_id' in kwargs:
|
||||||
reference_id = kwargs.get('reference_id', "")
|
reference_id = kwargs.get('reference_id', "")
|
||||||
custom_where = [['session_history.reference_id', reference_id]]
|
custom_where = [['session_history.reference_id', reference_id]]
|
||||||
|
if 'media_type' in kwargs:
|
||||||
|
media_type = kwargs.get('media_type', "")
|
||||||
|
custom_where = [['session_history_metadata.media_type', media_type]]
|
||||||
|
|
||||||
data_factory = datafactory.DataFactory()
|
data_factory = datafactory.DataFactory()
|
||||||
history = data_factory.get_history(kwargs=kwargs, custom_where=custom_where, grouping=grouping, watched_percent=watched_percent)
|
history = data_factory.get_history(kwargs=kwargs, custom_where=custom_where, grouping=grouping, watched_percent=watched_percent)
|
||||||
|
@ -771,6 +774,12 @@ class WebInterface(object):
|
||||||
if source == 'history':
|
if source == 'history':
|
||||||
data_factory = datafactory.DataFactory()
|
data_factory = datafactory.DataFactory()
|
||||||
metadata = data_factory.get_metadata_details(row_id=item_id)
|
metadata = data_factory.get_metadata_details(row_id=item_id)
|
||||||
|
elif item_id == 'movie':
|
||||||
|
metadata = {'type': 'library', 'library': 'movie', 'media_type': 'movie', 'title': 'Movies'}
|
||||||
|
elif item_id == 'show':
|
||||||
|
metadata = {'type': 'library', 'library': 'show', 'media_type': 'episode', 'title': 'TV Shows'}
|
||||||
|
elif item_id == 'music':
|
||||||
|
metadata = {'type': 'library', 'library': 'music', 'media_type': 'track', 'title': 'Music'}
|
||||||
else:
|
else:
|
||||||
pms_connect = pmsconnect.PmsConnect()
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
result = pms_connect.get_metadata_details(rating_key=item_id)
|
result = pms_connect.get_metadata_details(rating_key=item_id)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue