Skip to content

Commit 76412a7

Browse files
committed
Splitting idle and active time on dashboard
1 parent 78aac34 commit 76412a7

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

server/resources/dashboard_resource.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,22 @@ def _get_vnc_data(self):
9494
duration = now - boot_time
9595
session_duration_minutes = int(duration.total_seconds() / 60)
9696

97-
# Calculate idle state based on last_used (2 minutes = 120 seconds)
97+
# Calculate idle state and duration based on last_used (2 minutes = 120 seconds)
9898
is_idle = False
99+
idle_duration_minutes = None
99100
if last_used and not instance.is_booting:
100101
# Make sure last_used is timezone-aware
101102
if last_used.tzinfo is None:
102103
last_used = last_used.replace(tzinfo=timezone.utc)
103104

104105
now = datetime.now(timezone.utc)
105106
time_since_activity = now - last_used
106-
is_idle = time_since_activity.total_seconds() > 120 # 2 minutes
107+
idle_seconds = time_since_activity.total_seconds()
108+
is_idle = idle_seconds > 120 # 2 minutes
109+
110+
# Calculate idle duration in minutes if idle
111+
if is_idle:
112+
idle_duration_minutes = int(idle_seconds / 60)
107113

108114
vnc_info = {
109115
"server_name": instance.server_name,
@@ -116,6 +122,7 @@ def _get_vnc_data(self):
116122
"emulator_port": instance.emulator_port,
117123
"is_booting": instance.is_booting,
118124
"is_idle": is_idle,
125+
"idle_duration_minutes": idle_duration_minutes,
119126
"last_used": last_used.isoformat() if last_used else None,
120127
"appium_running": instance.appium_running,
121128
"session_duration_minutes": session_duration_minutes,

server/templates/vnc-dashboard.html

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,7 +1084,15 @@ <h2>No Active Emulators</h2>
10841084
// Format status with duration
10851085
let statusText = instance.is_booting ? 'Booting' : (instance.is_idle ? 'Idle' : 'Active');
10861086
let durationText = '';
1087-
if (instance.session_duration_minutes !== null && instance.session_duration_minutes !== undefined) {
1087+
1088+
// Show appropriate duration(s)
1089+
if (instance.is_idle && instance.idle_duration_minutes !== null && instance.idle_duration_minutes !== undefined) {
1090+
// For idle: show "Idle Xm · Ym" where X is idle duration and Y is session duration
1091+
statusText = `Idle ${instance.idle_duration_minutes}m`;
1092+
if (instance.session_duration_minutes !== null && instance.session_duration_minutes !== undefined) {
1093+
durationText = ` · <span style="color: #10b981;">${instance.session_duration_minutes}m</span>`;
1094+
}
1095+
} else if (instance.session_duration_minutes !== null && instance.session_duration_minutes !== undefined) {
10881096
durationText = ` · ${instance.session_duration_minutes}m`;
10891097
}
10901098

@@ -1164,10 +1172,18 @@ <h2>No Active Emulators</h2>
11641172
// Update status text with duration
11651173
let statusText = instance.is_booting ? 'Booting' : (instance.is_idle ? 'Idle' : 'Active');
11661174
let durationText = '';
1167-
if (instance.session_duration_minutes !== null && instance.session_duration_minutes !== undefined) {
1175+
1176+
// Show appropriate duration(s)
1177+
if (instance.is_idle && instance.idle_duration_minutes !== null && instance.idle_duration_minutes !== undefined) {
1178+
// For idle: show "Idle Xm · Ym" where X is idle duration and Y is session duration
1179+
statusText = `Idle ${instance.idle_duration_minutes}m`;
1180+
if (instance.session_duration_minutes !== null && instance.session_duration_minutes !== undefined) {
1181+
durationText = ` · <span style="color: #10b981;">${instance.session_duration_minutes}m</span>`;
1182+
}
1183+
} else if (instance.session_duration_minutes !== null && instance.session_duration_minutes !== undefined) {
11681184
durationText = ` · ${instance.session_duration_minutes}m`;
11691185
}
1170-
statusTextEl.textContent = `${statusText}${durationText}`;
1186+
statusTextEl.innerHTML = `${statusText}${durationText}`;
11711187
}
11721188
}
11731189

0 commit comments

Comments
 (0)