WMDE-leszek has submitted this change and it was merged. Change subject: If the slider fails to load then fail nicely! ......................................................................
If the slider fails to load then fail nicely! If something goes wrong with the initial api rquest the slider would either load in a broken state or say that it is loading forever. Now a message will be displayed to the user as well as the error logged to the console. Change-Id: Id763f31432feb7bd0e9ecbbeb2dd40f7ca6acaaf --- M .jshintrc M extension.json M i18n/en.json M i18n/qqq.json M modules/ext.RevisionSlider.fetchRevisions.js M modules/ext.RevisionSlider.init.js 6 files changed, 36 insertions(+), 12 deletions(-) Approvals: WMDE-leszek: Verified; Looks good to me, approved jenkins-bot: Verified diff --git a/.jshintrc b/.jshintrc index eb08746..1dea050 100755 --- a/.jshintrc +++ b/.jshintrc @@ -1,6 +1,7 @@ { // Enforcing "bitwise": true, + "devel": true, "eqeqeq": true, "es3": true, "latedef": true, diff --git a/extension.json b/extension.json index 48e85a2..db56c80 100755 --- a/extension.json +++ b/extension.json @@ -27,11 +27,15 @@ "modules/ext.RevisionSlider.css" ], "dependencies": [ + "mediawiki.jqueryMsg", "ext.RevisionSlider.Slider", "ext.RevisionSlider.Revision", "ext.RevisionSlider.RevisionList", "ext.RevisionSlider.fetchRevisions" ], + "messages": [ + "revisionslider-loading-failed" + ], "position": "top" }, "ext.RevisionSlider.rainbow": { diff --git a/i18n/en.json b/i18n/en.json index 06afc0e..8506a59 100755 --- a/i18n/en.json +++ b/i18n/en.json @@ -9,5 +9,6 @@ "revisionslider-beta-feature-message": "Revision Slider", "revisionslider-beta-feature-description": "Show a revision slider when comparing two revisions of a page.", "revisionslider-loading-placeholder": "The revision slider is loading.", + "revisionslider-loading-failed": "The revision slider failed to load.", "revisionslider-loading-noscript": "As you have JavaScript disabled the revision slider will not be able to load." } \ No newline at end of file diff --git a/i18n/qqq.json b/i18n/qqq.json index f884f42..7914ff3 100755 --- a/i18n/qqq.json +++ b/i18n/qqq.json @@ -9,5 +9,6 @@ "revisionslider-beta-feature-message": "Label for the revision slider Beta Feature.", "revisionslider-beta-feature-description": "Description for the revision slider Beta Feature, describing the feature that will be enabled.", "revisionslider-loading-placeholder": "Message shown while the RevisionSlider is still loading on a diff page. Once loaded the message is removed.", + "revisionslider-loading-failed": "Message shown if the RevisionSlider fails to initially load.", "revisionslider-loading-noscript": "Message shown while the RevisionSlider is trying to load but when JavaScript is disabled and thus it will not be successful." } diff --git a/modules/ext.RevisionSlider.fetchRevisions.js b/modules/ext.RevisionSlider.fetchRevisions.js index 933cf23..d07fc52 100644 --- a/modules/ext.RevisionSlider.fetchRevisions.js +++ b/modules/ext.RevisionSlider.fetchRevisions.js @@ -4,7 +4,7 @@ /** * Fetches up to 500 revisions at a time * - * @param {{}} options - Options containing success callback, pageName and startId + * @param {{}} options - Options containing success /error callback, pageName and startId */ mw.libs.revisionSlider.fetchRevisions = function ( options ) { $.ajax( { @@ -20,7 +20,8 @@ 'continue': '', rvlimit: 500 }, - success: options.success + success: options.success, + error: options.error } ); }; }( mediaWiki, jQuery ) ); diff --git a/modules/ext.RevisionSlider.init.js b/modules/ext.RevisionSlider.init.js index bbfdb45..0738f29 100755 --- a/modules/ext.RevisionSlider.init.js +++ b/modules/ext.RevisionSlider.init.js @@ -8,21 +8,37 @@ startId: mw.config.get( 'wgCurRevisionId' ), success: function ( data ) { - var revs = data.query.pages[ 0 ].revisions, + var revs, revisionList, $container, slider; - if ( !revs ) { - return; + + try { + revs = data.query.pages[ 0 ].revisions; + if ( !revs ) { + return; + } + revs.reverse(); + + revisionList = new mw.libs.revisionSlider.RevisionList( revs ); + $container = $( '#revision-slider-container' ); + slider = new mw.libs.revisionSlider.Slider( revisionList ); + slider.getView().render( $container ); + + $( '#revision-slider-placeholder' ).remove(); + } catch ( err ) { + $( '#revision-slider-placeholder' ) + .html( mw.message( 'revisionslider-loading-failed' ).text() ); + console.log( err ); + mw.track( 'counter.MediaWiki.RevisionSlider.error.init' ); } - revs.reverse(); - revisionList = new mw.libs.revisionSlider.RevisionList( revs ); - $container = $( '#revision-slider-container' ); - slider = new mw.libs.revisionSlider.Slider( revisionList ); - slider.getView().render( $container ); - - $( '#revision-slider-placeholder' ).remove(); + }, + error: function ( err ) { + $( '#revision-slider-placeholder' ) + .html( mw.message( 'revisionslider-loading-failed' ).text() ); + console.log( err ); + mw.track( 'counter.MediaWiki.RevisionSlider.error.init' ); } } ); } ); -- To view, visit https://gerrit.wikimedia.org/r/288181 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id763f31432feb7bd0e9ecbbeb2dd40f7ca6acaaf Gerrit-PatchSet: 5 Gerrit-Project: mediawiki/extensions/RevisionSlider Gerrit-Branch: master Gerrit-Owner: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Gabriel Birke <gabriel.bi...@wikimedia.de> Gerrit-Reviewer: Jakob <jakob.warkot...@wikimedia.de> Gerrit-Reviewer: Kai Nissen (WMDE) <kai.nis...@wikimedia.de> Gerrit-Reviewer: Siebrand <siebr...@kitano.nl> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: WMDE-Fisch <christoph.fisc...@wikimedia.de> Gerrit-Reviewer: WMDE-leszek <leszek.mani...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits