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

Change subject: $.wikibase.badgeselector: Display placeholder badges while 
fetching badge data
......................................................................


$.wikibase.badgeselector: Display placeholder badges while fetching badge data

Change-Id: I2e5e860fe944a83857e3973c25ed044e10792cfc
---
M lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
1 file changed, 39 insertions(+), 3 deletions(-)

Approvals:
  Thiemo Mättig (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
index 2bf9675..f166de3 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.badgeselector.js
@@ -194,6 +194,10 @@
 
                var self = this;
 
+               for( var i = 0; i < this.options.value.length; i++ ) {
+                       this._addPlaceholderBadge( this.options.value[i] );
+               }
+
                this._fetchItems( this.options.value )
                .done( function() {
                        for( var i = 0; i < self.options.value.length; i++ ) {
@@ -369,19 +373,47 @@
        },
 
        /**
+        * Creates a placeholder badge to be displayed while loading the actual 
badge information. The
+        * placeholder will be replaced when calling this._addBadge() with the 
same badge id.
+        *
         * @param {string} badgeId
         */
-       _addBadge: function( badgeId ) {
-               var badgeItem = badges[badgeId];
+       _addPlaceholderBadge: function( badgeId ) {
+               if( this.element.children( '[data-wb-badge="' + badgeId + '"]' 
).length ) {
+                       return;
+               }
                this.element.append(
                        mw.template( 'wb-badge',
                                badgeId + ' ' + this.options.badges[badgeId],
-                               badgeItem && badgeItem.getLabel( 
this.options.languageCode ) || badgeId,
+                               badgeId,
                                badgeId
                        )
                );
        },
 
+       /**
+        * @param {string} badgeId
+        */
+       _addBadge: function( badgeId ) {
+               var badgeItem = badges[badgeId],
+                       $placeholderBadge = this.element.children( 
'[data-wb-badge="' + badgeId + '"]' );
+
+               var $badge = mw.template( 'wb-badge',
+                       badgeId + ' ' + this.options.badges[badgeId],
+                       badgeItem && badgeItem.getLabel( 
this.options.languageCode ) || badgeId,
+                       badgeId
+               );
+
+               if( $placeholderBadge.length ) {
+                       $placeholderBadge.replaceWith( $badge );
+               } else {
+                       this.element.append( $badge );
+               }
+       },
+
+       /**
+        * Creates an empty badge to be displayed as menu anchor when no badges 
are selected.
+        */
        _addEmptyBadge: function() {
                this.element.append( mw.template( 'wb-badge',
                        'empty',
@@ -434,6 +466,10 @@
                } else {
                        this.element.empty();
 
+                       for( var i = 0; i < this.options.value.length; i++ ) {
+                               this._addPlaceholderBadge( 
this.options.value[i] );
+                       }
+
                        // Since the widget might have been initialized on 
pre-existing DOM, badges need to be
                        // fetched to ensure their data is available for 
resetting:
                        this._fetchItems( this.options.value )

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I2e5e860fe944a83857e3973c25ed044e10792cfc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to