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