Jonas Kress (WMDE) has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/369862 )

Change subject: Query Helper - Result Preview
......................................................................

Query Helper - Result Preview

Show a preview of the result when changing query with the Query Helper
Bug: T172328

Change-Id: I7a1427b0fb3968ccd6fbf58499b282f5456b9d1a
---
M i18n/en.json
M i18n/qqq.json
M index.html
M wikibase/queryService/ui/App.js
M wikibase/queryService/ui/ResultView.js
5 files changed, 60 insertions(+), 4 deletions(-)


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

diff --git a/i18n/en.json b/i18n/en.json
index 1c53fb0..300f8dc 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -77,5 +77,7 @@
     "wdqs-action-malformed-query": "Query is malformed",
     "wdqs-action-server-error": "Server error",
     "wdqs-action-unknow-error": "Unknown error",
+    "wdqs-action-preview": "This is a preview",
+    "wdqs-action-preview-failed": "Could not display preview",
     "wdqs-result-map-layers-all": "All layers"
 }
diff --git a/i18n/qqq.json b/i18n/qqq.json
index a9309b5..6c445d8 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -79,5 +79,7 @@
        "wdqs-action-malformed-query": "Label for progressbar on syntax error",
        "wdqs-action-server-error": "Label for progressbar displaying server 
error",
        "wdqs-action-unknow-error": "Label for progressbar displaying unknown 
error",
+       "wdqs-action-preview": "Label for progressbar displaying preview",
+    "wdqs-action-preview-failed": "Label for progressbar displaying no 
preview",
        "wdqs-result-map-layers-all": "Label for all layers in layer control on 
map view"
 }
diff --git a/index.html b/index.html
index 528172c..dd55f21 100644
--- a/index.html
+++ b/index.html
@@ -175,9 +175,6 @@
                                </form>
                        </div>
                </div>
-               <div class="row action-bar">
-                       <div class="message"></div>
-               </div>
                <noscript>
                        <div class="row action-bar" style="display: block">
                                <div class="message">
@@ -233,6 +230,9 @@
                                                </ul>
                                        </nav>
                </div>
+               <div class="row action-bar">
+                       <div class="message"></div>
+               </div>
                <div class="row">
                        <div id="query-result">Test result</div>
                </div>
diff --git a/wikibase/queryService/ui/App.js b/wikibase/queryService/ui/App.js
index 0a66314..0b9625d 100644
--- a/wikibase/queryService/ui/App.js
+++ b/wikibase/queryService/ui/App.js
@@ -197,6 +197,10 @@
                }
                this._queryHelper.setChangeListener( function( ve ) {
                        self._editor.setValue( ve.getQuery() );
+
+                       _.debounce( function () {
+                               self._resultView.drawPreview( ve.getQuery() );
+                       }, 1000 )();
                } );
 
                $( '.query-helper' ).resizable( {
diff --git a/wikibase/queryService/ui/ResultView.js 
b/wikibase/queryService/ui/ResultView.js
index 9dcf0a7..726d855 100644
--- a/wikibase/queryService/ui/ResultView.js
+++ b/wikibase/queryService/ui/ResultView.js
@@ -7,6 +7,9 @@
 
        var TRACKING_NAMESPACE = 'wikibase.queryService.ui.app.';
 
+       var PREVIEW_TIMEOUT = 1000,
+               PREVIEW_LIMIT = 20;
+
        /**
         * A result view for sparql queries
         *
@@ -29,6 +32,12 @@
         * @private
         */
        SELF.prototype._query = null;
+
+       /**
+        * @property {string}
+        * @private
+        */
+       SELF.prototype._sparqlQuery = null;
 
        /**
         * @property {wikibase.queryService.api.Sparql}
@@ -180,6 +189,9 @@
                }
 
                this._actionBar = new 
wikibase.queryService.ui.toolbar.Actionbar( $( '.action-bar' ) );
+
+               this._sparqlQuery = this._query = new 
wikibase.queryService.ui.queryHelper.SparqlQuery();
+
                this._initResultBrowserMenu();
        };
 
@@ -218,10 +230,47 @@
                        .done( function () {
                                self._handleQueryResult();
                                deferred.resolve();
+                               self._actionBar.hide();
                        } )
                        .fail( function() {
                                var error = self._handleQueryError();
                                deferred.reject( error );
+                       } );
+
+               return deferred.promise();
+       };
+
+       /**
+        * Render a preview of the given SPARQL query
+        *
+        * @param {String} query
+        * @return {JQuery.Promise}
+        */
+       SELF.prototype.drawPreview = function( query ) {
+               var self = this,
+                       deferred = $.Deferred();
+
+               this._query = query;
+
+               this._actionBar.show( 'wdqs-action-query', '', 'info', 100 );
+
+               $( '#query-result' ).empty().hide();
+               $( '.result' ).hide();
+               $( '#query-error' ).hide();
+
+               var prefixes = wikibase.queryService.RdfNamespaces.ALL_PREFIXES;
+               this._sparqlQuery.parse( query, prefixes );
+               this._sparqlQuery.setLimit( PREVIEW_LIMIT );
+
+               this._sparqlApi.query( this._sparqlQuery.getQueryString(), 
PREVIEW_TIMEOUT )
+                       .done( function () {
+                               self._handleQueryResult();
+                               deferred.resolve();
+                               self._actionBar.show( 'wdqs-action-preview', 
'', 'default' );
+                       } )
+                       .fail( function() {
+                               self._actionBar.show( 
'wdqs-action-preview-failed', '', 'default' );
+                               deferred.reject();
                        } );
 
                return deferred.promise();
@@ -372,7 +421,6 @@
                        try {
                                $( '#query-result' ).show();
                                resultBrowser.draw( $( '#query-result' ) );
-                               self._actionBar.hide();
                        } catch ( e ) {
                                self._actionBar.show( 
'wdqs-action-error-display', '', 'warning' );
                                window.console.error( e );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7a1427b0fb3968ccd6fbf58499b282f5456b9d1a
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