Robmoen has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/159077

Change subject: Add loading state to flyout.
......................................................................

Add loading state to flyout.

Change-Id: Idf091a98e108e577cbc57563c8f8540964b2bfef
TODO:  Need to resize lower res gif to 32px
---
A resources/lightbulb/images/ajax-loader-2x.gif
A resources/lightbulb/images/ajax-loader.gif
M resources/lightbulb/lightbulb.flyout.js
M resources/lightbulb/lightbulb.flyout.less
4 files changed, 25 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/GettingStarted 
refs/changes/77/159077/1

diff --git a/resources/lightbulb/images/ajax-loader-2x.gif 
b/resources/lightbulb/images/ajax-loader-2x.gif
new file mode 100644
index 0000000..c519155
--- /dev/null
+++ b/resources/lightbulb/images/ajax-loader-2x.gif
Binary files differ
diff --git a/resources/lightbulb/images/ajax-loader.gif 
b/resources/lightbulb/images/ajax-loader.gif
new file mode 100644
index 0000000..c519155
--- /dev/null
+++ b/resources/lightbulb/images/ajax-loader.gif
Binary files differ
diff --git a/resources/lightbulb/lightbulb.flyout.js 
b/resources/lightbulb/lightbulb.flyout.js
index 1701a78..6fb5f82 100644
--- a/resources/lightbulb/lightbulb.flyout.js
+++ b/resources/lightbulb/lightbulb.flyout.js
@@ -23,6 +23,9 @@
                                                <span 
class="error-state-button-text"></span>\
                                        </a>\
                                </div>\
+                               <div 
class="mw-gettingstarted-lightbulb-flyout-loader">\
+                                       <div 
class="mw-gettingstarted-lightbulb-flyout-loader-spinner"></div>\
+                               </div>\
                                <div class="guider_arrow guider_arrow_up 
guider_arrow_center">\
                                        <div 
class="guider_arrow_inner_container">\
                                                <div 
class="guider_arrow_inner"></div>\
@@ -37,6 +40,7 @@
                mwConfig = mw.config.get( [ 'wgArticleId', 'wgUserId' ] ),
                $lightbulb = $( 
'.mw-gettingstarted-personal-tool-recommendations' ),
                $flyout = null,
+               $loader = null,
                requestingSuggestions = false;
 
        function renderFlyout() {
@@ -61,9 +65,6 @@
                                var $icon = $( this ).find( 
'.error-state-button-icon' ),
                                        api;
 
-                               /* TODO: rmoen 9-3-14 add loading state for 
when flyout opens
-                                                and when additional api 
requests are made */
-
                                if ( $icon.hasClass( 'no-edits' ) ) {
                                        api = new mw.gettingStarted.Api();
                                        // Request a random page and go to it
@@ -74,6 +75,7 @@
                                } else {
                                        // Hide error state and request 
suggestions
                                        $flyout.find( 
'.mw-gettingstarted-lightbulb-flyout-error-state' ).hide();
+                                       $loader.show();
                                        requestSuggestions();
                                }
                        } );
@@ -303,6 +305,7 @@
         */
        function addFlyout() {
                $flyout = renderFlyout();
+               $loader = $flyout.find( 
'.mw-gettingstarted-lightbulb-flyout-loader' );
 
                $lightbulb.on( 'click', function ( event ) {
                        event.preventDefault();
@@ -335,6 +338,7 @@
        function requestSuggestions() {
                var api = new mw.gettingStarted.Api();
 
+               $loader.show();
                requestingSuggestions = true;
                api.getLastArticleUserEdited( mw.user.getName() )
                        .done( function ( title ) {
@@ -355,6 +359,7 @@
                                        addErrorStateToFlyout( 
'no-recommendations' );
                                } )
                                .always( function () {
+                                       $loader.hide();
                                        showFlyout();
                                        requestingSuggestions = false;
                                } );
@@ -363,6 +368,7 @@
                                // show no edit state
                                addErrorStateToFlyout( 'no-edits' );
                                requestingSuggestions = false;
+                               $loader.hide();
                                showFlyout();
                        } );
        }
diff --git a/resources/lightbulb/lightbulb.flyout.less 
b/resources/lightbulb/lightbulb.flyout.less
index 3cb017f..4c37f0b 100644
--- a/resources/lightbulb/lightbulb.flyout.less
+++ b/resources/lightbulb/lightbulb.flyout.less
@@ -156,6 +156,22 @@
 
 }
 
+.mw-gettingstarted-lightbulb-flyout-loader {
+       margin: auto;
+       padding: 45px 71px;
+       display: none;
+
+       .mw-gettingstarted-lightbulb-flyout-loader-spinner {
+               margin: auto;
+               width: 32px;
+               height: 32px;
+               background-position: center;
+               background-size: 32px;
+               // Graceful degradation for browsers that don't support 
background-size
+               .background-image-svg('images/ajax-loader-2x.gif', 
'images/ajax-loader.gif');
+       }
+}
+
 // TODO (phuedx, 2014/07/30): Classes like this would simplify the
 // GuidedTour library. Create the entire set of classes upstream.
 

-- 
To view, visit https://gerrit.wikimedia.org/r/159077
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idf091a98e108e577cbc57563c8f8540964b2bfef
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/GettingStarted
Gerrit-Branch: master
Gerrit-Owner: Robmoen <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to