diff --git a/assets/scripts/app/views/log.coffee b/assets/scripts/app/views/log.coffee index 87bf913b..ac68ee1b 100644 --- a/assets/scripts/app/views/log.coffee +++ b/assets/scripts/app/views/log.coffee @@ -1,5 +1,6 @@ require 'log' require 'travis/lines_selector' +require 'travis/log_folder' Log.DEBUG = false Log.LIMIT = 10000 @@ -48,6 +49,7 @@ Travis.reopen @scroll = new Log.Scroll @engine = Log.create(limit: Log.LIMIT, listeners: [@scroll]) @lineSelector = new Travis.LinesSelector(@$().find('#log'), @scroll) + @logFolder = new Travis.LogFolder(@$().find('#log')) @observeParts() observeParts: -> @@ -76,11 +78,6 @@ Travis.reopen Travis.tailing.toggle() event.preventDefault() - click: (event) -> - target = $(event.target) - if target.prop('tagName') == 'P' - target.closest('.fold').toggleClass('open') - actions: toTop: () -> $(window).scrollTop(0) diff --git a/assets/scripts/lib/travis/log_folder.coffee b/assets/scripts/lib/travis/log_folder.coffee new file mode 100644 index 00000000..42506d3e --- /dev/null +++ b/assets/scripts/lib/travis/log_folder.coffee @@ -0,0 +1,8 @@ +class Travis.LogFolder + constructor: (@element) -> + @element.on 'click', '.fold', (event) => + target = $(event.target).closest('.fold') + target.toggleClass('open') + + event.preventDefault() + false diff --git a/assets/scripts/spec/unit/log_folder_spec.coffee b/assets/scripts/spec/unit/log_folder_spec.coffee new file mode 100644 index 00000000..e3d1fccd --- /dev/null +++ b/assets/scripts/spec/unit/log_folder_spec.coffee @@ -0,0 +1,36 @@ +element = jQuery('
+

first line

+
+

second line

+

third line

+
+

fourth line

+
') + +module "Travis.LogFolder", + setup: -> + jQuery('body').append(element) + new Travis.LogFolder jQuery('#fakeLog') + + teardown: -> + element.remove() + +test "displays the fold", -> + equal($('#fakeLog .fold.open').length, 0) + $('#fakeLog .fold').click() + equal($('#fakeLog .fold.open').length, 1) + +test "hides the fold", -> + $('#fakeLog .fold').addClass('open') + $('#fakeLog .fold').click() + equal($('#fakeLog .fold.open').length, 0) + +test "binds new elements", -> + new_element = jQuery('
+

fifth line

+
') + jQuery('#fakeLog').append new_element + + equal($('#fakeLog .fold.open').length, 0) + $('#fakeLog .fold').click() + equal($('#fakeLog .fold.open').length, 2)