1
0
Fork 0
mirror of https://github.com/Radarr/Radarr synced 2024-12-24 17:01:38 +00:00

Added auto complete to AddSeries RootDir

This commit is contained in:
Mark McDowall 2013-02-05 22:28:56 -08:00 committed by kay.one
parent 7ed148b12c
commit 7f0dc84b29
7 changed files with 86 additions and 1 deletions

View file

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Nancy;
using NzbDrone.Api.Extentions;
using NzbDrone.Common;
using NzbDrone.Core.RootFolders;
namespace NzbDrone.Api.Directories
{
public class DirectoryModule : NzbDroneApiModule
{
private readonly DiskProvider _diskProvider;
public DirectoryModule(DiskProvider diskProvider)
: base("/directories")
{
_diskProvider = diskProvider;
Post["/"] = x => GetDirectories();
}
private Response GetDirectories()
{
if (!Request.Form.query.HasValue)
return new List<string>().AsResponse();
string query = Request.Form.query.Value;
IEnumerable<String> dirs = null;
try
{
//Windows (Including UNC)
var windowsSep = query.LastIndexOf('\\');
if (windowsSep > -1)
{
dirs = _diskProvider.GetDirectories(query.Substring(0, windowsSep + 1));
}
//Unix
var index = query.LastIndexOf('/');
if (index > -1)
{
dirs = _diskProvider.GetDirectories(query.Substring(0, index + 1));
}
}
catch (Exception)
{
//Swallow the exceptions so proper JSON is returned to the client (Empty results)
return new List<string>().AsResponse();
}
if (dirs == null)
throw new Exception("A valid path was not provided");
return dirs.AsResponse();
}
}
}

View file

@ -92,6 +92,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Directories\DirectoryModule.cs" />
<Compile Include="Extentions\NancyJsonSerializer.cs" />
<Compile Include="Extentions\Serializer.cs" />
<Compile Include="RootFolders\RootFolderModule.cs" />

View file

@ -148,7 +148,7 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>1306</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>

View file

@ -410,6 +410,7 @@
<Content Include="_backboneApp\JsLibraries\backbone.marionette.js" />
<Content Include="_backboneApp\AddSeries\addSeriesLayoutTemplate.html" />
<Content Include="_backboneApp\Series\SeriesModel.js" />
<Content Include="_backboneApp\Shared\AutoComplete.js" />
<Content Include="_backboneApp\Shared\NotificationModel.js" />
<Content Include="_backboneApp\Shared\NotificationTemplate.html" />
<Content Include="_backboneApp\Shared\NotificationView.js" />

View file

@ -2,6 +2,7 @@
/// <reference path="../../app.js" />
/// <reference path="RootDirModel.js" />
/// <reference path="RootDirCollection.js" />
/// <reference path="../../Shared/AutoComplete.js" />
NzbDrone.AddSeries.RootDirItemView = Backbone.Marionette.ItemView.extend({
@ -53,6 +54,8 @@ NzbDrone.AddSeries.RootDirView = Backbone.Marionette.Layout.extend({
this.currentDirs.show(new NzbDrone.AddSeries.RootDirListView({ collection: this.collection }));
this.collection.fetch();
this.ui.pathInput.folderAutoComplete();
},

View file

@ -41,6 +41,10 @@ body {
text-align: center;
}
.nz-center .typeahead {
text-align: left;
}
#footer-region {
font-size: 16px;
text-decoration: none;

View file

@ -0,0 +1,16 @@
$.fn.folderAutoComplete = function () {
$(this).typeahead({
source: function (query, process) {
$.ajax({
url: '/api/directories',
dataType: "json",
type: "POST",
data: { query: query },
success: function (data) {
process(data);
}
});
},
minLength: 3
});
}