cartodb-4.42/lib/assets/javascripts/cartodb/old_common/globalerror.js
2024-04-06 05:25:13 +00:00

83 lines
1.9 KiB
JavaScript

/**
* Small moving label used to show errors in operations
*/
cdb.admin.GlobalError = cdb.core.View.extend({
DEFAULT_TAG: '',
initialize: function() {
_.bindAll(this, 'hide');
this._lastType = -1;
this._lastTag = this.DEFAULT_TAG;
},
templates: {
'info': 'old_common/views/notifications/info',
'warn': 'old_common/views/notifications/info',
'error': 'old_common/views/notifications/info',
'load': 'old_common/views/notifications/loading'
},
priority: {
'error': 3,
'warn': 2,
'info': 1,
'load': 0
},
/**
* Returns the fetched template of the passed type
* @param {String} type
* @return {Function}
*/
getTypeTemplate: function(type) {
var url = this.templates[type]? this.templates[type] : this.templates["info"];
var tmpl = this.getTemplate(url);
return tmpl;
},
// type can be: 'info', 'error'
showError: function(text, type, timeout, tag) {
tag = tag || this.DEFAULT_TAG;
timeout = timeout === undefined ? 2000: timeout;
type || (type = 'info')
var priority = this.priority[type] || 0;
var currentPriority = this.priority[this._lastType] || 0;
if(priority < currentPriority) {
return;
}
this._lastType = type;
this._lastTag = tag;
this.$el.html(this.getTypeTemplate(type)({text: text, type: type}));
if(this._timer) {
clearTimeout(this._timer);
}
if(timeout > 0) {
this._timer = setTimeout(this.hide, timeout);
}
this.show();
},
show: function() {
this.$el.find("p").stop().animate({marginTop: 0}, 500);
},
hide: function(tag) {
tag = tag || this.DEFAULT_TAG;
if(this._lastTag !== tag) return;
this.$el.find("p").stop().animate({marginTop: 40}, 500);
this._timer = 0;
this._lastType = -1;
this._lastTag = this.DEFAULT_TAG;
},
listenGlobal: function() {
cdb.god.bind('error', this.showError, this);
}
});