diff --git a/data/css/tablesorter.css b/data/css/tablesorter.css deleted file mode 100644 index d8b64ed69e8049a5b7f3392726f589310b4dbca1..0000000000000000000000000000000000000000 --- a/data/css/tablesorter.css +++ /dev/null @@ -1,83 +0,0 @@ -/* SB Theme */ -table.tablesorter { - width: 100%; - margin-left:auto; - margin-right:auto; - text-align:left; - color: #000; - background-color: #fff; - border-spacing: 0; -} -table.tablesorter th, -table.tablesorter td { - padding: 4px; - border-left: #fff 1px solid; - border-top: #fff 1px solid; -} -/* remove extra border from left edge */ -table.tablesorter th:first-child, -table.tablesorter td:first-child { - border-left: none; -} -table.tablesorter th { - border-collapse: collapse; - background-color: #333; - color: #fff; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - text-align: center; -} -table.tablesorter .tablesorter-header { -/* background-image: url(../images/tablesorter/bg.gif); */ - background-repeat: no-repeat; - background-position: center right; - padding: 4px 18px 4px 4px; - cursor: pointer; -} -table.tablesorter th.tablesorter-headerSortUp { - background-color: #57442B; -/* background-image: url(../images/tablesorter/asc.gif); */ -} -table.tablesorter th.tablesorter-headerSortDown { - background-color: #57442B; -/* background-image: url(../images/tablesorter/desc.gif); */ -} - -/* Zebra Widget - row alternating colors */ -table.tablesorter tr.odd td { - background-color: #f5f1e4; -} -table.tablesorter tr.even td { - background-color: #dfdacf; -} -/* filter widget */ -table.tablesorter input.tablesorter-filter { - width: 98%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -table.tablesorter tr.tablesorter-filter, -table.tablesorter tr.tablesorter-filter td { - text-align: center; - background: #eee; -} -/* optional disabled input styling */ -table.tablesorter input.tablesorter-filter.disabled { - display: none; -} - - -/* xtra css for sb */ -.tablesorter-header-inner { - text-align: center; - padding: 0 2px; -} -tr.tablesorter-stickyHeader { - background-color: #fff; - padding: 2px 0; -} - -table.tablesorter tfoot a { - color:#fff; - text-decoration: none; -} diff --git a/data/interfaces/default/history.tmpl b/data/interfaces/default/history.tmpl index e1b73d70d73dec3e8d41a95925067104c5abe0c8..43c656eaa95f21bb12fec3ae28b07b992cc08a34 100644 --- a/data/interfaces/default/history.tmpl +++ b/data/interfaces/default/history.tmpl @@ -16,7 +16,6 @@ <script type="text/javascript" src="$sbRoot/js/lib/jquery.dataTables.min.js"></script> <script type="text/javascript" src="$sbRoot/js/jquery.dataTables.reloadAjax.js"></script> <script type="text/javascript" src="$sbRoot/js/jquery.dataTables.sorting.js"></script> -<script type="text/javascript" src="$sbRoot/js/home.js"></script> <script type="text/javascript"> <!-- @@ -24,8 +23,12 @@ { \$("#historyTable").dataTable({ "bJQueryUI": true, - "sPaginationType": "full_numbers", - "bStateSave": true, + "bStateSave": false, + "aaSorting": [[0, 'desc']], + "iDisplayLength": 50, + + "sPaginationType": "two_button", + "aoColumnDefs": [ { "asSorting": [ "desc", "asc" ], "aTargets": [0] }, diff --git a/data/interfaces/default/home_addExistingShow.tmpl b/data/interfaces/default/home_addExistingShow.tmpl index 7ac6a079b45600c95da692eb03b79c44d1ac214d..8e1b85a0d5ffc68b88c175de31e9845304bbec4c 100644 --- a/data/interfaces/default/home_addExistingShow.tmpl +++ b/data/interfaces/default/home_addExistingShow.tmpl @@ -13,6 +13,8 @@ <form id="addShowForm" method="post" action="$sbRoot/home/addShows/addNewShow" accept-charset="utf-8"> +<script type="text/javascript" src="$sbRoot/js/lib/jquery.dataTables.min.js"></script> +<script type="text/javascript" src="$sbRoot/js/jquery.dataTables.sorting.js"></script> <script type="text/javascript" src="$sbRoot/js/addExistingShow.js"></script> <script type="text/javascript" src="$sbRoot/js/rootDirs.js"></script> <script type="text/javascript" src="$sbRoot/js/addShowOptions.js"></script> diff --git a/data/interfaces/default/home_massAddTable.tmpl b/data/interfaces/default/home_massAddTable.tmpl index b37fedccb669a16b51f483a05706655bac5cf7ad..774b98da2cc61a78805720d48678db833d06234c 100644 --- a/data/interfaces/default/home_massAddTable.tmpl +++ b/data/interfaces/default/home_massAddTable.tmpl @@ -1,4 +1,4 @@ -<table id="addRootDirTable" class="sickbeardTable tablesorter"> +<table id="addRootDirTable"> <thead><tr><th width="1%"><input type="checkbox" id="checkAll" checked=checked></th><th>Directory</th><th width="20%">Show Name (tvshow.nfo)</td></tr></thead> <tfoot> <tr> diff --git a/data/interfaces/default/inc_top.tmpl b/data/interfaces/default/inc_top.tmpl index 994ca3caef8cbf966447f2d7a5c6364ab815abe1..6d5dd67f38d780dbeff2103a814ee69d0639a239 100644 --- a/data/interfaces/default/inc_top.tmpl +++ b/data/interfaces/default/inc_top.tmpl @@ -18,7 +18,6 @@ <link rel="stylesheet" type="text/css" href="$sbRoot/css/lib/jquery.pnotify.default.css" /> <link rel="stylesheet" type="text/css" href="$sbRoot/css/lib/sickbeard-jquery/jquery-ui-1.8.18.custom.css" /> <link rel="stylesheet" type="text/css" href="$sbRoot/css/lib/superfish.css" /> - <link rel="stylesheet" type="text/css" href="$sbRoot/css/tablesorter.css"/> <link rel="stylesheet" type="text/css" href="$sbRoot/css/lib/jquery.qtip2.css"/> <link rel="stylesheet" type="text/css" media="only screen and (max-device-width: 480px)" href="$sbRoot/css/iphone.css" /> @@ -27,9 +26,6 @@ #contentWrapper { background: url("$sbRoot/images/bg.gif") repeat scroll 0 0 transparent; } .sf-sub-indicator { background: url("$sbRoot/images/arrows.png") no-repeat -10px -100px; } .sf-shadow ul { background: url("$sbRoot/images/shadow.png") no-repeat bottom right; } -th.tablesorter-header { background-image: url("$sbRoot/images/tablesorter/bg.gif"); } -th.tablesorter-headerSortUp { background-image: url("$sbRoot/images/tablesorter/asc.gif"); } -th.tablesorter-headerSortDown { background-image: url("$sbRoot/images/tablesorter/desc.gif"); } .browserDialog.busy .ui-dialog-buttonpane { background: url("$sbRoot/images/loading.gif") 10px 50% no-repeat !important; } @@ -47,8 +43,6 @@ th.tablesorter-headerSortDown { background-image: url("$sbRoot/images/tablesorte <script type="text/javascript" src="$sbRoot/js/lib/jquery.cookiejar.js"></script> <script type="text/javascript" src="$sbRoot/js/lib/jquery.json-2.2.min.js"></script> <script type="text/javascript" src="$sbRoot/js/lib/jquery.selectboxes.min.js"></script> - <script type="text/javascript" src="$sbRoot/js/lib/jquery.tablesorter-2.1.10.min.js"></script> - <script type="text/javascript" src="$sbRoot/js/lib/jquery.tablesorter.widgets.min.js"></script> <script type="text/javascript" src="$sbRoot/js/lib/jquery.qtip-2011-11-14.min.js"></script> <script type="text/javascript" src="$sbRoot/js/lib/jquery.pnotify-1.0.2.min.js"></script> <script type="text/javascript" src="$sbRoot/js/lib/jquery.expand-1.3.8.js"></script> diff --git a/data/interfaces/default/manage.tmpl b/data/interfaces/default/manage.tmpl index 13277862fcac5a36d91aacb278911b30733a0aa3..aaad67f043a0aa00c8c8d619a0ac9b83d711c762 100644 --- a/data/interfaces/default/manage.tmpl +++ b/data/interfaces/default/manage.tmpl @@ -8,8 +8,12 @@ #import os.path #include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_top.tmpl") +<script type="text/javascript" src="$sbRoot/js/lib/jquery.dataTables.min.js"></script> +<script type="text/javascript" src="$sbRoot/js/jquery.dataTables.sorting.js"></script> + <script type="text/javascript" charset="utf-8"> <!-- +/* \$.tablesorter.addParser({ id: 'showNames', is: function(s) { @@ -51,7 +55,73 @@ 9: { sorter: false}, 10: { sorter: false} } - }); + }); + }); +*/ + +\$(document).ready(function() +{ + \$("#massUpdateTable").dataTable({ + "bPaginate": false, + "bInfo": false, + "bFilter": false, + "bAutoWidth": false, + "bProcessing": false, + "sDom": "lftipr", + "bJQueryUI": true, + + // use localstorage to save state + "bStateSave": true, + "fnStateSave": function (oSettings, oData) { + localStorage.setItem( 'DataTables_'+window.location.pathname, JSON.stringify(oData) ); + }, + "fnStateLoad": function (oSettings) { + var data = localStorage.getItem('DataTables_'+window.location.pathname); + return JSON.parse(data); + }, + + + "aoColumnDefs": [ + { + "sClass": "center", + "aTargets": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10] + }, + + { "asSorting": [ "desc", "asc" ], "aTargets": [0] }, + + { + "bSortable": false, + "bSearchable": false, + "aTargets": [0, 7, 8, 9, 10] + }, + + { + "sType": "quality", + "bUseRendered": false, + + // render the quality in a span + "fnRender": function ( oObj, sVal ) { + return '<span class="quality '+sVal+'">'+sVal+'</span>'; + }, + "aDataSort": [3, 1], + "aTargets": [ 3 ], + }, + + { + "sType": "alt-string", + "bUseRendered": true, + "aTargets": [4, 5], + }, + + { + "sType": "titles", + "bUseRendered": false, + "aTargets": [ 6 ], + }, + + ] + }); + }); //--> </script> @@ -59,7 +129,7 @@ <form name="massUpdateForm" method="post" action="massUpdate"> -<table id="massUpdateTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0"> +<table id="massUpdateTable" cellspacing="1" border="0" cellpadding="0"> <thead> <tr> <th width="1%">Edit <input type="checkbox" class="bulkCheck" id="editCheck" /></th> @@ -110,22 +180,26 @@ $myShowList.sort(lambda x, y: cmp(x.name, y.name)) #set $curDelete = "<input type=\"checkbox\" class=\"deleteCheck\" id=\"delete-"+str($curShow.tvdbid)+"\" "+$curDelete_disabled+"/>" <tr> - <td align="center"><input type="checkbox" class="editCheck" id="edit-$curShow.tvdbid" /></td> - <td align="center"><img src="$sbRoot/images/flags/${curShow.lang}.png" width="16" height="11" alt="$curShow.lang" /></td> + <td><input type="checkbox" class="editCheck" id="edit-$curShow.tvdbid" /></td> + <td><img src="$sbRoot/images/flags/${curShow.lang}.png" width="16" height="11" alt="$curShow.lang" /></td> <td class="tvShow"><a href="$sbRoot/home/displayShow?show=$curShow.tvdbid">$curShow.name</a></td> -#if $curShow.quality in $qualityPresets: - <td align="center"><span class="quality $qualityPresetStrings[$curShow.quality]">$qualityPresetStrings[$curShow.quality]</span></td> +#if False and $curShow.quality in $qualityPresets: + <td><span class="quality $qualityPresetStrings[$curShow.quality]">$qualityPresetStrings[$curShow.quality]</span></td> +#elif False: + <td><span class="quality Custom">Custom</span></td> +#elif $curShow.quality in $qualityPresets: + <td>$qualityPresetStrings[$curShow.quality]</td> #else: - <td align="center"><span class="quality Custom">Custom</span></td> + <td>Custom</td> #end if - <td align="center"><img src="$sbRoot/images/#if int($curShow.seasonfolders) == 1 then "yes16.png\" alt=\"Y\"" else "no16.png\" alt=\"N\""# width="16" height="16" /></td> - <td align="center"><img src="$sbRoot/images/#if int($curShow.paused) == 1 then "yes16.png\" alt=\"Y\"" else "no16.png\" alt=\"N\""# width="16" height="16" /></td> - <td align="center">$curShow.status</td> - <td align="center">$curUpdate</td> - <td align="center">$curRefresh</td> - <td align="center">$curRename</td> + <td><img src="$sbRoot/images/#if int($curShow.seasonfolders) == 1 then "yes16.png\" alt=\"Y\"" else "no16.png\" alt=\"N\""# width="16" height="16" /></td> + <td><img src="$sbRoot/images/#if int($curShow.paused) == 1 then "yes16.png\" alt=\"Y\"" else "no16.png\" alt=\"N\""# width="16" height="16" /></td> + <td>$curShow.status</td> + <td>$curUpdate</td> + <td>$curRefresh</td> + <td>$curRename</td> <!-- <td align="center"><input type="checkbox" class="metadataCheck" id="metadata-$curShow.tvdbid" /></td>//--> - <td align="center">$curDelete</td> + <td>$curDelete</td> </tr> #end for </tbody> diff --git a/data/js/addExistingShow.js b/data/js/addExistingShow.js index cca6667a2d37fe550154a6eca6b56a954c6ac520..08a8feda5d97125a0291f73f5c25ffa280fcb1ae 100644 --- a/data/js/addExistingShow.js +++ b/data/js/addExistingShow.js @@ -45,12 +45,42 @@ $(document).ready(function() { $('#tableDiv').html('<img id="searchingAnim" src="'+sbRoot+'/images/loading32.gif" height="32" width="32" /> loading folders...'); $.get(sbRoot+'/home/addShows/massAddTable', url, function(data) { $('#tableDiv').html(data); - $("#addRootDirTable").tablesorter({ - //sortList: [[1,0]], - widgets: ['zebra'], - headers: { - 0: { sorter: false } - } + $("#addRootDirTable").dataTable({ + + // disable most stuff for the table + "bPaginate": false, + "bInfo": false, + "bFilter": false, + "bAutoWidth": false, + "bProcessing": false, + + // only show the basic DOM elements + "sDom": "lftipr", + "bJQueryUI": true, + + "aoColumnDefs": [ + { "sClass": "center", "aTargets": [0] }, + + // checkbox + { + "bSortable": false, + "bSearchable": false, + "aTargets": [0], + }, + + // path + { + "sType": "titles", + "aTargets": [ 1 ] + }, + + // TVDB link + { + "sType": "link-text", + "aTargets": [ 2 ] + }, + + ], }); }); diff --git a/data/js/home.js b/data/js/home.js index 997fc0730600a6dd7670c0900532891ad43ae01e..4c0004e126bf27ae36bb815c94b405fb3837d5c7 100644 --- a/data/js/home.js +++ b/data/js/home.js @@ -60,7 +60,7 @@ $(document).ready(function(){ { "sClass": "center", "aTargets": [0, 2, 3, 4, 5, 6] - }, + }, // Date { @@ -135,7 +135,8 @@ $(document).ready(function(){ "aTargets": [6] }, ], - "aoColumns": [ + + "aoColumns": [ { "mDataProp": "next_airdate" }, { "mDataProp": "name" }, { "mDataProp": "network" }, @@ -143,9 +144,11 @@ $(document).ready(function(){ { "mDataProp": "percent_downloaded" }, { "mDataProp": "active" }, { "mDataProp": "status" } - ] - }); + ], + + "aaSorting": [[5, 'asc'], [1, 'asc']] + }); // start watching the show list crcs - check_crc(); + //check_crc(); }); diff --git a/data/js/jquery.dataTables.sorting.js b/data/js/jquery.dataTables.sorting.js index aaa206c55c5896d55246e4f4d90740c1cc1f7ec5..9f5d96c66f3f8e49833929944e225aadbd7c418d 100644 --- a/data/js/jquery.dataTables.sorting.js +++ b/data/js/jquery.dataTables.sorting.js @@ -56,13 +56,33 @@ $(document).ready(function(){ var y = b.match(/alt="(.*?)"/)[1].toLowerCase(); return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }; - + $.fn.dataTableExt.oSort['alt-string-desc'] = function(a,b) { var x = a.match(/alt="(.*?)"/)[1].toLowerCase(); var y = b.match(/alt="(.*?)"/)[1].toLowerCase(); return ((x < y) ? 1 : ((x > y) ? -1 : 0)); }; + $.fn.dataTableExt.oSort['link-text-asc'] = function(a,b) { + var x = a.match(/>\s*(.*?)\s*<\s*\/\s*a\s*>/); + var y = b.match(/>\s*(.*?)\s*<\s*\/\s*a\s*>/); + + x = x != null ? x[1].toLowerCase() : a.toLowerCase(); + y = y != null ? y[1].toLowerCase() : b.toLowerCase(); + + return ((x < y) ? -1 : ((x > y) ? 1 : 0)); + }; + + $.fn.dataTableExt.oSort['link-text-desc'] = function(a,b) { + var x = a.match(/>\s*(.*?)\s*<\s*\/\s*a\s*>/); + var y = b.match(/>\s*(.*?)\s*<\s*\/\s*a\s*>/); + + x = x != null ? x[1].toLowerCase() : a.toLowerCase(); + y = y != null ? y[1].toLowerCase() : b.toLowerCase(); + + return ((x < y) ? 1 : ((x > y) ? -1 : 0)); + }; + $.fn.dataTableExt.oSort['empty-last-asc'] = function(a,b) { if (a == "") return 1;