From fa414dd8cd8d11dc33ea80bbdd6a861b4b36cfb8 Mon Sep 17 00:00:00 2001 From: Janakarajan Natarajan Date: Tue, 14 Feb 2023 23:02:46 +0000 Subject: [PATCH] Add favicon for APerf Also, fix a bug in the visualizer when directories are specified that are not in the $PWD. --- src/bin/html_files/favicon.ico | Bin 0 -> 34494 bytes src/bin/html_files/index.html | 2 +- src/bin/visualizer.rs | 13 ++++++++++--- src/lib.rs | 13 +++++++------ 4 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 src/bin/html_files/favicon.ico diff --git a/src/bin/html_files/favicon.ico b/src/bin/html_files/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e9d63b679035f5dbd0dea5a67863b40c899113de GIT binary patch literal 34494 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 literal 0 HcmV?d00001 diff --git a/src/bin/html_files/index.html b/src/bin/html_files/index.html index f91ab2d3..9f883a83 100644 --- a/src/bin/html_files/index.html +++ b/src/bin/html_files/index.html @@ -5,7 +5,7 @@ -

Performance Data Assistant

+

APerf

diff --git a/src/bin/visualizer.rs b/src/bin/visualizer.rs index eb2a75ad..4ea7ee77 100644 --- a/src/bin/visualizer.rs +++ b/src/bin/visualizer.rs @@ -1,6 +1,6 @@ use clap::Parser; use aperf::VISUALIZATION_DATA; -use tide::http::mime; +use tide::http::{mime, Body}; use tide::{Response, StatusCode}; use std::path::Path; @@ -28,6 +28,7 @@ async fn main() -> Result<(), std::io::Error> { tide::log::start(); let dirs: Vec = args.run_directory; + let mut dir_paths: Vec = Vec::new(); let mut dir_stems: Vec = Vec::new(); for dir in dirs { let path = Path::new(&dir); @@ -35,9 +36,10 @@ async fn main() -> Result<(), std::io::Error> { println!("Cannot process two directories with the same name"); return Ok(()) } - dir_stems.push(path.file_stem().unwrap().to_str().unwrap().to_string()); + dir_stems.push(path.clone().file_stem().unwrap().to_str().unwrap().to_string()); + dir_paths.push(path.to_str().unwrap().to_string()); } - for dir in dir_stems { + for dir in dir_paths { let name; name = VISUALIZATION_DATA.lock().unwrap().init_visualizers(dir.to_owned()).unwrap(); VISUALIZATION_DATA.lock().unwrap().unpack_data(name).unwrap(); @@ -50,6 +52,11 @@ async fn main() -> Result<(), std::io::Error> { let html = include_str!("html_files/index.html"); Ok(create_response(StatusCode::Ok, html, mime::HTML)) }); + app.at("favicon.ico").get(|_| async move { + let ico = include_bytes!("html_files/favicon.ico"); + let response = Response::builder(StatusCode::Ok).content_type(mime::ICO).body(Body::from_bytes(ico.to_vec())).build(); + Ok(response) + }); /* Serve JavaScript files */ app.at("/html_files/:name").get(|req: tide::Request<()>| async move { let name = req.param("name").unwrap(); diff --git a/src/lib.rs b/src/lib.rs index 94235323..a21fd2df 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -174,10 +174,10 @@ impl Default for PerformanceData { } pub fn get_file(dir: String, name: String) -> Result { - for path in fs::read_dir(dir.clone()).unwrap() { + for path in fs::read_dir(dir.clone())? { let mut file_name = path?.file_name().into_string().unwrap(); if file_name.contains(&name) { - file_name = dir + "/" + &file_name; + file_name = dir + &file_name; return Ok(fs::OpenOptions::new() .read(true) .open(file_name) @@ -208,13 +208,14 @@ impl VisualizationData { } pub fn init_visualizers(&mut self, dir: String) -> Result { - let params = InitParams::new(dir.clone()); - self.run_names.push(dir.clone()); + let dir_path = Path::new(&dir); + let dir_name = dir_path.file_stem().unwrap().to_str().unwrap().to_string(); + self.run_names.push(dir_name.clone()); for (_name, visualizer) in self.visualizers.iter_mut() { - visualizer.init_visualizer(dir.clone(), params.run_name.clone())?; + visualizer.init_visualizer(dir.clone(), dir_name.clone())?; } - Ok(params.run_name.clone()) + Ok(dir_name.clone()) } pub fn add_visualizer(&mut self, name: String, dv: visualizer::DataVisualizer) {