Jonas Kress (WMDE) has uploaded a new change for review.
https://gerrit.wikimedia.org/r/277236
Change subject: Refactor ResultBrowsers to be configurable
......................................................................
Refactor ResultBrowsers to be configurable
Change-Id: Idc8b389329894021782f0e6aba3a6ffba94e4766
---
M index.html
M wikibase/queryService/ui/App.js
2 files changed, 58 insertions(+), 45 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/gui
refs/changes/36/277236/1
diff --git a/index.html b/index.html
index 62ea053..47f4336 100644
--- a/index.html
+++ b/index.html
@@ -95,9 +95,6 @@
<li><a href="#"
data-toggle="dropdown" class="dropdown-toggle"> <span class="glyphicon
glyphicon-eye-open" aria-hidden="true">Display</span><span class="caret"></span>
</a>
<ul
id="result-browser-menu" class="dropdown-menu" role="menu">
- <li><a
class="result-browser default" href="#"><span class="glyphicon
glyphicon-th"></span>Table</a></li>
- <li><a
class="result-browser gallery" href="#"><span class="glyphicon
glyphicon-picture"></span>Image Grid</a></li>
- <li><a
class="result-browser map" href="#"><span class="glyphicon
glyphicon-map-marker"></span>Map</a></li>
</ul></li>
<li>
<li><a href="#"
data-toggle="dropdown" class="dropdown-toggle"> <span class="glyphicon
glyphicon-download-alt" aria-hidden="true">Download</span><span
class="caret"></span>
diff --git a/wikibase/queryService/ui/App.js b/wikibase/queryService/ui/App.js
index c764ed9..f3b4817 100644
--- a/wikibase/queryService/ui/App.js
+++ b/wikibase/queryService/ui/App.js
@@ -66,6 +66,16 @@
SELF.prototype._autoExecuteQuery = false;
/**
+ * @property {Object}
+ * @private
+ **/
+ SELF.prototype._resultBrowsers = {
+ TableResultBrowser: {icon: 'th', label: 'Table',
object: null, $element: null },
+ ImageResultBrowser: {icon: 'picture', label: 'Image
Grid', object: null, $element: null },
+ CoordinateResultBrowser: {icon: 'map-marker', label:
'Map', object: null, $element: null }
+ };
+
+ /**
* Initialize private members and call delegate to specific init methods
* @private
**/
@@ -90,6 +100,7 @@
this._initQuery();
this._initRdfNamespaces();
this._initHandlers();
+ this._initResultBrowserMenu();
if( this._autoExecuteQuery ){
$( '#execute-button' ).click();
@@ -214,11 +225,6 @@
$( '.explorer-panel' ).hide();
} );
-
- //result browser
- $( '.result-browser' ).click( function(){ $(this).closest(
'.open' ).removeClass('open'); } );
- $( '.result-browser.default' ).click( $.proxy(
this._handleQueryResult, this ) );
-
$( window ).on( 'popstate', $.proxy( this._initQuery, this ) );
this._initPopovers();
@@ -321,6 +327,21 @@
}
};
+
+ /**
+ * @private
+ **/
+ SELF.prototype._initResultBrowserMenu = function() {
+
+ $.each( this._resultBrowsers, function( key, b ){
+ var $element = $( '<li><a class="result-browser"
href="#">' +
+ '<span class="glyphicon glyphicon-'+ b.icon
+'"></span>' + b.label + '</a></li>' );
+ $element.appendTo( $( '#result-browser-menu' ) );
+ b.$element = $element;
+ } );
+
+ };
+
/**
* @private
**/
@@ -389,53 +410,48 @@
return false;
}
- var tableBrowser = new
wikibase.queryService.ui.resultBrowser.TableResultBrowser();
- var imageBrowser = new
wikibase.queryService.ui.resultBrowser.ImageResultBrowser();
- var coordinateBrowser = new
wikibase.queryService.ui.resultBrowser.CoordinateResultBrowser();
+ var defaultBrowser = null;
+ $.each( this._resultBrowsers, function( className, b ){
+ var instance = new
wikibase.queryService.ui.resultBrowser[ className ]();
+ instance.setResult ( api.getResultRawData() );
- tableBrowser.setResult( api.getResultRawData() );
- tableBrowser.addVisitor( imageBrowser );
- tableBrowser.addVisitor( coordinateBrowser );
- tableBrowser.draw( $queryResult );
+ if( !defaultBrowser ){
+ defaultBrowser = instance;
+ } else {
+ defaultBrowser.addVisitor( instance );
+ }
+
+ b.object = instance;
+ } );
+
+ defaultBrowser.draw( $queryResult );
$queryResult.show();
- this._handleQueryResultBrowsers( imageBrowser,
coordinateBrowser );
-
+ this._handleQueryResultBrowsers();
return false;
};
/**
* @private
*/
- SELF.prototype._handleQueryResultBrowsers = function( imageBrowser,
coordinateBrowser ) {
- //image
- imageBrowser.setResult( this._sparqlApi.getResultRawData() );
+ SELF.prototype._handleQueryResultBrowsers = function() {
+ $.each( this._resultBrowsers, function( key, b ){
+ if( b.object.isDrawable() ){
+ b.$element.css( 'opacity', 1 ).attr( 'href',
'#' );
+ b.$element.click( function(){
+ $(this).closest( '.open' ).removeClass(
'open' );
- if( imageBrowser.isDrawable() ){
- $( '.result-browser.gallery' ).css( 'opacity', 1
).attr( 'href', '#' );
- $( '.result-browser.gallery' ).click( function(){
- imageBrowser.draw( $( '#query-result' ) );
- return false;
- } );
- }else{
- $( '.result-browser.gallery' ).off( 'click' );
- $( '.result-browser.gallery' ).css( 'opacity', 0.5
).removeAttr( 'href' );
- }
-
-
- //maps
- coordinateBrowser.setResult( this._sparqlApi.getResultRawData()
);
-
- if( coordinateBrowser.isDrawable() ){
- $( '.result-browser.map' ).css( 'opacity', 1 ).attr(
'href', '#' );
- $( '.result-browser.map' ).click( function(){
- coordinateBrowser.draw( $( '#query-result' ) );
- return false;
- } );
- }else{
- $( '.result-browser.map' ).off( 'click' );
- $( '.result-browser.map' ).css( 'opacity', 0.5
).removeAttr( 'href' );
- }
+ $( '#query-result' ).html( 'Loading...'
);
+ window.setTimeout( function() {
+ b.object.draw( $(
'#query-result' ) );
+ }, 20 );
+ return false;
+ } );
+ } else {
+ b.$element.off( 'click' );
+ b.$element.css( 'opacity', 0.5 ).removeAttr(
'href' );
+ }
+ } );
};
/**
--
To view, visit https://gerrit.wikimedia.org/r/277236
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idc8b389329894021782f0e6aba3a6ffba94e4766
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/gui
Gerrit-Branch: master
Gerrit-Owner: Jonas Kress (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits