Skip to content

Commit 05e8413

Browse files
committed
add functional view toggle logic
1 parent fbdf6d1 commit 05e8413

2 files changed

Lines changed: 52 additions & 5 deletions

File tree

lib/functional-view.coffee

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,27 @@
1-
{View} = require 'atom'
1+
{View, $} = require 'atom'
22

33
module.exports =
44
class FunctionalView extends View
55
@content: ->
6-
@div class: "functional-view", =>
6+
@div class: "functional-view console", =>
77
@div class: 'block', =>
88
@div class: 'btn-group', =>
9-
@button class: 'btn selected', 'Console'
10-
@button class: 'btn', 'Debug'
11-
@button class: 'btn', 'Frame'
9+
@button class: 'btn selected', 'data-functional': 'console', 'Console'
10+
@button class: 'btn', 'data-functional': 'debug','Debug'
11+
@button class: 'btn', 'data-functional': 'frames','Frame'
1212

1313
@div class: 'btn-group pull-right', =>
1414
@button class: 'btn btn-error', 'x'
15+
16+
initialize: ->
17+
self = this
18+
@on 'click', '[data-functional]', (e) => @toggleFunctional(e)
19+
20+
toggleFunctional: (e) ->
21+
$prevSelected = @find('.selected')
22+
@removeClass($prevSelected.data('functional'))
23+
$prevSelected.removeClass('selected')
24+
25+
$selected = $(e.target)
26+
@addClass($selected.data('functional'))
27+
$selected.addClass('selected')

spec/functional-view-spec.coffee

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
FunctionalView = require '../lib/functional-view'
2+
3+
describe 'Functional View', ->
4+
5+
functionalView = null
6+
7+
beforeEach ->
8+
functionalView = new FunctionalView
9+
10+
it 'should be able to toggle to different classes', ->
11+
expect(functionalView.hasClass('console')).toBeTruthy()
12+
13+
functionalView.find('[data-functional=debug]').click()
14+
expect(functionalView.hasClass('debug')).toBeTruthy()
15+
expect(functionalView.hasClass('console')).toBeFalsy()
16+
17+
functionalView.find('[data-functional=frames]').click()
18+
expect(functionalView.hasClass('debug')).toBeFalsy()
19+
expect(functionalView.hasClass('console')).toBeFalsy()
20+
expect(functionalView.hasClass('frames')).toBeTruthy()
21+
22+
functionalView.find('[data-functional=console]').click()
23+
expect(functionalView.hasClass('console')).toBeTruthy()
24+
25+
26+
it 'should be able to toggle the selected', ->
27+
functionalView.find('[data-functional=debug]').click()
28+
expect(functionalView.find('.selected').data('functional')).toBe('debug')
29+
30+
functionalView.find('[data-functional=frames]').click()
31+
expect(functionalView.find('.selected').data('functional')).toBe('frames')
32+
33+
functionalView.find('[data-functional=console]').click()
34+
expect(functionalView.find('.selected').data('functional')).toBe('console')

0 commit comments

Comments
 (0)