65 lines
No EOL
1.5 KiB
JavaScript
65 lines
No EOL
1.5 KiB
JavaScript
(function (window) {
|
|
"use strict";
|
|
|
|
window.ls.container.set('alerts', function (window) {
|
|
let service = {};
|
|
|
|
let counter = 0;
|
|
|
|
let event = new CustomEvent('alerted', {
|
|
bubbles: false,
|
|
cancelable: true
|
|
});
|
|
|
|
service.list = [];
|
|
|
|
service.remove = function (id) {
|
|
let message = this.get(id);
|
|
|
|
if (message && message.remove && typeof message.remove === 'function') {
|
|
message.remove();
|
|
}
|
|
|
|
this.list = this.list.filter(function( obj ) {
|
|
return obj.id !== parseInt(id);
|
|
});
|
|
|
|
window.document.dispatchEvent(event);
|
|
};
|
|
|
|
service.get = function(id){
|
|
id = parseInt(id);
|
|
|
|
let result = this.list.filter(function(obj) {
|
|
return obj.id === id;
|
|
});
|
|
|
|
if(result[0]) {
|
|
return result[0];
|
|
}
|
|
|
|
return null;
|
|
};
|
|
|
|
service.send = function (message, time) {
|
|
let scope = this;
|
|
|
|
message.id = counter++;
|
|
|
|
scope.list.unshift(message);
|
|
|
|
window.document.dispatchEvent(event);
|
|
|
|
if(time > 0) { // When 0 alert is unlimited in time
|
|
window.setTimeout(function(message) { return function () {
|
|
scope.remove(message.id)
|
|
}}(message), time);
|
|
}
|
|
|
|
return message.id;
|
|
};
|
|
|
|
return service;
|
|
}, true);
|
|
|
|
})(window); |