Skip to content

Commit a0075a6

Browse files
feat: charging status text added
1 parent 31e598a commit a0075a6

6 files changed

Lines changed: 67 additions & 17 deletions

File tree

src/static/js/refreshCardData.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,22 @@ function updateCard(cardSelector, dataKey, data, unit = '', barSelector = null,
9191
}
9292
}
9393

94+
// refresh the card text based on fetched data
95+
async function refreshCardText(cardSelector, dataKey, data) {
96+
const cardElement = document.querySelector(cardSelector);
97+
98+
if (!cardElement) return;
99+
// fetch value dataKey from data
100+
let dataValue = data[dataKey];
101+
102+
// Update the card text
103+
if (dataValue) {
104+
cardElement.textContent = `Battery Status: ${dataValue}`;
105+
} else {
106+
cardElement.textContent = 'Data not available';
107+
}
108+
}
109+
94110
// Refresh all card data
95111
async function refreshData() {
96112
const data = await fetchSystemData('/api/system-info');
@@ -104,6 +120,8 @@ async function refreshData() {
104120
updateCard('.network-received', 'network_received', data, 'MB');
105121
updateCard('.network-sent', 'network_sent', data, 'MB');
106122
updateCard('.battery-card', 'battery_percent', data, '%', '.battery-bar');
123+
124+
refreshCardText('.battery-status', 'battery_status', data); // battery charging status
107125
updateColorBars(); // Update color bars based on the fetched data
108126
}
109127

src/templates/card_comp/battery/percentage.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ <h5 class="card-title">Battery Percentage <i class="fas fa-battery-three-quarter
77
<div class="battery-indicator mt-2">
88
<div class="battery-bar" style="width: {{ system_info['battery_percent']}}%;"></div>
99
</div>
10+
<p class="battery-status fs-6 mt-2">Battery Status: {{ system_info['battery_status']}}</p>
1011
</div>
1112
</div>
1213
</div>

src/templates/card_comp/disk/usage.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ <h5 class="card-title mb-3">Disk Usage <i class="fas fa-hdd"></i></h5>
99
<div class="usage-indicator mt-2">
1010
<div class="disk-bar" style="width: {{ system_info['disk_percent'] }}%;"></div>
1111
</div>
12-
<p class="card-text fs-6 mt-2">Total Disk: {{ system_info['disk_total'] }} Gb</p>
12+
<p class="card-text fs-6 mt-2">Total Disk: {{ system_info['disk_total'] }} GB</p>
1313
</div>
1414
</div>
1515
</div>

src/templates/card_comp/memory/usage.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ <h5 class="card-title mb-3">Memory Usage <i class="fas fa-memory"></i></h5>
1010
<div class="usage-indicator mt-2">
1111
<div class="memory-usage-bar" style="width: {{ system_info['memory_percent'] }}%;"></div>
1212
</div>
13-
<p class="card-text fs-6 mt-2">Total Memory: {{ system_info['memory_available'] }} Mb</p>
13+
<p class="card-text fs-6 mt-2">Total Memory: {{ system_info['memory_available'] }} GB </p>
1414
</div>
1515
</div>
1616
</div>

src/templates/settings/control_panel.html

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ <h1 class="settings-title text-center my-4"><span class="text-danger">{{ title }
5757
<!-- User Management Section -->
5858
<div class="tab-pane fade show active" id="user-management" role="tabpanel" aria-labelledby="user-management-tab">
5959
<div class="row">
60-
<div class="col-lg-4 col-md-6 mb-4">
60+
<div class="col-lg-6 col-md-6 mb-4">
6161
<div class="card h-100 text-center">
6262
<div class="card-body">
6363
<h5 class="card-title"><i class="fas fa-users"></i> User Management</h5>
@@ -76,7 +76,7 @@ <h5 class="card-title"><i class="fas fa-users"></i> User Management</h5>
7676
<!-- Settings Section -->
7777
<div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab">
7878
<div class="row">
79-
<div class="col-lg-4 col-md-6 mb-4">
79+
<div class="col-lg-6 col-md-6 mb-4">
8080
<div class="card h-100 text-center">
8181
<div class="card-body">
8282
<h5 class="card-title"><i class="fas fa-cogs"></i> Settings</h5>
@@ -95,7 +95,7 @@ <h5 class="card-title"><i class="fas fa-cogs"></i> Settings</h5>
9595
<!-- Utilities Section -->
9696
<div class="tab-pane fade" id="utilities" role="tabpanel" aria-labelledby="utilities-tab">
9797
<div class="row">
98-
<div class="col-lg-4 col-md-6 mb-4">
98+
<div class="col-lg-6 col-md-6 mb-4">
9999
<div class="card h-100 text-center">
100100
<div class="card-body">
101101
<h5 class="card-title"><i class="fas fa-tools"></i> Utilities</h5>
@@ -111,6 +111,9 @@ <h5 class="card-title"><i class="fas fa-tools"></i> Utilities</h5>
111111
<a href="{{ url_for('speedtest') }}" class="btn btn-primary btn-block">
112112
<i class="fas fa-tachometer-alt"></i> Speedtest
113113
</a>
114+
<a href="{{ url_for('monitor_websites') }}" class="btn btn-primary btn-block mb-2">
115+
<i class="fas fa-globe"></i> Ping Website
116+
</a>
114117
</div>
115118
</div>
116119
</div>
@@ -120,13 +123,10 @@ <h5 class="card-title"><i class="fas fa-tools"></i> Utilities</h5>
120123
<!-- Network Tools Section -->
121124
<div class="tab-pane fade" id="network-tools" role="tabpanel" aria-labelledby="network-tab">
122125
<div class="row">
123-
<div class="col-lg-4 col-md-6 mb-4">
126+
<div class="col-lg-6 col-md-6 mb-4">
124127
<div class="card h-100 text-center">
125128
<div class="card-body">
126-
<h5 class="card-title"><i class="fas fa-globe"></i> Network Tools</h5>
127-
<a href="{{ url_for('monitor_websites') }}" class="btn btn-primary btn-block mb-2">
128-
<i class="fas fa-globe"></i> Ping Website
129-
</a>
129+
<h5 class="card-title"><i class="fas fa-globe"></i> Network Tols</h5>
130130
<a href="{{ url_for('firewall') }}" class="btn btn-primary btn-block">
131131
<i class="fas fa-shield-alt"></i> Firewall
132132
</a>
@@ -142,7 +142,7 @@ <h5 class="card-title"><i class="fas fa-globe"></i> Network Tools</h5>
142142
<!-- Feature Toggles Section -->
143143
<div class="tab-pane fade" id="feature-toggles" role="tabpanel" aria-labelledby="toggles-tab">
144144
<div class="row">
145-
<div class="col-lg-4 col-md-6 mb-4">
145+
<div class="col-lg-6 col-md-6 mb-4">
146146
<div class="card h-100 text-center">
147147
<div class="card-body">
148148
<h5 class="card-title"><i class="fas fa-toggle-on"></i> Feature Toggles</h5>
@@ -161,7 +161,7 @@ <h5 class="card-title"><i class="fas fa-toggle-on"></i> Feature Toggles</h5>
161161
<!-- System Info Section -->
162162
<div class="tab-pane fade" id="system-info" role="tabpanel" aria-labelledby="system-info-tab">
163163
<div class="row">
164-
<div class="col-lg-4 col-md-6 mb-4">
164+
<div class="col-lg-6 col-md-6 mb-4">
165165
<div class="card h-100 text-center">
166166
<div class="card-body">
167167
<h5 class="card-title"><i class="fas fa-info-circle"></i> System Info</h5>
@@ -185,7 +185,7 @@ <h5 class="card-title"><i class="fas fa-info-circle"></i> System Info</h5>
185185
<!-- profile tab -->
186186
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
187187
<div class="row">
188-
<div class="col-lg-4 col-md-6 mb-4">
188+
<div class="col-lg-6 col-md-6 mb-4">
189189
<div class="card h-100 text-center">
190190
<div class="card-body">
191191
<h5 class="card-title"><i class="fas fa-user"></i> Profile</h5>

src/utils.py

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,34 @@ def get_os_info():
347347
"kernel_version": kernel_version
348348
}
349349

350+
351+
def check_battery_status():
352+
battery = psutil.sensors_battery()
353+
354+
output = {}
355+
if battery is not None:
356+
percent = battery.percent
357+
is_plugged = battery.power_plugged
358+
359+
if is_plugged:
360+
status = "Charging"
361+
else:
362+
status = "Discharging"
363+
364+
output = {
365+
"status": status,
366+
"percent": round(percent)
367+
}
368+
369+
else:
370+
output = {
371+
"status": "Not available",
372+
"percent": 0
373+
}
374+
375+
return output
376+
377+
350378
# TODO: cache the result to avoid reading the file every time
351379
def get_os_release_info():
352380
"""
@@ -428,7 +456,8 @@ def get_network_io():
428456
return network_sent, network_received
429457

430458
def _get_system_info():
431-
""" Get system information with caching for certain values and fresh data for others.
459+
""" sub function required by the get_system_info function and front-end dashboard to
460+
update the system information with fresh data for certain values and cached data for others.
432461
---
433462
Parameters:
434463
---
@@ -440,7 +469,8 @@ def _get_system_info():
440469
disk_total = get_cached_value("disk_total", get_disk_total)
441470
memory_available = get_cached_value("memory_available", get_memory_available)
442471
# Gathering fresh system information
443-
battery_info = psutil.sensors_battery()
472+
battery_data = check_battery_status()
473+
print("Battery Data: ", battery_data)
444474
memory_info = psutil.virtual_memory()
445475
disk_info = psutil.disk_usage('/')
446476
network_sent, network_received = get_network_io()
@@ -457,9 +487,10 @@ def _get_system_info():
457487
'disk_percent': round(disk_info.percent, 2),
458488
'disk_total': disk_total,
459489
'network_sent': network_sent,
460-
'battery_percent': round(battery_info.percent, 1) if battery_info else 0,
461490
'network_received': network_received,
462491
"network_stats" : f"D: {network_sent} MB / U: {network_received} MB",
492+
'battery_percent': battery_data['percent'],
493+
'battery_status': battery_data['status'],
463494
'dashboard_memory_usage': get_flask_memory_usage(),
464495
'cpu_frequency': cpu_freq,
465496
'cpu_max_frequency': max_freq,
@@ -484,10 +515,10 @@ def get_system_info():
484515
# get system username
485516
system_username = get_cached_value('system_username', get_system_username)
486517
nodename = get_cached_value('nodename', get_system_node_name)
487-
ipv4_address = get_cached_value('ipv4', lambda: get_ip_address())
488518
boot_time = get_cached_value('boot_time', lambda: datetime.datetime.fromtimestamp(psutil.boot_time()))
489519
uptime_dict = get_cached_value('uptime', lambda: format_uptime(datetime.datetime.now() - boot_time))
490520
current_server_time = datetime.datetime.now()
521+
ipv4_address = get_ip_address()
491522
os_info = get_cached_value('os_info', get_os_info)
492523
os_info.update(get_cached_value('os_release_info', get_os_release_info))
493524

0 commit comments

Comments
 (0)