[MediaWiki-commits] [Gerrit] wikidata...gui[master]: Refactor error extraction and move to api

2016-10-12 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Refactor error extraction and move to api
..


Refactor error extraction and move to api

Bug: T147114
Bug: T144666
Change-Id: I0c58cdcee72b25c60ec02b68bf25f4029641af01
---
M i18n/en.json
M i18n/qqq.json
M wikibase/queryService/api/Sparql.js
M wikibase/queryService/ui/App.js
4 files changed, 89 insertions(+), 48 deletions(-)

Approvals:
  Smalyshev: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/i18n/en.json b/i18n/en.json
index c9d68ba..078a21d 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -48,5 +48,7 @@
 "wdqs-action-error-display": "Unable to display result",
 "wdqs-action-timeout": "Query timeout limit reached",
 "wdqs-action-malformed-query": "Query is malformed",
+"wdqs-action-server-error": "Server error",
+"wdqs-action-unknow-error": "Unknown error",
 "wdqs-result-map-layers-all": "All layers"
 }
\ No newline at end of file
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 6eeaf23..31299e7 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -50,5 +50,7 @@
"wdqs-action-error-display": "Label for progressbar",
"wdqs-action-timeout": "Label for progressbar",
"wdqs-action-malformed-query": "Label for progressbar",
+"wdqs-action-server-error": "Label for server error",
+   "wdqs-action-unknow-error": "Label for unknown error",
"wdqs-result-map-layers-all": "Label for all layers in layer control on 
map view"
 }
diff --git a/wikibase/queryService/api/Sparql.js 
b/wikibase/queryService/api/Sparql.js
index 4d688d6..98bf89f 100644
--- a/wikibase/queryService/api/Sparql.js
+++ b/wikibase/queryService/api/Sparql.js
@@ -7,6 +7,18 @@
 
var SPARQL_SERVICE_URI = 
'//query.wikidata.org/bigdata/namespace/wdq/sparql';
 
+   var ERROR_CODES = {
+   TIMEOUT: 10,
+   MALFORMED: 20,
+   SERVER: 30,
+   UNKNOWN: 100
+   };
+
+   var ERROR_MAP = {
+   'QueryTimeoutException: Query deadline is expired': 
ERROR_CODES.TIMEOUT,
+   'MalformedQueryException: ': ERROR_CODES.MALFORMED
+   };
+
/**
 * SPARQL API for the Wikibase query service
 *
@@ -24,6 +36,11 @@
}
 
/**
+* @property {Object}
+*/
+   SELF.prototype.ERROR_CODES = ERROR_CODES;
+
+   /**
 * @property {Number}
 * @private
 */
@@ -36,10 +53,10 @@
SELF.prototype._executionTime = null;
 
/**
-* @property {string}
+* @property {Object}
 * @private
 */
-   SELF.prototype._errorMessage = null;
+   SELF.prototype._error = null;
 
/**
 * @property {Number}
@@ -109,9 +126,7 @@
 * @return {jQuery.Promise} query
 */
SELF.prototype.query = function( query ) {
-   var self = this,
-   deferred = $.Deferred(),
-   settings = {
+   var self = this, deferred = $.Deferred(), settings = {
headers: {
Accept: 'application/sparql-results+json'
}
@@ -120,7 +135,7 @@
this._queryUri = this._serviceUri + '?query=' + 
encodeURIComponent( query );
 
this._executionTime = Date.now();
-   $.ajax( this._queryUri, settings ).done( function( data, 
textStatus, jqXHR ) {
+   $.ajax( this._queryUri, settings ).done( function( data, 
textStatus, request ) {
self._executionTime = Date.now() - self._executionTime;
 
if ( typeof data.boolean === 'boolean' ) {
@@ -131,11 +146,11 @@
self._rawData = data;
 
deferred.resolve();
-   } ).fail( function( jqXHR ) {
+   } ).fail( function( request ) {
self._executionTime = null;
self._rawData = null;
self._resultLength = null;
-   self._generateErrorMessage( jqXHR );
+   self._generateErrorMessage( request );
 
deferred.reject();
} );
@@ -146,18 +161,41 @@
/**
 * Get execution time in ms of the submitted query
 */
-   SELF.prototype._generateErrorMessage = function( jqXHR ) {
-   var message = 'ERROR: ';
+   SELF.prototype._generateErrorMessage = function( request, options, 
exception ) {
+   var error = {
+   code: null,
+   message: null,
+   debug: request.responseText
+   };
 
-   if ( jqXHR.status === 0 ) {
-   message += 'Could not contact server';
+   if ( request.status === 0 ) {
+   

[MediaWiki-commits] [Gerrit] wikidata...gui[master]: Refactor error extraction and move to api

2016-10-12 Thread Jonas Kress (WMDE) (Code Review)
Jonas Kress (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/315505

Change subject: Refactor error extraction and move to api
..

Refactor error extraction and move to api

Bug: T147114
Bug: T144666
Change-Id: I0c58cdcee72b25c60ec02b68bf25f4029641af01
---
M i18n/en.json
M i18n/qqq.json
M wikibase/queryService/api/Sparql.js
M wikibase/queryService/ui/App.js
4 files changed, 89 insertions(+), 48 deletions(-)


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

diff --git a/i18n/en.json b/i18n/en.json
index c9d68ba..078a21d 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -48,5 +48,7 @@
 "wdqs-action-error-display": "Unable to display result",
 "wdqs-action-timeout": "Query timeout limit reached",
 "wdqs-action-malformed-query": "Query is malformed",
+"wdqs-action-server-error": "Server error",
+"wdqs-action-unknow-error": "Unknown error",
 "wdqs-result-map-layers-all": "All layers"
 }
\ No newline at end of file
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 6eeaf23..31299e7 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -50,5 +50,7 @@
"wdqs-action-error-display": "Label for progressbar",
"wdqs-action-timeout": "Label for progressbar",
"wdqs-action-malformed-query": "Label for progressbar",
+"wdqs-action-server-error": "Label for server error",
+   "wdqs-action-unknow-error": "Label for unknown error",
"wdqs-result-map-layers-all": "Label for all layers in layer control on 
map view"
 }
diff --git a/wikibase/queryService/api/Sparql.js 
b/wikibase/queryService/api/Sparql.js
index 4d688d6..98bf89f 100644
--- a/wikibase/queryService/api/Sparql.js
+++ b/wikibase/queryService/api/Sparql.js
@@ -7,6 +7,18 @@
 
var SPARQL_SERVICE_URI = 
'//query.wikidata.org/bigdata/namespace/wdq/sparql';
 
+   var ERROR_CODES = {
+   TIMEOUT: 10,
+   MALFORMED: 20,
+   SERVER: 30,
+   UNKNOWN: 100
+   };
+
+   var ERROR_MAP = {
+   'QueryTimeoutException: Query deadline is expired': 
ERROR_CODES.TIMEOUT,
+   'MalformedQueryException: ': ERROR_CODES.MALFORMED
+   };
+
/**
 * SPARQL API for the Wikibase query service
 *
@@ -24,6 +36,11 @@
}
 
/**
+* @property {Object}
+*/
+   SELF.prototype.ERROR_CODES = ERROR_CODES;
+
+   /**
 * @property {Number}
 * @private
 */
@@ -36,10 +53,10 @@
SELF.prototype._executionTime = null;
 
/**
-* @property {string}
+* @property {Object}
 * @private
 */
-   SELF.prototype._errorMessage = null;
+   SELF.prototype._error = null;
 
/**
 * @property {Number}
@@ -109,9 +126,7 @@
 * @return {jQuery.Promise} query
 */
SELF.prototype.query = function( query ) {
-   var self = this,
-   deferred = $.Deferred(),
-   settings = {
+   var self = this, deferred = $.Deferred(), settings = {
headers: {
Accept: 'application/sparql-results+json'
}
@@ -120,7 +135,7 @@
this._queryUri = this._serviceUri + '?query=' + 
encodeURIComponent( query );
 
this._executionTime = Date.now();
-   $.ajax( this._queryUri, settings ).done( function( data, 
textStatus, jqXHR ) {
+   $.ajax( this._queryUri, settings ).done( function( data, 
textStatus, request ) {
self._executionTime = Date.now() - self._executionTime;
 
if ( typeof data.boolean === 'boolean' ) {
@@ -131,11 +146,11 @@
self._rawData = data;
 
deferred.resolve();
-   } ).fail( function( jqXHR ) {
+   } ).fail( function( request ) {
self._executionTime = null;
self._rawData = null;
self._resultLength = null;
-   self._generateErrorMessage( jqXHR );
+   self._generateErrorMessage( request );
 
deferred.reject();
} );
@@ -146,18 +161,41 @@
/**
 * Get execution time in ms of the submitted query
 */
-   SELF.prototype._generateErrorMessage = function( jqXHR ) {
-   var message = 'ERROR: ';
+   SELF.prototype._generateErrorMessage = function( request, options, 
exception ) {
+   var error = {
+   code: null,
+   message: null,
+   debug: request.responseText
+   };
 
-   if ( jqXHR.status === 0 ) {
-   message += 'Could not contact server';
+