Flexbox activity card metadata

This commit is contained in:
JonnyWong16 2017-11-05 13:28:10 -08:00
parent 1bd2f332d9
commit d77696be59
2 changed files with 292 additions and 256 deletions

View file

@ -762,9 +762,17 @@ a .users-poster-face:hover {
.dashboard-activity-terminate-session:hover { .dashboard-activity-terminate-session:hover {
color: #e9a049; color: #e9a049;
} }
.dashboard-activity-info-container {
display: -webkit-flex;
display: flex;
flex-direction: column;
height: 225px;
width: 385px;
overflow: hidden;
}
.dashboard-activity-info-scroller { .dashboard-activity-info-scroller {
height: 225px; height: 225px;
width: 335px; width: 100%;
-webkit-flex-grow: 1; -webkit-flex-grow: 1;
flex-grow: 1; flex-grow: 1;
z-index: 1; z-index: 1;
@ -807,7 +815,8 @@ a .users-poster-face:hover {
text-align: right; text-align: right;
text-transform: uppercase; text-transform: uppercase;
line-height: 14px; line-height: 14px;
float: left; -webkit-flex-shrink: 0;
flex-shrink: 0;
} }
.dashboard-activity-info-item .sub-value { .dashboard-activity-info-item .sub-value {
margin-left: 10px; margin-left: 10px;
@ -909,38 +918,59 @@ a:hover .dashboard-activity-cover {
font-size: 13px; font-size: 13px;
padding: 0px 3px 0 3px; padding: 0px 3px 0 3px;
} }
.dashboard-activity-metadata-title-container {
display: flex;
flex-direction: row;
font-size: 13px;
font-weight: bold;
line-height: 25px;
color: #fff;
}
.dashboard-activity-metadata-play_state-icon {
flex-basis: 25px;
-webkit-flex-shrink: 0;
flex-shrink: 0;
}
.dashboard-activity-metadata-title { .dashboard-activity-metadata-title {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 350px;
-webkit-flex-grow: 1;
flex-grow: 1;
}
.dashboard-activity-metadata-subtitle-container {
display: flex;
flex-direction: row;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
font-size: 13px; font-size: 13px;
font-weight: bold; font-weight: bold;
line-height: 25px; line-height: 25px;
color: #fff; color: #999;
max-width: 100%; }
.dashboard-activity-metadata-media_type-icon {
flex-basis: 25px;
-webkit-flex-shrink: 0;
flex-shrink: 0;
} }
.dashboard-activity-metadata-subtitle { .dashboard-activity-metadata-subtitle {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
font-size: 13px; -webkit-flex-grow: 1;
font-weight: bold; flex-grow: 1;
line-height: 25px;
color: #999;
max-width: 320px;
float: left;
} }
.dashboard-activity-metadata-user { .dashboard-activity-metadata-user {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
font-size: 13px;
font-weight: bold;
line-height: 25px;
color: #999;
text-align: right; text-align: right;
width: 124px; max-width: 124px;
float: right; flex-basis: 124px;
-webkit-flex-shrink: 0;
flex-shrink: 0;
} }
.dashboard-activity-metadata-user-thumb { .dashboard-activity-metadata-user-thumb {
background-color: #282828; background-color: #282828;
@ -3062,7 +3092,7 @@ pre::-webkit-scrollbar-thumb {
.home-platforms-instance { .home-platforms-instance {
width: calc(100% - 20px); width: calc(100% - 20px);
} }
.dashboard-instance { .dashboard-activity-instance {
width: 100%; width: 100%;
} }
} }

View file

@ -123,207 +123,209 @@ DOCUMENTATION :: END
</div> </div>
% endif % endif
</div> </div>
<div class="dashboard-activity-info-scroller scrollbar-macosx"> <div class="dashboard-activity-info-container">
<div class="dashboard-activity-info"> <div class="dashboard-activity-info-scroller scrollbar-macosx">
<ul class="list-unstyled dashboard-activity-info-list"> <div class="dashboard-activity-info">
<li class="dashboard-activity-info-item"> <ul class="list-unstyled dashboard-activity-info-list">
<div class="sub-heading">Platform</div> <li class="dashboard-activity-info-item">
<div class="sub-value">${data['platform']}</div> <div class="sub-heading">Platform</div>
</li> <div class="sub-value">${data['platform']}</div>
<li class="dashboard-activity-info-item"> </li>
<div class="sub-heading">Player</div> <li class="dashboard-activity-info-item">
<div class="sub-value">${data['player']}</div> <div class="sub-heading">Player</div>
</li> <div class="sub-value">${data['player']}</div>
<li class="dashboard-activity-info-item"> </li>
<div class="sub-heading">Quality</div> <li class="dashboard-activity-info-item">
<div class="sub-value" id="stream_quality-${sk}"> <div class="sub-heading">Quality</div>
% if data['media_type'] != 'photo' and data['quality_profile'] != 'Unknown': <div class="sub-value" id="stream_quality-${sk}">
<% % if data['media_type'] != 'photo' and data['quality_profile'] != 'Unknown':
br = helpers.cast_to_int(data['stream_bitrate']) or ''
if br:
if br > 1000:
br = '(' + str(round(br / 1000.0, 1)) + ' Mbps)'
else:
br = '(' + str(br) + ' kbps)'
%>
${data['quality_profile']} ${br}
% else:
${data['quality_profile']}
% endif
</div>
</li>
% if data['optimized_version'] == '1':
<li class="dashboard-activity-info-item">
<div class="sub-heading">Optimized</div>
<div class="sub-value" id="optimized_version-${sk}">
${data['optimized_version_profile']}
</div>
</li>
% endif
</ul>
<ul class="list-unstyled dashboard-activity-info-list">
<li class="dashboard-activity-info-item">
% if _session['user_group'] == 'admin':
<div class="sub-heading"><span class="raw-stream-info-modal" data-toggle="modal" data-target="#raw-stream-info-modal" data-key="${sk}">Stream</span></div>\
% else:
<div class="sub-heading">Stream</div>
% endif
<div class="sub-value" id="transcode_decision-${sk}">
% if data['transcode_decision'] == 'transcode':
Transcode
% if data['transcode_throttled'] == '1':
(Throttled)
% else:
(Speed: ${data['transcode_speed']})
% endif
% elif data['transcode_decision'] == 'copy':
Direct Stream
% else:
Direct Play ${'(Synced)' if data['synced_version'] == '1' else ''}
% endif
</div>
</li>
<li class="dashboard-activity-info-item">
<div class="sub-heading">Container</div>
<div class="sub-value" id="transcode_container-${sk}">
% if data.get('stream_container_decision') == 'transcode':
Transcode (${data['container'].upper()} &rarr; ${data['stream_container'].upper()})
% else:
Direct Play (${data['container'].upper()})
% endif
</div>
</li>
% if data['media_type'] in ('movie', 'episode', 'clip', 'photo'):
<li class="dashboard-activity-info-item">
<div class="sub-heading">Video</div>
<div class="sub-value" id="video_decision-${sk}">
% if data['media_type'] in ('movie', 'episode', 'clip'):
% if data.get('stream_video_decision') == 'transcode':
<% <%
hw_d = hw_e = '' br = helpers.cast_to_int(data['stream_bitrate']) or ''
if data['transcode_hw_requested'] == '1' and data['transcode_hw_full_pipeline'] == '0': if br:
hw_d = ' (HW)' if br > 1000:
elif data['transcode_hw_requested'] == '1' and data['transcode_hw_full_pipeline'] == '1': br = '(' + str(round(br / 1000.0, 1)) + ' Mbps)'
hw_d = hw_e = ' (HW)' else:
br = '(' + str(br) + ' kbps)'
%> %>
Transcode (${data['video_codec'].upper()}${hw_d} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['video_resolution'], data['video_resolution'])} &rarr; ${data['stream_video_codec'].upper()}${hw_e} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['stream_video_resolution'], data['stream_video_resolution'])}) ${data['quality_profile']} ${br}
% elif data.get('stream_video_decision') == 'copy':
Direct Stream (${data['stream_video_codec'].upper()} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['stream_video_resolution'], data['stream_video_resolution'])})
% else: % else:
Direct Play (${data['video_codec'].upper()} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['video_resolution'], data['video_resolution'])}) ${data['quality_profile']}
% endif % endif
% elif data['media_type'] == 'photo': </div>
Direct Play (${data['width']}x${data['height']}) </li>
% endif % if data['optimized_version'] == '1':
</div> <li class="dashboard-activity-info-item">
</li> <div class="sub-heading">Optimized</div>
% endif <div class="sub-value" id="optimized_version-${sk}">
% if data['media_type'] in ('movie', 'episode', 'clip', 'track'): ${data['optimized_version_profile']}
<li class="dashboard-activity-info-item"> </div>
<div class="sub-heading">Audio</div> </li>
<div class="sub-value" id="audio_decision-${sk}"> % endif
% if data.get('stream_audio_decision') == 'transcode': </ul>
Transcode (${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['audio_codec'], data['audio_codec'].upper())} ${data['audio_channel_layout'].split('(')[0].capitalize()} &rarr; ${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['stream_audio_codec'], data['stream_audio_codec'].upper())} ${data['stream_audio_channel_layout'].split('(')[0].capitalize()}) <ul class="list-unstyled dashboard-activity-info-list">
% elif data.get('stream_audio_decision') == 'copy': <li class="dashboard-activity-info-item">
Direct Stream (${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['stream_audio_codec'], data['stream_audio_codec'].upper())} ${data['stream_audio_channel_layout'].split('(')[0].capitalize()}) % if _session['user_group'] == 'admin':
<div class="sub-heading"><span class="raw-stream-info-modal" data-toggle="modal" data-target="#raw-stream-info-modal" data-key="${sk}">Stream</span></div>\
% else: % else:
Direct Play (${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['audio_codec'], data['audio_codec'].upper())} ${data['audio_channel_layout'].split('(')[0].capitalize()}) <div class="sub-heading">Stream</div>
% endif % endif
</div> <div class="sub-value" id="transcode_decision-${sk}">
</li> % if data['transcode_decision'] == 'transcode':
% endif Transcode
% if data['media_type'] in ('movie', 'episode', 'clip'): % if data['transcode_throttled'] == '1':
<li class="dashboard-activity-info-item"> (Throttled)
<div class="sub-heading">Subtitle</div> % else:
<div class="sub-value" id="subtitle_decision-${sk}"> (Speed: ${data['transcode_speed']})
% if data['subtitles'] == '1': % endif
% if data['stream_subtitle_decision'] == 'transcode': % elif data['transcode_decision'] == 'copy':
Transcode (${data['subtitle_codec'].upper()} &rarr; ${data['stream_subtitle_codec'].upper()}) Direct Stream
% elif data['stream_subtitle_decision'] == 'copy':
Direct Stream (${data['subtitle_codec'].upper()})
% elif data['stream_subtitle_decision'] == 'burn':
Burn (${data['subtitle_codec'].upper()})
% else: % else:
Direct Play (${data['subtitle_codec'].upper()}) Direct Play ${'(Synced)' if data['synced_version'] == '1' else ''}
% endif % endif
% else: </div>
None </li>
% endif <li class="dashboard-activity-info-item">
</div> <div class="sub-heading">Container</div>
</li> <div class="sub-value" id="transcode_container-${sk}">
% endif % if data.get('stream_container_decision') == 'transcode':
</ul> Transcode (${data['container'].upper()} &rarr; ${data['stream_container'].upper()})
<ul class="list-unstyled dashboard-activity-info-list"> % else:
<li class="dashboard-activity-info-item"> Direct Play (${data['container'].upper()})
<div class="sub-heading">Location</div> % endif
<div class="sub-value"> </div>
% if data['ip_address'] != 'N/A': </li>
${'LAN' if data['local'] == '1' else 'WAN'}: ${data['ip_address']} % if data['media_type'] in ('movie', 'episode', 'clip', 'photo'):
<a href="#" class="external_ip-modal" data-toggle="modal" data-target="#ip-info-modal" data-ip="${data['ip_address']}"> <li class="dashboard-activity-info-item">
<span id="external_ip-${sk}" class="external-ip-tooltip" data-toggle="tooltip" title="Lookup IP" style="display: none;"><i class="fa fa-map-marker"></i></span> <div class="sub-heading">Video</div>
</a> <div class="sub-value" id="video_decision-${sk}">
<script> % if data['media_type'] in ('movie', 'episode', 'clip'):
isPrivateIP("${data['ip_address']}").then(function () { % if data.get('stream_video_decision') == 'transcode':
$("#external_ip-${sk}").hide(); <%
}, function () { hw_d = hw_e = ''
$("#external_ip-${sk}").show(); if data['transcode_hw_requested'] == '1' and data['transcode_hw_full_pipeline'] == '0':
}); hw_d = ' (HW)'
</script> elif data['transcode_hw_requested'] == '1' and data['transcode_hw_full_pipeline'] == '1':
% else: hw_d = hw_e = ' (HW)'
N/A %>
% endif Transcode (${data['video_codec'].upper()}${hw_d} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['video_resolution'], data['video_resolution'])} &rarr; ${data['stream_video_codec'].upper()}${hw_e} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['stream_video_resolution'], data['stream_video_resolution'])})
</div> % elif data.get('stream_video_decision') == 'copy':
</li> Direct Stream (${data['stream_video_codec'].upper()} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['stream_video_resolution'], data['stream_video_resolution'])})
<li class="dashboard-activity-info-item"> % else:
<div class="sub-heading">Bandwidth</div> Direct Play (${data['video_codec'].upper()} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['video_resolution'], data['video_resolution'])})
<div class="sub-value"> % endif
% if data['media_type'] != 'photo' and helpers.cast_to_int(data['bandwidth']): % elif data['media_type'] == 'photo':
<% Direct Play (${data['width']}x${data['height']})
bw = helpers.cast_to_int(data['bandwidth']) % endif
if bw != "Unknown": </div>
if bw > 1000: </li>
bw = str(round(bw / 1000.0, 1)) + ' Mbps' % endif
else: % if data['media_type'] in ('movie', 'episode', 'clip', 'track'):
bw = str(bw) + ' kbps' <li class="dashboard-activity-info-item">
%> <div class="sub-heading">Audio</div>
<span id="stream-bandwidth-${sk}">${bw}</span> <div class="sub-value" id="audio_decision-${sk}">
<span id="streaming-brain-${sk}" data-toggle="tooltip" title="Streaming Brain Estimate"><i class="fa fa-info-circle"></i></span> % if data.get('stream_audio_decision') == 'transcode':
% elif data['synced_version'] == '1' or data['channel_stream'] == '1': Transcode (${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['audio_codec'], data['audio_codec'].upper())} ${data['audio_channel_layout'].split('(')[0].capitalize()} &rarr; ${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['stream_audio_codec'], data['stream_audio_codec'].upper())} ${data['stream_audio_channel_layout'].split('(')[0].capitalize()})
<span id="stream-bandwidth-${sk}">None</span> % elif data.get('stream_audio_decision') == 'copy':
% else: Direct Stream (${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['stream_audio_codec'], data['stream_audio_codec'].upper())} ${data['stream_audio_channel_layout'].split('(')[0].capitalize()})
<span id="stream-bandwidth-${sk}">Unknown</span> % else:
% endif Direct Play (${plexpy.common.AUDIO_CODEC_OVERRIDES.get(data['audio_codec'], data['audio_codec'].upper())} ${data['audio_channel_layout'].split('(')[0].capitalize()})
</div> % endif
</li> </div>
</ul> </li>
% endif
% if data['media_type'] in ('movie', 'episode', 'clip'):
<li class="dashboard-activity-info-item">
<div class="sub-heading">Subtitle</div>
<div class="sub-value" id="subtitle_decision-${sk}">
% if data['subtitles'] == '1':
% if data['stream_subtitle_decision'] == 'transcode':
Transcode (${data['subtitle_codec'].upper()} &rarr; ${data['stream_subtitle_codec'].upper()})
% elif data['stream_subtitle_decision'] == 'copy':
Direct Stream (${data['subtitle_codec'].upper()})
% elif data['stream_subtitle_decision'] == 'burn':
Burn (${data['subtitle_codec'].upper()})
% else:
Direct Play (${data['subtitle_codec'].upper()})
% endif
% else:
None
% endif
</div>
</li>
% endif
</ul>
<ul class="list-unstyled dashboard-activity-info-list">
<li class="dashboard-activity-info-item">
<div class="sub-heading">Location</div>
<div class="sub-value">
% if data['ip_address'] != 'N/A':
${'LAN' if data['local'] == '1' else 'WAN'}: ${data['ip_address']}
<a href="#" class="external_ip-modal" data-toggle="modal" data-target="#ip-info-modal" data-ip="${data['ip_address']}">
<span id="external_ip-${sk}" class="external-ip-tooltip" data-toggle="tooltip" title="Lookup IP" style="display: none;"><i class="fa fa-map-marker"></i></span>
</a>
<script>
isPrivateIP("${data['ip_address']}").then(function () {
$("#external_ip-${sk}").hide();
}, function () {
$("#external_ip-${sk}").show();
});
</script>
% else:
N/A
% endif
</div>
</li>
<li class="dashboard-activity-info-item">
<div class="sub-heading">Bandwidth</div>
<div class="sub-value">
% if data['media_type'] != 'photo' and helpers.cast_to_int(data['bandwidth']):
<%
bw = helpers.cast_to_int(data['bandwidth'])
if bw != "Unknown":
if bw > 1000:
bw = str(round(bw / 1000.0, 1)) + ' Mbps'
else:
bw = str(bw) + ' kbps'
%>
<span id="stream-bandwidth-${sk}">${bw}</span>
<span id="streaming-brain-${sk}" data-toggle="tooltip" title="Streaming Brain Estimate"><i class="fa fa-info-circle"></i></span>
% elif data['synced_version'] == '1' or data['channel_stream'] == '1':
<span id="stream-bandwidth-${sk}">None</span>
% else:
<span id="stream-bandwidth-${sk}">Unknown</span>
% endif
</div>
</li>
</ul>
</div>
</div>
% if data['media_type'] != 'photo':
<div class="dashboard-activity-info-time">
% if data['view_offset']:
ETA:
<span id="stream-eta-${sk}">
<script>
$("#stream-eta-${sk}").html(moment().add(parseInt("${data['duration']}") - parseInt("${data['view_offset']}"), 'milliseconds').format(time_format));
</script>
</span><br /><span class="progress_time_offset" id="stream-view-offset-${sk}" data-last_view_offset="${data['view_offset']}" data-view_offset="${data['view_offset']}" data-state="${data['state']}">
<script>
$("#stream-view-offset-${sk}").html(millisecondsToMinutes(parseInt("${data['view_offset']}"), false));
</script>
</span> / <span class="progress_time_total" id="stream-duration-${sk}">
<script>
$("#stream-duration-${sk}").html(millisecondsToMinutes(parseInt("${data['duration']}"), false));
</script>
</span>
% else:
ETA: Unknown<br />0:00 / <span class="progress_time_total" id="stream-duration-${sk}">
<script>
$("#stream-duration-${sk}").html(millisecondsToMinutes(parseInt("${data['duration']}"), false));
</script>
</span>
% endif
</div> </div>
</div>
% if data['media_type'] != 'photo':
<div class="dashboard-activity-info-time">
% if data['view_offset']:
ETA:
<span id="stream-eta-${sk}">
<script>
$("#stream-eta-${sk}").html(moment().add(parseInt("${data['duration']}") - parseInt("${data['view_offset']}"), 'milliseconds').format(time_format));
</script>
</span><br /><span class="progress_time_offset" id="stream-view-offset-${sk}" data-last_view_offset="${data['view_offset']}" data-view_offset="${data['view_offset']}" data-state="${data['state']}">
<script>
$("#stream-view-offset-${sk}").html(millisecondsToMinutes(parseInt("${data['view_offset']}"), false));
</script>
</span> / <span class="progress_time_total" id="stream-duration-${sk}">
<script>
$("#stream-duration-${sk}").html(millisecondsToMinutes(parseInt("${data['duration']}"), false));
</script>
</span>
% else:
ETA: Unknown<br />0:00 / <span class="progress_time_total" id="stream-duration-${sk}">
<script>
$("#stream-duration-${sk}").html(millisecondsToMinutes(parseInt("${data['duration']}"), false));
</script>
</span>
% endif % endif
</div> </div>
% endif
</div> </div>
<div class="dashboard-activity-progress"> <div class="dashboard-activity-progress">
<div class="dashboard-activity-progress-bar"> <div class="dashboard-activity-progress-bar">
@ -340,8 +342,8 @@ DOCUMENTATION :: END
% else: % else:
<div class="dashboard-activity-metadata-user-thumb" style="background-image: url(${data['user_thumb']});"></div> <div class="dashboard-activity-metadata-user-thumb" style="background-image: url(${data['user_thumb']});"></div>
% endif % endif
<div class="dashboard-activity-metadata-title"> <div class="dashboard-activity-metadata-title-container">
<span id="play-state-${sk}" title="${data['state'].capitalize()}"> <div id="play-state-${sk}" class="dashboard-activity-metadata-play_state-icon" title="${data['state'].capitalize()}">
% if data['state'] == 'playing': % if data['state'] == 'playing':
<i class="fa fa-fw fa-play"></i>&nbsp; <i class="fa fa-fw fa-play"></i>&nbsp;
% elif data['state'] == 'paused': % elif data['state'] == 'paused':
@ -349,8 +351,9 @@ DOCUMENTATION :: END
% elif data['state'] == 'buffering': % elif data['state'] == 'buffering':
<i class="fa fa-fw fa-spinner"></i>&nbsp; <i class="fa fa-fw fa-spinner"></i>&nbsp;
% endif % endif
</span> </div>
% if data['channel_stream'] == '0': <div class="dashboard-activity-metadata-title">
% if data['channel_stream'] == '0':
% if data['media_type'] == 'movie': % if data['media_type'] == 'movie':
<a href="info?rating_key=${data['rating_key']}" title="${data['title']}">${data['title']}</a> <a href="info?rating_key=${data['rating_key']}" title="${data['title']}">${data['title']}</a>
% elif data['media_type'] == 'episode': % elif data['media_type'] == 'episode':
@ -366,16 +369,17 @@ DOCUMENTATION :: END
% else: % else:
<span title="${data['title']}">${data['title']}</span> <span title="${data['title']}">${data['title']}</span>
% endif % endif
% elif data['media_type'] == 'episode' and data['grandparent_title']: % elif data['media_type'] == 'episode' and data['grandparent_title']:
<span title="${data['grandparent_title']}">${data['grandparent_title']}</span> <span title="${data['grandparent_title']}">${data['grandparent_title']}</span>
- <span title="${data['title']}">${data['title']}</span> - <span title="${data['title']}">${data['title']}</span>
% else: % else:
<span title="${data['title']}">${data['title']}</span> <span title="${data['title']}">${data['title']}</span>
% endif % endif
</div>
</div> </div>
<div class="dashboard-activity-metadata-subtitle"> <div class="dashboard-activity-metadata-subtitle-container">
% if data['channel_stream'] == '0': % if data['channel_stream'] == '0':
<span id="media-type-${sk}" title="${data['media_type'].capitalize()}"> <div id="media-type-${sk}" class="dashboard-activity-metadata-media_type-icon" title="${data['media_type'].capitalize()}">
% if data['media_type'] == 'movie': % if data['media_type'] == 'movie':
<i class="fa fa-fw fa-film"></i>&nbsp; <i class="fa fa-fw fa-film"></i>&nbsp;
% elif data['media_type'] == 'episode': % elif data['media_type'] == 'episode':
@ -387,49 +391,51 @@ DOCUMENTATION :: END
% elif data['media_type'] == 'clip': % elif data['media_type'] == 'clip':
<i class="fa fa-fw fa-video-camera"></i>&nbsp; <i class="fa fa-fw fa-video-camera"></i>&nbsp;
% endif % endif
</span> </div>
% else: % else:
<span id="media-type-${sk}" title="Channel"> <div id="media-type-${sk}" title="Channel">
<i class="fa fa-fw fa-cloud"></i>&nbsp; <i class="fa fa-fw fa-cloud"></i>&nbsp;
</span> </div>
% endif % endif
% if data['channel_stream'] == '0': <div class="dashboard-activity-metadata-subtitle">
% if data['media_type'] == 'movie': % if data['channel_stream'] == '0':
<span title="${data['year']}" class="sub-heading">${data['year']}</span> % if data['media_type'] == 'movie':
% elif data['media_type'] == 'episode': <span title="${data['year']}" class="sub-heading">${data['year']}</span>
<a href="info?rating_key=${data['parent_rating_key']}" title="Season ${data['parent_media_index']}" class="sub-heading">S${data['parent_media_index']}</a> % elif data['media_type'] == 'episode':
&middot; <a href="info?rating_key=${data['rating_key']}" title="Episode ${data['media_index']}" class="sub-heading">E${data['media_index']}</a> <a href="info?rating_key=${data['parent_rating_key']}" title="Season ${data['parent_media_index']}" class="sub-heading">S${data['parent_media_index']}</a>
% elif data['media_type'] == 'track': &middot; <a href="info?rating_key=${data['rating_key']}" title="Episode ${data['media_index']}" class="sub-heading">E${data['media_index']}</a>
<a id="metadata-parent_title-${sk}" href="info?rating_key=${data['parent_rating_key']}" title="${data['parent_title']}" class="sub-heading">${data['parent_title']}</a> % elif data['media_type'] == 'track':
% elif data['media_type'] == 'photo': <a id="metadata-parent_title-${sk}" href="info?rating_key=${data['parent_rating_key']}" title="${data['parent_title']}" class="sub-heading">${data['parent_title']}</a>
<span title="${data['title']}" class="sub-heading">${data['title']}</span> % elif data['media_type'] == 'photo':
<span title="${data['title']}" class="sub-heading">${data['title']}</span>
% else:
<span title="${data['year']}" class="sub-heading">${data['year']}</span>
% endif
% elif data['channel_title']:
<span title="${data['channel_title']}" class="sub-heading">${data['channel_title']}</span>
% if data['media_type'] == 'episode' and data['parent_media_index'] and data['media_index']:
(<span title="Season ${data['parent_media_index']}" class="sub-heading">S${data['parent_media_index']}</span>
&middot; <span title="Episode ${data['media_index']}" class="sub-heading">E${data['media_index']}</span>)
% elif data['media_type'] == 'episode' and data['originally_available_at']:
(<span title="${data['originally_available_at']}" class="sub-heading">${data['originally_available_at']}</span>)
% endif
% else: % else:
<span title="${data['year']}" class="sub-heading">${data['year']}</span> <span title="Channel" class="sub-heading">Channel</span>
% if data['media_type'] == 'episode' and data['parent_media_index'] and data['media_index']:
(<span title="Season ${data['parent_media_index']}" class="sub-heading">S${data['parent_media_index']}</span>
&middot; <span title="Episode ${data['media_index']}" class="sub-heading">E${data['media_index']}</span>)
% elif data['media_type'] == 'episode' and data['originally_available_at']:
(<span title="${data['originally_available_at']}" class="sub-heading">${data['originally_available_at']}</span>)
% endif
% endif % endif
% elif data['channel_title']: </div>
<span title="${data['channel_title']}" class="sub-heading">${data['channel_title']}</span> <div class="dashboard-activity-metadata-user">
% if data['media_type'] == 'episode' and data['parent_media_index'] and data['media_index']: % if data['user_id']:
(<span title="Season ${data['parent_media_index']}" class="sub-heading">S${data['parent_media_index']}</span> <a href="user?user_id=${data['user_id']}" title="${data['friendly_name']}">${data['friendly_name']}</a>
&middot; <span title="Episode ${data['media_index']}" class="sub-heading">E${data['media_index']}</span>) % else:
% elif data['media_type'] == 'episode' and data['originally_available_at']: ${data['friendly_name']}
(<span title="${data['originally_available_at']}" class="sub-heading">${data['originally_available_at']}</span>)
% endif % endif
% else: </div>
<span title="Channel" class="sub-heading">Channel</span>
% if data['media_type'] == 'episode' and data['parent_media_index'] and data['media_index']:
(<span title="Season ${data['parent_media_index']}" class="sub-heading">S${data['parent_media_index']}</span>
&middot; <span title="Episode ${data['media_index']}" class="sub-heading">E${data['media_index']}</span>)
% elif data['media_type'] == 'episode' and data['originally_available_at']:
(<span title="${data['originally_available_at']}" class="sub-heading">${data['originally_available_at']}</span>)
% endif
% endif
</div>
<div class="dashboard-activity-metadata-user">
% if data['user_id']:
<a href="user?user_id=${data['user_id']}" title="${data['friendly_name']}">${data['friendly_name']}</a>
% else:
${data['friendly_name']}
% endif
</div> </div>
</div> </div>
</div> </div>