diff options
author | Alfredo Sumaran <alfredo@gitlab.com> | 2017-02-14 00:15:15 -0500 |
---|---|---|
committer | Alfredo Sumaran <alfredo@gitlab.com> | 2017-02-14 01:47:34 -0500 |
commit | 93b3caedad86adbe3218fb2fe299137d53a904c4 (patch) | |
tree | 363f03dbec1662183788652fae63735f147dab11 | |
parent | 2819fcccd3bb3854c71b263fe2add2c11a2707c5 (diff) | |
download | gitlab-ce-28122-enable-auto-scroll.tar.gz |
Auto scroll since start28122-enable-auto-scroll
-rw-r--r-- | app/assets/javascripts/build.js | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/app/assets/javascripts/build.js b/app/assets/javascripts/build.js index c5a962dd199..1a85459b173 100644 --- a/app/assets/javascripts/build.js +++ b/app/assets/javascripts/build.js @@ -5,6 +5,8 @@ var bind = function(fn, me) { return function() { return fn.apply(me, arguments); }; }; var AUTO_SCROLL_OFFSET = 75; var DOWN_BUILD_TRACE = '#down-build-trace'; + var doAutoScroll = true; + var userHasScrolled = false; this.Build = (function() { Build.interval = null; @@ -44,7 +46,10 @@ this.$document.off('click', '.js-sidebar-build-toggle').on('click', '.js-sidebar-build-toggle', this.sidebarOnClick.bind(this)); this.$document.off('click', '.stage-item').on('click', '.stage-item', this.updateDropdown); - this.$document.on('scroll', this.initScrollMonitor.bind(this)); + this.$document.on('scroll', function() { + userHasScrolled = true; + this.initScrollMonitor(); + }.bind(this)); $(window).off('resize.build').on('resize.build', this.sidebarOnResize.bind(this)); $('a', this.$buildScroll).off('click.stepTrace').on('click.stepTrace', this.stepTrace); this.updateArtifactRemoveDate(); @@ -77,20 +82,21 @@ Build.prototype.getInitialBuildTrace = function() { var removeRefreshStatuses = ['success', 'failed', 'canceled', 'skipped']; + var self = this; return $.ajax({ url: this.buildUrl, dataType: 'json', success: function(buildData) { $('.js-build-output').html(buildData.trace_html); - if (window.location.hash === DOWN_BUILD_TRACE) { - $("html,body").scrollTop(this.$buildTrace.height()); + if (doAutoScroll || window.location.hash === DOWN_BUILD_TRACE) { + $('html, body').scrollTop(self.$buildTrace.height()); } if (removeRefreshStatuses.indexOf(buildData.status) >= 0) { - this.$buildRefreshAnimation.remove(); - return this.initScrollMonitor(); + self.$buildRefreshAnimation.remove(); + self.initScrollMonitor(); } - }.bind(this) + } }); }; @@ -111,6 +117,13 @@ } else { $('.js-build-output').html(log.html); } + + if (doAutoScroll && !userHasScrolled) { + $('html, body').scrollTop(_this.$buildTrace.height()); + if ($('body').height() > $(window).height()) { + doAutoScroll = false; + } + } return _this.checkAutoscroll(); } else if (log.status !== _this.buildStatus) { pageUrl = _this.pageUrl; |