jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/368001 )
Change subject: Auto add label variable when datatype of used property wikibase-item ...................................................................... Auto add label variable when datatype of used property wikibase-item This automatically adds a label column to columns containing a wikibase item. Change-Id: I6017ddb5eec84bf199de67a1bfde621185ff75c2 --- M wikibase/queryService/api/Wikibase.js M wikibase/queryService/ui/queryHelper/QueryHelper.js 2 files changed, 64 insertions(+), 6 deletions(-) Approvals: Lucas Werkmeister (WMDE): Looks good to me, approved jenkins-bot: Verified diff --git a/wikibase/queryService/api/Wikibase.js b/wikibase/queryService/api/Wikibase.js index 4a9dac9..b65d60e 100644 --- a/wikibase/queryService/api/Wikibase.js +++ b/wikibase/queryService/api/Wikibase.js @@ -14,21 +14,24 @@ continue: 0, languages: LANGUAGE, uselang: LANGUAGE - }; - - var QUERY_LANGUGES = { + }, + QUERY_LANGUGES = { action: 'query', meta: 'siteinfo', format: 'json', siprop: 'languages' - }; - - var QUERY_LABELS = { + }, + QUERY_LABELS = { action: 'wbgetentities', props: 'labels', format: 'json', languages: LANGUAGE, languagefallback: '1' + }, + QUERY_DATATYPE = { + action: 'wbgetentities', + props: 'datatype', + format: 'json' }; /** @@ -101,6 +104,7 @@ /** * Get labels for given entities * + * @param {string|string[]} ids entity IDs * @return {jQuery.Promise} */ SELF.prototype.getLabels = function( ids ) { @@ -120,6 +124,29 @@ }; /** + * Get datatype of property + * + * @param {string} id property ID + * @return {jQuery.Promise} + */ + SELF.prototype.getDataType = function( id ) { + var query = QUERY_DATATYPE, + deferred = $.Deferred(); + + query.ids = id; + + this._query( query ).done( function( data ) { + if ( data.entities && data.entities[id] && data.entities[id].datatype ) { + deferred.resolve( data.entities[id].datatype ); + } + deferred.reject(); + + } ).fail( deferred.reject ); + + return deferred.promise(); + }; + + /** * @private */ SELF.prototype._query = function( query ) { diff --git a/wikibase/queryService/ui/queryHelper/QueryHelper.js b/wikibase/queryService/ui/queryHelper/QueryHelper.js index 3647ef4..6ddbfb3 100644 --- a/wikibase/queryService/ui/queryHelper/QueryHelper.js +++ b/wikibase/queryService/ui/queryHelper/QueryHelper.js @@ -315,6 +315,8 @@ self._query.addVariable( variable ); } + self._addLabelVariableAfterItemColumn( prop.split( '/' ).pop(), triple ); + $table.append( self._getTripleHtml( triple ) ); if ( self._changeListener ) { @@ -349,6 +351,8 @@ var triple = self._query.addTriple( subject, prop, variable2, true ); self._query.addVariable( variable2 ); + self._addLabelVariableAfterItemColumn( prop.split( '/' ).pop(), triple ); + $table.append( self._getTripleHtml( triple ) ); if ( self._changeListener ) { @@ -357,6 +361,19 @@ } ); return $button; + }; + + /** + * @private + */ + SELF.prototype._addLabelVariableAfterItemColumn = function( propertyId, triple ) { + var self = this; + + this._api.getDataType( propertyId ).done( function ( type ) { + if ( type === 'wikibase-item' ) { + self._addLabelVariable( triple ); + } + } ); }; /** @@ -474,6 +491,20 @@ /** * @private */ + SELF.prototype._addLabelVariable = function( triple ) { + if ( triple.triple.object.startsWith( '?' ) ) { + this._query.addVariable( triple.triple.object + 'Label' ); + } else { + this._query.addVariable( triple.triple.subject + 'Label' ); + } + if ( this._changeListener ) { + this._changeListener( this ); + } + }; + + /** + * @private + */ SELF.prototype._isVariable = function( entity ) { return typeof entity === 'string' && entity.startsWith( '?' ); }; -- To view, visit https://gerrit.wikimedia.org/r/368001 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6017ddb5eec84bf199de67a1bfde621185ff75c2 Gerrit-PatchSet: 3 Gerrit-Project: wikidata/query/gui Gerrit-Branch: master Gerrit-Owner: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de> Gerrit-Reviewer: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de> Gerrit-Reviewer: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de> Gerrit-Reviewer: Smalyshev <smalys...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits