mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-05-06 10:55:45 +02:00
Dashboard Top Process: Pause/Resume auto-refresh button
This commit is contained in:
@@ -1004,6 +1004,8 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
$scope.topProcesses = [];
|
||||
$scope.loadingTopProcesses = true;
|
||||
$scope.errorTopProcesses = '';
|
||||
/** When true, automatic Top Process refresh is stopped (user can read the table). */
|
||||
$scope.topProcessPaused = false;
|
||||
/**
|
||||
* @param {boolean} silent If true, refresh rows in place without clearing the table (no loading spinner).
|
||||
*/
|
||||
@@ -1812,6 +1814,44 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
var pollInterval = 2000; // ms (charts / dashboard stats)
|
||||
/** Top Process list: slower refresh, silent updates (no table flash). */
|
||||
var topProcessPollIntervalMs = 10000;
|
||||
var topProcessPollPromise = null;
|
||||
|
||||
function cancelTopProcessPoll() {
|
||||
if (topProcessPollPromise) {
|
||||
$timeout.cancel(topProcessPollPromise);
|
||||
topProcessPollPromise = null;
|
||||
}
|
||||
}
|
||||
|
||||
function scheduleTopProcessPoll() {
|
||||
cancelTopProcessPoll();
|
||||
function tick() {
|
||||
if ($scope.topProcessPaused) {
|
||||
return;
|
||||
}
|
||||
topProcessPollPromise = $timeout(function() {
|
||||
topProcessPollPromise = null;
|
||||
if (!$scope.topProcessPaused) {
|
||||
$scope.refreshTopProcesses(true);
|
||||
}
|
||||
if (!$scope.topProcessPaused) {
|
||||
tick();
|
||||
}
|
||||
}, topProcessPollIntervalMs);
|
||||
}
|
||||
tick();
|
||||
}
|
||||
|
||||
$scope.toggleTopProcessPause = function() {
|
||||
$scope.topProcessPaused = !$scope.topProcessPaused;
|
||||
if ($scope.topProcessPaused) {
|
||||
cancelTopProcessPoll();
|
||||
} else {
|
||||
$scope.refreshTopProcesses(true);
|
||||
scheduleTopProcessPoll();
|
||||
}
|
||||
};
|
||||
|
||||
var maxPoints = 30;
|
||||
|
||||
// Expose so switchTab can create charts on first tab click if they weren't created at load
|
||||
@@ -2361,12 +2401,6 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
}
|
||||
pollAll();
|
||||
|
||||
function scheduleTopProcessPoll() {
|
||||
$timeout(function() {
|
||||
$scope.refreshTopProcesses(true);
|
||||
scheduleTopProcessPoll();
|
||||
}, topProcessPollIntervalMs);
|
||||
}
|
||||
scheduleTopProcessPoll();
|
||||
}, 800);
|
||||
|
||||
|
||||
@@ -1337,6 +1337,15 @@
|
||||
|
||||
<!-- Top Process Tab -->
|
||||
<div id="top-process" class="tab-content">
|
||||
<div ng-if="!loadingTopProcesses" style="display: flex; justify-content: flex-end; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; padding: 4px 0;">
|
||||
<span ng-if="topProcessPaused" style="font-size: 12px; color: #d97706; font-weight: 600;">
|
||||
<i class="fas fa-pause-circle"></i> Auto-refresh paused
|
||||
</span>
|
||||
<button type="button" ng-click="toggleTopProcessPause()" class="btn-primary" style="padding: 6px 14px; font-size: 12px; display: inline-flex; align-items: center; gap: 6px;">
|
||||
<i class="fas" ng-class="topProcessPaused ? 'fa-play' : 'fa-pause'"></i>
|
||||
<span>{$ topProcessPaused ? 'Resume updates' : 'Pause updates' $}</span>
|
||||
</button>
|
||||
</div>
|
||||
<div ng-if="loadingTopProcesses" style="text-align: center; padding: 20px; color: #8893a7;">
|
||||
Loading top processes...
|
||||
</div>
|
||||
|
||||
@@ -1004,6 +1004,8 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
$scope.topProcesses = [];
|
||||
$scope.loadingTopProcesses = true;
|
||||
$scope.errorTopProcesses = '';
|
||||
/** When true, automatic Top Process refresh is stopped (user can read the table). */
|
||||
$scope.topProcessPaused = false;
|
||||
/**
|
||||
* @param {boolean} silent If true, refresh rows in place without clearing the table (no loading spinner).
|
||||
*/
|
||||
@@ -1800,6 +1802,44 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
var pollInterval = 2000; // ms (charts / dashboard stats)
|
||||
/** Top Process list: slower refresh, silent updates (no table flash). */
|
||||
var topProcessPollIntervalMs = 10000;
|
||||
var topProcessPollPromise = null;
|
||||
|
||||
function cancelTopProcessPoll() {
|
||||
if (topProcessPollPromise) {
|
||||
$timeout.cancel(topProcessPollPromise);
|
||||
topProcessPollPromise = null;
|
||||
}
|
||||
}
|
||||
|
||||
function scheduleTopProcessPoll() {
|
||||
cancelTopProcessPoll();
|
||||
function tick() {
|
||||
if ($scope.topProcessPaused) {
|
||||
return;
|
||||
}
|
||||
topProcessPollPromise = $timeout(function() {
|
||||
topProcessPollPromise = null;
|
||||
if (!$scope.topProcessPaused) {
|
||||
$scope.refreshTopProcesses(true);
|
||||
}
|
||||
if (!$scope.topProcessPaused) {
|
||||
tick();
|
||||
}
|
||||
}, topProcessPollIntervalMs);
|
||||
}
|
||||
tick();
|
||||
}
|
||||
|
||||
$scope.toggleTopProcessPause = function() {
|
||||
$scope.topProcessPaused = !$scope.topProcessPaused;
|
||||
if ($scope.topProcessPaused) {
|
||||
cancelTopProcessPoll();
|
||||
} else {
|
||||
$scope.refreshTopProcesses(true);
|
||||
scheduleTopProcessPoll();
|
||||
}
|
||||
};
|
||||
|
||||
var maxPoints = 30;
|
||||
|
||||
// Expose so switchTab can create charts on first tab click if they weren't created at load
|
||||
@@ -2349,12 +2389,6 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
}
|
||||
pollAll();
|
||||
|
||||
function scheduleTopProcessPoll() {
|
||||
$timeout(function() {
|
||||
$scope.refreshTopProcesses(true);
|
||||
scheduleTopProcessPoll();
|
||||
}, topProcessPollIntervalMs);
|
||||
}
|
||||
scheduleTopProcessPoll();
|
||||
}, 800);
|
||||
|
||||
|
||||
@@ -1004,6 +1004,8 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
$scope.topProcesses = [];
|
||||
$scope.loadingTopProcesses = true;
|
||||
$scope.errorTopProcesses = '';
|
||||
/** When true, automatic Top Process refresh is stopped (user can read the table). */
|
||||
$scope.topProcessPaused = false;
|
||||
/**
|
||||
* @param {boolean} silent If true, refresh rows in place without clearing the table (no loading spinner).
|
||||
*/
|
||||
@@ -1689,6 +1691,44 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
var pollInterval = 2000; // ms (charts / dashboard stats)
|
||||
/** Top Process list: slower refresh, silent updates (no table flash). */
|
||||
var topProcessPollIntervalMs = 10000;
|
||||
var topProcessPollPromise = null;
|
||||
|
||||
function cancelTopProcessPoll() {
|
||||
if (topProcessPollPromise) {
|
||||
$timeout.cancel(topProcessPollPromise);
|
||||
topProcessPollPromise = null;
|
||||
}
|
||||
}
|
||||
|
||||
function scheduleTopProcessPoll() {
|
||||
cancelTopProcessPoll();
|
||||
function tick() {
|
||||
if ($scope.topProcessPaused) {
|
||||
return;
|
||||
}
|
||||
topProcessPollPromise = $timeout(function() {
|
||||
topProcessPollPromise = null;
|
||||
if (!$scope.topProcessPaused) {
|
||||
$scope.refreshTopProcesses(true);
|
||||
}
|
||||
if (!$scope.topProcessPaused) {
|
||||
tick();
|
||||
}
|
||||
}, topProcessPollIntervalMs);
|
||||
}
|
||||
tick();
|
||||
}
|
||||
|
||||
$scope.toggleTopProcessPause = function() {
|
||||
$scope.topProcessPaused = !$scope.topProcessPaused;
|
||||
if ($scope.topProcessPaused) {
|
||||
cancelTopProcessPoll();
|
||||
} else {
|
||||
$scope.refreshTopProcesses(true);
|
||||
scheduleTopProcessPoll();
|
||||
}
|
||||
};
|
||||
|
||||
var maxPoints = 30;
|
||||
|
||||
// Expose so switchTab can create charts on first tab click if they weren't created at load
|
||||
@@ -2238,12 +2278,6 @@ var dashboardStatsControllerFn = function ($scope, $http, $timeout) {
|
||||
}
|
||||
pollAll();
|
||||
|
||||
function scheduleTopProcessPoll() {
|
||||
$timeout(function() {
|
||||
$scope.refreshTopProcesses(true);
|
||||
scheduleTopProcessPoll();
|
||||
}, topProcessPollIntervalMs);
|
||||
}
|
||||
scheduleTopProcessPoll();
|
||||
}, 800);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user