System/PendingProcessing grid converted to Datatables.
Misnamed Controller and Views removed.
This commit is contained in:
parent
f21f3517cf
commit
d6e4c5fc53
|
@ -1,36 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Web;
|
|
||||||
using System.Web.Mvc;
|
|
||||||
using NzbDrone.Core.Providers;
|
|
||||||
using NzbDrone.Web.Models;
|
|
||||||
using Telerik.Web.Mvc;
|
|
||||||
|
|
||||||
namespace NzbDrone.Web.Controllers
|
|
||||||
{
|
|
||||||
public class MisnamedController : Controller
|
|
||||||
{
|
|
||||||
private readonly MisnamedProvider _misnamedProvider;
|
|
||||||
|
|
||||||
public MisnamedController(MisnamedProvider misnamedProvider)
|
|
||||||
{
|
|
||||||
_misnamedProvider = misnamedProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActionResult Index()
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
[GridAction(EnableCustomBinding = true)]
|
|
||||||
public ActionResult _AjaxBinding(GridCommand gridCommand)
|
|
||||||
{
|
|
||||||
var totalItems = 0;
|
|
||||||
|
|
||||||
var misnamed = _misnamedProvider.MisnamedFiles(gridCommand.Page, gridCommand.PageSize, out totalItems);
|
|
||||||
|
|
||||||
return View(new GridModel{ Data = misnamed, Total = totalItems });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -40,25 +40,5 @@ namespace NzbDrone.Web.Controllers
|
||||||
|
|
||||||
return View((object)serialized);
|
return View((object)serialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
[GridAction]
|
|
||||||
public ActionResult _AjaxBinding()
|
|
||||||
{
|
|
||||||
var missingEpisodes = _episodeProvider.EpisodesWithoutFiles(false);
|
|
||||||
|
|
||||||
var missing = missingEpisodes.Select(e => new MissingEpisodeModel
|
|
||||||
{
|
|
||||||
EpisodeId = e.EpisodeId,
|
|
||||||
SeriesId = e.SeriesId,
|
|
||||||
EpisodeNumbering = string.Format("{0}x{1:00}", e.SeasonNumber, e.EpisodeNumber),
|
|
||||||
EpisodeTitle = e.Title,
|
|
||||||
Overview = e.Overview,
|
|
||||||
SeriesTitle = e.Series.Title,
|
|
||||||
AirDate = e.AirDate.Value.ToString(),
|
|
||||||
AirDateString = e.AirDate.Value.ToBestDateString()
|
|
||||||
});
|
|
||||||
|
|
||||||
return View(new GridModel(missing));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,12 +109,7 @@ namespace NzbDrone.Web.Controllers
|
||||||
public ActionResult PendingProcessing()
|
public ActionResult PendingProcessing()
|
||||||
{
|
{
|
||||||
ViewData["DropDir"] = _configProvider.SabDropDirectory;
|
ViewData["DropDir"] = _configProvider.SabDropDirectory;
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
[GridAction]
|
|
||||||
public ActionResult _PendingProcessingAjaxBinding()
|
|
||||||
{
|
|
||||||
var dropDir = _configProvider.SabDropDirectory;
|
var dropDir = _configProvider.SabDropDirectory;
|
||||||
var subFolders = _diskProvider.GetDirectories(dropDir);
|
var subFolders = _diskProvider.GetDirectories(dropDir);
|
||||||
|
|
||||||
|
@ -125,7 +120,7 @@ namespace NzbDrone.Web.Controllers
|
||||||
{
|
{
|
||||||
var model = new PendingProcessingModel();
|
var model = new PendingProcessingModel();
|
||||||
model.Name = new DirectoryInfo(folder).Name;
|
model.Name = new DirectoryInfo(folder).Name;
|
||||||
model.Created = _diskProvider.DirectoryDateCreated(folder);
|
model.Created = _diskProvider.DirectoryDateCreated(folder).ToString();
|
||||||
model.Path = folder.Replace(Path.DirectorySeparatorChar, '|').Replace(Path.VolumeSeparatorChar, '^').Replace('\'', '`');
|
model.Path = folder.Replace(Path.DirectorySeparatorChar, '|').Replace(Path.VolumeSeparatorChar, '^').Replace('\'', '`');
|
||||||
|
|
||||||
var files = _diskProvider.GetFileInfos(folder, "*.*", SearchOption.AllDirectories);
|
var files = _diskProvider.GetFileInfos(folder, "*.*", SearchOption.AllDirectories);
|
||||||
|
@ -143,7 +138,9 @@ namespace NzbDrone.Web.Controllers
|
||||||
models.Add(model);
|
models.Add(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
return View(new GridModel(models));
|
var serialized = new JavaScriptSerializer().Serialize(models);
|
||||||
|
|
||||||
|
return View((object)serialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonResult RenamePendingProcessing(string path)
|
public JsonResult RenamePendingProcessing(string path)
|
||||||
|
|
|
@ -8,7 +8,9 @@ namespace NzbDrone.Web.Models
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Files { get; set; }
|
public string Files { get; set; }
|
||||||
public DateTime Created { get; set; }
|
public string Created { get; set; }
|
||||||
public string Path { get; set; }
|
public string Path { get; set; }
|
||||||
|
public string Actions { get; set; }
|
||||||
|
public string Details { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,93 +0,0 @@
|
||||||
@using NzbDrone.Common
|
|
||||||
@using NzbDrone.Core.Model
|
|
||||||
@{ViewBag.Title = "Misnamed";}
|
|
||||||
@section ActionMenu{
|
|
||||||
<ul class="sub-menu">
|
|
||||||
<li>@Ajax.ActionLink("Trim History", "Trim", "History", new AjaxOptions { OnSuccess = "reloadHistoryGrid" })</li>
|
|
||||||
<li>@Ajax.ActionLink("Purge History", "Purge", "History", new AjaxOptions { OnSuccess = "reloadHistoryGrid" })</li>
|
|
||||||
</ul>
|
|
||||||
}
|
|
||||||
<style>
|
|
||||||
.searchImage
|
|
||||||
{
|
|
||||||
width: 18px;
|
|
||||||
height: 18px;
|
|
||||||
padding: 1px;
|
|
||||||
margin: 2px;
|
|
||||||
@*border-width: 1px;
|
|
||||||
border-style: dashed;
|
|
||||||
border-color: lightgray;*@
|
|
||||||
}
|
|
||||||
|
|
||||||
.searchImage:hover
|
|
||||||
{
|
|
||||||
background-color: #065EFE;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="grid-container">
|
|
||||||
@{Html.Telerik().Grid<MisnamedEpisodeModel>().Name("misnamed")
|
|
||||||
.TableHtmlAttributes(new { @class = "Grid" })
|
|
||||||
.Columns(columns =>
|
|
||||||
{
|
|
||||||
columns.Bound(c => c.SeriesTitle)
|
|
||||||
.ClientTemplate("<a href=" +
|
|
||||||
Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) +
|
|
||||||
"><#= SeriesTitle #></a>")
|
|
||||||
.Title("Series Title");
|
|
||||||
columns.Bound(c => c.CurrentName).Title("Current Name");
|
|
||||||
columns.Bound(c => c.ProperName).Title("Proper Name");
|
|
||||||
columns.Bound(c => c.EpisodeFileId)
|
|
||||||
.Title("Actions")
|
|
||||||
.Width("40");
|
|
||||||
})
|
|
||||||
.DataBinding(data => data.Ajax().Select("_AjaxBinding", "Misnamed"))
|
|
||||||
.Pageable(
|
|
||||||
c =>
|
|
||||||
c.PageSize(20).Position(GridPagerPosition.Bottom).Style(GridPagerStyles.NextPrevious))
|
|
||||||
.EnableCustomBinding(true)
|
|
||||||
.ClientEvents(clientEvents =>
|
|
||||||
{
|
|
||||||
clientEvents.OnDataBound("grid_dataBound");
|
|
||||||
if (EnviromentProvider.IsProduction)
|
|
||||||
clientEvents.OnError("grid_onError");
|
|
||||||
})
|
|
||||||
.Render();}
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
deleteHistoryRowUrl = '../History/Delete';
|
|
||||||
redownloadUrl = '../History/Redownload';
|
|
||||||
|
|
||||||
function reloadHistoryGrid() {
|
|
||||||
var grid = $('#history').data('tGrid');
|
|
||||||
grid.rebind();
|
|
||||||
grid.sort("Date-desc");
|
|
||||||
}
|
|
||||||
|
|
||||||
function deleteHistoryRow(historyId) {
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: deleteHistoryRowUrl,
|
|
||||||
data: jQuery.param({ historyId: historyId }),
|
|
||||||
success: function () {
|
|
||||||
reloadHistoryGrid();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function redownload(historyId, episodeId) {
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: redownloadUrl,
|
|
||||||
data: jQuery.param({ historyId: historyId, episodeId: episodeId }),
|
|
||||||
success: function () {
|
|
||||||
reloadHistoryGrid();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function grid_dataBound(e) {
|
|
||||||
var id = $(this).attr('id');
|
|
||||||
var lastButton = $('#' + id + ' .t-arrow-last');
|
|
||||||
lastButton.hide();
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,36 +1,61 @@
|
||||||
@model List<NzbDrone.Web.Models.PendingProcessingModel>
|
@model string
|
||||||
@using NzbDrone.Web.Models
|
@using NzbDrone.Web.Models
|
||||||
@{ViewBag.Title = "Pending Processing";}
|
@{ViewBag.Title = "Pending Processing";}
|
||||||
@section ActionMenu{
|
|
||||||
@{Html.Telerik().Menu().Name("historyMenu").Items(items =>
|
|
||||||
{
|
|
||||||
items.Add().Text("Trim History").Action("Trim", "History");
|
|
||||||
items.Add().Text("Purge History").Action("Purge", "History");
|
|
||||||
}).Render();}
|
|
||||||
}
|
|
||||||
<div class="grid-container">
|
<div class="grid-container">
|
||||||
@{Html.Telerik().Grid<PendingProcessingModel>().Name("PendingProcessingGrid")
|
<table id="pendingProcessingGrid" class="dataTablesGrid hidden-grid">
|
||||||
.TableHtmlAttributes(new { @class = "Grid" })
|
<thead>
|
||||||
.Columns(columns =>
|
<tr>
|
||||||
{
|
<th>Name</th>
|
||||||
columns.Bound(c => c.Name);
|
<th>Creation Date</th>
|
||||||
columns.Bound(c => c.Created).Title("Creation Date");
|
<th></th>
|
||||||
columns.Bound(c => c.Path).Title("")
|
</tr>
|
||||||
.ClientTemplate("<a href='#Rename' onClick=\"renamePending('<#= Path #>'); return false;\">Rename</a>");
|
</thead>
|
||||||
})
|
<tbody>
|
||||||
.DetailView(detailView => detailView.ClientTemplate(
|
</tbody>
|
||||||
"<div><#= Files #></div>"
|
</table>
|
||||||
))
|
|
||||||
.DataBinding(data => data.Ajax().Select("_PendingProcessingAjaxBinding", "System"))
|
|
||||||
.Sortable(rows => rows.OrderBy(epSort => epSort.Add(c => c.Name).Ascending()).Enabled(true))
|
|
||||||
.Pageable(
|
|
||||||
c =>
|
|
||||||
c.PageSize(20).Position(GridPagerPosition.Bottom).Style(GridPagerStyles.NextPrevious))
|
|
||||||
.Render();}
|
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
|
||||||
|
@section Scripts
|
||||||
|
{
|
||||||
|
<script type="text/javascript">
|
||||||
var renamePendingUrl = '@Url.Action("RenamePendingProcessing", "System")';
|
var renamePendingUrl = '@Url.Action("RenamePendingProcessing", "System")';
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#pendingProcessingGrid').removeClass('hidden-grid');
|
||||||
|
|
||||||
|
oTable = $('.dataTablesGrid').dataTable({
|
||||||
|
"bShowAll": false,
|
||||||
|
"aaData": @Html.Raw(Model),
|
||||||
|
"bPaginate": false,
|
||||||
|
"bLengthChange": false,
|
||||||
|
"bFilter": false,
|
||||||
|
"bSort": false,
|
||||||
|
"bInfo": false,
|
||||||
|
"bAutoWidth": false,
|
||||||
|
"iDisplayLength": 20,
|
||||||
|
"sPaginationType": "four_button",
|
||||||
|
"aoColumns": [
|
||||||
|
{ sWidth: 'auto', "mDataProp": "Name"}, //Name
|
||||||
|
{ sWidth: '250px', "mDataProp": "Created"}, //CreationDate
|
||||||
|
{ sWidth: '40px', "mDataProp": "Actions", "bSortable": false, "fnRender": function (row) {
|
||||||
|
return "<a href='#Rename' onClick=\"renamePending('" + row.aData["Path"] + "'); return false;\">Rename</a>";
|
||||||
|
}
|
||||||
|
}, //Actions
|
||||||
|
{
|
||||||
|
sWidth: 'auto',
|
||||||
|
"mDataProp": "Details",
|
||||||
|
"bSortable": false,
|
||||||
|
"bVisible": false,
|
||||||
|
"fnRender": function(row) {
|
||||||
|
var result = "<div>" + row.aData["Files"] + "</div>";
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
} //Details
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
function renamePending(path) {
|
function renamePending(path) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
|
@ -47,4 +72,5 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
}
|
Loading…
Reference in New Issue