Jonas Kress (WMDE) has uploaded a new change for review.
https://gerrit.wikimedia.org/r/277221
Change subject: Show pagination and search for huge results
......................................................................
Show pagination and search for huge results
Change-Id: I7417dd6ceac4092601f9dd4e6ed65cf079f5dfde
---
M index.html
A vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
A vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.min.js
A vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.js
A vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.min.js
M wikibase/queryService/ui/resultBrowser/TableResultBrowser.js
6 files changed, 448 insertions(+), 3 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/gui
refs/changes/21/277221/1
diff --git a/index.html b/index.html
index 62ea053..8d24047 100644
--- a/index.html
+++ b/index.html
@@ -190,6 +190,8 @@
<script src="vendor/bootstrap-tags/js/bootstrap-tags.min.js"></script>
<script src="vendor/bootstrap-table/bootstrap-table.min.js"></script>
<script
src="vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js"></script>
+ <script
src="vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.min.js"></script>
+ <script
src="vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js"></script>
<script src="vendor/danml/download.min.js"></script>
<script src="vendor/wdqs-explorer/vis.js"></script>
<script src="vendor/wdqs-explorer/wdqs.js"></script>
diff --git a/vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
b/vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
new file mode 100644
index 0000000..333165a
--- /dev/null
+++ b/vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
@@ -0,0 +1,335 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.2.0
+ *
+ * @update zhixin wen <[email protected]>
+ */
+
+(function ($) {
+ 'use strict';
+
+ var cookieIds = {
+ sortOrder: 'bs.table.sortOrder',
+ sortName: 'bs.table.sortName',
+ pageNumber: 'bs.table.pageNumber',
+ pageList: 'bs.table.pageList',
+ columns: 'bs.table.columns',
+ searchText: 'bs.table.searchText',
+ filterControl: 'bs.table.filterControl'
+ };
+
+ var getCurrentHeader = function (that) {
+ var header = that.$header;
+ if (that.options.height) {
+ header = that.$tableHeader;
+ }
+
+ return header;
+ };
+
+ var getCurrentSearchControls = function (that) {
+ var searchControls = 'select, input';
+ if (that.options.height) {
+ searchControls = 'table select, table input';
+ }
+
+ return searchControls;
+ };
+
+ var cookieEnabled = function () {
+ return !!(navigator.cookieEnabled);
+ };
+
+ var inArrayCookiesEnabled = function (cookieName, cookiesEnabled) {
+ var index = -1;
+
+ for (var i = 0; i < cookiesEnabled.length; i++) {
+ if (cookieName.toLowerCase() === cookiesEnabled[i].toLowerCase()) {
+ index = i;
+ break;
+ }
+ }
+
+ return index;
+ };
+
+ var setCookie = function (that, cookieName, cookieValue) {
+ if ((!that.options.cookie) || (!cookieEnabled()) ||
(that.options.cookieIdTable === '')) {
+ return;
+ }
+
+ if (inArrayCookiesEnabled(cookieName, that.options.cookiesEnabled) ===
-1) {
+ return;
+ }
+
+ cookieName = that.options.cookieIdTable + '.' + cookieName;
+ if (!cookieName ||
/^(?:expires|max\-age|path|domain|secure)$/i.test(cookieName)) {
+ return false;
+ }
+
+ document.cookie = encodeURIComponent(cookieName) + '=' +
encodeURIComponent(cookieValue) +
calculateExpiration(that.options.cookieExpire) + (that.options.cookieDomain ?
'; domain=' + that.options.cookieDomain : '') + (that.options.cookiePath ? ';
path=' + that.options.cookiePath : '') + (that.cookieSecure ? '; secure' : '');
+ return true;
+ };
+
+ var getCookie = function (that, tableName, cookieName) {
+ if (!cookieName) {
+ return null;
+ }
+
+ if (inArrayCookiesEnabled(cookieName, that.options.cookiesEnabled) ===
-1) {
+ return null;
+ }
+
+ cookieName = tableName + '.' + cookieName;
+
+ return decodeURIComponent(document.cookie.replace(new
RegExp('(?:(?:^|.*;)\\s*' +
encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') +
'\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
+ };
+
+ var hasCookie = function (cookieName) {
+ if (!cookieName) {
+ return false;
+ }
+ return (new RegExp('(?:^|;\\s*)' +
encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') +
'\\s*\\=')).test(document.cookie);
+ };
+
+ var deleteCookie = function (tableName, cookieName, sPath, sDomain) {
+ cookieName = tableName + '.' + cookieName;
+ if (!hasCookie(cookieName)) {
+ return false;
+ }
+ document.cookie = encodeURIComponent(cookieName) + '=; expires=Thu, 01
Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? ';
path=' + sPath : '');
+ return true;
+ };
+
+ var calculateExpiration = function(cookieExpire) {
+ var time = cookieExpire.replace(/[0-9]*/, ''); //s,mi,h,d,m,y
+ cookieExpire = cookieExpire.replace(/[A-Za-z]/, ''); //number
+
+ switch (time.toLowerCase()) {
+ case 's':
+ cookieExpire = +cookieExpire;
+ break;
+ case 'mi':
+ cookieExpire = cookieExpire * 60;
+ break;
+ case 'h':
+ cookieExpire = cookieExpire * 60 * 60;
+ break;
+ case 'd':
+ cookieExpire = cookieExpire * 24 * 60 * 60;
+ break;
+ case 'm':
+ cookieExpire = cookieExpire * 30 * 24 * 60 * 60;
+ break;
+ case 'y':
+ cookieExpire = cookieExpire * 365 * 24 * 60 * 60;
+ break;
+ default:
+ cookieExpire = undefined;
+ break;
+ }
+
+ return cookieExpire === undefined ? '' : '; max-age=' + cookieExpire;
+ };
+
+ $.extend($.fn.bootstrapTable.defaults, {
+ cookie: false,
+ cookieExpire: '2h',
+ cookiePath: null,
+ cookieDomain: null,
+ cookieSecure: null,
+ cookieIdTable: '',
+ cookiesEnabled: ['bs.table.sortOrder', 'bs.table.sortName',
'bs.table.pageNumber', 'bs.table.pageList', 'bs.table.columns',
'bs.table.searchText', 'bs.table.filterControl'],
+ //internal variable
+ filterControls: [],
+ filterControlValuesLoaded: false
+ });
+
+ $.fn.bootstrapTable.methods.push('deleteCookie');
+
+ var BootstrapTable = $.fn.bootstrapTable.Constructor,
+ _init = BootstrapTable.prototype.init,
+ _initTable = BootstrapTable.prototype.initTable,
+ _onSort = BootstrapTable.prototype.onSort,
+ _onPageNumber = BootstrapTable.prototype.onPageNumber,
+ _onPageListChange = BootstrapTable.prototype.onPageListChange,
+ _onPageFirst = BootstrapTable.prototype.onPageFirst,
+ _onPagePre = BootstrapTable.prototype.onPagePre,
+ _onPageNext = BootstrapTable.prototype.onPageNext,
+ _onPageLast = BootstrapTable.prototype.onPageLast,
+ _toggleColumn = BootstrapTable.prototype.toggleColumn,
+ _selectPage = BootstrapTable.prototype.selectPage,
+ _onSearch = BootstrapTable.prototype.onSearch;
+
+ BootstrapTable.prototype.init = function () {
+ var timeoutId = 0;
+ this.options.filterControls = [];
+ this.options.filterControlValuesLoaded = false;
+
+
+ this.options.cookiesEnabled = typeof this.options.cookiesEnabled ===
'string' ?
+ this.options.cookiesEnabled.replace('[', '').replace(']',
'').replace(/ /g, '').toLowerCase().split(',') : this.options.cookiesEnabled;
+
+ if (this.options.filterControl) {
+ var that = this;
+ this.$el.on('column-search.bs.table', function (e, field, text) {
+ var isNewField = true;
+
+ for (var i = 0; i < that.options.filterControls.length; i++) {
+ if (that.options.filterControls[i].field === field) {
+ that.options.filterControls[i].text = text;
+ isNewField = false;
+ break;
+ }
+ }
+ if (isNewField) {
+ that.options.filterControls.push({
+ field: field,
+ text: text
+ });
+ }
+
+ setCookie(that, cookieIds.filterControl,
JSON.stringify(that.options.filterControls));
+ }).on('post-body.bs.table', function () {
+ setTimeout(function () {
+ if (!that.options.filterControlValuesLoaded) {
+ that.options.filterControlValuesLoaded = true;
+ var filterControl = JSON.parse(getCookie(that,
that.options.cookieIdTable, cookieIds.filterControl));
+ if (filterControl) {
+ var field = null,
+ result = [],
+ header = getCurrentHeader(that),
+ searchControls =
getCurrentSearchControls(that);
+
+ header.find(searchControls).each(function (index,
ele) {
+ field =
$(this).closest('[data-field]').data('field');
+ result = $.grep(filterControl, function
(valueObj) {
+ return valueObj.field === field;
+ });
+
+ if (result.length > 0) {
+ $(this).val(result[0].text);
+ that.onColumnSearch({currentTarget:
$(this)});
+ }
+ });
+ }
+ }
+ }, 250);
+ });
+ }
+ _init.apply(this, Array.prototype.slice.apply(arguments));
+ };
+
+ BootstrapTable.prototype.initTable = function () {
+ _initTable.apply(this, Array.prototype.slice.apply(arguments));
+ this.initCookie();
+ };
+
+ BootstrapTable.prototype.initCookie = function () {
+ if (!this.options.cookie) {
+ return;
+ }
+
+ if ((this.options.cookieIdTable === '') || (this.options.cookieExpire
=== '') || (!cookieEnabled())) {
+ throw new Error("Configuration error. Please review the
cookieIdTable, cookieExpire properties, if those properties are ok, then this
browser does not support the cookies");
+ return;
+ }
+
+ var sortOrderCookie = getCookie(this, this.options.cookieIdTable,
cookieIds.sortOrder),
+ sortOrderNameCookie = getCookie(this, this.options.cookieIdTable,
cookieIds.sortName),
+ pageNumberCookie = getCookie(this, this.options.cookieIdTable,
cookieIds.pageNumber),
+ pageListCookie = getCookie(this, this.options.cookieIdTable,
cookieIds.pageList),
+ columnsCookie = JSON.parse(getCookie(this,
this.options.cookieIdTable, cookieIds.columns)),
+ searchTextCookie = getCookie(this, this.options.cookieIdTable,
cookieIds.searchText);
+
+ //sortOrder
+ this.options.sortOrder = sortOrderCookie ? sortOrderCookie :
this.options.sortOrder;
+ //sortName
+ this.options.sortName = sortOrderNameCookie ? sortOrderNameCookie :
this.options.sortName;
+ //pageNumber
+ this.options.pageNumber = pageNumberCookie ? +pageNumberCookie :
this.options.pageNumber;
+ //pageSize
+ this.options.pageSize = pageListCookie ? pageListCookie ===
this.options.formatAllRows() ? pageListCookie : +pageListCookie :
this.options.pageSize;
+ //searchText
+ this.options.searchText = searchTextCookie ? searchTextCookie : '';
+
+ if (columnsCookie) {
+ $.each(this.columns, function (i, column) {
+ column.visible = $.inArray(column.field, columnsCookie) !== -1;
+ });
+ }
+ };
+
+ BootstrapTable.prototype.onSort = function () {
+ _onSort.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.sortOrder, this.options.sortOrder);
+ setCookie(this, cookieIds.sortName, this.options.sortName);
+ };
+
+ BootstrapTable.prototype.onPageNumber = function () {
+ _onPageNumber.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+ };
+
+ BootstrapTable.prototype.onPageListChange = function () {
+ _onPageListChange.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.pageList, this.options.pageSize);
+ };
+
+ BootstrapTable.prototype.onPageFirst = function () {
+ _onPageFirst.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+ };
+
+ BootstrapTable.prototype.onPagePre = function () {
+ _onPagePre.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+ };
+
+ BootstrapTable.prototype.onPageNext = function () {
+ _onPageNext.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+ };
+
+ BootstrapTable.prototype.onPageLast = function () {
+ _onPageLast.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+ };
+
+ BootstrapTable.prototype.toggleColumn = function () {
+ _toggleColumn.apply(this, Array.prototype.slice.apply(arguments));
+
+ var visibleColumns = [];
+
+ $.each(this.columns, function (i, column) {
+ if (column.visible) {
+ visibleColumns.push(column.field);
+ }
+ });
+
+ setCookie(this, cookieIds.columns, JSON.stringify(visibleColumns));
+ };
+
+ BootstrapTable.prototype.selectPage = function (page) {
+ _selectPage.apply(this, Array.prototype.slice.apply(arguments));
+ setCookie(this, cookieIds.pageNumber, page);
+ };
+
+ BootstrapTable.prototype.onSearch = function () {
+ var target = Array.prototype.slice.apply(arguments);
+ _onSearch.apply(this, target);
+
+ if ($(target[0].currentTarget).parent().hasClass('search')) {
+ setCookie(this, cookieIds.searchText, this.searchText);
+ }
+ };
+
+ BootstrapTable.prototype.deleteCookie = function (cookieName) {
+ if ((cookieName === '') || (!cookieEnabled())) {
+ return;
+ }
+
+ deleteCookie(this.options.cookieIdTable, cookieIds[cookieName],
this.options.cookiePath, this.options.cookieDomain);
+ };
+})(jQuery);
diff --git
a/vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.min.js
b/vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.min.js
new file mode 100644
index 0000000..5a3beb7
--- /dev/null
+++ b/vendor/bootstrap-table/extensions/cookie/bootstrap-table-cookie.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.10.1 - 2016-02-17
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2016 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var
b={sortOrder:"bs.table.sortOrder",sortName:"bs.table.sortName",pageNumber:"bs.table.pageNumber",pageList:"bs.table.pageList",columns:"bs.table.columns",searchText:"bs.table.searchText",filterControl:"bs.table.filterControl"},c=function(a){var
b=a.$header;return a.options.height&&(b=a.$tableHeader),b},d=function(a){var
b="select, input";return a.options.height&&(b="table select, table
input"),b},e=function(){return!!navigator.cookieEnabled},f=function(a,b){for(var
c=-1,d=0;d<b.length;d++)if(a.toLowerCase()===b[d].toLowerCase()){c=d;break}return
c},g=function(a,b,c){return
a.options.cookie&&e()&&""!==a.options.cookieIdTable&&-1!==f(b,a.options.cookiesEnabled)?(b=a.options.cookieIdTable+"."+b,!b||/^(?:expires|max\-age|path|domain|secure)$/i.test(b)?!1:(document.cookie=encodeURIComponent(b)+"="+encodeURIComponent(c)+k(a.options.cookieExpire)+(a.options.cookieDomain?";
domain="+a.options.cookieDomain:"")+(a.options.cookiePath?";
path="+a.options.cookiePath:"")+(a.cookieSecure?"; secure":""),!0)):void
0},h=function(a,b,c){return
c?-1===f(c,a.options.cookiesEnabled)?null:(c=b+"."+c,decodeURIComponent(document.cookie.replace(new
RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(c).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null):null},i=function(a){return
a?new
RegExp("(?:^|;\\s*)"+encodeURIComponent(a).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie):!1},j=function(a,b,c,d){return
b=a+"."+b,i(b)?(document.cookie=encodeURIComponent(b)+"=; expires=Thu, 01 Jan
1970 00:00:00 GMT"+(d?"; domain="+d:"")+(c?";
path="+c:""),!0):!1},k=function(a){var
b=a.replace(/[0-9]*/,"");switch(a=a.replace(/[A-Za-z]/,""),b.toLowerCase()){case"s":a=+a;break;case"mi":a=60*a;break;case"h":a=60*a*60;break;case"d":a=24*a*60*60;break;case"m":a=30*a*24*60*60;break;case"y":a=365*a*24*60*60;break;default:a=void
0}return void 0===a?"":";
max-age="+a};a.extend(a.fn.bootstrapTable.defaults,{cookie:!1,cookieExpire:"2h",cookiePath:null,cookieDomain:null,cookieSecure:null,cookieIdTable:"",cookiesEnabled:["bs.table.sortOrder","bs.table.sortName","bs.table.pageNumber","bs.table.pageList","bs.table.columns","bs.table.searchText","bs.table.filterControl"],filterControls:[],filterControlValuesLoaded:!1}),a.fn.bootstrapTable.methods.push("deleteCookie");var
l=a.fn.bootstrapTable.Constructor,m=l.prototype.init,n=l.prototype.initTable,o=l.prototype.onSort,p=l.prototype.onPageNumber,q=l.prototype.onPageListChange,r=l.prototype.onPageFirst,s=l.prototype.onPagePre,t=l.prototype.onPageNext,u=l.prototype.onPageLast,v=l.prototype.toggleColumn,w=l.prototype.selectPage,x=l.prototype.onSearch;l.prototype.init=function(){if(this.options.filterControls=[],this.options.filterControlValuesLoaded=!1,this.options.cookiesEnabled="string"==typeof
this.options.cookiesEnabled?this.options.cookiesEnabled.replace("[","").replace("]","").replace(/
/g,"").toLowerCase().split(","):this.options.cookiesEnabled,this.options.filterControl){var
e=this;this.$el.on("column-search.bs.table",function(a,c,d){for(var
f=!0,h=0;h<e.options.filterControls.length;h++)if(e.options.filterControls[h].field===c){e.options.filterControls[h].text=d,f=!1;break}f&&e.options.filterControls.push({field:c,text:d}),g(e,b.filterControl,JSON.stringify(e.options.filterControls))}).on("post-body.bs.table",function(){setTimeout(function(){if(!e.options.filterControlValuesLoaded){e.options.filterControlValuesLoaded=!0;var
f=JSON.parse(h(e,e.options.cookieIdTable,b.filterControl));if(f){var
g=null,i=[],j=c(e),k=d(e);j.find(k).each(function(){g=a(this).closest("[data-field]").data("field"),i=a.grep(f,function(a){return
a.field===g}),i.length>0&&(a(this).val(i[0].text),e.onColumnSearch({currentTarget:a(this)}))})}}},250)})}m.apply(this,Array.prototype.slice.apply(arguments))},l.prototype.initTable=function(){n.apply(this,Array.prototype.slice.apply(arguments)),this.initCookie()},l.prototype.initCookie=function(){if(this.options.cookie){if(""===this.options.cookieIdTable||""===this.options.cookieExpire||!e())throw
new Error("Configuration error. Please review the cookieIdTable, cookieExpire
properties, if those properties are ok, then this browser does not support the
cookies");var
c=h(this,this.options.cookieIdTable,b.sortOrder),d=h(this,this.options.cookieIdTable,b.sortName),f=h(this,this.options.cookieIdTable,b.pageNumber),g=h(this,this.options.cookieIdTable,b.pageList),i=JSON.parse(h(this,this.options.cookieIdTable,b.columns)),j=h(this,this.options.cookieIdTable,b.searchText);this.options.sortOrder=c?c:this.options.sortOrder,this.options.sortName=d?d:this.options.sortName,this.options.pageNumber=f?+f:this.options.pageNumber,this.options.pageSize=g?g===this.options.formatAllRows()?g:+g:this.options.pageSize,this.options.searchText=j?j:"",i&&a.each(this.columns,function(b,c){c.visible=-1!==a.inArray(c.field,i)})}},l.prototype.onSort=function(){o.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.sortOrder,this.options.sortOrder),g(this,b.sortName,this.options.sortName)},l.prototype.onPageNumber=function(){p.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPageListChange=function(){q.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageList,this.options.pageSize)},l.prototype.onPageFirst=function(){r.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPagePre=function(){s.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPageNext=function(){t.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPageLast=function(){u.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.toggleColumn=function(){v.apply(this,Array.prototype.slice.apply(arguments));var
c=[];a.each(this.columns,function(a,b){b.visible&&c.push(b.field)}),g(this,b.columns,JSON.stringify(c))},l.prototype.selectPage=function(a){w.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,a)},l.prototype.onSearch=function(){var
c=Array.prototype.slice.apply(arguments);x.apply(this,c),a(c[0].currentTarget).parent().hasClass("search")&&g(this,b.searchText,this.searchText)},l.prototype.deleteCookie=function(a){""!==a&&e()&&j(this.options.cookieIdTable,b[a],this.options.cookiePath,this.options.cookieDomain)}}(jQuery);
\ No newline at end of file
diff --git
a/vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.js
b/vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.js
new file mode 100644
index 0000000..87ddad1
--- /dev/null
+++ b/vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.js
@@ -0,0 +1,80 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.0.0
+ *
+ * @update zhixin wen <[email protected]>
+ */
+
+!function ($) {
+
+ 'use strict';
+
+ $.extend($.fn.bootstrapTable.defaults, {
+ keyEvents: false
+ });
+
+ var BootstrapTable = $.fn.bootstrapTable.Constructor,
+ _init = BootstrapTable.prototype.init;
+
+ BootstrapTable.prototype.init = function () {
+ _init.apply(this, Array.prototype.slice.apply(arguments));
+ this.initKeyEvents();
+ };
+
+ BootstrapTable.prototype.initKeyEvents = function () {
+ if (this.options.keyEvents) {
+ var that = this;
+
+ $(document).off('keydown').on('keydown', function (e) {
+ var $search = that.$toolbar.find('.search input'),
+ $refresh = that.$toolbar.find('button[name="refresh"]'),
+ $toggle = that.$toolbar.find('button[name="toggle"]'),
+ $paginationSwitch =
that.$toolbar.find('button[name="paginationSwitch"]');
+
+ if (document.activeElement === $search.get(0) ||
!$.contains(document.activeElement ,that.$toolbar.get(0))) {
+ return true;
+ }
+
+ switch (e.keyCode) {
+ case 83: //s
+ if (!that.options.search) {
+ return;
+ }
+ $search.focus();
+ return false;
+ case 82: //r
+ if (!that.options.showRefresh) {
+ return;
+ }
+ $refresh.click();
+ return false;
+ case 84: //t
+ if (!that.options.showToggle) {
+ return;
+ }
+ $toggle.click();
+ return false;
+ case 80: //p
+ if (!that.options.showPaginationSwitch) {
+ return;
+ }
+ $paginationSwitch.click();
+ return false;
+ case 37: // left
+ if (!that.options.pagination) {
+ return;
+ }
+ that.prevPage();
+ return false;
+ case 39: // right
+ if (!that.options.pagination) {
+ return;
+ }
+ that.nextPage();
+ return;
+ }
+ });
+ }
+ };
+}(jQuery);
diff --git
a/vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.min.js
b/vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.min.js
new file mode 100644
index 0000000..49401d0
--- /dev/null
+++
b/vendor/bootstrap-table/extensions/key-events/bootstrap-table-key-events.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.10.1 - 2016-02-17
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2016 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use
strict";a.extend(a.fn.bootstrapTable.defaults,{keyEvents:!1});var
b=a.fn.bootstrapTable.Constructor,c=b.prototype.init;b.prototype.init=function(){c.apply(this,Array.prototype.slice.apply(arguments)),this.initKeyEvents()},b.prototype.initKeyEvents=function(){if(this.options.keyEvents){var
b=this;a(document).off("keydown").on("keydown",function(c){var
d=b.$toolbar.find(".search
input"),e=b.$toolbar.find('button[name="refresh"]'),f=b.$toolbar.find('button[name="toggle"]'),g=b.$toolbar.find('button[name="paginationSwitch"]');if(document.activeElement===d.get(0)||!a.contains(document.activeElement,b.$toolbar.get(0)))return!0;switch(c.keyCode){case
83:if(!b.options.search)return;return d.focus(),!1;case
82:if(!b.options.showRefresh)return;return e.click(),!1;case
84:if(!b.options.showToggle)return;return f.click(),!1;case
80:if(!b.options.showPaginationSwitch)return;return g.click(),!1;case
37:if(!b.options.pagination)return;return b.prevPage(),!1;case
39:if(!b.options.pagination)return;return void b.nextPage()}})}}}(jQuery);
\ No newline at end of file
diff --git a/wikibase/queryService/ui/resultBrowser/TableResultBrowser.js
b/wikibase/queryService/ui/resultBrowser/TableResultBrowser.js
index bb072d7..4c4aba6 100644
--- a/wikibase/queryService/ui/resultBrowser/TableResultBrowser.js
+++ b/wikibase/queryService/ui/resultBrowser/TableResultBrowser.js
@@ -21,6 +21,10 @@
function SELF() {
}
+ var TABLE_PAGE_SIZE = 200;
+ var TABLE_PAGE_SIZE_LIST = [10, 50, 100, 200, 500, 1000];
+
+
SELF.prototype = new
wikibase.queryService.ui.resultBrowser.AbstractResultBrowser();
/**
@@ -65,7 +69,8 @@
* @param {jQuery} $element to draw at
**/
SELF.prototype.drawBootstrapTable = function ( $element ) {
- var self = this;
+ var self = this,
+ showPagination = (this.rows.length > TABLE_PAGE_SIZE);
jQuery.fn.bootstrapTable.columnDefaults.formatter = function(
data ){
if( !data ){
@@ -90,12 +95,21 @@
title: column,
field: column,
events: events,
- sortable: true
+ sortable: true,
};
} ),
data: this.rows,
mobileResponsive: true,
- pagination: true
+ search: showPagination,
+ pagination: showPagination,
+ showPaginationSwitch: showPagination,
+ pageSize: TABLE_PAGE_SIZE,
+ pageList: TABLE_PAGE_SIZE_LIST,
+ keyEvents: true,
+ cookie: true,
+ cookieIdTable: '1',
+ cookieExpire: '1y',
+ cookiesEnabled: ['bs.table.pageList']
} );
};
--
To view, visit https://gerrit.wikimedia.org/r/277221
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7417dd6ceac4092601f9dd4e6ed65cf079f5dfde
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