mirror of
https://github.com/fluent/fluentd-ui.git
synced 2026-05-05 02:46:11 +02:00
Move notification.js under app/javascript/packs
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
This commit is contained in:
parent
018c23e239
commit
82340551c0
@ -1,65 +0,0 @@
|
||||
(function(){
|
||||
"use strict";
|
||||
var POLLING_INTERVAL = 3 * 1000;
|
||||
var POLLING_URL = "/polling/alerts";
|
||||
|
||||
$(function(){
|
||||
if($('#vue-notification').length === 0) return;
|
||||
|
||||
var alert = new Vue({
|
||||
el: "#vue-notification",
|
||||
data: {
|
||||
"alerts": []
|
||||
},
|
||||
|
||||
created: function(){
|
||||
var timer;
|
||||
var self = this;
|
||||
var currentInterval = POLLING_INTERVAL;
|
||||
var fetch = function(){
|
||||
self.fetchAlertsData().then(function(alerts){
|
||||
if(self.alerts.toString() == alerts.toString()) {
|
||||
currentInterval *= 1.1;
|
||||
} else {
|
||||
currentInterval = POLLING_INTERVAL;
|
||||
}
|
||||
self.alerts = alerts;
|
||||
timer = setTimeout(fetch, currentInterval);
|
||||
})["catch"](function(xhr){
|
||||
if(xhr.status === 401) {
|
||||
// signed out
|
||||
}
|
||||
if(xhr.status === 0) {
|
||||
// server unreachable (maybe down)
|
||||
}
|
||||
});
|
||||
};
|
||||
window.addEventListener('focus', function(ev){
|
||||
currentInterval = POLLING_INTERVAL;
|
||||
timer = setTimeout(fetch, currentInterval);
|
||||
}, false);
|
||||
window.addEventListener('blur', function(ev){
|
||||
clearTimeout(timer);
|
||||
}, false);
|
||||
fetch();
|
||||
},
|
||||
|
||||
computed: {
|
||||
alertsCount: {
|
||||
get: function(){ return this.alerts.length; }
|
||||
},
|
||||
hasAlerts: {
|
||||
get: function(){ return this.alertsCount > 0; }
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
fetchAlertsData: function() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.getJSON(POLLING_URL, resolve).fail(reject);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
})();
|
||||
62
app/javascript/packs/notification.js
Normal file
62
app/javascript/packs/notification.js
Normal file
@ -0,0 +1,62 @@
|
||||
import Vue from 'vue/dist/vue.esm'
|
||||
|
||||
const POLLING_INTERVAL = 3 * 1000
|
||||
const POLLING_URL = "/polling/alerts"
|
||||
|
||||
$(document).ready(()=> {
|
||||
let alert = new Vue({
|
||||
el: "#vue-notification",
|
||||
data: {
|
||||
"alerts": []
|
||||
},
|
||||
|
||||
created: function(){
|
||||
let timer;
|
||||
let self = this;
|
||||
let currentInterval = POLLING_INTERVAL;
|
||||
let fetch = function(){
|
||||
self.fetchAlertsData().then(function(alerts){
|
||||
if(self.alerts.toString() == alerts.toString()) {
|
||||
currentInterval *= 1.1;
|
||||
} else {
|
||||
currentInterval = POLLING_INTERVAL;
|
||||
}
|
||||
self.alerts = alerts;
|
||||
timer = setTimeout(fetch, currentInterval);
|
||||
})["catch"](function(xhr){
|
||||
if(xhr.status === 401) {
|
||||
// signed out
|
||||
}
|
||||
if(xhr.status === 0) {
|
||||
// server unreachable (maybe down)
|
||||
}
|
||||
});
|
||||
};
|
||||
window.addEventListener('focus', function(ev){
|
||||
currentInterval = POLLING_INTERVAL;
|
||||
timer = setTimeout(fetch, currentInterval);
|
||||
}, false);
|
||||
window.addEventListener('blur', function(ev){
|
||||
clearTimeout(timer);
|
||||
}, false);
|
||||
fetch();
|
||||
},
|
||||
|
||||
computed: {
|
||||
alertsCount: {
|
||||
get: function(){ return this.alerts.length; }
|
||||
},
|
||||
hasAlerts: {
|
||||
get: function(){ return this.alertsCount > 0; }
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
fetchAlertsData: function() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.getJSON(POLLING_URL, resolve).fail(reject);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -14,6 +14,7 @@
|
||||
<%-# stylesheet_pack_tag 'application', media: 'all'%>
|
||||
<%= javascript_include_tag 'application' %>
|
||||
<%= javascript_pack_tag 'application' %>
|
||||
<%= javascript_pack_tag 'notification' %>
|
||||
<%= csrf_meta_tags %>
|
||||
</head>
|
||||
<body class="fixed-nav bg-light">
|
||||
|
||||
@ -13,11 +13,11 @@
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li v-repeat="alerts">
|
||||
<li v-for="alert in alerts">
|
||||
<a>
|
||||
<div>
|
||||
<%= icon("fa-cog fa-fw fa-lg fa-spin") %>
|
||||
{{ text }}
|
||||
{{ alert }}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user