widgets: try and sort the computer todo list by completion state

This commit is contained in:
2026-06-23 09:19:55 +02:00
parent 0080b1239c
commit 7157d4bb39
+2 -1
View File
@@ -1,6 +1,7 @@
use std::collections::HashMap; use std::collections::HashMap;
use chrono::Duration; use chrono::Duration;
use itertools::Itertools;
use ratatui::{layout::Rect, style::Style, text::{Line, Text}, widgets::*}; use ratatui::{layout::Rect, style::Style, text::{Line, Text}, widgets::*};
use tui_skeleton::Block; use tui_skeleton::Block;
use ratatui::prelude::*; use ratatui::prelude::*;
@@ -16,7 +17,7 @@ impl Widget for TaskList<'_> {
let borders = Block::bordered().border_style(style::Color::Red).title("Computer Tasks"); let borders = Block::bordered().border_style(style::Color::Red).title("Computer Tasks");
let wrap_options_unfinished = textwrap::Options::new(area.width as usize).initial_indent("[ ] ").subsequent_indent(" "); let wrap_options_unfinished = textwrap::Options::new(area.width as usize).initial_indent("[ ] ").subsequent_indent(" ");
let wrap_options_finished = textwrap::Options::new(area.width as usize).initial_indent("[X] ").subsequent_indent(" "); let wrap_options_finished = textwrap::Options::new(area.width as usize).initial_indent("[X] ").subsequent_indent(" ");
let options: Vec<Text> = self.0.iter().map(|(text, is_finished)| { let options: Vec<Text> = self.0.iter().sorted_by(|a, b| Ord::cmp(a.1, b.1)).map(|(text, is_finished)| {
let (options, color) = if *is_finished { let (options, color) = if *is_finished {
(wrap_options_finished.clone(), style::Color::DarkGray) (wrap_options_finished.clone(), style::Color::DarkGray)
} else { } else {