Skip to content

Commit 20868e5

Browse files
authored
Merge pull request #641 from GyulyVGC/x-axis-labels
Improve time values on the horizontal axis of the chart
2 parents 15014d0 + 9b071e5 commit 20868e5

File tree

4 files changed

+57
-8
lines changed

4 files changed

+57
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ All Sniffnet releases with the relative changes are documented in this file.
88
- Chinese ([#575](https://github.com/GyulyVGC/sniffnet/pull/575))
99
- Korean ([#604](https://github.com/GyulyVGC/sniffnet/pull/604))
1010
- Turkish ([#608](https://github.com/GyulyVGC/sniffnet/pull/608))
11+
- Improve time values on the horizontal axis of the chart ([#641](https://github.com/GyulyVGC/sniffnet/pull/641) — fixes [#619](https://github.com/GyulyVGC/sniffnet/issues/619))
1112
- Migrate to Iced 0.13 ([#618](https://github.com/GyulyVGC/sniffnet/pull/618))
1213
- Added support for Linux `loongarch64` (fixes [#592](https://github.com/GyulyVGC/sniffnet/issues/592))
1314

src/chart/types/traffic_chart.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use crate::gui::styles::types::palette::to_rgb_color;
1515
use crate::gui::types::message::Message;
1616
use crate::networking::types::traffic_direction::TrafficDirection;
1717
use crate::translations::translations::{incoming_translation, outgoing_translation};
18+
use crate::utils::formatted_strings::get_formatted_num_seconds;
1819
use crate::{ByteMultiple, ChartType, Language, StyleType};
1920

2021
/// Struct defining the chart to be displayed in gui run page
@@ -217,7 +218,10 @@ impl Chart<Message> for TrafficChart {
217218
&|bytes| ByteMultiple::formatted_string(bytes.abs() as u128)
218219
})
219220
.x_labels(min(6, x_labels))
220-
.x_label_formatter(&std::string::ToString::to_string)
221+
.x_label_formatter(
222+
#[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
223+
&|seconds| get_formatted_num_seconds(seconds.abs() as u128),
224+
)
221225
.draw()
222226
.unwrap();
223227

src/gui/styles/scrollbar.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,12 @@ impl ScrollbarType {
5050
}
5151

5252
#[allow(clippy::unused_self)]
53-
fn hovered(
54-
&self,
55-
style: &StyleType,
56-
is_mouse_over_x_scrollbar: bool,
57-
is_mouse_over_y_scrollbar: bool,
58-
) -> Style {
53+
fn hovered(&self, style: &StyleType, is_mouse_over_x: bool, is_mouse_over_y: bool) -> Style {
5954
let colors = style.get_palette();
6055
let ext = style.get_extension();
6156

6257
let [horizontal_rail, vertical_rail] =
63-
[is_mouse_over_x_scrollbar, is_mouse_over_y_scrollbar].map(|is_over| Rail {
58+
[is_mouse_over_x, is_mouse_over_y].map(|is_over| Rail {
6459
background: Some(Background::Color(Color {
6560
a: ext.alpha_round_borders,
6661
..ext.buttons_color

src/utils/formatted_strings.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,52 @@ pub fn get_path_termination_string(full_path: &str, i: usize) -> String {
152152
]
153153
.concat()
154154
}
155+
156+
pub fn get_formatted_num_seconds(num_seconds: u128) -> String {
157+
match num_seconds {
158+
0..3600 => format!("{:02}:{:02}", num_seconds / 60, num_seconds % 60),
159+
_ => format!(
160+
"{:02}:{:02}:{:02}",
161+
num_seconds / 3600,
162+
(num_seconds % 3600) / 60,
163+
num_seconds % 60
164+
),
165+
}
166+
}
167+
168+
#[cfg(test)]
169+
mod tests {
170+
use super::*;
171+
172+
#[test]
173+
fn test_formatted_num_seconds() {
174+
assert_eq!(get_formatted_num_seconds(0), "00:00");
175+
assert_eq!(get_formatted_num_seconds(1), "00:01");
176+
assert_eq!(get_formatted_num_seconds(28), "00:28");
177+
assert_eq!(get_formatted_num_seconds(59), "00:59");
178+
assert_eq!(get_formatted_num_seconds(60), "01:00");
179+
assert_eq!(get_formatted_num_seconds(61), "01:01");
180+
assert_eq!(get_formatted_num_seconds(119), "01:59");
181+
assert_eq!(get_formatted_num_seconds(120), "02:00");
182+
assert_eq!(get_formatted_num_seconds(121), "02:01");
183+
assert_eq!(get_formatted_num_seconds(3500), "58:20");
184+
assert_eq!(get_formatted_num_seconds(3599), "59:59");
185+
assert_eq!(get_formatted_num_seconds(3600), "01:00:00");
186+
assert_eq!(get_formatted_num_seconds(3601), "01:00:01");
187+
assert_eq!(get_formatted_num_seconds(3661), "01:01:01");
188+
assert_eq!(get_formatted_num_seconds(7139), "01:58:59");
189+
assert_eq!(get_formatted_num_seconds(7147), "01:59:07");
190+
assert_eq!(get_formatted_num_seconds(7199), "01:59:59");
191+
assert_eq!(get_formatted_num_seconds(7200), "02:00:00");
192+
assert_eq!(get_formatted_num_seconds(9999), "02:46:39");
193+
assert_eq!(get_formatted_num_seconds(36000), "10:00:00");
194+
assert_eq!(get_formatted_num_seconds(36001), "10:00:01");
195+
assert_eq!(get_formatted_num_seconds(36061), "10:01:01");
196+
assert_eq!(get_formatted_num_seconds(86400), "24:00:00");
197+
assert_eq!(get_formatted_num_seconds(123456789), "34293:33:09");
198+
assert_eq!(
199+
get_formatted_num_seconds(u128::MAX),
200+
"94522879700260684295381835397713392:04:15"
201+
);
202+
}
203+
}

0 commit comments

Comments
 (0)