diff --git a/src/utils.rs b/src/utils.rs
index fdb1e1c..2c74783 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -544,12 +544,14 @@ pub fn rewrite_urls(input_text: &str) -> String {
})
}
-// Append `m` and `k` for millions and thousands respectively
+// Format vote count to a string that will be displayed.
+// Append `m` and `k` for millions and thousands respectively, and
+// round to the nearest tenth.
pub fn format_num(num: i64) -> (String, String) {
let truncated = if num >= 1_000_000 || num <= -1_000_000 {
- format!("{}m", num / 1_000_000)
+ format!("{:.1}m", num as f64 / 1_000_000.0)
} else if num >= 1000 || num <= -1000 {
- format!("{}k", num / 1_000)
+ format!("{:.1}k", num as f64 / 1_000.0)
} else {
num.to_string()
};
@@ -628,3 +630,32 @@ pub async fn error(req: Request
, msg: String) -> Result, St
Ok(Response::builder().status(404).header("content-type", "text/html").body(body.into()).unwrap_or_default())
}
+
+#[cfg(test)]
+mod tests {
+ use super::format_num;
+
+ #[test]
+ fn format_num_works() {
+ assert_eq!(
+ format_num(567),
+ ("567".to_string(), "567".to_string())
+ );
+ assert_eq!(
+ format_num(1234),
+ ("1.2k".to_string(), "1234".to_string())
+ );
+ assert_eq!(
+ format_num(1999),
+ ("2.0k".to_string(), "1999".to_string())
+ );
+ assert_eq!(
+ format_num(1001),
+ ("1.0k".to_string(), "1001".to_string())
+ );
+ assert_eq!(
+ format_num(1_999_999),
+ ("2.0m".to_string(), "1999999".to_string())
+ );
+ }
+}
\ No newline at end of file
diff --git a/static/style.css b/static/style.css
index 195ceb8..2d3bf24 100644
--- a/static/style.css
+++ b/static/style.css
@@ -697,12 +697,12 @@ a.search_subreddit:hover {
.post_score {
padding-top: 16px;
+ padding-left: 12px;
font-size: 13px;
font-weight: bold;
- text-align: end;
color: var(--accent);
grid-area: post_score;
- text-align: end;
+ text-align: center;
border-radius: 5px 0 0 5px;
transition: 0.2s background;
}
@@ -712,7 +712,7 @@ a.search_subreddit:hover {
}
.post_header {
- margin: 15px 20px 5px 15px;
+ margin: 15px 20px 5px 12px;
grid-area: post_header;
}
@@ -724,7 +724,7 @@ a.search_subreddit:hover {
font-size: 16px;
font-weight: 500;
line-height: 1.5;
- margin: 5px 15px;
+ margin: 5px 15px 5px 12px;
grid-area: post_title;
}
@@ -1076,7 +1076,7 @@ summary.comment_data {
}
.compact .post_header {
- margin: 15px 15px 2.5px 15px;
+ margin: 15px 15px 2.5px 12px;
font-size: 14px;
}