Просмотр исходного кода

bin/tau: default rank is now None

Dastan-glitch 4 лет назад
Родитель
Сommit
83af5425c9

+ 2 - 2
bin/tau/tau-cli/src/filter.rs

@@ -45,9 +45,9 @@ pub fn apply_filter(tasks: &mut Vec<TaskInfo>, filter: &str) {
                 let value = kv[2].parse::<f32>().unwrap_or(0.0);
                 tasks.retain(|task| {
                     if filter.contains("lt") {
-                        task.rank < value
+                        task.rank < Some(value)
                     } else if filter.contains("gt") {
-                        task.rank > value
+                        task.rank > Some(value)
                     } else {
                         true
                     }

+ 4 - 3
bin/tau/tau-cli/src/primitives.rs

@@ -67,7 +67,7 @@ pub struct TaskInfo {
     pub assign: Vec<String>,
     pub project: Vec<String>,
     pub due: Option<i64>,
-    pub rank: f32,
+    pub rank: Option<f32>,
     pub created_at: i64,
     pub state: String,
     pub events: Vec<TaskEvent>,
@@ -123,7 +123,8 @@ pub fn task_from_cli(values: Vec<String>) -> Result<BaseTask> {
     for val in values {
         let field: Vec<&str> = val.split(':').collect();
         if field.len() == 1 {
-            title = field[0].into();
+            title.push_str(field[0].into());
+            title.push(' ');
             continue
         }
 
@@ -151,6 +152,6 @@ pub fn task_from_cli(values: Vec<String>) -> Result<BaseTask> {
             rank = Some(field[1].parse::<f32>()?);
         }
     }
-
+    let title = title.trim().into();
     Ok(BaseTask { title, desc, project, assign, due, rank })
 }

+ 5 - 4
bin/tau/tau-cli/src/view.rs

@@ -36,8 +36,8 @@ pub fn print_task_list(tasks: Vec<TaskInfo>, ws: String, filters: Vec<String>) -
 
     tasks.sort_by(|a, b| b.rank.partial_cmp(&a.rank).unwrap());
 
-    let mut min_rank = 0.0;
-    let mut max_rank = 0.0;
+    let mut min_rank = None;
+    let mut max_rank = None;
 
     if let Some(first) = tasks.first() {
         max_rank = first.rank;
@@ -58,7 +58,7 @@ pub fn print_task_list(tasks: Vec<TaskInfo>, ws: String, filters: Vec<String>) -
             ("", "", "", "")
         };
 
-        let rank = task.rank.to_string();
+        let rank = if let Some(r) = task.rank { r.to_string() } else { "".to_string() };
 
         table.add_row(Row::new(vec![
             Cell::new(&task.id.to_string()).style_spec(gen_style),
@@ -94,6 +94,7 @@ pub fn print_task_list(tasks: Vec<TaskInfo>, ws: String, filters: Vec<String>) -
 pub fn print_task_info(taskinfo: TaskInfo) -> Result<()> {
     let due = timestamp_to_date(taskinfo.due.unwrap_or(0), DateFormat::Date);
     let created_at = timestamp_to_date(taskinfo.created_at, DateFormat::DateTime);
+    let rank = if let Some(r) = taskinfo.rank { r.to_string() } else { "".to_string() };
 
     let mut table = table!(
         [Bd => "ref_id", &taskinfo.ref_id],
@@ -105,7 +106,7 @@ pub fn print_task_info(taskinfo: TaskInfo) -> Result<()> {
         [Bd =>"assign", taskinfo.assign.join(", ")],
         ["project", taskinfo.project.join(", ")],
         [Bd =>"due", due],
-        ["rank", &taskinfo.rank.to_string()],
+        ["rank", rank],
         [Bd =>"created_at", created_at],
         ["current_state", &taskinfo.state]);
 

+ 2 - 4
bin/tau/taud/src/jsonrpc.rs

@@ -106,7 +106,7 @@ impl JsonRpcInterface {
             &task.desc,
             &self.nickname,
             task.due,
-            task.rank.unwrap_or(0.0),
+            task.rank,
             &self.dataset_path,
         )?;
         new_task.set_project(&task.project);
@@ -368,9 +368,7 @@ impl JsonRpcInterface {
             let rank_opt = fields.get("rank");
             if let Some(rank) = rank_opt {
                 let rank: Option<f32> = serde_json::from_value(rank.clone())?;
-                if let Some(r) = rank {
-                    task.set_rank(r);
-                }
+                task.set_rank(rank);
             }
         }
 

+ 3 - 3
bin/tau/taud/src/task_info.rs

@@ -70,7 +70,7 @@ pub struct TaskInfo {
     assign: TaskAssigns,
     project: TaskProjects,
     due: Option<Timestamp>,
-    rank: f32,
+    rank: Option<f32>,
     created_at: Timestamp,
     state: String,
     events: TaskEvents,
@@ -84,7 +84,7 @@ impl TaskInfo {
         desc: &str,
         owner: &str,
         due: Option<Timestamp>,
-        rank: f32,
+        rank: Option<f32>,
         dataset_path: &Path,
     ) -> TaudResult<Self> {
         // generate ref_id
@@ -200,7 +200,7 @@ impl TaskInfo {
         self.set_event("comment", &c.author, &c.content);
     }
 
-    pub fn set_rank(&mut self, r: f32) {
+    pub fn set_rank(&mut self, r: Option<f32>) {
         debug!(target: "tau", "TaskInfo::set_rank()");
         self.rank = r;
     }