Add DataApiManager field stale flag
This will allow it to know when a request needs to be re-made at a later time. * src/dapi/DataApiManager (fieldStale, isFieldStale): Added (fieldNotReady): Check stale status of fieldmaster
parent
3e84f18c56
commit
6d51dc55eb
|
@ -85,6 +85,12 @@ module.exports = Class( 'DataApiManager' )
|
||||||
*/
|
*/
|
||||||
'private _fieldApiTimer': 0,
|
'private _fieldApiTimer': 0,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fields that require API requests
|
||||||
|
* @type {Object}}
|
||||||
|
*/
|
||||||
|
'private _fieldStale': {},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API descriptions
|
* API descriptions
|
||||||
* @type {Object}
|
* @type {Object}
|
||||||
|
@ -200,6 +206,9 @@ module.exports = Class( 'DataApiManager' )
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// field is about to be re-loaded
|
||||||
|
this.fieldStale( name, index, false );
|
||||||
|
|
||||||
this._setFieldApiTimer();
|
this._setFieldApiTimer();
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
@ -221,6 +230,43 @@ module.exports = Class( 'DataApiManager' )
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks field for re-loading
|
||||||
|
*
|
||||||
|
* Stale fields will not be considered to have data, but the data
|
||||||
|
* will remain in memory until the next request.
|
||||||
|
*
|
||||||
|
* @param {string} field field name
|
||||||
|
* @param {number} index field index
|
||||||
|
* @param {?boolean} stale whether field is stale
|
||||||
|
*
|
||||||
|
* @return {DataApiManager} self
|
||||||
|
*/
|
||||||
|
'public fieldStale': function( field, index, stale )
|
||||||
|
{
|
||||||
|
stale = ( stale === undefined ) ? true : !!stale;
|
||||||
|
|
||||||
|
this._fieldStale[ field ] = this.fieldStale[ field ] || [];
|
||||||
|
this._fieldStale[ field ][ index ] = stale;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether field is marked stale
|
||||||
|
*
|
||||||
|
* @param {string} field field name
|
||||||
|
* @param {number} index field index
|
||||||
|
*
|
||||||
|
* @return {boolean} whether field is stale
|
||||||
|
*/
|
||||||
|
'protected isFieldStale': function( field, index )
|
||||||
|
{
|
||||||
|
return ( this._fieldStale[ field ] || [] )[ index ] === true;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
'public fieldNotReady': function( id, i, bucket )
|
'public fieldNotReady': function( id, i, bucket )
|
||||||
{
|
{
|
||||||
if ( !( this.hasFieldData( id, i ) ) )
|
if ( !( this.hasFieldData( id, i ) ) )
|
||||||
|
@ -437,6 +483,11 @@ module.exports = Class( 'DataApiManager' )
|
||||||
// default to "combined" index of -1 if no index is provided
|
// default to "combined" index of -1 if no index is provided
|
||||||
index = ( index === undefined ) ? -1 : +index;
|
index = ( index === undefined ) ? -1 : +index;
|
||||||
|
|
||||||
|
if ( this.isFieldStale( name, index ) )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return ( ( this._fieldData[ name ] || {} )[ index ] )
|
return ( ( this._fieldData[ name ] || {} )[ index ] )
|
||||||
? true
|
? true
|
||||||
: false;
|
: false;
|
||||||
|
|
Loading…
Reference in New Issue