Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 150d83be42 | |||
| 0ad49775fc | |||
| cc54502a12 | |||
| 80bf20cda1 |
7 changed files with 13 additions and 6 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -2668,7 +2668,7 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
|||
|
||||
[[package]]
|
||||
name = "uptime-kuma-dashboard"
|
||||
version = "0.38.1"
|
||||
version = "0.38.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "uptime-kuma-dashboard"
|
||||
version = "0.38.1"
|
||||
version = "0.38.2"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
|
|
|
|||
|
|
@ -4,6 +4,13 @@
|
|||
|
||||
A terminal-based monitoring dashboard for Uptime Kuma that displays service status, uptime percentages, and historical performance data directly in your terminal. Built with Rust for performance and reliability.
|
||||
|
||||
## Demo
|
||||
|
||||
<video width="800" controls>
|
||||
<source src="assets/demo.webm" type="video/webm">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
|
||||
## Overview
|
||||
|
||||
This personal project started as a way to monitor my home lab services without needing a web browser. It connects to your Uptime Kuma instance API and presents a clean, color-coded view of your services' status with real-time updates. The dashboard works great on servers, remote terminals, or anywhere you prefer a lightweight monitoring solution.
|
||||
|
|
|
|||
BIN
assets/demo.webm
Normal file
BIN
assets/demo.webm
Normal file
Binary file not shown.
|
|
@ -191,7 +191,7 @@ impl App {
|
|||
}
|
||||
|
||||
let max_scroll = state
|
||||
.get_total_lenght()
|
||||
.get_total_length()
|
||||
.saturating_sub(area[0].height as usize)
|
||||
.saturating_add(1);
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ static STATUS_LINE_CACHE: OnceLock<RwLock<HashMap<u64, Line<'static>>>> = OnceLo
|
|||
|
||||
pub fn render_monitor_list(main_frame: &mut Frame, area: Rect, state: &mut DashboardViewState) {
|
||||
let available_height = area.height as usize;
|
||||
let max_scroll = state.get_total_lenght().saturating_sub(available_height);
|
||||
let max_scroll = state.get_total_length().saturating_sub(available_height);
|
||||
|
||||
if state.scroll_state.get_position() > max_scroll {
|
||||
state.scroll_state = state.scroll_state.position(max_scroll);
|
||||
|
|
@ -48,7 +48,7 @@ pub fn render_monitor_list(main_frame: &mut Frame, area: Rect, state: &mut Dashb
|
|||
let mut current_y = area.y as usize;
|
||||
let mut rendered_height = 0;
|
||||
let mut lines_skipped = 0;
|
||||
let half = state.get_total_lenght().saturating_div(2);
|
||||
let half = state.get_total_length().saturating_div(2);
|
||||
|
||||
for group in state.groups.iter() {
|
||||
let group_height = group.monitors.len() + BORDER_LINES_VIEW;
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ impl DashboardViewState {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn get_total_lenght(&self) -> usize {
|
||||
pub fn get_total_length(&self) -> usize {
|
||||
self.total_length
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue