jenkins-bot has submitted this change and it was merged.
Change subject: Refactor entity search caching
......................................................................
Refactor entity search caching
The cache is not meant to cache results for different search terms,
but to cache previous pages when you click the "more" button.
Change-Id: I68d30da040894c553012286468d74c4a27ad7138
---
M view/resources/jquery/wikibase/jquery.wikibase.entityselector.js
1 file changed, 22 insertions(+), 25 deletions(-)
Approvals:
Hoo man: Looks good to me, approved
jenkins-bot: Verified
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.entityselector.js
b/view/resources/jquery/wikibase/jquery.wikibase.entityselector.js
index 509efa5..f7ba671 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.entityselector.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.entityselector.js
@@ -172,7 +172,6 @@
_search: function( event ) {
var self = this;
- this._cache = {};
this._select( null );
clearTimeout( this._searching );
@@ -214,17 +213,25 @@
* @param {string} term
* @return {Object}
*/
- _getData: function( term ) {
- return {
+ _getSearchApiParameters: function( term ) {
+ var data = {
action: 'wbsearchentities',
search: term,
format: 'json',
language: this.options.language,
uselang: this.options.language,
- type: this.options.type,
- 'continue': this._cache[term] &&
this._cache[term].nextSuggestionOffset
- ? this._cache[term].nextSuggestionOffset : 0
+ type: this.options.type
};
+
+ if ( this._cache.term === term &&
this._cache.nextSuggestionOffset ) {
+ data.continue = this._cache.nextSuggestionOffset;
+ }
+
+ if ( this.options.limit ) {
+ data.limit = this.options.limit;
+ }
+
+ return data;
},
/**
@@ -239,20 +246,13 @@
var self = this;
return function( term ) {
- var deferred = $.Deferred(),
- data = self._getData( term );
-
- if ( self.options.limit ) {
- $.extend( data, {
- limit: self.options.limit
- } );
- }
+ var deferred = $.Deferred();
$.ajax( {
url: self.options.url,
timeout: self.options.timeout,
dataType: 'json',
- data: data
+ data: self._getSearchApiParameters( term )
} )
.done( function( response ) {
deferred.resolve(
@@ -358,10 +358,7 @@
customItems.unshift( new $.ui.ooMenu.CustomItem(
this.options.messages.more,
function() {
- var cached = self._cache[self._term];
- return cached
- && cached.nextSuggestionOffset
- && cached.nextSuggestionOffset >
cached.suggestions.length - 1;
+ return self._cache.term === self._term &&
self._cache.nextSuggestionOffset;
},
function() {
self.search( $.Event( 'programmatic' ) );
@@ -393,18 +390,18 @@
.then( function( suggestions, searchTerm, nextSuggestionOffset
) {
var deferred = $.Deferred();
- if ( self._cache[searchTerm] &&
self._cache[searchTerm].nextSuggestionOffset ) {
- self._cache[searchTerm].suggestions =
self._cache[searchTerm].suggestions.concat( suggestions );
- self._cache[searchTerm].nextSuggestionOffset =
nextSuggestionOffset;
+ if ( self._cache.term === searchTerm &&
self._cache.nextSuggestionOffset ) {
+ self._cache.suggestions =
self._cache.suggestions.concat( suggestions );
+ self._cache.nextSuggestionOffset =
nextSuggestionOffset;
} else {
- self._cache = {};
- self._cache[searchTerm] = {
+ self._cache = {
+ term: searchTerm,
suggestions: suggestions,
nextSuggestionOffset:
nextSuggestionOffset
};
}
- deferred.resolve( self._cache[searchTerm].suggestions,
searchTerm );
+ deferred.resolve( self._cache.suggestions, searchTerm );
return deferred.promise();
} );
},
--
To view, visit https://gerrit.wikimedia.org/r/297365
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I68d30da040894c553012286468d74c4a27ad7138
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: Adrian Heine <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: JanZerebecki <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits