Search Results grid added.

This commit is contained in:
Mark McDowall
2012-04-21 01:16:15 -07:00
parent c83d8879a2
commit 4f005e45c0
12 changed files with 191 additions and 31 deletions
+47 -1
View File
@@ -7,6 +7,8 @@ using System.Web.Mvc;
using DataTables.Mvc.Core.Models;
using NzbDrone.Common;
using NzbDrone.Core.Instrumentation;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Repository.Search;
using NzbDrone.Web.Models;
namespace NzbDrone.Web.Controllers
@@ -16,12 +18,15 @@ namespace NzbDrone.Web.Controllers
private readonly LogProvider _logProvider;
private readonly EnvironmentProvider _environmentProvider;
private readonly DiskProvider _diskProvider;
private readonly SearchResultProvider _searchResultProvider;
public LogController(LogProvider logProvider, EnvironmentProvider environmentProvider, DiskProvider diskProvider)
public LogController(LogProvider logProvider, EnvironmentProvider environmentProvider,
DiskProvider diskProvider, SearchResultProvider searchResultProvider)
{
_logProvider = logProvider;
_environmentProvider = environmentProvider;
_diskProvider = diskProvider;
_searchResultProvider = searchResultProvider;
}
public ActionResult Index()
@@ -50,6 +55,28 @@ namespace NzbDrone.Web.Controllers
return JsonNotificationResult.Info("Logs Cleared");
}
public ActionResult SearchResults()
{
var results = _searchResultProvider.AllSearchResults();
var model = results.Select(s => new SearchResultsModel
{
Id = s.Id,
SearchTime = s.SearchTime.ToString(),
DisplayName = GetDisplayName(s),
ReportCount = s.TotalItems,
Successful = s.Successes > 0
});
return View(model);
}
public ActionResult SearchDetails(int searchId)
{
var model = _searchResultProvider.GetSearchResult(searchId);
return View(model);
}
public ActionResult AjaxBinding(DataTablesParams dataTablesParams)
{
var logs = _logProvider.GetAllLogs();
@@ -102,5 +129,24 @@ namespace NzbDrone.Web.Controllers
},
JsonRequestBehavior.AllowGet);
}
public string GetDisplayName(SearchResult searchResult)
{
if (!searchResult.EpisodeNumber.HasValue)
{
return String.Format("{0} - Season {1}", searchResult.SeriesTitle, searchResult.SeasonNumber);
}
string episodeString;
if (searchResult.IsDaily)
episodeString = searchResult.AirDate.ToShortDateString().Replace('/', '-');
else
episodeString = String.Format("S{0:00}E{1:00}", searchResult.SeasonNumber,
searchResult.EpisodeNumber);
return String.Format("{0} - {1} - {2}", searchResult.SeriesTitle, episodeString, searchResult.EpisodeTitle);
}
}
}
+13
View File
@@ -0,0 +1,13 @@
using System;
namespace NzbDrone.Web.Models
{
public class SearchResultsModel
{
public int Id { get; set; }
public string DisplayName { get; set; }
public string SearchTime { get; set; }
public int ReportCount { get; set; }
public bool Successful { get; set; }
}
}
+4
View File
@@ -237,6 +237,7 @@
<Compile Include="Models\JobModel.cs" />
<Compile Include="Models\LogModel.cs" />
<Compile Include="Models\PostUpgradeModel.cs" />
<Compile Include="Models\SearchResultsModel.cs" />
<Compile Include="Models\UpcomingEpisodesModel.cs" />
<Compile Include="Models\SeasonModel.cs" />
<Compile Include="Models\SeriesDetailsModel.cs" />
@@ -519,6 +520,9 @@
<Content Include="Views\Shared\NoSeriesBanner.cshtml" />
<Content Include="Views\Update\Post.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Log\SearchResults.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
@@ -0,0 +1,22 @@
@using DataTables.Mvc.Core
@model IEnumerable<NzbDrone.Web.Models.SearchResultsModel>
@{
ViewBag.Title = "Search Results";
}
@Html.GridHtml("searchResultsGrid", "dataTablesGrid")
@section Scripts
{
@(
Html.GridScriptForModel("#searchResultsGrid")
.PageLength(20)
.ChangePageLength(false)
.AddColumn(new Column().DataProperty("DisplayName").Link("SearchDetails?searchId={Id}", "{DisplayName}").Title("Name"))
.AddColumn(new Column().DataProperty("SearchTime").Title("Time").Width("170px"))
.AddColumn(new Column().DataProperty("ReportCount").Title("Reports Found").Width("140px"))
.AddColumn(new Column().DataProperty("Successful").Title("Successful").Width("110px"))
.AddSorting(1)
)
}