@@ -20,7 +20,9 @@ class ProjectState(BaseModel):
2020 selected_relation : ModelRelationship | None = None
2121
2222 render_models_fn : Callable | None = None
23+ render_model_editor_fn : Callable | None = None
2324 select_model_fn : Callable | None = None
25+ deselect_model_fn : Callable | None = None
2426
2527 project_name : str = ""
2628 use_postgres : bool = False
@@ -70,16 +72,22 @@ def add_model(self, model_name: str) -> None:
7072 n .notify_validation_error (exc )
7173
7274 def delete_model (self , model : Model ) -> None :
73- if model not in self .models :
75+ if (
76+ model not in self .models
77+ or self .deselect_model_fn is None
78+ or self .render_models_fn is None
79+ ):
7480 ui .notify ("Something went wrong..." , type = "warning" )
7581 return
82+
7683 self .models .remove (model )
77- if self .selected_model == model :
78- self .selected_model = None
79- if self .render_models_fn :
80- self .render_models_fn ()
84+ self .deselect_model_fn ()
85+ self .render_models_fn ()
8186
8287 def update_model_name (self , model : Model , new_name : str ) -> None :
88+ if model .name == new_name :
89+ return
90+
8391 if any (m .name == new_name for m in self .models if m != model ):
8492 n .notify_model_exists (new_name )
8593 return
@@ -88,16 +96,31 @@ def update_model_name(self, model: Model, new_name: str) -> None:
8896 model .name = new_name
8997 self ._update_relationships_for_rename (old_name , new_name )
9098
99+ if self .select_model_fn and model == self .selected_model :
100+ self .select_model_fn (model )
101+
91102 if self .render_models_fn :
92103 self .render_models_fn ()
93104
105+ self .render_model_editor_fn ()
106+
94107 def select_model (self , model : Model ) -> None :
95- if self .select_model_fn is None :
108+ print ("selecting" )
109+ if (
110+ self .select_model_fn is None
111+ or self .render_models_fn is None
112+ or self .deselect_model_fn is None
113+ ):
96114 n .notify_something_went_wrong ()
97115 return
98116 self .selected_model = model
99117 self .select_model_fn (model )
100118
119+ if model not in self .models :
120+ self .deselect_model_fn ()
121+
122+ self .render_models_fn ()
123+
101124 def get_project_spec (self ) -> ProjectSpec :
102125 return ProjectSpec (
103126 project_name = self .project_name ,
0 commit comments