jenkins-bot has submitted this change and it was merged.

Change subject: Add version 1 of error states to flyout
......................................................................


Add version 1 of error states to flyout

Current error states:
1) User has made no article edits.
2) There are no similar articles or the api request failed.

Bug: 70352
Change-Id: I2e2be6c30b10db569a6f12fa7b116f4cf78f360a
---
M GettingStarted.php
M i18n/en.json
M i18n/qqq.json
A resources/lightbulb/images/lightbulb-no.png
A resources/lightbulb/images/lightbulb-no.svg
A resources/lightbulb/images/lightbulb-sad.png
A resources/lightbulb/images/lightbulb-sad.svg
M resources/lightbulb/lightbulb.flyout.js
M resources/lightbulb/lightbulb.flyout.less
9 files changed, 210 insertions(+), 18 deletions(-)

Approvals:
  Mattflaschen: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/GettingStarted.php b/GettingStarted.php
index 6deb87b..bae53f2 100644
--- a/GettingStarted.php
+++ b/GettingStarted.php
@@ -205,6 +205,10 @@
                'gettingstarted-lightbulb-text',
                'gettingstarted-lightbulb-flyout-back',
                'gettingstarted-lightbulb-flyout-next',
+               
'gettingstarted-lightbulb-flyout-error-state-primary-text-no-article-edits',
+               
'gettingstarted-lightbulb-flyout-error-state-secondary-text-no-article-edits',
+               
'gettingstarted-lightbulb-flyout-error-state-primary-text-no-recommendations',
+               
'gettingstarted-lightbulb-flyout-error-state-secondary-text-no-recommendations',
        )
 ) + $gettingStartedModuleInfo;
 
diff --git a/i18n/en.json b/i18n/en.json
index a2a33d1..6c013e8 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -72,5 +72,9 @@
     "gettingstarted-lightbulb-heading": "Pages to improve",
     "gettingstarted-lightbulb-text": "Recommended based on your last edit.",
     "gettingstarted-lightbulb-flyout-back": "Back",
-    "gettingstarted-lightbulb-flyout-next": "Next"
+    "gettingstarted-lightbulb-flyout-next": "Next",
+    
"gettingstarted-lightbulb-flyout-error-state-primary-text-no-article-edits": 
"No recommendations yet!",
+    
"gettingstarted-lightbulb-flyout-error-state-secondary-text-no-article-edits": 
"Try editing a few pages. It will help us recommend what you should edit next.",
+    
"gettingstarted-lightbulb-flyout-error-state-primary-text-no-recommendations": 
"Uh oh, we're unable to show recommendations right now.",
+    
"gettingstarted-lightbulb-flyout-error-state-secondary-text-no-recommendations":
 "Please try again."
 }
diff --git a/i18n/qqq.json b/i18n/qqq.json
index c456535..abdd96a 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -74,5 +74,9 @@
        "gettingstarted-lightbulb-heading": "Heading on the flyout that the 
user sees when they use the Recommendations personal tool.",
        "gettingstarted-lightbulb-text": "Text on the flyout that the user sees 
when they use the Recommendations personal tool.",
        "gettingstarted-lightbulb-flyout-back": "Title text of button that 
shows previous suggestions in Recommendations flyout, if any.\n\nSee also:\n* 
{{msg-mw|Gettingstarted-lightbulb-flyout-next}}\n{{Identical|Back}}",
-       "gettingstarted-lightbulb-flyout-next": "Title text of button that 
shows next suggestions in Recommendations flyout, if any.\n\nSee also:\n* 
{{msg-mw|Gettingstarted-lightbulb-flyout-back}}\n{{Identical|Next}}"
+       "gettingstarted-lightbulb-flyout-next": "Title text of button that 
shows next suggestions in Recommendations flyout, if any.\n\nSee also:\n* 
{{msg-mw|Gettingstarted-lightbulb-flyout-back}}\n{{Identical|Next}}",
+       
"gettingstarted-lightbulb-flyout-error-state-primary-text-no-article-edits": 
"Heading text shown on empty state when the user has made no edits.",
+       
"gettingstarted-lightbulb-flyout-error-state-secondary-text-no-article-edits": 
"Text below header in error state instructing user to edit some articles so 
that we can recommend some others.",
+       
"gettingstarted-lightbulb-flyout-error-state-primary-text-no-recommendations": 
"Heading text on error state when there are no similar articles or there is an 
error.",
+       
"gettingstarted-lightbulb-flyout-error-state-secondary-text-no-recommendations":
 "Text below header asking to the user to try again."
 }
diff --git a/resources/lightbulb/images/lightbulb-no.png 
b/resources/lightbulb/images/lightbulb-no.png
new file mode 100644
index 0000000..e16fb7f
--- /dev/null
+++ b/resources/lightbulb/images/lightbulb-no.png
Binary files differ
diff --git a/resources/lightbulb/images/lightbulb-no.svg 
b/resources/lightbulb/images/lightbulb-no.svg
new file mode 100644
index 0000000..d59ba26
--- /dev/null
+++ b/resources/lightbulb/images/lightbulb-no.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="92px" height="142.129px" viewBox="0 0 92 142.129" 
enable-background="new 0 0 92 142.129" xml:space="preserve">
+<g id="site">
+</g>
+<g id="Layer_1_1_">
+</g>
+<g id="another">
+</g>
+<g id="jimmy_wales">
+       <g>
+               <g>
+                       <path fill="#C6C6C6" 
d="M35.004,131.641c-2.442,0-3.665,2.951-1.935,4.685c3.359,3.358,6.312,5.805,8.553,5.805h8.756
+                               
c2.239,0,4.785-2.44,8.351-5.805c1.832-1.729,0.608-4.685-1.834-4.685H35.004z"/>
+               </g>
+               <g>
+                       <path fill="#C6C6C6" 
d="M61.68,125.021H30.423c-3.156,0-5.599-2.545-5.599-5.603c0-3.153,2.545-5.601,5.599-5.601H61.68
+                               
c3.155,0,5.6,2.546,5.6,5.601C67.38,122.578,64.835,125.021,61.68,125.021z"/>
+               </g>
+               <g>
+                       <g>
+                               <path fill="#C6C6C6" 
d="M30.118,107.309c-2.749,0-5.092-2.035-5.6-4.785c0-0.203-1.121-6.516-7.433-15.981
+                                       
c-0.917-1.424-1.833-2.748-2.749-4.069C7.821,72.693,1,62.615,1,45c0-10.791,4.276-21.889,11.606-30.236
+                                       
C20.956,5.295,32.866,0.001,46,0.001c3.154,0,5.602,2.545,5.602,5.601c0,3.055-2.545,5.601-5.602,5.601
+                                       
c-12.625,0-20.565,6.006-24.941,10.995c-5.498,6.21-8.857,14.763-8.857,22.806c0,14.15,5.294,21.99,11.503,31.154
+                                       
c0.917,1.426,1.936,2.75,2.852,4.174c7.737,11.811,9.062,19.648,9.162,20.564c0.407,3.057-1.73,5.903-4.785,6.312
+                                       
C30.627,107.309,30.423,107.309,30.118,107.309z"/>
+                       </g>
+                       <g>
+                               <path fill="#C6C6C6" 
d="M61.779,107.309c-0.307,0-0.51,0-0.813-0.102c-3.054-0.406-5.19-3.359-4.784-6.414
+                                       
c0.104-0.814,1.426-8.756,9.162-20.564c0.916-1.426,1.936-2.852,2.852-4.176C74.406,66.891,79.702,59.05,79.702,44.9
+                                       
c0-7.839-3.464-16.29-9.163-22.704C64.123,15.069,55.367,11.2,46.001,11.2c-3.156,0-5.6-2.545-5.6-5.6
+                                       
c0-3.054,2.443-5.601,5.6-5.601C72.98,0,91,23.313,91,45c0,17.612-6.818,27.691-13.438,37.465
+                                       
c-0.916,1.322-1.832,2.646-2.748,4.072c-6.312,9.67-7.435,15.883-7.435,15.98C66.975,105.375,64.631,107.309,61.779,107.309z"/>
+                       </g>
+               </g>
+       </g>
+       <g>
+               <path fill="#C6C6C6" 
d="M55.876,59.764c-0.61,0-1.324-0.204-1.833-0.714L34.292,39.3c-1.018-1.019-1.018-2.647,0-3.563
+                       
c1.018-1.019,2.646-1.019,3.562,0l19.751,19.75c1.019,1.018,1.019,2.646,0,3.562C57.1,59.561,56.484,59.764,55.876,59.764z"/>
+       </g>
+       <g>
+               <path fill="#C6C6C6" 
d="M36.125,59.764c-0.61,0-1.324-0.204-1.833-0.714c-1.018-1.018-1.018-2.646,0-3.562l19.751-19.75
+                       
c1.02-1.019,2.646-1.019,3.562,0c1.019,1.019,1.019,2.647,0,3.563L37.957,59.05C37.448,59.561,36.735,59.764,36.125,59.764z"/>
+       </g>
+</g>
+</svg>
diff --git a/resources/lightbulb/images/lightbulb-sad.png 
b/resources/lightbulb/images/lightbulb-sad.png
new file mode 100644
index 0000000..1b68a39
--- /dev/null
+++ b/resources/lightbulb/images/lightbulb-sad.png
Binary files differ
diff --git a/resources/lightbulb/images/lightbulb-sad.svg 
b/resources/lightbulb/images/lightbulb-sad.svg
new file mode 100644
index 0000000..1da5dec
--- /dev/null
+++ b/resources/lightbulb/images/lightbulb-sad.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        width="92px" height="142.068px" viewBox="0 0 92 142.068" 
enable-background="new 0 0 92 142.068" xml:space="preserve">
+<g id="site">
+</g>
+<g id="Layer_1_1_">
+</g>
+<g id="another">
+</g>
+<g id="jimmy_wales">
+       <g>
+               <g>
+                       <path fill="#C6C6C6" 
d="M34.965,131.593c-2.44,0-3.661,2.949-1.933,4.68c3.356,3.354,6.306,5.797,8.543,5.797h8.747
+                               
c2.236,0,4.777-2.441,8.338-5.797c1.83-1.729,0.609-4.68-1.83-4.68H34.965z"/>
+               </g>
+               <g>
+                       <path fill="#C6C6C6" 
d="M61.611,124.983H30.389c-3.151,0-5.593-2.543-5.593-5.594c0-3.152,2.542-5.596,5.593-5.596h31.222
+                               
c3.15,0,5.592,2.541,5.592,5.596C67.305,122.44,64.762,124.983,61.611,124.983z"/>
+               </g>
+               <g>
+                       <g>
+                               <path fill="#C6C6C6" 
d="M30.084,107.186c-2.746,0-5.085-2.033-5.593-4.779c0-0.203-1.119-6.508-7.424-15.967
+                                       
c-0.916-1.424-1.832-2.744-2.746-4.066C7.814,72.712,1,62.54,1,45.049c0-10.776,4.271-21.862,11.594-30.201
+                                       
c8.439-9.562,20.236-14.85,33.355-14.85c3.152,0,5.592,2.542,5.592,5.593c0,3.053-2.541,5.595-5.592,5.595
+                                       
c-12.61,0-20.543,6-24.916,10.981c-5.491,6.204-8.848,14.746-8.848,22.78c0,14.135,5.288,21.966,11.492,31.12
+                                       
c0.916,1.424,1.932,2.746,2.848,4.17c7.729,11.797,9.051,19.627,9.152,20.541c0.407,3.053-1.729,5.895-4.779,6.307
+                                       
C30.593,107.186,30.389,107.186,30.084,107.186z"/>
+                       </g>
+                       <g>
+                               <path fill="#C6C6C6" 
d="M61.814,107.288c-0.309,0-0.51,0-0.814-0.102c-3.051-0.408-5.186-3.355-4.779-6.408
+                                       
c0.104-0.812,1.426-8.744,9.152-20.541c0.916-1.424,1.932-2.848,2.848-4.17c6.203-9.154,11.492-16.984,11.492-31.12
+                                       
c0-7.831-3.459-16.271-9.154-22.679c-6.404-7.118-15.148-10.982-24.507-10.982c-3.153,0-5.593-2.542-5.593-5.593
+                                       
c0-3.052,2.542-5.594,5.593-5.594C73,0.102,91,23.39,91,45.049c0,17.595-6.812,27.663-13.424,37.426
+                                       
c-0.914,1.318-1.83,2.645-2.746,4.064c-6.305,9.66-7.424,15.863-7.424,15.965C66.898,105.253,64.559,107.288,61.814,107.288z"/>
+                       </g>
+               </g>
+               <circle fill="#C6C6C6" cx="32.627" cy="42.813" r="4.576"/>
+               <circle fill="#C6C6C6" cx="59.068" cy="42.813" r="4.576"/>
+               <g>
+                       <path fill="#C6C6C6" 
d="M59.068,68.337c-0.609,0-1.322-0.203-1.83-0.712c-3.152-3.15-7.322-4.881-11.797-4.881
+                               
c-4.476,0-8.645,1.729-11.797,4.881c-1.017,1.019-2.644,1.019-3.56,0c-1.017-1.017-1.017-2.644,0-3.559
+                               
c4.17-4.169,9.56-6.407,15.458-6.407c5.795,0,11.29,2.236,15.458,6.407c1.018,1.017,1.018,2.644,0,3.559
+                               C60.389,68.134,59.678,68.337,59.068,68.337z"/>
+               </g>
+       </g>
+</g>
+</svg>
diff --git a/resources/lightbulb/lightbulb.flyout.js 
b/resources/lightbulb/lightbulb.flyout.js
index fa6340e..442950a 100644
--- a/resources/lightbulb/lightbulb.flyout.js
+++ b/resources/lightbulb/lightbulb.flyout.js
@@ -4,13 +4,18 @@
                MAX_PAGE_COUNT = 3,
                flyoutTemplate =
                        '<div class="mw-gettingstarted-lightbulb-flyout 
guider">\
-                               <h1></h1>\
-                               <p></p>\
+                               <h1 
class="mw-gettingstarted-lightbulb-flyout-heading"></h1>\
+                               <p 
class="mw-gettingstarted-lightbulb-flyout-text"></p>\
                                <ol 
class="mw-gettingstarted-lightbulb-suggestions">\
                                </ol>\
                                <div 
class="mw-gettingstarted-lightbulb-flyout-pagination">\
                                        <button class="mw-ui-button 
mw-gettingstarted-lightbulb-flyout-pagination-button-icon 
mw-gettingstarted-lightbulb-flyout-back"></button>\
                                        <button class="mw-ui-button 
mw-gettingstarted-lightbulb-flyout-pagination-button-icon 
mw-gettingstarted-lightbulb-flyout-next"></button>\
+                               </div>\
+                               <div 
class="mw-gettingstarted-lightbulb-flyout-error-state">\
+                                       <div 
class="mw-gettingstarted-lightbulb-flyout-error-state-image"></div>\
+                                       <p 
class="mw-gettingstarted-lightbulb-flyout-error-state-primary-text"></p>\
+                                       <p 
class="mw-gettingstarted-lightbulb-flyout-error-state-secondary-text"></p>\
                                </div>\
                                <div class="guider_arrow guider_arrow_up 
guider_arrow_center">\
                                        <div 
class="guider_arrow_inner_container">\
@@ -30,11 +35,20 @@
 
        function renderFlyout() {
 
-               // By default, the flyout is hidden.
+               // By default, everything in the flyout is hidden.
                var $flyout = $( flyoutTemplate ).hide();
 
-               $flyout.find( 'h1' ).text( mw.msg( 
'gettingstarted-lightbulb-heading' ) );
-               $flyout.find( 'p' ).text( mw.msg( 
'gettingstarted-lightbulb-text' ) );
+               $flyout.find( '.mw-gettingstarted-lightbulb-flyout-heading' )
+                       .text( mw.msg( 'gettingstarted-lightbulb-heading' ) )
+                       .hide();
+               $flyout.find( '.mw-gettingstarted-lightbulb-flyout-text' )
+                       .text( mw.msg( 'gettingstarted-lightbulb-text' ) )
+                       .hide();
+
+               $flyout.find( '.mw-gettingstarted-lightbulb-flyout-pagination' )
+                       .hide();
+
+               $flyout.find( '.mw-gettingstarted-lightbulb-flyout-error-state' 
).hide();
 
                return $flyout;
        }
@@ -105,6 +119,30 @@
        }
 
        /**
+        * Adds error state to the flyout
+        * @param {string} error string either no-recommendations, or 
no-article-edits
+        */
+       function addErrorStateToFlyout( error ) {
+               var $errorState = $flyout.find( 
'.mw-gettingstarted-lightbulb-flyout-error-state' ),
+                       $errorStateImage = $errorState.find( 
'.mw-gettingstarted-lightbulb-flyout-error-state-image' ),
+                       $errorStatePrimaryText = $errorState.find( 
'.mw-gettingstarted-lightbulb-flyout-error-state-primary-text' ),
+                       $errorStateSecondaryText = $errorState.find( 
'.mw-gettingstarted-lightbulb-flyout-error-state-secondary-text' );
+
+               $errorStateImage.addClass( error );
+
+               $errorStatePrimaryText.text(
+                       mw.msg( 
'gettingstarted-lightbulb-flyout-error-state-primary-text-' + error )
+               );
+               $errorStateSecondaryText.text(
+                       mw.msg( 
'gettingstarted-lightbulb-flyout-error-state-secondary-text-' + error )
+               );
+
+               $flyout.data( 'error-state', true );
+
+               $errorState.show();
+       }
+
+       /**
         * Updates the flyout to render a particular page
         *
         * @param {Array} suggestions Full list of suggestions
@@ -129,6 +167,14 @@
 
                        $newSuggestions.append( $li );
                }
+
+               // Show key elements in flyout
+               $flyout.find( '.mw-gettingstarted-lightbulb-flyout-heading' )
+                       .show();
+               $flyout.find( '.mw-gettingstarted-lightbulb-flyout-text' )
+                       .show();
+               $flyout.find( '.mw-gettingstarted-lightbulb-flyout-pagination' )
+                       .show();
 
                // There can be 0 discs, in which case this is a noop.
                $flyout.find( 
'.mw-gettingstarted-lightbulb-flyout-pagination-disc' )
@@ -202,6 +248,7 @@
         *
         */
        function showFlyout() {
+               positionFlyout( $flyout, $lightbulb );
                $( document ).on( 'click', checkForClickOutside );
                $( window ).on( 'resize', positionFlyout );
                $flyout.show();
@@ -237,7 +284,7 @@
                                return;
                        }
 
-                       if ( $flyout.data( 'has-suggestions' ) ) {
+                       if ( $flyout.data( 'has-suggestions' ) || $flyout.data( 
'error-state' ) ) {
                                if ( $flyout.is( ':visible' ) ) {
                                        hideFlyout();
                                } else {
@@ -255,17 +302,26 @@
                                                excludedTitle: title,
                                                count: 
MAX_SUGGESTION_PER_PAGE_COUNT * MAX_PAGE_COUNT,
                                                thumbSize: 70
-                                       } ).done( function ( response ) {
+                                       } )
+                                       .done( function ( response ) {
                                                var suggestions = parser.parse( 
response );
-
                                                addSuggestionsToFlyout( 
suggestions );
-                                               positionFlyout();
-
                                                $flyout.data( 
'has-suggestions', true );
-                                               requestingSuggestions = false;
-
+                                       } )
+                                       .fail( function () {
+                                               // no recommendations state
+                                               addErrorStateToFlyout( 
'no-recommendations' );
+                                       } )
+                                       .always( function () {
                                                showFlyout();
+                                               requestingSuggestions = false;
                                        } );
+                               } )
+                               .fail( function () {
+                                       // no article edit state
+                                       addErrorStateToFlyout( 
'no-article-edits' );
+                                       requestingSuggestions = false;
+                                       showFlyout();
                                } );
                } );
 
diff --git a/resources/lightbulb/lightbulb.flyout.less 
b/resources/lightbulb/lightbulb.flyout.less
index b49b7b9..568ff39 100644
--- a/resources/lightbulb/lightbulb.flyout.less
+++ b/resources/lightbulb/lightbulb.flyout.less
@@ -13,14 +13,15 @@
        box-sizing: border-box;
        padding: 23px;
 
-       h1 {
+       .mw-gettingstarted-lightbulb-flyout-heading {
                margin-bottom: 0;
                font-size: 1.5em;
        }
 
-       p {
-               margin-bottom: 1.5em;
-       }
+}
+
+.mw-gettingstarted-lightbulb-flyout-text {
+       margin-bottom: 1.5em;
 }
 
 .mw-gettingstarted-lightbulb-flyout-pagination {
@@ -103,6 +104,33 @@
        }
 }
 
+.mw-gettingstarted-lightbulb-flyout-error-state {
+       padding: 3em 2em 2em 2em;
+       text-align: center;
+}
+
+.mw-gettingstarted-lightbulb-flyout-error-state-image {
+       width: 90px;
+       height: 142px;
+       margin: 0 auto;
+       background-position: center top;
+       background-size: 90px 142px;
+       margin-bottom: 1em;
+}
+
+.mw-gettingstarted-lightbulb-flyout-error-state-image.no-recommendations {
+       .background-image-svg('images/lightbulb-sad.svg', 
'images/lightbulb-sad.png');
+}
+
+.mw-gettingstarted-lightbulb-flyout-error-state-image.no-edits {
+       .background-image-svg('images/lightbulb-no.svg', 
'images/lightbulb-no.png');
+}
+
+.mw-gettingstarted-lightbulb-flyout-error-state-primary-text {
+       font-weight: bold;
+       font-size: 1.25em;
+}
+
 // 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/157001
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I2e2be6c30b10db569a6f12fa7b116f4cf78f360a
Gerrit-PatchSet: 13
Gerrit-Project: mediawiki/extensions/GettingStarted
Gerrit-Branch: master
Gerrit-Owner: Robmoen <[email protected]>
Gerrit-Reviewer: MSyed <[email protected]>
Gerrit-Reviewer: Mattflaschen <[email protected]>
Gerrit-Reviewer: Phuedx <[email protected]>
Gerrit-Reviewer: Robmoen <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Swalling <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to