|
| 1 | +use std::rc::Rc; |
| 2 | + |
1 | 3 | use leptos::*; |
2 | 4 | use thaw::{Modal, ModalFooter}; |
3 | 5 |
|
4 | | -use crate::store::{projects::ProjectsStore, queries::QueriesStore}; |
| 6 | +use crate::store::queries::QueriesStore; |
5 | 7 |
|
6 | 8 | #[component] |
7 | | -pub fn AddCustomQuery(show: RwSignal<bool>) -> impl IntoView { |
8 | | - let projects_store = expect_context::<ProjectsStore>(); |
| 9 | +pub fn AddCustomQuery(show: RwSignal<bool>, project_id: String) -> impl IntoView { |
| 10 | + let project_id = Rc::new(project_id); |
| 11 | + let project_id_clone = project_id.clone(); |
9 | 12 | let query_store = expect_context::<QueriesStore>(); |
10 | | - let (query_title, set_query_title) = create_signal(String::new()); |
11 | | - //let projects = create_memo(move |_| projects_store.get_projects().unwrap()); |
12 | | - |
13 | | - let (project_name, set_project_name) = create_signal("".to_string()); |
14 | | - // create_effect(move |_| { |
15 | | - // if !projects.get().is_empty() { |
16 | | - // set_project_name(projects.get()[0].clone()); |
17 | | - // } |
18 | | - // }); |
19 | | - |
| 13 | + let (title, set_title) = create_signal(String::new()); |
20 | 14 | let insert_query = create_action( |
21 | | - move |(query_db, key, project_name): &(QueriesStore, String, String)| { |
| 15 | + move |(query_db, project_id, title): &(QueriesStore, String, String)| { |
22 | 16 | let query_db_clone = *query_db; |
23 | | - let key = key.clone(); |
24 | | - let project_name = project_name.clone(); |
| 17 | + let project_id = project_id.clone(); |
| 18 | + let title = title.clone(); |
25 | 19 | async move { |
26 | | - query_db_clone.insert_query(&key, &project_name).await; |
| 20 | + query_db_clone.insert_query(&project_id, &title).await; |
27 | 21 | } |
28 | 22 | }, |
29 | 23 | ); |
30 | 24 |
|
31 | 25 | view! { |
32 | 26 | <Modal show=show title="Save query!"> |
33 | 27 | <div class="flex flex-col gap-2"> |
34 | | - <select |
35 | | - class="border-1 border-neutral-200 p-1 rounded-md w-full bg-white appearance-none" |
36 | | - value=project_name |
37 | | - default_value="teszt" |
38 | | - placeholder="Select project.." |
39 | | - >// <For |
40 | | - // each=move || projects.get() |
41 | | - // key=|project| project.clone() |
42 | | - // children=move |p| { |
43 | | - // view! { |
44 | | - // <option value=&p selected=project_name() == p> |
45 | | - // {p} |
46 | | - // </option> |
47 | | - // } |
48 | | - // } |
49 | | - // /> |
50 | | - |
51 | | - </select> |
| 28 | + <p>Project: {&*project_id_clone}</p> |
52 | 29 | <input |
53 | 30 | class="border-1 border-neutral-200 p-1 rounded-md w-full" |
54 | 31 | type="text" |
55 | 32 | placeholder="Add query name.." |
56 | | - value=query_title |
57 | | - on:input=move |e| set_query_title(event_target_value(&e)) |
| 33 | + value=title |
| 34 | + on:input=move |e| set_title(event_target_value(&e)) |
58 | 35 | /> |
59 | 36 | </div> |
60 | 37 |
|
61 | 38 | <ModalFooter slot> |
62 | 39 | <div class="flex gap-2 justify-end"> |
63 | 40 | <button |
64 | 41 | class="px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md" |
65 | | - on:click=move |_| { |
66 | | - insert_query.dispatch((query_store, query_title(), project_name())); |
67 | | - show.set(false); |
| 42 | + on:click={ |
| 43 | + let project_id = project_id.clone(); |
| 44 | + move |_| { |
| 45 | + insert_query.dispatch((query_store, project_id.to_string(), title())); |
| 46 | + show.set(false); |
| 47 | + } |
68 | 48 | } |
69 | 49 | > |
70 | 50 |
|
|
0 commit comments