class CiBuild @interval: null constructor: (build_url, build_status) -> clearInterval(CiBuild.interval) @initScrollButtonAffix() if build_status == "running" || build_status == "pending" # # Bind autoscroll button to follow build output # $("#autoscroll-button").bind "click", -> state = $(this).data("state") if "enabled" is state $(this).data "state", "disabled" $(this).text "enable autoscroll" else $(this).data "state", "enabled" $(this).text "disable autoscroll" # # Check for new build output if user still watching build page # Only valid for runnig build when output changes during time # CiBuild.interval = setInterval => if window.location.href.split("#").first() is build_url $.ajax url: build_url dataType: "json" success: (build) => if build.status == "running" $('#build-trace code').html build.trace_html $('#build-trace code').append '' @checkAutoscroll() else if build.status != build_status Turbolinks.visit build_url , 4000 checkAutoscroll: -> $("html,body").scrollTop $("#build-trace").height() if "enabled" is $("#autoscroll-button").data("state") initScrollButtonAffix: -> $buildScroll = $('#js-build-scroll') $body = $('body') $buildTrace = $('#build-trace') $buildScroll.affix( offset: bottom: -> $body.outerHeight() - ($buildTrace.outerHeight() + $buildTrace.offset().top) ) @CiBuild = CiBuild