Changelog: https://roxy-wi.org/changelog#7.0.4
pull/372/head v7.0.4.0
Aidaho 2023-12-03 12:36:36 +03:00
parent c4dac4d3ad
commit cc0edee75a
8 changed files with 106 additions and 10 deletions

View File

@ -668,7 +668,7 @@ def update_db_v_6_3_18():
def update_ver():
try:
Version.update(version='7.0.3.0').execute()
Version.update(version='7.0.4.0').execute()
except Exception:
print('Cannot update version')

View File

@ -184,14 +184,27 @@ def show_status_page(slug: str) -> str:
check_type = ''
check_id = str(check.check_id)
smon = sql.select_smon_by_id(check_id)
uptime = check_uptime(check_id)
en = ''
for s in smon:
name = s.name
desc = s.desc
group = s.group
check_type = s.check_type
en = s.en
uptime = check_uptime(check_id)
group = s.group if s.group else 'No group'
checks_status[check_id] = {'uptime': uptime, 'name': name, 'desc': desc, 'group': group, 'check_type': check_type, 'en': en}
return render_template('smon/status_page.html', page=page, checks_status=checks_status)
def avg_status_page_status(page_id: int) -> str:
page_id = int(page_id)
checks = sql.select_status_page_checks(page_id)
for check in checks:
check_id = str(check.check_id)
if not sql.get_last_smon_status_by_check(check_id):
return '0'
return '1'

View File

@ -149,6 +149,11 @@ def show_smon_status_page(slug):
return smon_mod.show_status_page(slug)
@bp.route('/status/avg/<int:page_id>')
def smon_history_statuses_avg(page_id):
return smon_mod.avg_status_page_status(page_id)
@bp.route('/history')
@login_required
@get_user_params()

View File

@ -1,7 +1,7 @@
{% for page in pages %}
<div id="page_{{page}}" class="page_div">
<a href="/app/smon/status/{{page.slug}}" class="page_link" target="_blank" title="Open status page">
<i class="far fa-check-circle status-page-icon"></i>
<span id="page_status-{{page}}"><i class="far fa-check-circle status-page-icon"></i></span>
<div>
<span class="page_name" id="page_name-{{page}}">{{page.name}}</span>
{% if page.desc %}
@ -13,4 +13,5 @@
<div class="edit status_page-edit" onclick="createStatusPageStep1('true', '{{page}}')"></div>
<div class="delete" onclick="confirmDeleteStatusPage('{{page}}')"></div>
</div>
<script>smon_manage_status_page_avg_status('{{page}}')</script>
{% endfor %}

View File

@ -24,6 +24,7 @@
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="{{ url_for('static', filename='images/favicon/ms-icon-144x144.png') }}">
<meta name="theme-color" content="#ffffff">
<script src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" data-auto-replace-svg="nest"></script>
<link href="/inc/css/jquery-ui.min.css" rel="stylesheet">
<link href="/inc/css/jquery-ui.structure.min.css" rel="stylesheet">
<link href="/inc/css/style-6.3.9.css" rel="stylesheet">
@ -37,6 +38,7 @@
<body>
<h2>Status page - {{p.name}}</h2>
<h3>{{p.desc|replace("'", "")}}</h3>
<div id="page_status" class="page_cur_status"></div>
{% for check, value in checks_status.items() %}
{% if value.uptime|int() > 50 and value.uptime|int() < 90 %}
{% set add_class = 'serverWarn' %}
@ -53,9 +55,12 @@
<span class="check_name">{{value.name|replace("'", "")}}</span>
</div>
<div class="history_statuses" id="history-{{check}}"></div>
<div class="tooltip check_tooltip">Group: {{value.group}}, check type: {{value.check_type}}</div>
<div class="tooltip check_tooltip check_last_check">last check</div>
</div>
<script>show_smon_history_statuses('{{check}}', '#history-{{check}}');</script>
{% endfor %}
<script>smon_status_page_avg_status('{{p.id}}');</script>
</body>
</html>
{% endfor %}

View File

@ -280,7 +280,7 @@
}
.menu-bar::before {
display: none;
font-family: "Font Awesome 5 Regular";
font-family: "Font Awesome 5 Solid";
content: "\f0c9";
}
.menu-bar > .fa-bars {

View File

@ -125,15 +125,41 @@ h4 {
.page_slug {
font-size: 10px;
}
.page_cur_status {
text-align: center;
font-size: 25px;
font-weight: 700;
margin-top: 20px;
}
.page_icon {
font-size: 25px;
margin: 0 10px 10px 0;
}
.page_icon_all_ok {
color: var(--green-color);
}
.page_icon_not_ok {
color: var(--red-color);
}
.status-page-icon {
float: left;
margin: 10px;
margin-top: 0px;
font-size: 50px;
margin-right: 25px;
margin-left: 0;
margin: 0 25px 10px 0;
}
.status-page-icon-ok {
color: var(--green-color);
}
.status-page-icon-not-ok {
color: var(--red-color);
}
.status_page-edit {
float: right;
margin-right: 1.5%;
margin-top: -28px;
font-size: 19;
color: var(--blue-color);
cursor: pointer;
}
.delete {
float: left;
margin-left: 99%;
@ -144,7 +170,7 @@ h4 {
.check_div {
width: 50%;
padding: 20px 30px 20px 30px;
margin-left: 20%;
margin-left: 25%;
margin-top: 10px;
margin-bottom: 10px;
}
@ -161,6 +187,16 @@ h4 {
font-size: 15px;
font-weight: 550;
}
.check_tooltip {
height: 10px;
margin-top: 5px;
margin-left: 5px;
padding: 0;
}
.check_last_check {
float: right;
margin-top: -15px;
}
.history_statuses {
float: right;
margin-top: -20px;

View File

@ -403,6 +403,42 @@ function show_smon_history_statuses(dashboard_id, id_for_history_replace) {
}
});
}
function smon_status_page_avg_status(page_id) {
$.ajax({
url: "/app/smon/status/avg/" + page_id,
success: function (data) {
data = data.replace(/\s+/g, ' ');
if (data.indexOf('error:') != '-1' || data.indexOf('unique') != '-1') {
toastr.error(data);
} else {
toastr.clear();
if (data == '1') {
$('#page_status').html('<i class="far fa-check-circle page_icon page_icon_all_ok"></i><span>All Systems Operational</span>');
} else {
$('#page_status').html('<i class="far fa-times-circle page_icon page_icon_not_ok"></i><span>Not all Systems Operational</span>')
}
}
}
});
}
function smon_manage_status_page_avg_status(page_id) {
$.ajax({
url: "/app/smon/status/avg/" + page_id,
success: function (data) {
data = data.replace(/\s+/g, ' ');
if (data.indexOf('error:') != '-1' || data.indexOf('unique') != '-1') {
toastr.error(data);
} else {
toastr.clear();
if (data == '1') {
$('#page_status-'+page_id).html('<i class="far fa-check-circle status-page-icon status-page-icon-ok"></i>');
} else {
$('#page_status-'+page_id).html('<i class="far fa-times-circle status-page-icon status-page-icon-not-ok"></i>')
}
}
}
});
}
function createStatusPageStep1(edited=false, page_id=0) {
var add_word = $('#translate').attr('data-next');
var cancel_word = $('#translate').attr('data-cancel');