jenkins-bot has submitted this change and it was merged.
Change subject: Delay entitysearch request
......................................................................
Delay entitysearch request
Instead of triggering an API request on every single keystroke, entityselector
now respects the
"delay" option inherited from the base suggester.
Change-Id: Id332ed9a8f78363bcb68fd890ae0d0913a2c7d87
---
M lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
M lib/resources/jquery.wikibase/resources.php
2 files changed, 28 insertions(+), 18 deletions(-)
Approvals:
Adrian Lang: Looks good to me, approved
Jeroen De Dauw: Looks good to me, but someone else must approve
jenkins-bot: Verified
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
b/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
index 2df89e0..1b17f4c 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
@@ -149,12 +149,34 @@
this.options.menu.element.addClass(
'ui-entityselector-list' );
this.element
- .on( 'eachchange.' + this.widgetName, function( event,
previousValue ) {
- self._cache = {};
+ .off( 'blur' )
+ .on( 'eachchange.' + this.widgetName, function( event )
{
+ self._search( event );
+ } );
+ },
- self._select( null );
+ /**
+ * @see jQuery.ui.suggester.destroy
+ */
+ destroy: function() {
+ this.element.removeClass( 'ui-entityselector-input' );
- clearTimeout( self.__searching );
+ this._cache = {};
+
+ $.ui.suggester.prototype.destroy.call( this );
+ },
+
+ /**
+ * @param {jQuery.Event} event
+ */
+ _search: function( event ) {
+ var self = this;
+
+ this._cache = {};
+ this._select( null );
+
+ clearTimeout( this.__searching );
+ this.__searching = setTimeout( function() {
self.search( event )
.done( function( suggestions, requestTerm ) {
if( suggestions.length === 0 ||
self.element.val() !== requestTerm ) {
@@ -169,20 +191,7 @@
self._select( suggestions[0] );
}
} );
- } );
-
- this.element.off( 'blur' );
- },
-
- /**
- * @see jQuery.ui.suggester.destroy
- */
- destroy: function() {
- this.element.removeClass( 'ui-entityselector-input' );
-
- this._cache = {};
-
- $.ui.suggester.prototype.destroy.call( this );
+ }, this.options.delay );
},
/**
diff --git a/lib/resources/jquery.wikibase/resources.php
b/lib/resources/jquery.wikibase/resources.php
index 3d9c344..e2abffc 100644
--- a/lib/resources/jquery.wikibase/resources.php
+++ b/lib/resources/jquery.wikibase/resources.php
@@ -154,6 +154,7 @@
),
'dependencies' => array(
'jquery.event.special.eachchange',
+ 'jquery.throttle-debounce',
'jquery.ui.suggester',
'jquery.ui.ooMenu',
'jquery.ui.widget',
--
To view, visit https://gerrit.wikimedia.org/r/173803
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Id332ed9a8f78363bcb68fd890ae0d0913a2c7d87
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
Gerrit-Reviewer: Adrian Lang <[email protected]>
Gerrit-Reviewer: Jeroen De Dauw <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits