SickGear/gui/slick/interfaces/default/history.tmpl
JackDandy 0333a9aa3e Various tweaks to UI including additional use of fuzzy dates.
Add a parameter to FuzzyMoments to output dates inline.
Add fuzzy dates to compact view of History page.
add fuzzy dates to poster view cards of Home page.
Tweak Home page poster view cards to span the date displayed across the first line.
Tweak Home page poster view cards to display download stats on left and network logo on right.
Tweak the two columns of Show Summary on the displayShow page to hold content.
Add title "Filters" and tweak the layout of filters sections on the displayShow page.
Move display value for show air date from Next Episode to the Airs field on the comingEpisodes page.
Add fuzzy dates to the Airs field in banner and poster views on the comingEpisodes page.
Tweak CSS for showSummary.
Tweak CSS for poster view cards line-height.
2014-10-14 05:13:59 +01:00

245 lines
10 KiB
Cheetah

#import sickbeard
#import os.path
#import datetime
#import re
#from sickbeard import history
#from sickbeard import providers
#from sickbeard import sbdatetime
#from sickbeard.providers import generic
#from sickbeard.common import *
#set global $title="History"
#set global $header="History"
#set global $sbPath=".."
#set global $topmenu="history"#
#set $layout = $sickbeard.HISTORY_LAYOUT
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl")
<style type="text/css">
.sort_data {display:none}
</style>
<script type="text/javascript">
<!--
\$.tablesorter.addParser({
id: 'cDate',
is: function(s) {
return false;
},
format: function(s) {
return s;
},
type: 'numeric'
});
\$(document).ready(function()
{
\$("#historyTable:has(tbody tr)").tablesorter({
widgets: ['zebra', 'filter'],
sortList: [[0,1]],
textExtraction: {
#if ( $layout == 'detailed'):
0: function(node) { return \$(node).find("span").text().toLowerCase(); },
4: function(node) { return \$(node).find("span").text().toLowerCase(); }
#else
0: function(node) { return \$(node).find("span").text().toLowerCase(); },
1: function(node) { return \$(node).find("span").text().toLowerCase(); },
2: function(node) { return \$(node).attr("provider").toLowerCase(); },
5: function(node) { return \$(node).attr("quality").toLowerCase(); }
#end if
},
headers: {
#if ( $layout == 'detailed'):
0: { sorter: 'cDate' },
4: { sorter: 'quality' }
#else
0: { sorter: 'cDate' },
4: { sorter: false },
5: { sorter: 'quality' }
#end if
}
});
\$('#limit').change(function(){
url = '$sbRoot/history/?limit='+\$(this).val()
window.location.href = url
});
#set $fuzzydate = 'airdate'
#if $sickbeard.FUZZY_DATING:
fuzzyMoment({
containerClass : '.${fuzzydate}',
dateHasTime : true,
dateFormat : '${sickbeard.DATE_PRESET}',
timeFormat : '${sickbeard.TIME_PRESET_W_SECONDS}',
trimZero : #if $sickbeard.TRIM_ZERO then "true" else "false"#,
dtGlue : ', ',
});
#end if
});
//-->
</script>
#if $varExists('header')
<h1 class="header">$header</h1>
#else
<h1 class="title">$title</h1>
#end if
<div class="h2footer align-right"><b>Limit:</b>
<select name="limit" id="limit">
<option value="100" #if $limit == "100" then "selected=\"selected\"" else ""#>100</option>
<option value="250" #if $limit == "250" then "selected=\"selected\"" else ""#>250</option>
<option value="500" #if $limit == "500" then "selected=\"selected\"" else ""#>500</option>
<option value="0" #if $limit == "0" then "selected=\"selected\"" else ""#>All</option>
</select>
</div>
<div id="HistoryLayout" style="float: right; margin-top: 2px;">
<span><b>Layout:</b>
<a class="inner" href="$sbRoot/setHistoryLayout/?layout=compact">Compact</a> &middot;
<a class="inner" href="$sbRoot/setHistoryLayout/?layout=detailed">Detailed</a>
</span>
</div>
#if $layout == "detailed"
<table id="historyTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
<thead>
<tr>
<th class="nowrap">Time</th>
<th>Episode</th>
<th>Action</th>
<th>Provider</th>
<th>Quality</th>
</tr>
</thead>
<tfoot>
<tr>
<th class="nowrap" colspan="5">&nbsp;</th>
</tr>
</tfoot>
<tbody>
#for $hItem in $historyResults:
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($hItem["action"]))
<tr>
#set $curdatetime = $datetime.datetime.strptime(str($hItem["date"]), $history.dateFormat)
<td class="nowrap"><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($curdatetime, show_seconds=True)</div><span class="sort_data">$time.mktime($curdatetime.timetuple())</span></td>
<td width="35%"><a style="color: #fff; text-align: center;" href="$sbRoot/home/displayShow?show=$hItem["showid"]#season-$hItem["season"]">$hItem["show_name"] - <%="S%02i" % int(hItem["season"])+"E%02i" % int(hItem["episode"]) %>#if "proper" in $hItem["resource"].lower or "repack" in $hItem["resource"].lower then ' <span class="quality Proper">Proper</span>' else ""#</a></td>
<td align="center" #if $curStatus == SUBTITLED then 'class="subtitles_column"' else ''#>
#if $curStatus == SUBTITLED:
<img width="16" height="11" style="vertical-align:middle;" src="$sbRoot/images/flags/<%= hItem["resource"][len(hItem["resource"])-6:len(hItem["resource"])-4]+'.png'%>">
#end if
<span style="cursor: help; vertical-align:middle;" title="$os.path.basename($hItem["resource"])">$statusStrings[$curStatus]</span>
</td>
<td align="center">
#if $curStatus == DOWNLOADED:
#if $hItem["provider"] != "-1":
<span style="vertical-align:middle;"><i>$hItem["provider"]</i></span>
#end if
#else
#if $hItem["provider"] > 0
#if $curStatus in [SNATCHED, FAILED]:
#set $provider = $providers.getProviderClass($generic.GenericProvider.makeID($hItem["provider"]))
#if $provider != None:
<img src="$sbRoot/images/providers/<%=provider.imageName()%>" width="16" height="16" style="vertical-align:middle;" /> <span style="vertical-align:middle;">$provider.name</span>
#else:
<img src="$sbRoot/images/providers/missing.png" width="16" height="16" style="vertical-align:middle;" title="missing provider"/> <span style="vertical-align:middle;">Missing Provider</span>
#end if
#else:
<img src="$sbRoot/images/subtitles/<%=hItem["provider"]+'.png' %>" width="16" height="16" style="vertical-align:middle;" /> <span style="vertical-align:middle;"><%=hItem["provider"].capitalize()%></span>
#end if
#end if
#end if
</td>
<span style="display: none;">$curQuality</span>
<td align="center"><span class="quality $Quality.qualityStrings[$curQuality].replace("720p","HD720p").replace("1080p","HD1080p").replace("RawHD TV", "RawHD").replace("HD TV", "HD720p")">$Quality.qualityStrings[$curQuality]</span></td>
</tr>
#end for
</tbody>
</table>
#else:
<table id="historyTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
<thead>
<tr>
<th class="nowrap">Time</th>
<th>Episode</th>
<th>Snatched</th>
<th>Downloaded</th>
#if sickbeard.USE_SUBTITLES
<th>Subtitled</th>
#end if
<th>Quality</th>
</tr>
</thead>
<tfoot>
<tr>
<th class="nowrap" colspan="6">&nbsp;</th>
</tr>
</tfoot>
<tbody>
#for $hItem in $compactResults:
<tr>
#set $curdatetime = $datetime.datetime.strptime(str($hItem["actions"][0]["time"]), $history.dateFormat)
<td class="nowrap"><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($curdatetime, show_seconds=True)</div><span class="sort_data">$time.mktime($curdatetime.timetuple())</span></td>
<td width="25%">
<span><a style="color: #fff; text-align: center;" href="$sbRoot/home/displayShow?show=$hItem["show_id"]#season-$hItem["season"]">$hItem["show_name"] - <%="S%02i" % int(hItem["season"])+"E%02i" % int(hItem["episode"]) %>#if "proper" in $hItem["resource"].lower or "repack" in $hItem["resource"].lower then ' <span class="quality Proper">Proper</span>' else ""#</a></span>
</td>
<td align="center" provider="<%=str(sorted(hItem["actions"])[0]["provider"])%>">
#for $action in sorted($hItem["actions"]):
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($action["action"]))
#if $curStatus in [SNATCHED, FAILED]:
#set $provider = $providers.getProviderClass($generic.GenericProvider.makeID($action["provider"]))
#if $provider != None:
<img src="$sbRoot/images/providers/<%=provider.imageName()%>" width="16" height="16" style="vertical-align:middle;" alt="$provider.name" style="cursor: help;" title="$provider.name: $os.path.basename($action["resource"])"/>
#else:
<img src="$sbRoot/images/providers/missing.png" width="16" height="16" style="vertical-align:middle;" alt="missing provider" title="missing provider"/>
#end if
#end if
#end for
</td>
<td align="center">
#for $action in sorted($hItem["actions"]):
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($action["action"]))
#if $curStatus == DOWNLOADED:
#set $match = $re.search("\-(\w+)\.\w{3}\Z", $os.path.basename($action["resource"]))
#if $match
#if $match.group(1).upper() in ("X264", "720P"):
#set $match = $re.search("(\w+)\-.*\-"+$match.group(1)+"\.\w{3}\Z", $os.path.basename($hItem["resource"]), re.IGNORECASE)
#if $match
<span style="cursor: help;" title="$os.path.basename($action["resource"])"><i>$match.group(1).upper()</i></span>
#end if
#else:
<span style="cursor: help;" title="$os.path.basename($action["resource"])"><i>$match.group(1).upper()</i></span>
#end if
#end if
#end if
#end for
</td>
#if sickbeard.USE_SUBTITLES:
<td align="center">
#for $action in sorted($hItem["actions"]):
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($action["action"]))
#if $curStatus == SUBTITLED:
<img src="$sbRoot/images/subtitles/<%=action["provider"]+'.png' %>" width="16" height="16" style="vertical-align:middle;" alt="$action["provider"]" title="<%=action["provider"].capitalize()%>: $os.path.basename($action["resource"])"/>
<span style="vertical-align:middle;"> / </span>
<img width="16" height="11" style="vertical-align:middle;" src="$sbRoot/images/flags/<%= action["resource"][len(action["resource"])-6:len(action["resource"])-4]+'.png'%>" style="vertical-align: middle !important;">
&nbsp;
#end if
#end for
</td>
#end if
<td align="center" width="14%" quality="$curQuality"><span class="quality $Quality.qualityStrings[$curQuality].replace("720p","HD720p").replace("1080p","HD1080p").replace("RawHD TV", "RawHD").replace("HD TV", "HD720p")">$Quality.qualityStrings[$curQuality]</span></td>
</tr>
#end for
</tbody>
</table>
#end if
#include $os.path.join($sickbeard.PROG_DIR,"gui/slick/interfaces/default/inc_bottom.tmpl")