Skip to content

Commit d13c3b8

Browse files
feat: Add new cards for system information
1 parent 4cfb765 commit d13c3b8

66 files changed

Lines changed: 154 additions & 627 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ def register_routes():
1010
app.register_blueprint(routes.memory_usage_bp)
1111
app.register_blueprint(routes.network_stats_bp)
1212
app.register_blueprint(routes.speedtest_bp)
13+
app.register_blueprint(routes.process_bp)
1314

1415

1516

1617

1718
if __name__ == "__main__":
18-
app.run(host="0.0.0.0", port=5001, debug=True)
19+
app.run(host="0.0.0.0", port=5000, debug=True)

src/routes/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from src.routes.cpu_info import cpu_info_bp
2-
from src.routes.disk_usage import disk_usage_bp
2+
from src.routes.disk_info import disk_info_bp
33
from src.routes.homepage import homepage_bp
44
from src.routes.memory_info import memory_info_bp
5-
from src.routes.network_stats import network_stats_bp
5+
from src.routes.network_info import network_info_bp
66
from src.routes.settings import settings_bp
77
from src.routes.speedtest import speedtest_bp
88
from src.routes.system_health import system_health_bp
9+
from src.routes.process import process_bp

src/routes/cpu_info.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
@app.route("/cpu_usage")
1010
def cpu_usage():
1111
current_temp, high_temp, critical_temp = get_cpu_temp()
12-
cpu_data = {
12+
system_info = {
1313
"cpu_core": get_cpu_core_count(),
1414
"cpu_frequency": get_cpu_frequency(),
15-
"cpu_usage_percent": cpu_usage_percent(),
15+
"cpu_percent": cpu_usage_percent(),
1616
"current_temp": current_temp,
1717
"high_temp": high_temp,
1818
"critical_temp": critical_temp,
1919
}
20-
return render_template("cpu_info.html", cpu_data=cpu_data)
20+
return render_template("cpu_info.html", system_info=system_info)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
from src.config import app
66

7-
disk_usage_bp = blueprints.Blueprint("disk_usage", __name__)
7+
disk_info_bp = blueprints.Blueprint("disk_usage", __name__)
88

99
@app.route("/disk_usage")
1010
def disk_usage():
11-
disk_info = {
11+
system_info = {
1212
"disk_usage": psutil.disk_usage("/").percent,
1313
"disk_total": round(psutil.disk_usage("/").total / (1024**3), 2), # In GB
1414
"disk_used": round(psutil.disk_usage("/").used / (1024**3), 2), # In GB
1515
"disk_free": round(psutil.disk_usage("/").free / (1024**3), 2), # In GB
1616
}
17-
return render_template("disk_usage.html", disk_info=disk_info)
17+
return render_template("disk_info.html", system_info=system_info)
1818

src/routes/memory_info.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
@app.route("/memory_usage")
1111
def memory_usage():
1212
total_swap, used_swap, free_swap = swap_memory_info()
13-
memory_info = {
13+
system_info = {
1414
"memory_percent": psutil.virtual_memory().percent,
1515
"memory_available": round(
1616
psutil.virtual_memory().available / (1024**3), 2
@@ -20,4 +20,4 @@ def memory_usage():
2020
"used_swap": round(used_swap / (1024**3), 2), # In GB
2121
"free_swap": round(free_swap / (1024**3), 2), # In GB
2222
}
23-
return render_template("memory_info.html", memory_info=memory_info)
23+
return render_template("memory_info.html", system_info=system_info)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33

44
from src.config import app
55
from src.utils import get_established_connections
6-
network_stats_bp = blueprints.Blueprint("network_stats", __name__)
6+
network_info_bp = blueprints.Blueprint("network_stats", __name__)
77

88
@app.route("/network_stats")
99
def network_stats():
1010
net_io = psutil.net_io_counters()
1111
ipv4_ip, ipv6_ip = get_established_connections()
12-
network_info = {
12+
system_info = {
1313
"network_sent": round(net_io.bytes_sent / (1024**2), 2), # In MB
1414
"network_received": round(net_io.bytes_recv / (1024**2), 2), # In MB
1515
"ipv4_ip": ipv4_ip,
1616
"ipv6_ip": ipv6_ip,
1717
}
18-
return render_template("network_stats.html", network_info=network_info)
18+
return render_template("network_info.html", system_info=system_info)
1919

src/routes/process.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from flask import request, render_template, blueprints
2+
3+
from src.config import app
4+
from src.utils import get_top_processes
5+
6+
process_bp = blueprints.Blueprint("process", __name__)
7+
8+
9+
@app.route("/process", methods=["GET", "POST"])
10+
def process():
11+
number_of_processes = 5 # Default number
12+
if request.method == "POST":
13+
number_of_processes = int(request.form.get("number", 5))
14+
15+
top_processes = get_top_processes(number_of_processes)
16+
return render_template("process.html", processes=top_processes, number=number_of_processes)

src/static/css/process.css

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
body {
2+
font-family: Arial, sans-serif;
3+
background-color: #f4f4f4;
4+
margin: 0;
5+
padding: 0;
6+
}
7+
8+
.container {
9+
width: 80%;
10+
margin: 20px auto;
11+
padding: 20px;
12+
background-color: white;
13+
border-radius: 8px;
14+
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
15+
}
16+
17+
h1 {
18+
color: #333;
19+
text-align: center;
20+
}
21+
22+
.form-control {
23+
margin-bottom: 20px;
24+
display: flex;
25+
justify-content: center;
26+
align-items: center;
27+
}
28+
29+
label {
30+
margin-right: 10px;
31+
}
32+
33+
input[type="number"] {
34+
width: 60px;
35+
padding: 5px;
36+
margin-right: 10px;
37+
}
38+
39+
button {
40+
padding: 5px 15px;
41+
background-color: #007bff;
42+
color: white;
43+
border: none;
44+
border-radius: 4px;
45+
cursor: pointer;
46+
}
47+
48+
button:hover {
49+
background-color: #0056b3;
50+
}
51+
52+
table {
53+
width: 100%;
54+
border-collapse: collapse;
55+
margin-top: 20px;
56+
}
57+
58+
th, td {
59+
padding: 10px;
60+
border-bottom: 1px solid #ddd;
61+
text-align: left;
62+
}
63+
64+
th {
65+
background-color: #007bff;
66+
color: white;
67+
}
68+
69+
tr:hover {
70+
background-color: #f1f1f1;
71+
}

src/templates/base.html

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1 @@
1-
<!DOCTYPE html>
2-
<html lang="en">
3-
4-
<head>
5-
<meta charset="UTF-8">
6-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7-
<title>{% block title %}System Dashboard{% endblock %}</title>
8-
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
9-
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
10-
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
11-
12-
{% block extra_head %}{% endblock %}
13-
</head>
14-
15-
<body>
16-
17-
{% include 'ext/navbar.html' %}
18-
<div class="container">
19-
{% block content %}{% endblock %}
20-
</div>
21-
<!-- {% include 'ext/footer.html' %} -->
22-
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
23-
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
24-
<script src="{{ url_for('static', filename='js/script.js') }}"></script>
25-
{% block extra_scripts %}{% endblock %}
26-
</body>
27-
28-
</html>
1+
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>{% block title %}System Dashboard{% endblock %}</title><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"><link rel="stylesheet" href="{{ url_for('static', filename='css/style.css')}}">{% block extra_head %}{% endblock %}</head><body>{% include 'ext/navbar.html' %} <div class="container">{% block content %}{% endblock %} </div><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script><script src="{{ url_for('static', filename='js/script.js')}}"></script>{% block extra_scripts %}{% endblock %}</body></html>

src/templates/cpu_info.html

Lines changed: 1 addition & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1 @@
1-
{% extends 'base.html' %}
2-
3-
{% block title %}CPU Usage Details{% endblock %}
4-
5-
{% block content %}
6-
<h2 class="my-4">CPU Details</h2>
7-
<div class="container mt-4">
8-
<div class="row">
9-
<div class="col-md-6 col-lg-4 mb-4">
10-
<div class="card bg-cpu">
11-
<div class="card-body">
12-
<h5 class="card-title">CPU Cores <i class="fas fa-microchip"></i></h5>
13-
<p class="card-text fs-4">{{ cpu_data['cpu_core'] }}</p>
14-
<div class="cpu-core-visualization">
15-
{% for i in range(cpu_data['cpu_core']) %}
16-
<div class="cpu-core-bar"></div>
17-
{% endfor %}
18-
</div>
19-
</div>
20-
</div>
21-
</div>
22-
23-
<div class="col-md-6 col-lg-4 mb-4">
24-
<div class="card cpu-card bg-cpu" data-cpu-usage="{{ cpu_data['cpu_usage_percent'] }}%">
25-
<div class="card-body">
26-
<h5 class="card-title">CPU Usage <i class="fas fa-microchip"></i></h5>
27-
<p class="card-text fs-4">{{ cpu_data['cpu_usage_percent'] }}%</p>
28-
</div>
29-
</div>
30-
</div>
31-
32-
<div class="col-md-6 col-lg-4 mb-4">
33-
<div class="card cpu-card bg-cpu" data-cpu-frequency="{{ cpu_data['cpu_frequency'] }}">
34-
<div class="card-body">
35-
<h5 class="card-title">CPU Frequency <i class="fas fa-microchip"></i></h5>
36-
<p class="card-text fs-4">{{ cpu_data['cpu_frequency'] }}</p>
37-
</div>
38-
</div>
39-
</div>
40-
41-
<div class="col-md-6 col-lg-4 mb-4">
42-
<div class="card cpu-card bg-cpu" data-cpu-frequency="{{ cpu_data['cpu_frequency'] }}">
43-
<div class="card-body">
44-
<h5 class="card-title">CPU Current Temperature <i class="fas fa-microchip"></i></h5>
45-
<p class="card-text fs-4">{{ cpu_data['current_temp'] }}</p>
46-
</div>
47-
</div>
48-
</div>
49-
50-
<div class="col-md-6 col-lg-4 mb-4">
51-
<div class="card cpu-card bg-cpu" data-cpu-frequency="{{ cpu_data['cpu_frequency'] }}">
52-
<div class="card-body">
53-
<h5 class="card-title"> CPU High Temperature <i class="fas fa-microchip"></i></h5>
54-
<p class="card-text fs-4">{{ cpu_data['high_temp'] }}</p>
55-
</div>
56-
</div>
57-
</div>
58-
59-
<div class="col-md-6 col-lg-4 mb-4">
60-
<div class="card cpu-card bg-cpu" data-cpu-frequency="{{ cpu_data['cpu_frequency'] }}">
61-
<div class="card-body">
62-
<h5 class="card-title"> CPU Critical Temperature <i class="fas fa-microchip"></i></h5>
63-
<p class="card-text fs-4">{{ cpu_data['critical_temp'] }}</p>
64-
</div>
65-
</div>
66-
</div>
67-
68-
</div>
69-
</div>
70-
71-
72-
73-
{% endblock %}
1+
{% extends 'base.html' %}{% block title %}CPU Usage Details{% endblock %}{% block content %}<h2 class="my-4">CPU Details</h2><div class="container mt-4"><div class="row">{% include 'dasbhboard_comp/cpu/core.html' %} {% include 'dasbhboard_comp/cpu/frequency.html' %} {% include 'dasbhboard_comp/cpu/usages.html' %} {% include 'dasbhboard_comp/cpu/current_temp.html' %} {% include 'dasbhboard_comp/cpu/highest_temp.html' %} {% include 'dasbhboard_comp/cpu/critical_temp.html' %} </div></div>{% endblock %}

0 commit comments

Comments
 (0)