Skip to content

Commit

Permalink
More refactoring, removal of 'self' references in history-contents
Browse files Browse the repository at this point in the history
  • Loading branch information
dannon committed Feb 2, 2018
1 parent 6211f8b commit eb03d87
Showing 1 changed file with 42 additions and 43 deletions.
85 changes: 42 additions & 43 deletions client/galaxy/scripts/mvc/history/history-contents.js
Original file line number Diff line number Diff line change
Expand Up @@ -316,15 +316,14 @@ var HistoryContents = _super.extend(BASE_MVC.LoggableMixin).extend({
/** fetch all the visible==false contents of this collection */
fetchHidden: function(options) {
options = options || {};
var self = this;
options.filters = _.extend(options.filters, {
visible: false
});
options.remove = false;

self.trigger("fetching-hidden", self);
return self.fetch(options).always(() => {
self.trigger("fetching-hidden-done", self);
this.trigger("fetching-hidden", this);
return this.fetch(options).always(() => {
this.trigger("fetching-hidden-done", this);
});
},

Expand All @@ -340,17 +339,16 @@ var HistoryContents = _super.extend(BASE_MVC.LoggableMixin).extend({
// TODO: to batch
/** helper that fetches using filterParams then calls save on each fetched using updateWhat as the save params */
_filterAndUpdate: function(filterParams, updateWhat) {
var self = this;
var idAttribute = self.model.prototype.idAttribute;
var idAttribute = this.model.prototype.idAttribute;
var updateArgs = [updateWhat];

return self.fetch({ filters: filterParams, remove: false }).then(fetched => {
return this.fetch({ filters: filterParams, remove: false }).then(fetched => {
// convert filtered json array to model array
fetched = fetched.reduce((modelArray, currJson, i) => {
var model = self.get(currJson[idAttribute]);
var model = this.get(currJson[idAttribute]);
return model ? modelArray.concat(model) : modelArray;
}, []);
return self.ajaxQueue("save", updateArgs, fetched);
return this.ajaxQueue("save", updateArgs, fetched);
});
},

Expand All @@ -368,43 +366,44 @@ var HistoryContents = _super.extend(BASE_MVC.LoggableMixin).extend({
).deferred;
},

_recursivelyFetch: function(options, detailKeys, deferred, limit, offset) {
offset = offset || 0;
var _options = _.extend(_.clone(options), {
view: "summary",
keys: detailKeys,
limit: limit,
offset: offset,
reset: offset === 0,
remove: false
});

_.defer(() => {
this.fetch
.call(this, _options)
.fail(deferred.reject)
.done(response => {
deferred.notify(response, limit, offset);
if (response.length !== limit) {
this.allFetched = true;
deferred.resolve(response, limit, offset);
} else {
this._recursivelyFetch(options, detailKeys, deferred, limit, offset + limit);
}
});
});
},

/** fetch contents' details in batches of limitPerCall - note: only get searchable details here */
progressivelyFetchDetails: function(options) {
options = options || {};
var deferred = jQuery.Deferred();
var self = this;
var limit = options.limitPerCall || self.limitPerProgressiveFetch;
// TODO: only fetch tags and annotations if specifically requested
var searchAttributes = HDA_MODEL.HistoryDatasetAssociation.prototype.searchAttributes;
var detailKeys = searchAttributes.join(",");

function _recursivelyFetch(offset) {
offset = offset || 0;
var _options = _.extend(_.clone(options), {
view: "summary",
keys: detailKeys,
limit: limit,
offset: offset,
reset: offset === 0,
remove: false
});

_.defer(() => {
self.fetch
.call(self, _options)
.fail(deferred.reject)
.done(response => {
deferred.notify(response, limit, offset);
if (response.length !== limit) {
self.allFetched = true;
deferred.resolve(response, limit, offset);
} else {
_recursivelyFetch(offset + limit);
}
});
});
}
_recursivelyFetch();
options = options || {};
let deferred = jQuery.Deferred();
this._recursivelyFetch(
options,
HDA_MODEL.HistoryDatasetAssociation.prototype.searchAttributes.join(","),
deferred,
options.limitPerCall || this.limitPerProgressiveFetch
);
return deferred;
},

Expand Down

0 comments on commit eb03d87

Please sign in to comment.