Jonas Kress (WMDE) has uploaded a new change for review. ( 
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, 59 insertions(+), 24 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/gui 
refs/changes/01/368001/1

diff --git a/wikibase/queryService/api/Wikibase.js 
b/wikibase/queryService/api/Wikibase.js
index 4a9dac9..3c0b3e4 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..823785b 100644
--- a/wikibase/queryService/ui/queryHelper/QueryHelper.js
+++ b/wikibase/queryService/ui/queryHelper/QueryHelper.js
@@ -315,6 +315,12 @@
                                self._query.addVariable( variable );
                        }
 
+                       self._api.getDataType( prop.split( '/' ).pop() ).done( 
function ( type ) {
+                               if ( type === 'wikibase-item' ) {
+                                       self._addLabelVariable( triple );
+                               }
+                       } );
+
                        $table.append( self._getTripleHtml( triple ) );
 
                        if ( self._changeListener ) {
@@ -348,6 +354,12 @@
 
                        var triple = self._query.addTriple( subject, prop, 
variable2, true );
                        self._query.addVariable( variable2 );
+
+                       self._api.getDataType( prop.split( '/' ).pop() ).done( 
function ( type ) {
+                               if ( type === 'wikibase-item' ) {
+                                       self._addLabelVariable( triple );
+                               }
+                       } );
 
                        $table.append( self._getTripleHtml( triple ) );
 
@@ -450,25 +462,21 @@
                        title: self._i18n( 'remove-row-title' )
                } );
 
-               var $label = $( '<a href="#">' ).addClass( 'fa fa-tag' ).click( 
function () {
-                       if ( triple.triple.object.startsWith( '?' ) ) {
-                               self._query
-                                               .addVariable( 
triple.triple.object +
-                                                               'Label' );
-                       } else {
-                               self._query
-                                               .addVariable( 
triple.triple.subject +
-                                                               'Label' );
-                       }
-                       if ( self._changeListener ) {
-                               self._changeListener( self );
-                       }
-                       return false;
-               } ).tooltip( {
-                       title: self._i18n( 'add-label-title' )
-               } );
+               return $( '<td class="toolbar">' ).append( $delete );
+       };
 
-               return $( '<td class="toolbar">' ).append( $label, $delete );
+       /**
+        * @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 );
+               }
        };
 
        /**

-- 
To view, visit https://gerrit.wikimedia.org/r/368001
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6017ddb5eec84bf199de67a1bfde621185ff75c2
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/gui
Gerrit-Branch: master
Gerrit-Owner: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to