11use leptos:: { html:: * , * } ;
22use thaw:: { Modal , ModalFooter , ModalProps } ;
33
4- use crate :: store:: { projects:: ProjectsStore , query:: QueryStore } ;
4+ use crate :: store:: {
5+ active_project:: ActiveProjectStore , projects:: ProjectsStore , query:: QueryStore ,
6+ } ;
57
68pub fn component ( show : RwSignal < bool > ) -> impl IntoView {
79 let projects_store = use_context :: < ProjectsStore > ( ) . unwrap ( ) ;
810 let query_store = use_context :: < QueryStore > ( ) . unwrap ( ) ;
911 let ( query_title, set_query_title) = create_signal ( String :: new ( ) ) ;
1012 let projects = create_memo ( move |_| projects_store. get_projects ( ) . unwrap ( ) ) ;
11- let ( project, set_project) = create_signal ( String :: new ( ) ) ;
13+ let active_project = use_context :: < ActiveProjectStore > ( ) . unwrap ( ) ;
14+ let ( project_name, set_project_name) =
15+ create_signal ( active_project. 0 . get_untracked ( ) . unwrap_or_default ( ) ) ;
16+ create_effect ( move |_| {
17+ if !projects. get ( ) . is_empty ( ) {
18+ set_project_name ( projects. get ( ) [ 0 ] . clone ( ) ) ;
19+ }
20+ } ) ;
21+
1222 let insert_query = create_action (
13- move |( query_db, key, project ) : & ( QueryStore , String , String ) | {
23+ move |( query_db, key, project_name ) : & ( QueryStore , String , String ) | {
1424 let query_db_clone = * query_db;
1525 let key = key. clone ( ) ;
16- let project = project . clone ( ) ;
26+ let project_name = project_name . clone ( ) ;
1727 async move {
18- query_db_clone. insert_query ( & key, & project) . await . unwrap ( ) ;
28+ query_db_clone
29+ . insert_query ( & key, & project_name)
30+ . await
31+ . unwrap ( ) ;
1932 }
2033 } ,
2134 ) ;
@@ -29,18 +42,21 @@ pub fn component(show: RwSignal<bool>) -> impl IntoView {
2942 . child(
3043 select( )
3144 . classes( "border-1 border-neutral-200 p-1 rounded-md w-full bg-white appearance-none" )
45+ . prop( "value" , project_name)
46+ . prop( "default_value" , "teszt" )
47+ . prop( "placeholder" , "Select project.." )
3248 . child( For ( ForProps {
3349 each: move || projects. get( ) ,
3450 key: |project| project. clone( ) ,
3551 children: move |p| {
3652 option( )
3753 . prop( "value" , & p)
38- . prop( "selected" , p == project ( ) )
54+ . prop( "selected" , project_name ( ) == p )
3955 . child( & p)
4056 } ,
4157 } ) )
4258 . on( ev:: change, move |e| {
43- set_project ( event_target_value( & e) ) ;
59+ set_project_name ( event_target_value( & e) ) ;
4460 } ) ,
4561 )
4662 . child(
@@ -63,7 +79,7 @@ pub fn component(show: RwSignal<bool>) -> impl IntoView {
6379 button( )
6480 . classes( "px-4 py-2 border-1 border-neutral-200 hover:bg-neutral-200 rounded-md" )
6581 . on( ev:: click, move |_| {
66- insert_query. dispatch( ( query_store, query_title( ) , project ( ) ) ) ;
82+ insert_query. dispatch( ( query_store, query_title( ) , project_name ( ) ) ) ;
6783 show. set( false ) ;
6884 } )
6985 . child( "Save" ) ,
0 commit comments