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

Reply via email to