Esanders has uploaded a new change for review.
https://gerrit.wikimedia.org/r/260688
Change subject: APIResultsProvider: Refactoring resetting of queue.
......................................................................
APIResultsProvider: Refactoring resetting of queue.
Change-Id: I463753574c6677f056566534f82ba6fb1d7ecc7d
---
M src/dm/ve.dm.APIResultsProvider.js
M src/dm/ve.dm.APIResultsQueue.js
M tests/dm/ve.dm.APIResultsQueue.test.js
3 files changed, 33 insertions(+), 8 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor
refs/changes/88/260688/1
diff --git a/src/dm/ve.dm.APIResultsProvider.js
b/src/dm/ve.dm.APIResultsProvider.js
index cff9549..b3aba86 100644
--- a/src/dm/ve.dm.APIResultsProvider.js
+++ b/src/dm/ve.dm.APIResultsProvider.js
@@ -120,14 +120,21 @@
// Asymmetrically compare (params is subset of this.userParams)
if ( !ve.compare( params, this.userParams, true ) ) {
this.userParams = $.extend( {}, this.userParams, params );
- // Reset offset
- this.setOffset( 0 );
- // Reset depleted status
- this.toggleDepleted( false );
+ this.reset();
}
};
/**
+ * Reset the provider
+ */
+ve.dm.APIResultsProvider.prototype.reset = function () {
+ // Reset offset
+ this.setOffset( 0 );
+ // Reset depleted status
+ this.toggleDepleted( false );
+};
+
+/**
* Get fetch limit or 'page' size. This is the number
* of results per request.
*
diff --git a/src/dm/ve.dm.APIResultsQueue.js b/src/dm/ve.dm.APIResultsQueue.js
index ef0ac0d..2a94431 100644
--- a/src/dm/ve.dm.APIResultsQueue.js
+++ b/src/dm/ve.dm.APIResultsQueue.js
@@ -124,6 +124,7 @@
ve.dm.APIResultsQueue.prototype.setParams = function ( params ) {
var i, len;
if ( !ve.compare( params, this.params, true ) ) {
+ this.reset();
this.params = ve.extendObject( this.params, params );
// Reset queue
this.queue = [];
@@ -139,6 +140,23 @@
};
/**
+ * Reset the queue and all its providers
+ */
+ve.dm.APIResultsQueue.prototype.reset = function () {
+ var i, len;
+ // Reset queue
+ this.queue = [];
+ // Reset promises
+ for ( i = 0, len = this.providerPromises.length; i < len; i++ ) {
+ this.providerPromises[ i ].abort();
+ }
+ // Change queries
+ for ( i = 0, len = this.providers.length; i < len; i++ ) {
+ this.providers[ i ].reset();
+ }
+};
+
+/**
* Get the data parameters sent to the API
*
* @return {Object} params API search parameters
diff --git a/tests/dm/ve.dm.APIResultsQueue.test.js
b/tests/dm/ve.dm.APIResultsQueue.test.js
index c206ca6..33aea5f 100644
--- a/tests/dm/ve.dm.APIResultsQueue.test.js
+++ b/tests/dm/ve.dm.APIResultsQueue.test.js
@@ -51,11 +51,11 @@
};
EmptyResourceProvider.prototype.getResults = function () {
- var me = this,
+ var provider = this,
deferred = $.Deferred(),
timer = setTimeout(
function () {
- me.toggleDepleted( true );
+ provider.toggleDepleted( true );
// Always resolve with empty value
deferred.resolve( [] );
},
@@ -66,12 +66,12 @@
SingleResultResourceProvider.prototype.getResults = function ( howMany ) {
var timer,
- me = this,
+ provider = this,
deferred = $.Deferred();
timer = setTimeout(
function () {
- me.toggleDepleted( howMany > 1 );
+ provider.toggleDepleted( howMany > 1 );
// Always resolve with one value
deferred.resolve( [ 'one result (' + ( itemCounter++ +
1 ) + ')' ] );
},
--
To view, visit https://gerrit.wikimedia.org/r/260688
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I463753574c6677f056566534f82ba6fb1d7ecc7d
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits