115 lines
1.7 KiB
JavaScript
115 lines
1.7 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
/**
|
||
|
* Alerts
|
||
|
*/
|
||
|
class Alerts {
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
*
|
||
|
* @class
|
||
|
*/
|
||
|
constructor() {
|
||
|
|
||
|
let self = this;
|
||
|
|
||
|
self.mdl = new Vue({
|
||
|
el: '#alerts',
|
||
|
data: {
|
||
|
children: []
|
||
|
},
|
||
|
methods: {
|
||
|
acknowledge: (uid) => {
|
||
|
self.close(uid);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
self.uidNext = 1;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Show a new Alert
|
||
|
*
|
||
|
* @param {Object} options Alert properties
|
||
|
* @return {null} Void
|
||
|
*/
|
||
|
push(options) {
|
||
|
|
||
|
let self = this;
|
||
|
|
||
|
let nAlert = _.defaults(options, {
|
||
|
_uid: self.uidNext,
|
||
|
class: 'is-info',
|
||
|
message: '---',
|
||
|
sticky: false,
|
||
|
title: '---'
|
||
|
});
|
||
|
|
||
|
self.mdl.children.push(nAlert);
|
||
|
|
||
|
if(!nAlert.sticky) {
|
||
|
_.delay(() => {
|
||
|
self.close(nAlert._uid);
|
||
|
}, 5000);
|
||
|
}
|
||
|
|
||
|
self.uidNext++;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Shorthand method for pushing errors
|
||
|
*
|
||
|
* @param {String} title The title
|
||
|
* @param {String} message The message
|
||
|
*/
|
||
|
pushError(title, message) {
|
||
|
this.push({
|
||
|
class: 'is-danger',
|
||
|
message,
|
||
|
sticky: false,
|
||
|
title
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Shorthand method for pushing success messages
|
||
|
*
|
||
|
* @param {String} title The title
|
||
|
* @param {String} message The message
|
||
|
*/
|
||
|
pushSuccess(title, message) {
|
||
|
this.push({
|
||
|
class: 'is-success',
|
||
|
message,
|
||
|
sticky: false,
|
||
|
title
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Close an alert
|
||
|
*
|
||
|
* @param {Integer} uid The unique ID of the alert
|
||
|
*/
|
||
|
close(uid) {
|
||
|
|
||
|
let self = this;
|
||
|
|
||
|
let nAlertIdx = _.findIndex(self.mdl.children, ['_uid', uid]);
|
||
|
let nAlert = _.nth(self.mdl.children, nAlertIdx);
|
||
|
|
||
|
if(nAlertIdx >= 0 && nAlert) {
|
||
|
nAlert.class += ' exit';
|
||
|
self.mdl.children.$set(nAlertIdx, nAlert);
|
||
|
_.delay(() => {
|
||
|
self.mdl.children.$remove(nAlert);
|
||
|
}, 500);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|