Add filter to packages config panel

This commit is contained in:
probablycorey 2013-06-26 14:48:11 -07:00
parent 27822fb37c
commit 4ef5082887
5 changed files with 38 additions and 4 deletions

View File

@ -1,10 +1,12 @@
{View} = require 'space-pen'
$ = require 'jquery'
PackageConfigView = require './package-config-view'
ConfigPanel = require './config-panel'
packageManager = require './package-manager'
stringScore = require 'stringscore'
### Internal ###
module.exports =
class AvailablePackagesConfigPanel extends ConfigPanel
class AvailablePackagesConfigPanel extends View
@content: ->
@div class: 'available-packages', =>
@div outlet: 'loadingArea', class: 'alert alert-info loading-area', =>
@ -33,4 +35,12 @@ class AvailablePackagesConfigPanel extends ConfigPanel
@packagesArea.append(new PackageConfigView(pack, @packageEventEmitter))
@packageEventEmitter.trigger('available-packages-loaded', @packages)
filterPackages: (filterString) ->
packageViews = @packagesArea.children()
for packageView in packageViews
if /^\s*$/.test(filterString) or stringScore(packageView.getAttribute('name'), filterString)
$(packageView).show()
else
$(packageView).hide()
getPackageCount: -> @packages.length

View File

@ -17,7 +17,9 @@ class GeneralConfigPanel extends ConfigPanel
form: null
initialize: ->
@appendSettings(namespace, settings) for namespace, settings of config.getSettings()
for namespace, settings of config.getSettings()
continue unless namespace is 'editor' or namespace is 'core'
@appendSettings(namespace, settings)
super
appendSettings: (namespace, settings) ->

View File

@ -1,11 +1,14 @@
$ = require 'jquery'
_ = require 'underscore'
{View} = require 'space-pen'
ConfigPanel = require './config-panel'
PackageConfigView = require './package-config-view'
packageManager = require './package-manager'
stringScore = require 'stringscore'
### Internal ###
module.exports =
class InstalledPackagesConfigPanel extends ConfigPanel
class InstalledPackagesConfigPanel extends View
@content: ->
@div class: 'installed-packages', =>
@div outlet: 'loadingArea', class: 'alert alert-info loading-area', =>
@ -41,4 +44,12 @@ class InstalledPackagesConfigPanel extends ConfigPanel
else
@packagesArea.children(":eq(#{index})").before(view)
filterPackages: (filterString) ->
packageViews = @packagesArea.children()
for packageView in packageViews
if /^\s*$/.test(filterString) or stringScore(packageView.getAttribute('name'), filterString)
$(packageView).show()
else
$(packageView).hide()
getPackageCount: -> @packages.length

View File

@ -3,6 +3,7 @@ InstalledPackagesConfigPanel = require './installed-packages-config-panel'
AvailablePackagesConfigPanel = require './available-packages-config-panel'
_ = require 'underscore'
EventEmitter = require 'event-emitter'
Editor = require 'editor'
### Internal ###
class PackageEventEmitter
@ -21,6 +22,8 @@ class PackageConfigPanel extends ConfigPanel
@a 'Available', =>
@span class: 'badge pull-right', outlet: 'availableCount'
@subview 'packageFilter', new Editor(mini: true, attributes: {id: 'package-filter'})
initialize: ->
@packageEventEmitter = new PackageEventEmitter()
@installed = new InstalledPackagesConfigPanel(@packageEventEmitter)
@ -46,3 +49,7 @@ class PackageConfigPanel extends ConfigPanel
@packageEventEmitter.on 'available-packages-loaded', =>
@availableCount.text(@available.getPackageCount())
@packageFilter.getBuffer().on 'contents-modified', =>
@available.filterPackages(@packageFilter.getText())
@installed.filterPackages(@packageFilter.getText())

View File

@ -110,6 +110,10 @@
}
}
#package-filter {
margin: 1em 0;
}
.btn-retry {
margin-left: 10px;
}