@@ -33,14 +33,11 @@ use crate::components::editable_header::EditableHeaderProps;
3333use crate :: components:: expression_editor:: ExpressionEditorProps ;
3434use crate :: components:: style:: LocalStyle ;
3535use crate :: components:: type_icon:: TypeIconType ;
36- use crate :: custom_events:: CustomEvents ;
3736use crate :: presentation:: { ColumnLocator , ColumnSettingsTab , Presentation } ;
37+ use crate :: queries:: { can_render_column_styles, locator_name_or_default, locator_view_type} ;
3838use crate :: renderer:: Renderer ;
3939use crate :: session:: { Session , SessionMetadataRc } ;
40- use crate :: tasks:: {
41- EditExpression , HasCustomEvents , HasPresentation , HasRenderer , HasSession ,
42- can_render_column_styles, locator_name_or_default, locator_view_type,
43- } ;
40+ use crate :: tasks:: { delete_expr, save_expr, update_expr} ;
4441use crate :: utils:: PtrEqRc ;
4542use crate :: * ;
4643
@@ -64,13 +61,13 @@ pub struct ColumnSettingsPanelProps {
6461 /// View config snapshot — threaded from `SessionProps`.
6562 pub view_config : PtrEqRc < ViewConfig > ,
6663
64+ /// Per-column stats snapshot — threaded from `SessionProps`.
65+ pub column_stats : PtrEqRc < std:: collections:: HashMap < String , crate :: session:: ColumnStats > > ,
66+
6767 /// Selected theme name, threaded for PortalModal consumers.
6868 pub selected_theme : Option < String > ,
6969
7070 // State
71- #[ derivative( Debug = "ignore" ) ]
72- pub custom_events : CustomEvents ,
73-
7471 #[ derivative( Debug = "ignore" ) ]
7572 pub presentation : Presentation ,
7673
@@ -88,34 +85,11 @@ impl PartialEq for ColumnSettingsPanelProps {
8885 && self . plugin_name == other. plugin_name
8986 && self . metadata == other. metadata
9087 && self . view_config == other. view_config
88+ && self . column_stats == other. column_stats
9189 && self . selected_theme == other. selected_theme
9290 }
9391}
9492
95- impl HasCustomEvents for ColumnSettingsPanelProps {
96- fn custom_events ( & self ) -> & CustomEvents {
97- & self . custom_events
98- }
99- }
100-
101- impl HasPresentation for ColumnSettingsPanelProps {
102- fn presentation ( & self ) -> & Presentation {
103- & self . presentation
104- }
105- }
106-
107- impl HasRenderer for ColumnSettingsPanelProps {
108- fn renderer ( & self ) -> & Renderer {
109- & self . renderer
110- }
111- }
112-
113- impl HasSession for ColumnSettingsPanelProps {
114- fn session ( & self ) -> & Session {
115- & self . session
116- }
117- }
118-
11993#[ derive( Debug ) ]
12094pub enum ColumnSettingsPanelMsg {
12195 SetExprValue ( Rc < String > ) ,
@@ -239,11 +213,20 @@ impl Component for ColumnSettingsPanel {
239213 ColumnLocator :: Table ( _) => {
240214 tracing:: error!( "Tried to save non-expression column!" )
241215 } ,
242- ColumnLocator :: Expression ( name) => {
243- ctx. props ( ) . update_expr ( name. clone ( ) , new_expr)
244- } ,
216+ ColumnLocator :: Expression ( name) => update_expr (
217+ & ctx. props ( ) . session ,
218+ & ctx. props ( ) . renderer ,
219+ & ctx. props ( ) . presentation ,
220+ name. clone ( ) ,
221+ new_expr,
222+ ) ,
245223 ColumnLocator :: NewExpression => {
246- if let Err ( err) = ctx. props ( ) . save_expr ( new_expr) {
224+ if let Err ( err) = save_expr (
225+ & ctx. props ( ) . session ,
226+ & ctx. props ( ) . renderer ,
227+ & ctx. props ( ) . presentation ,
228+ new_expr,
229+ ) {
247230 tracing:: warn!( "{}" , err) ;
248231 }
249232 } ,
@@ -258,7 +241,12 @@ impl Component for ColumnSettingsPanel {
258241 } ,
259242 ColumnSettingsPanelMsg :: OnDelete ( ( ) ) => {
260243 if ctx. props ( ) . selected_column . is_saved_expr ( ) {
261- ctx. props ( ) . delete_expr ( & self . column_name ) . unwrap_or_log ( ) ;
244+ delete_expr (
245+ & ctx. props ( ) . session ,
246+ & ctx. props ( ) . renderer ,
247+ & self . column_name ,
248+ )
249+ . unwrap_or_log ( ) ;
262250 }
263251
264252 ctx. props ( ) . on_close . emit ( ( ) ) ;
@@ -347,8 +335,8 @@ impl Component for ColumnSettingsPanel {
347335 group_by_depth : ctx. props ( ) . view_config . group_by . len ( ) as u32 ,
348336 view_config : ctx. props ( ) . view_config . clone ( ) ,
349337 metadata : ctx. props ( ) . metadata . clone ( ) ,
338+ column_stats : ctx. props ( ) . column_stats . clone ( ) ,
350339 selected_theme : ctx. props ( ) . selected_theme . clone ( ) ,
351- custom_events : ctx. props ( ) . custom_events . clone ( ) ,
352340 presentation : ctx. props ( ) . presentation . clone ( ) ,
353341 renderer : ctx. props ( ) . renderer . clone ( ) ,
354342 session : ctx. props ( ) . session . clone ( ) ,
0 commit comments