From e6053a2d66a028db38f2c825cb6e3000a02ad971 Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Fri, 30 Dec 2011 11:36:44 -0800 Subject: [PATCH] FileFinder only returns up to maxResults --- spec/atom/file-finder-spec.coffee | 9 +++++++-- src/atom/file-finder.coffee | 15 +++++++++++---- static/file-finder.css | 10 ++++++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/spec/atom/file-finder-spec.coffee b/spec/atom/file-finder-spec.coffee index 16cef92b0..a22bf4dba 100644 --- a/spec/atom/file-finder-spec.coffee +++ b/spec/atom/file-finder-spec.coffee @@ -59,8 +59,13 @@ describe 'FileFinder', -> expect(finder.find('li:last')).toHaveClass "selected" describe "findMatches(queryString)", -> - it "returns all urls if queryString is empty", -> - expect(finder.findMatches('')).toEqual urls + it "returns up to finder.maxResults urls if queryString is empty", -> + expect(urls.length).toBeLessThan finder.maxResults + expect(finder.findMatches('').length).toBe urls.length + + finder.maxResults = urls.length - 1 + + expect(finder.findMatches('').length).toBe finder.maxResults it "returns urls sorted by score of match against the given query", -> expect(finder.findMatches('ap')).toEqual ["app.coffee", "atom/app.coffee"] diff --git a/src/atom/file-finder.coffee b/src/atom/file-finder.coffee index 75b2689fa..93706fb9a 100644 --- a/src/atom/file-finder.coffee +++ b/src/atom/file-finder.coffee @@ -12,8 +12,11 @@ class FileFinder extends Template viewProperties: urls: null + maxResults: null initialize: ({@urls}) -> + @maxResults = 10 + @populateUrlList() @bindKey 'up', 'moveUp' @bindKey 'down', 'moveDown' @@ -43,7 +46,11 @@ class FileFinder extends Template .addClass('selected') findMatches: (query) -> - return @urls unless query - scoredUrls = ({url, score: stringScore(url, query)} for url in @urls) - sortedUrls = scoredUrls.sort (a, b) -> a.score > b.score - urlAndScore.url for urlAndScore in sortedUrls when urlAndScore.score > 0 + if not query + urls = @urls + else + scoredUrls = ({url, score: stringScore(url, query)} for url in @urls) + scoredUrls.sort (a, b) -> a.score > b.score + urls = (urlAndScore.url for urlAndScore in scoredUrls when urlAndScore.score > 0) + + urls.slice 0, @maxResults diff --git a/static/file-finder.css b/static/file-finder.css index dea407e20..a6494518f 100644 --- a/static/file-finder.css +++ b/static/file-finder.css @@ -4,12 +4,18 @@ background-color: #444; color: #eee; width: 100%; + max-height: 200px; } -.file-finder input { - width: 100%; +.file-finder ol { + -webkit-box-flex: 1; + overflow: hidden; } .file-finder li.selected { background-color: green; } + +.file-finder input { + width: 100%; +}