diff --git a/src/main.rs b/src/main.rs index 75d9a58..7d5d055 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,6 +51,7 @@ fn add(f: &String, x: &Option, tag: &Option) -> Result<(), Strin #[derive(Debug, Serialize, Clone)] struct Log { t: String, + d: u8, xs: Vec, } #[derive(Debug, Serialize, Clone)] @@ -66,25 +67,30 @@ fn log(f: &String, since: &Option) -> Result<(), String> { let tsheet = tsheet.sorted(); let mut result = vec![]; - let mut curr = Log{t: "".to_string(), xs: vec![]}; - for x in &tsheet.xs { + let mut curr = Log{t: "".to_string(), d: 0, xs: vec![]}; + for i in 0..tsheet.xs.len() { + let x = &tsheet.xs[i]; if curr.t != x.timestamp() { if curr.xs.len() > 0 { result.push(curr.clone()); } curr.xs.truncate(0); curr.t = x.timestamp(); + curr.d = 0; } + let d = match curr.xs.len() { + 0 => 1, + _ => ((tsheet.xs[i].t - tsheet.xs[i-1].t + 60*30) / (60*60)) as u8, + }; curr.t = x.timestamp(); - curr.xs.push(LogX{d: 0, x: x.x.clone()}); + curr.xs.push(LogX{d: d, x: x.x.clone()}); + curr.d += d; } if curr.xs.len() > 0 { result.push(curr.clone()); } - println!("{}", serde_yaml::to_string(&result).unwrap()); - - Err("not impl".to_string()) + Ok(()) } fn parse_time(since: &Option) -> Result {