/// Component to display a list of items. /// Iterates through the items and renders their name, description, tags, and reviews. use leptos::*; use crate::models::item::Item; #[component] pub fn ItemsList(items: ReadSignal>) -> impl IntoView { // Create a signal for selected items let (selected_items_signal, set_selected_items) = create_signal(Vec::::new()); view! {

{ "Items" }

    {move || items.get().iter().enumerate().map(|(i, item)| view! {
  • { item.name.clone() } - { item.description.clone() }

      { "Tags:" }

      {item.tags.iter().map(|(key, value)| view! {
    • { key.clone() + ": " + value }
    • }).collect::>()}

      { "Reviews:" }

      {item.reviews.iter().map(|review| view! {
    • { format!("Rating: {}/5 - {}", review.rating, review.content) }
    • }).collect::>()}
  • }).collect::>()}
// Comparison Table

{ "Comparison Table" }

{move || { let selected_indices = selected_items_signal.get(); selected_indices.iter().map(|&i| { let item = &items.get()[i]; view! { } }).collect::>() }}
{ "Item Name" } { "Description" } { "Tags" } { "Reviews" }
{ item.name.clone() } { item.description.clone() } {item.tags.iter().map(|(key, value)| view! { { key.clone() + ": " + value + " " } }).collect::>()} {item.reviews.iter().map(|review| view! { { format!("Rating: {}/5 ", review.rating) } }).collect::>()}
} }