Initial commit
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
const Backbone = require('backbone');
|
||||
const ImportsCollection = require('dashboard/data/imports-collection');
|
||||
const checkAndBuildOpts = require('builder/helpers/required-opts');
|
||||
const pollingsTimer = 3000;
|
||||
|
||||
const REQUIRED_OPTS = [
|
||||
'userModel',
|
||||
'configModel'
|
||||
];
|
||||
|
||||
/**
|
||||
* Background polling default model
|
||||
*
|
||||
*/
|
||||
|
||||
module.exports = Backbone.Model.extend({
|
||||
defaults: {
|
||||
showGeocodingDatasetURLButton: false,
|
||||
showSuccessDetailsButton: true,
|
||||
geocodingsPolling: false, // enable geocodings polling
|
||||
importsPolling: false // enable imports polling
|
||||
},
|
||||
|
||||
initialize: function (attributes, options) {
|
||||
checkAndBuildOpts(options, REQUIRED_OPTS, this);
|
||||
|
||||
this.importsCollection = options.importsCollection || new ImportsCollection(null, {
|
||||
userModel: this._userModel,
|
||||
configModel: this._configModel
|
||||
});
|
||||
this._initBinds();
|
||||
this.startPollings();
|
||||
},
|
||||
|
||||
_initBinds: function () {
|
||||
this.importsCollection.bind('change:state', function (mdl) {
|
||||
this.trigger('change', mdl, this);
|
||||
this._onImportsStateChange(mdl);
|
||||
}, this);
|
||||
this.importsCollection.bind('remove', function (mdl) {
|
||||
this.trigger('importRemoved', mdl, this);
|
||||
}, this);
|
||||
this.importsCollection.bind('add', function (mdl) {
|
||||
this.trigger('importAdded', mdl, this);
|
||||
}, this);
|
||||
},
|
||||
|
||||
// Helper functions
|
||||
|
||||
getTotalFailedItems: function () {
|
||||
return this.importsCollection.failedItems().length;
|
||||
},
|
||||
|
||||
removeImportItem: function (mdl) {
|
||||
if (!mdl) {
|
||||
return false;
|
||||
}
|
||||
this.importsCollection.remove(mdl);
|
||||
},
|
||||
|
||||
addImportItem: function (mdl) {
|
||||
if (!mdl) {
|
||||
return false;
|
||||
}
|
||||
this.importsCollection.add(mdl);
|
||||
},
|
||||
|
||||
canAddImport: function () {
|
||||
return this.importsCollection.canImport();
|
||||
},
|
||||
|
||||
getTotalImports: function () {
|
||||
return this.importsCollection.size();
|
||||
},
|
||||
|
||||
getTotalPollings: function () {
|
||||
return this.importsCollection.size();
|
||||
},
|
||||
|
||||
stopPollings: function () {
|
||||
if (this.get('importsPolling')) {
|
||||
this.importsCollection.destroyCheck();
|
||||
}
|
||||
},
|
||||
|
||||
startPollings: function () {
|
||||
// Don't start pollings inmediately,
|
||||
// wait some seconds
|
||||
setTimeout(() => {
|
||||
if (this.get('importsPolling')) {
|
||||
this.importsCollection.pollCheck();
|
||||
}
|
||||
}, pollingsTimer);
|
||||
},
|
||||
|
||||
// onChange functions
|
||||
_onImportsStateChange: function () {},
|
||||
|
||||
clean: function () {
|
||||
this.importsCollection.unbind(null, null, this);
|
||||
Backbone.Model.prototype.clean.apply(this);
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user