From 73716f3f6790e4083d19452e16fb6cd6ae9f0256 Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Fri, 31 May 2013 13:11:34 +0530 Subject: [PATCH] Remove lot of scroll to view related code Just use javascript scrollIntoView to do that. Also remove duplication of code related to this Change-Id: Ied1235a85f4fe2d99afa127737979c24d3591118 --- resources/js/ext.uls.displaysettings.js | 37 +-------------- resources/js/ext.uls.inputsettings.js | 1 - resources/js/ext.uls.languagesettings.js | 59 +++--------------------- 3 files changed, 8 insertions(+), 89 deletions(-) diff --git a/resources/js/ext.uls.displaysettings.js b/resources/js/ext.uls.displaysettings.js index f75fc725..e531325e 100644 --- a/resources/js/ext.uls.displaysettings.js +++ b/resources/js/ext.uls.displaysettings.js @@ -485,14 +485,7 @@ } ); $tabButtons.on( 'click', function () { - var scrollPosition, - panelHeight, panelTop, panelBottom, - padding, - $window, - windowHeight, - windowScrollTop, - windowBottom, - $button = $( this ); + var $button = $( this ); if ( $button.hasClass( 'down' ) ) { return; @@ -508,35 +501,10 @@ } } ); + displaySettings.$parent.position(); $tabButtons.filter( '.down' ).removeClass( 'down'); $button.addClass( 'down' ); - padding = 10; - $window = $( window ); - windowHeight = $window.height(); - windowScrollTop = $window.scrollTop(); - windowBottom = windowScrollTop + windowHeight; - - panelHeight = displaySettings.$parent.$window.height(); - panelTop = displaySettings.$parent.$window.offset().top; - panelBottom = panelTop + panelHeight; - - // If the ULS panel is out of the viewport, - // scroll the window to show it - if ( ( panelTop < windowScrollTop ) || ( panelBottom > windowBottom ) ) { - if ( panelHeight > windowHeight ) { - // Scroll to show as much of the upper - // part of ULS as possible - scrollPosition = panelTop - padding; - } else { - // Scroll just enough to show the ULS panel - scrollPosition = panelBottom - windowHeight + padding; - } - - $( 'html, body' ).stop().animate( { - scrollTop: scrollPosition - }, 500 ); - } } ); }, @@ -600,4 +568,3 @@ display: DisplaySettings } ); })( jQuery, mediaWiki ); - diff --git a/resources/js/ext.uls.inputsettings.js b/resources/js/ext.uls.inputsettings.js index 6125f35d..685f4375 100644 --- a/resources/js/ext.uls.inputsettings.js +++ b/resources/js/ext.uls.inputsettings.js @@ -502,4 +502,3 @@ } ); } ( jQuery, mediaWiki ) ); - diff --git a/resources/js/ext.uls.languagesettings.js b/resources/js/ext.uls.languagesettings.js index 9167dab5..f9349256 100644 --- a/resources/js/ext.uls.languagesettings.js +++ b/resources/js/ext.uls.languagesettings.js @@ -115,38 +115,11 @@ $settingsMenuItems.append( $settingsLink ); $settingsLink.on( 'click', function () { - var scrollPosition, - panelHeight, panelTop, panelBottom, - padding = 10, - $window = $( window ), - windowHeight = $window.height(), - windowScrollTop = $window.scrollTop(), - windowBottom = windowScrollTop + windowHeight, - module = $( this ).data( 'module' ); + var module = $( this ).data( 'module' ); module.render(); - - panelHeight = languageSettings.$window.height(); - panelTop = languageSettings.$window.offset().top; - panelBottom = panelTop + panelHeight; - - // If the ULS panel is out of the viewport, - // scroll the window to show it - if ( ( panelTop < windowScrollTop ) || ( panelBottom > windowBottom ) ) { - if ( panelHeight > windowHeight ) { - // Scroll to show as much of the upper - // part of ULS as possible - scrollPosition = panelTop - padding; - } else { - // Scroll just enough to show the ULS panel - scrollPosition = panelBottom - windowHeight + padding; - } - - $( 'html, body' ).stop().animate( { - scrollTop: scrollPosition - }, 500 ); - } - + // re-position the window and scroll in to view if required. + languageSettings.position(); $settingsMenuItems.find( '.menu-section' ).removeClass( 'active' ); $( this ).addClass( 'active' ); } ); @@ -158,12 +131,8 @@ }, position: function () { - var top, pos, left, bottom, height, - $window = $( window ), - windowHeight = $window.height(), - windowScrollTop = $window.scrollTop(), - windowBottom = windowScrollTop + windowHeight, - scrollPosition; + var top, pos, left; + pos = $.extend( {}, this.$element.offset(), { height: this.$element[0].offsetHeight } ); @@ -173,23 +142,7 @@ top: top, left: left } ); - - height = this.$window.height(); - bottom = top + height; - // If the language settings windpw is out of the viewport, - // scroll the window to show it - if ( ( top < windowScrollTop ) || ( bottom > windowBottom ) ) { - if ( height > windowHeight ) { - // Scroll to show as much of the upper part of window as possible - scrollPosition = top; - } else { - // Scroll just enough to show the language settings window. - scrollPosition = bottom - windowHeight; - } - $( 'html, body' ).stop().animate( { - scrollTop: scrollPosition - }, 500 ); - } + this.$window[0].scrollIntoView(); }, show: function () {