[MediaWiki-commits] [Gerrit] Move sitelink scraping to sitelinkgrouplistview - change (mediawiki...Wikibase)
jenkins-bot has submitted this change and it was merged. Change subject: Move sitelink scraping to sitelinkgrouplistview .. Move sitelink scraping to sitelinkgrouplistview This improves reusability and encapsulation of `sitelinkgrouplistview`. Change-Id: Ie18fb8e5e0d7ecca3ded216a4a2cd1aeb27393ef --- M view/resources/jquery/wikibase/jquery.wikibase.itemview.js M view/resources/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.js M view/resources/jquery/wikibase/resources.php M view/tests/qunit/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.tests.js M view/tests/qunit/jquery/wikibase/resources.php 5 files changed, 100 insertions(+), 110 deletions(-) Approvals: Hoo man: Looks good to me, approved jenkins-bot: Verified diff --git a/view/resources/jquery/wikibase/jquery.wikibase.itemview.js b/view/resources/jquery/wikibase/jquery.wikibase.itemview.js index 7056ead..2c0e6aa 100644 --- a/view/resources/jquery/wikibase/jquery.wikibase.itemview.js +++ b/view/resources/jquery/wikibase/jquery.wikibase.itemview.js @@ -4,86 +4,6 @@ var PARENT = $.wikibase.entityview; /** - * Scrapes site links from static HTML in order to be sure the order in the static HTML matches the - * order set on the widget initialized on the HTML structure since that widget is not supposed to - * re-render the HTML for performance reasons. - * @ignore - * - * @param {jQuery} $siteLinks - * @param {wikibase.datamodel.SiteLinkSet} siteLinkSet - * @return {Object} - */ -function scrapeSiteLinks( $siteLinks, siteLinkSet ) { - var value = []; - - $siteLinks.find( '.wikibase-sitelinkgroupview' ).each( function() { - var $sitelinkgroupview = $( this ), - $sitelinklistview = $sitelinkgroupview.find( '.wikibase-sitelinklistview' ), - group = $sitelinkgroupview.data( 'wb-sitelinks-group' ), - siteIdsOfGroup = [], - siteLinkIds = siteLinkSet.getKeys(), - siteLinksOfGroup = []; - - $sitelinklistview.find( '.wikibase-sitelinkview' ).each( function() { - siteIdsOfGroup.push( $( this ).data( 'wb-siteid' ) ); - } ); - - for( var i = 0; i < siteIdsOfGroup.length; i++ ) { - for( var j = 0; j < siteLinkIds.length; j++ ) { - if( siteLinkIds[j] === siteIdsOfGroup[i] ) { - siteLinksOfGroup.push( siteLinkSet.getItemByKey( siteLinkIds[j] ) ); - break; - } - } - } - - value.push( { - group: group, - siteLinks: siteLinksOfGroup - } ); - } ); - - return value; -} - -/** - * Maps site links of a `wikibase.datamodel.SiteLinkSet` to their Wikibase site groups. - * @ignore - * - * @param {wikibase.datamodel.SiteLinkSet} siteLinkSet - * @return {Object} - */ -function orderSiteLinksByGroup( siteLinkSet ) { - var value = []; - - siteLinkSet.each( function( siteId, siteLink ) { - var site = wb.sites.getSite( siteId ), - found = false; - - if( !site ) { - throw new Error( 'Site with id ' + siteId + ' is not registered' ); - } - - for( var i = 0; i < value.length; i++ ) { - if( value[i].group === site.getGroup() ) { - value[i].siteLinks.push( siteLink ); - found = true; - break; - } - } - - if( !found ) { - value.push( { - group: site.getGroup(), - siteLinks: [siteLink] - } ); - } - } ); - - return value; -} - -/** * View for displaying a Wikibase `Item`. * @see wikibase.datamodel.Item * @class jQuery.wikibase.itemview @@ -189,16 +109,10 @@ * @protected */ _initSiteLinks: function() { - var self = this, - value = $( '.wikibase-sitelinkgrouplistview', this.element ).length - ? scrapeSiteLinks( this.$siteLinks, this.options.value.getSiteLinks() ) - : orderSiteLinksByGroup( this.options.value.getSiteLinks() ); - this.$siteLinks.sitelinkgrouplistview( { - value: value, - entityId: self.options.value.getId(), - siteLinksChanger: self.options.entityChangersFactory.getSiteLinksChanger(), - entityIdPlainFormatter: self.options.entityIdPlainFormatter + value:
[MediaWiki-commits] [Gerrit] Move sitelink scraping to sitelinkgrouplistview - change (mediawiki...Wikibase)
Adrian Lang has uploaded a new change for review. https://gerrit.wikimedia.org/r/239052 Change subject: Move sitelink scraping to sitelinkgrouplistview .. Move sitelink scraping to sitelinkgrouplistview Change-Id: Ie18fb8e5e0d7ecca3ded216a4a2cd1aeb27393ef --- M view/resources/jquery/wikibase/jquery.wikibase.itemview.js M view/resources/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.js M view/resources/jquery/wikibase/resources.php M view/tests/qunit/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.tests.js 4 files changed, 101 insertions(+), 107 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/52/239052/1 diff --git a/view/resources/jquery/wikibase/jquery.wikibase.itemview.js b/view/resources/jquery/wikibase/jquery.wikibase.itemview.js index 2d86045..f9882e6 100644 --- a/view/resources/jquery/wikibase/jquery.wikibase.itemview.js +++ b/view/resources/jquery/wikibase/jquery.wikibase.itemview.js @@ -4,86 +4,6 @@ var PARENT = $.wikibase.entityview; /** - * Scrapes site links from static HTML in order to be sure the order in the static HTML matches the - * order set on the widget initialized on the HTML structure since that widget is not supposed to - * re-render the HTML for performance reasons. - * @ignore - * - * @param {jQuery} $siteLinks - * @param {wikibase.datamodel.SiteLinkSet} siteLinkSet - * @return {Object} - */ -function scrapeSiteLinks( $siteLinks, siteLinkSet ) { - var value = []; - - $siteLinks.find( '.wikibase-sitelinkgroupview' ).each( function() { - var $sitelinkgroupview = $( this ), - $sitelinklistview = $sitelinkgroupview.find( '.wikibase-sitelinklistview' ), - group = $sitelinkgroupview.data( 'wb-sitelinks-group' ), - siteIdsOfGroup = [], - siteLinkIds = siteLinkSet.getKeys(), - siteLinksOfGroup = []; - - $sitelinklistview.find( '.wikibase-sitelinkview' ).each( function() { - siteIdsOfGroup.push( $( this ).data( 'wb-siteid' ) ); - } ); - - for( var i = 0; i < siteIdsOfGroup.length; i++ ) { - for( var j = 0; j < siteLinkIds.length; j++ ) { - if( siteLinkIds[j] === siteIdsOfGroup[i] ) { - siteLinksOfGroup.push( siteLinkSet.getItemByKey( siteLinkIds[j] ) ); - break; - } - } - } - - value.push( { - group: group, - siteLinks: siteLinksOfGroup - } ); - } ); - - return value; -} - -/** - * Maps site links of a `wikibase.datamodel.SiteLinkSet` to their Wikibase site groups. - * @ignore - * - * @param {wikibase.datamodel.SiteLinkSet} siteLinkSet - * @return {Object} - */ -function orderSiteLinksByGroup( siteLinkSet ) { - var value = []; - - siteLinkSet.each( function( siteId, siteLink ) { - var site = wb.sites.getSite( siteId ), - found = false; - - if( !site ) { - throw new Error( 'Site with id ' + siteId + ' is not registered' ); - } - - for( var i = 0; i < value.length; i++ ) { - if( value[i].group === site.getGroup() ) { - value[i].siteLinks.push( siteLink ); - found = true; - break; - } - } - - if( !found ) { - value.push( { - group: site.getGroup(), - siteLinks: [siteLink] - } ); - } - } ); - - return value; -} - -/** * View for displaying a Wikibase `Item`. * @see wikibase.datamodel.Item * @class jQuery.wikibase.itemview @@ -183,16 +103,10 @@ * @protected */ _initSiteLinks: function() { - var self = this, - value = $( '.wikibase-sitelinkgrouplistview', this.element ).length - ? scrapeSiteLinks( this.$siteLinks, this.options.value.getSiteLinks() ) - : orderSiteLinksByGroup( this.options.value.getSiteLinks() ); - this.$siteLinks.sitelinkgrouplistview( { - value: value, - entityId: self.options.value.getId(), - siteLinksChanger: self.options.entityChangersFactory.getSiteLinksChanger(), - entityStore: self.options.entityStore + value: this.options.value, + siteLinksChanger: