{% extends 'layout2.html' %} {% load i18n static %} {% block css_include %} {% endblock %} {% block js_include %} {% endblock %} {% block content %}
{% for node in nodes %}

{{ node.name|upper }} ({% translate "Last check: " %} ${ monitor_date('{{ node.name }}')} )

{% translate "Service" %} {% translate "State" %}
{% endfor %}
{% endblock %} {% block jquery_code %} var mandatory_services = ["VULTURED", "RSYSLOGD", "PF"]; $(function(){ $('.box-body, .box-header').css('backgroundColor', '#263135'); $('.box-body, .box-header').css('color', '#fff'); var dashboard_general_vue = new Vue({ el: "#dashboard_general", delimiters: ["${", "}"], data: { monitor: {} }, mounted: function(){ var self = this; self.fetch_data(); setInterval(function(){ self.fetch_data(); }, 10000) }, methods: { services(node){ var self = this; if (self.monitor[node]){ var html = ""; for (var service of self.monitor[node].services){ var down_color = "text-gray"; if( $.inArray(service.name.toUpperCase(), mandatory_services) != -1 ) { down_color = "text-red"; } var classes = { 'UP': 'text-green', 'UNKNOWN': 'text-orange', 'DOWN': down_color, 'ERROR': 'text-red', } html += `${service.friendly_name}`; } return html; } }, monitor_date: function(node_name){ var self = this; if (self.monitor[node_name]){ return self.monitor[node_name].date_human; } return ""; }, fetch_data(){ var self = this; $.getJSON('{% url "gui.dashboard.services" %}', null, function(response){ if (check_json_error(response)) self.monitor = response.monitor; }) } } }) }) {% endblock %}