Added customers overview, booking detail dialog and about dialog.
							parent
							
								
									952f8fbe94
								
							
						
					
					
						commit
						549ec86684
					
				
											
												Binary file not shown.
											
										
									
								| 
		 After Width: | Height: | Size: 4.0 KiB  | 
											
												Binary file not shown.
											
										
									
								| 
		 After Width: | Height: | Size: 97 KiB  | 
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								@ -0,0 +1,58 @@
 | 
			
		||||
use leptos::*;
 | 
			
		||||
use crate::backend::customer::get_customers;
 | 
			
		||||
use crate::backend::data::ApiResponse;
 | 
			
		||||
use crate::locales::trl;
 | 
			
		||||
 | 
			
		||||
#[component]
 | 
			
		||||
pub fn customers() -> impl IntoView {
 | 
			
		||||
    let customers = create_blocking_resource(||(), |_| get_customers());
 | 
			
		||||
 | 
			
		||||
    view! {
 | 
			
		||||
        <h1>{trl("Customers")}</h1>
 | 
			
		||||
        <div class="row mb-3">
 | 
			
		||||
            <div class="card">
 | 
			
		||||
            <div class="card-body">
 | 
			
		||||
                <Transition fallback=move || view! {<div>"Loading"</div>}>
 | 
			
		||||
                    <table class="table card-table">
 | 
			
		||||
                        <thead>
 | 
			
		||||
                            <tr>
 | 
			
		||||
                                <th>{trl("Full name")}</th>
 | 
			
		||||
                                <th>{trl("E-mail")}</th>
 | 
			
		||||
                                <th>{trl("Phone")}</th>
 | 
			
		||||
                            </tr>
 | 
			
		||||
                        </thead>
 | 
			
		||||
                {
 | 
			
		||||
                    customers.get().map(|c| match c {
 | 
			
		||||
                        Ok(c) => {match c {
 | 
			
		||||
                            ApiResponse::Data(c) => {
 | 
			
		||||
                                view! {
 | 
			
		||||
                                <tbody>
 | 
			
		||||
                                <For each=move || c.clone() key=|i| i.id() let:data>
 | 
			
		||||
                                    <tr>
 | 
			
		||||
                                        <td>{data.full_name}</td>
 | 
			
		||||
                                        <td>{data.email}</td>
 | 
			
		||||
                                        <td>{data.phone}</td>
 | 
			
		||||
                                    </tr>
 | 
			
		||||
                                </For>
 | 
			
		||||
                                </tbody>
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            ApiResponse::Error(e) => {
 | 
			
		||||
                                view! {<tbody class="table-border-bottom-0">
 | 
			
		||||
                                <tr><td colspan=3>{trl("Something went wrong")}<br/>{e.to_string()}</td></tr></tbody>}
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        }
 | 
			
		||||
                        Err(e) => {
 | 
			
		||||
                            view! {<tbody class="table-border-bottom-0">
 | 
			
		||||
                            <tr><td colspan=3>{trl("Something went wrong")}<br/>{e.to_string()}</td></tr></tbody>}
 | 
			
		||||
                        }
 | 
			
		||||
                    })
 | 
			
		||||
                }
 | 
			
		||||
                    </table>
 | 
			
		||||
                </Transition>
 | 
			
		||||
            </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue