Handle checkbox fields in config panel

This commit is contained in:
Nathan Sobo
2013-04-10 16:58:03 -06:00
committed by Corey Johnson & Kevin Sawicki
parent 5e0dd80366
commit 422d89a7ed
2 changed files with 13 additions and 1 deletions

View File

@@ -8,13 +8,16 @@ describe "ConfigPanel", ->
@input outlet: 'intInput', id: 'foo.int', type: 'int'
@input outlet: 'floatInput', id: 'foo.float', type: 'float'
@input outlet: 'stringInput', id: 'foo.string', type: 'string'
@input outlet: 'booleanInput', id: 'foo.boolean', type: 'checkbox'
config.set('foo.int', 22)
config.set('foo.boolean', true)
panel = new TestPanel
expect(panel.intInput.val()).toBe '22'
expect(panel.floatInput.val()).toBe ''
expect(panel.stringInput.val()).toBe ''
expect(panel.booleanInput.attr('checked')).toBeTruthy()
config.set('foo.int', 10)
expect(panel.intInput.val()).toBe '10'
@@ -26,6 +29,9 @@ describe "ConfigPanel", ->
expect(panel.floatInput.val()).toBe ''
expect(panel.stringInput.val()).toBe 'hey'
config.set('foo.boolean', false)
expect(panel.booleanInput.attr('checked')).toBeFalsy()
panel.intInput.val('90.2').change()
expect(config.get('foo.int')).toBe 90

View File

@@ -12,7 +12,11 @@ class ConfigPanel extends View
input = $(input)
name = input.attr('id')
type = input.attr('type')
@observeConfig name, (value) -> input.val(value) if value
@observeConfig name, (value) ->
if type is 'checkbox'
input.attr('checked', value)
else
input.val(value) if value
input.on 'change', ->
value = input.val()
config.set name, switch type
@@ -20,5 +24,7 @@ class ConfigPanel extends View
parseInt(value)
when 'float'
parseFloat(value)
when 'checkbox'
!!input.attr('checked')
else
value