Henning Snater has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/173803

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(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/03/173803/1

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: newchange
Gerrit-Change-Id: Id332ed9a8f78363bcb68fd890ae0d0913a2c7d87
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to