SickGear/gui/slick/interfaces/default/history.tmpl
Supremicus 2c510aa210 Improve UI to display fluidly on different screen sizes.
Fixes the issue where top menu items would disappear on smaller screens.
Add Bootstrap v3.2.0 with Normalize v3.0.1 from github.com/twbs/bootstrap.
Add a modified jquery pnotify stylesheet.
Various UI tweaks.
Update CHANGES.md and TODO.txt
2014-10-23 23:23:56 +01:00

247 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 pull-right"><b>Limit:</b>
<select name="limit" id="limit" class="form-control form-control-inline input-sm">
<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>
<span> Layout:
<select name="HistoryLayout" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;">
<option value="$sbRoot/setHistoryLayout/?layout=compact" #if $sickbeard.HISTORY_LAYOUT == "compact" then "selected=\"selected\"" else ""#>Compact</option>
<option value="$sbRoot/setHistoryLayout/?layout=detailed" #if $sickbeard.HISTORY_LAYOUT == "detailed" then "selected=\"selected\"" else ""#>Detailed</option>
</select>
</span>
</div>
<br>
#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 align="center"><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($curdatetime, show_seconds=True)</div><span class="sort_data">$time.mktime($curdatetime.timetuple())</span></td>
<td class="tvShow" width="35%"><a 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 align="center"><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($curdatetime, show_seconds=True)</div><span class="sort_data">$time.mktime($curdatetime.timetuple())</span></td>
<td class="tvShow" width="25%">
<span><a 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")