| 1 |
// WP Adminify Realtime Server Details widget |
| 2 |
(function ($) |
| 3 |
{ |
| 4 |
'use strict'; |
| 5 |
|
| 6 |
var set_default = false; |
| 7 |
var uptime_interval; |
| 8 |
var interval_count = 0; |
| 9 |
|
| 10 |
var Adminify_Realtime_Server = { |
| 11 |
|
| 12 |
UpdateServerUptime: function( $days, $hours, $minutes, $seconds, upsec ) { |
| 13 |
|
| 14 |
$days.innerText = Math.floor(upsec / 86400); |
| 15 |
$hours.innerText = String( Math.floor((upsec % 86400) / 3600) ).padStart(2, '0'); |
| 16 |
$minutes.innerText = String( Math.floor(((upsec % 86400) % 3600) / 60) ).padStart(2, '0'); |
| 17 |
$seconds.innerText = String( Math.floor(((upsec % 86400) % 3600) % 60) ).padStart(2, '0'); |
| 18 |
|
| 19 |
}, |
| 20 |
|
| 21 |
// Server Uptime Counter |
| 22 |
ServerUptime: function(upsec) { |
| 23 |
|
| 24 |
upsec = Number(upsec); |
| 25 |
|
| 26 |
var $days = document.getElementById("adminify-days"), |
| 27 |
$hours = document.getElementById("adminify-hours"), |
| 28 |
$minutes = document.getElementById("adminify-minutes"), |
| 29 |
$seconds = document.getElementById("adminify-seconds"); |
| 30 |
|
| 31 |
// Init |
| 32 |
Adminify_Realtime_Server.UpdateServerUptime( $days, $hours, $minutes, $seconds, Number(upsec) ); |
| 33 |
|
| 34 |
// 1 Sec Interval |
| 35 |
uptime_interval = setInterval( function() { |
| 36 |
Adminify_Realtime_Server.UpdateServerUptime( $days, $hours, $minutes, $seconds, ++upsec ); |
| 37 |
}, 1000); |
| 38 |
|
| 39 |
}, |
| 40 |
|
| 41 |
ProgressBar: function(){ |
| 42 |
var totalProgress, progress; |
| 43 |
const circles = document.querySelectorAll('.adminify-progress-bar'); |
| 44 |
for(var i = 0; i < circles.length; i++) { |
| 45 |
totalProgress = circles[i].querySelector('circle').getAttribute('stroke-dasharray'); |
| 46 |
progress = circles[i].parentElement.getAttribute('data-percent'); |
| 47 |
|
| 48 |
circles[i].querySelector('.adminify-bar').style['stroke-dashoffset'] = totalProgress * progress / 100; |
| 49 |
|
| 50 |
} |
| 51 |
}, |
| 52 |
|
| 53 |
|
| 54 |
Ajax_Server_Data: function(){ |
| 55 |
$.ajax({ |
| 56 |
type: 'POST', |
| 57 |
dataType: 'json', |
| 58 |
async: false, |
| 59 |
url: WPAdminify_Server.ajax_url, |
| 60 |
data: { |
| 61 |
action: 'adminify_live_server_stats', |
| 62 |
security: WPAdminify_Server.security_nonce |
| 63 |
}, |
| 64 |
cache: false, |
| 65 |
success: function (response) { |
| 66 |
|
| 67 |
if ( ! response.success ) return; |
| 68 |
|
| 69 |
// CPU Loads |
| 70 |
var $cpu_load = response.data.cpu_load; |
| 71 |
$('#adminify-cpu-load').attr('data-percent', $cpu_load); |
| 72 |
|
| 73 |
if ($cpu_load <= 10) { |
| 74 |
$('#adminify-cpu-load .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#00BA88' }); |
| 75 |
} else if ($cpu_load > 65 && $cpu_load < 90) { |
| 76 |
$('#adminify-cpu-load .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#ffe08a' }); |
| 77 |
} else if ($cpu_load > 90) { |
| 78 |
$('#adminify-cpu-load .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#f14668' }); |
| 79 |
} |
| 80 |
|
| 81 |
|
| 82 |
// PHP Memory Usage |
| 83 |
var $memory_load_mb = response.data.memory_usage_MB; |
| 84 |
$('#adminify-php-memory-usage').attr('data-percent', $memory_load_mb); |
| 85 |
|
| 86 |
if ($memory_load_mb <= 10) { |
| 87 |
$('#adminify-php-memory-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#00BA88' }); |
| 88 |
} else if ($memory_load_mb > 65 && $memory_load_mb < 90) { |
| 89 |
$('#adminify-php-memory-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#ffe08a' }); |
| 90 |
} else if ($memory_load_mb > 90) { |
| 91 |
$('#adminify-php-memory-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#f14668' }); |
| 92 |
} |
| 93 |
|
| 94 |
|
| 95 |
// RAM Usage |
| 96 |
var $ram_used = response.data.used_ram; |
| 97 |
$('#adminify-ram-usage').attr('data-percent', $ram_used); |
| 98 |
|
| 99 |
|
| 100 |
if ($ram_used <= 10) { |
| 101 |
$('#adminify-ram-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#00BA88' }); |
| 102 |
} else if ($ram_used > 65 && $ram_used < 90) { |
| 103 |
$('#adminify-ram-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#ffe08a' }); |
| 104 |
} else if ($ram_used > 90) { |
| 105 |
$('#adminify-ram-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#f14668' }); |
| 106 |
} |
| 107 |
|
| 108 |
|
| 109 |
|
| 110 |
// WP Memory Usage |
| 111 |
var $wp_memory_usage = response.data.wp_memory_usage; |
| 112 |
$('#adminify-wp-memory-usage').attr('data-percent', $wp_memory_usage); |
| 113 |
|
| 114 |
|
| 115 |
if ($wp_memory_usage <= 10) { |
| 116 |
$('#adminify-wp-memory-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#00BA88' }); |
| 117 |
} else if ($wp_memory_usage > 65 && $wp_memory_usage < 90) { |
| 118 |
$('#adminify-wp-memory-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#ffe08a' }); |
| 119 |
} else if ($wp_memory_usage > 90) { |
| 120 |
$('#adminify-wp-memory-usage .adminify-progress-bar circle:not(.adminify-bar)').css({ 'stroke': '#f14668' }); |
| 121 |
} |
| 122 |
|
| 123 |
|
| 124 |
Adminify_Realtime_Server.ProgressBar(); |
| 125 |
|
| 126 |
if (set_default == false) { |
| 127 |
Adminify_Realtime_Server.ServerUptime(response.data.uptime); |
| 128 |
set_default = true; |
| 129 |
} |
| 130 |
|
| 131 |
}, |
| 132 |
}); |
| 133 |
} |
| 134 |
} |
| 135 |
|
| 136 |
// Documents Loaded |
| 137 |
Adminify_Realtime_Server.Ajax_Server_Data(); |
| 138 |
setInterval( function() { |
| 139 |
|
| 140 |
interval_count++; |
| 141 |
|
| 142 |
if ( interval_count > 10 ) { |
| 143 |
interval_count = 0; |
| 144 |
set_default = false; |
| 145 |
if ( uptime_interval ) clearInterval(uptime_interval); |
| 146 |
} |
| 147 |
|
| 148 |
Adminify_Realtime_Server.Ajax_Server_Data(); |
| 149 |
|
| 150 |
}, 5000 ); |
| 151 |
|
| 152 |
})(jQuery); |