1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
// ----------------------------------------------------------------------------
#[derive(PartialEq, Clone, Debug, Default, strum::AsRefStr, strum::EnumIter)]
/// Grouping either by asset categories, or by assignee groups.
pub enum SubTreeGrouping {
#[default]
#[strum(serialize = "by Category")]
ByCategory,
#[strum(serialize = "by Assignees")]
ByAssigneeGroup,
}
// ----------------------------------------------------------------------------
pub fn make_assignee_group_node_name(assignees: &Vec<String>, clip: usize) -> String {
let len = assignees.len();
match len.cmp(&clip) {
std::cmp::Ordering::Greater => {
format!("{} {}", &assignees[..clip].join(", "), "[...]")
}
_ => assignees[..len].join(", "),
}
}
// ----------------------------------------------------------------------------
mod tests {
// use super::*;
// #[test]
// fn make_tree() {
// let trees = AssetCollection::default().make_category_trees("APO");
// eprintln!("{:?}", trees);
// }
// #[test]
// fn make_assignee_group_trees() {
// let asset_coll = AssetCollection::default();
// let results = asset_coll.assignee_group_trees("APO");
// results
// .into_iter()
// .map(|o| {
// eprintln!("{:?}", o);
// o
// })
// .collect::<Vec<AssetTree>>();
// }
}