define([
|
'dojo/_base/declare',
|
'dojo/dom-construct',
|
'../_StoreMixin'
|
], function (declare, domConstruct, _StoreMixin) {
|
return declare(_StoreMixin, {
|
// summary:
|
// dgrid mixin which implements the refresh method to
|
// always perform a single query with no start or count
|
// specified, to retrieve all relevant results at once.
|
// Appropriate for grids using memory stores with small
|
// result set sizes.
|
|
refresh: function () {
|
var self = this;
|
|
// First defer to List#refresh to clear the grid's
|
// previous content
|
this.inherited(arguments);
|
|
if (!this._renderedCollection) {
|
return;
|
}
|
|
return this._trackError(function () {
|
var loadingNode = self.loadingNode = domConstruct.create('div', {
|
className: 'dgrid-loading',
|
innerHTML: self.loadingMessage
|
}, self.contentNode);
|
|
var queryResults = self._renderedCollection.fetch();
|
|
queryResults.totalLength.then(function (total) {
|
// Record total so it can be retrieved later via get('total')
|
self._total = total;
|
|
if (!total) {
|
self._insertNoDataNode();
|
}
|
});
|
|
queryResults.always(function () {
|
domConstruct.destroy(loadingNode);
|
self.loadingNode = null;
|
});
|
|
return self.renderQueryResults(queryResults).then(function (rows) {
|
self._emitRefreshComplete();
|
return rows;
|
});
|
});
|
},
|
|
renderArray: function () {
|
var rows = this.inherited(arguments);
|
|
// Clear _lastCollection which is ordinarily only used for store-less grids
|
this._lastCollection = null;
|
|
return rows;
|
}
|
});
|
});
|