Skip to content

Commit 30e56c6

Browse files
author
ada mandala
committed
fix gradient values
1 parent b1bff0b commit 30e56c6

File tree

4 files changed

+47
-10
lines changed

4 files changed

+47
-10
lines changed

packages/perspective-viewer-datagrid/test/js/column_style.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ test.describe("Column Style Tests", () => {
128128
await viewer.flush();
129129

130130
// Count the events;
131+
console.log(window.__events__);
131132
return window.__events__.length;
132133
});
133134

rust/perspective-viewer/src/rust/components/column_settings_sidebar/style_tab.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -204,19 +204,21 @@ pub fn StyleTab(p: &StyleTabProps) -> Html {
204204
NumberColumnStyleDefaultConfig,
205205
>(&renderer, &column_name, ty)
206206
.map(|(config, default_config)| {
207-
let on_change = Callback::from(move |config| {
208-
send_config(
209-
&renderer,
210-
&presentation,
211-
view.clone(),
212-
column_name.clone(),
213-
config,
214-
);
215-
});
207+
let on_change = {
208+
clone!(column_name, view);
209+
Callback::from(move |config| {
210+
send_config(
211+
&renderer,
212+
&presentation,
213+
view.clone(),
214+
column_name.clone(),
215+
config,
216+
);
217+
})};
216218
html_template! {
217219
<div class="item_title">{title.clone()}</div>
218220
<div class="style_contents">
219-
<NumberColumnStyle { config } {default_config} {on_change} />
221+
<NumberColumnStyle column_name={column_name.clone()} view={view.clone()} { config } {default_config} {on_change} />
220222
</div>
221223
}
222224
}),

rust/perspective-viewer/src/rust/components/number_column_style.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use super::form::number_input::*;
2222
use super::modal::*;
2323
use super::style::LocalStyle;
2424
use crate::config::*;
25+
use crate::js::JsPerspectiveView;
2526
use crate::utils::WeakScope;
2627
use crate::*;
2728

@@ -46,6 +47,7 @@ pub enum NumberColumnStyleMsg {
4647
NumberForeModeChanged(NumberForegroundMode),
4748
NumberBackModeChanged(NumberBackgroundMode),
4849
GradientChanged(Side, String),
50+
DefaultGradientChanged(f64),
4951
}
5052

5153
/// A `ColumnStyle` component is mounted to the window anchored at the screen
@@ -64,6 +66,9 @@ pub struct NumberColumnStyleProps {
6466

6567
#[prop_or_default]
6668
pub weak_link: WeakScope<NumberColumnStyle>,
69+
70+
pub view: Option<JsValue>,
71+
pub column_name: Option<String>,
6772
}
6873

6974
impl ModalLink<NumberColumnStyle> for NumberColumnStyleProps {
@@ -102,6 +107,23 @@ impl Component for NumberColumnStyle {
102107

103108
fn create(ctx: &Context<Self>) -> Self {
104109
ctx.set_modal_link();
110+
111+
if let Some(view) = ctx.props().view.clone() && let Some(column_name) = ctx.props().column_name.clone() {
112+
ctx.link().send_future(async {
113+
let view = view.unchecked_into::<JsPerspectiveView>();
114+
let min_max = view._get_min_max(column_name.into()).await.unwrap();
115+
let abs_max = min_max.unchecked_into::<js_sys::Array>()
116+
.to_vec()
117+
.iter()
118+
.map(|val| val.as_f64().unwrap())
119+
.fold(0.0, |accum, val| max!(accum, val.abs()));
120+
121+
let gradient_val = (abs_max * 100.).round() / 100.;
122+
123+
NumberColumnStyleMsg::DefaultGradientChanged(gradient_val)
124+
});
125+
}
126+
105127
Self::reset(
106128
&ctx.props().config.clone().unwrap_or_default(),
107129
&ctx.props().default_config.clone(),
@@ -262,9 +284,17 @@ impl Component for NumberColumnStyle {
262284
}
263285
};
264286

287+
tracing::info!("Gradient changed!");
265288
self.dispatch_config(ctx);
266289
false
267290
}
291+
NumberColumnStyleMsg::DefaultGradientChanged(gradient) => {
292+
self.fg_gradient = gradient;
293+
self.bg_gradient = gradient;
294+
self.default_config.fg_gradient = gradient;
295+
self.default_config.bg_gradient = gradient;
296+
true
297+
}
268298
}
269299
}
270300

@@ -451,6 +481,7 @@ impl NumberColumnStyle {
451481
/// When this config has changed, we must signal the wrapper element.
452482
fn dispatch_config(&self, ctx: &Context<Self>) {
453483
let mut config = self.config.clone();
484+
tracing::info!("Dispatching config! {config:?}");
454485
match &self.config {
455486
NumberColumnStyleConfig {
456487
pos_fg_color: Some(pos_color),

rust/perspective-viewer/src/rust/js/perspective.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ extern "C" {
121121
#[wasm_bindgen(method, catch, js_name = num_columns)]
122122
pub async fn _num_columns(this: &JsPerspectiveView) -> ApiResult<JsValue>;
123123

124+
#[wasm_bindgen(method, catch, js_name = get_min_max)]
125+
pub async fn _get_min_max(this: &JsPerspectiveView, colname: js_sys::JsString) -> ApiResult<JsValue>;
126+
124127
pub type JsPerspectiveViewConfig;
125128

126129
pub type JsPerspectiveViewConfigUpdate;

0 commit comments

Comments
 (0)