From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <yew-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id BA1881FF15C for <inbox@lore.proxmox.com>; Fri, 30 May 2025 14:22:49 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B57B92E964; Fri, 30 May 2025 14:23:05 +0200 (CEST) From: Dominik Csapak <d.csapak@proxmox.com> To: yew-devel@lists.proxmox.com Date: Fri, 30 May 2025 14:21:51 +0200 Message-Id: <20250530122202.2779300-10-d.csapak@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250530122202.2779300-1-d.csapak@proxmox.com> References: <20250530122202.2779300-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.022 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [yew-devel] [PATCH yew-comp 09/20] rrd: use 'cross_pos' state instead of 'draw_cross' X-BeenThere: yew-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Yew framework devel list at Proxmox <yew-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/yew-devel>, <mailto:yew-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/yew-devel/> List-Post: <mailto:yew-devel@lists.proxmox.com> List-Help: <mailto:yew-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/yew-devel>, <mailto:yew-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Yew framework devel list at Proxmox <yew-devel@lists.proxmox.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: yew-devel-bounces@lists.proxmox.com Sender: "yew-devel" <yew-devel-bounces@lists.proxmox.com> reset the state of 'cross_pos' when we would reset 'draw_cross' then we can use `is_some()` instead of the draw_cross boolean, which saves us a property plus some indentation Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- src/rrd/graph.rs | 114 ++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 60 deletions(-) diff --git a/src/rrd/graph.rs b/src/rrd/graph.rs index 7f53c41..e2ac767 100644 --- a/src/rrd/graph.rs +++ b/src/rrd/graph.rs @@ -137,7 +137,6 @@ pub struct PwtRRDGraph { selection: Option<(usize, usize)>, view_range: Option<(usize, usize)>, captured_pointer_id: Option<i32>, - draw_cross: bool, cross_pos: Option<(i32, i32)>, tooltip_pos: Option<(f64, f64)>, tooltip_ref: NodeRef, @@ -548,53 +547,51 @@ impl PwtRRDGraph { } } - if self.draw_cross { - if let Some((x, y)) = self.cross_pos { - let idx = self.offset_to_time_index(x, data0); - - if let Some(t) = data0.get(idx) { - if let Some(v) = data1.get(idx) { - if v.is_finite() { - let px = compute_x(*t) as f32; - let py = compute_y(*v) as f32; - children.push( - Circle::new() - .class("pwt-rrd-selected-datapoint") - .position(px, py) - .r(5) - .into(), - ); - } + if let Some((x, y)) = self.cross_pos { + let idx = self.offset_to_time_index(x, data0); + + if let Some(t) = data0.get(idx) { + if let Some(v) = data1.get(idx) { + if v.is_finite() { + let px = compute_x(*t) as f32; + let py = compute_y(*v) as f32; + children.push( + Circle::new() + .class("pwt-rrd-selected-datapoint") + .position(px, py) + .r(5) + .into(), + ); } - if let Some(v) = data2.get(idx) { - if v.is_finite() { - let px = compute_x(*t) as f32; - let py = compute_y(*v) as f32; - children.push( - Circle::new() - .class("pwt-rrd-selected-datapoint") - .position(px, py) - .r(5) - .into(), - ); - } + } + if let Some(v) = data2.get(idx) { + if v.is_finite() { + let px = compute_x(*t) as f32; + let py = compute_y(*v) as f32; + children.push( + Circle::new() + .class("pwt-rrd-selected-datapoint") + .position(px, py) + .r(5) + .into(), + ); } } + } - let max_y = compute_y(min_data); - let min_x = self.layout.left_offset + self.layout.grid_border; - let max_x = self.layout.width - self.layout.grid_border; + let max_y = compute_y(min_data); + let min_x = self.layout.left_offset + self.layout.grid_border; + let max_x = self.layout.width - self.layout.grid_border; - let x = x.max(min_x as i32).min(max_x as i32); - let y = y.min(max_y as i32); + let x = x.max(min_x as i32).min(max_x as i32); + let y = y.min(max_y as i32); - children.push( - Path::new() - .class("pwt-rrd-cross") - .d(format!("M {x} 0 L {x} {max_y} M {min_x} {y} L {max_x} {y}")) - .into(), - ); - } + children.push( + Path::new() + .class("pwt-rrd-cross") + .d(format!("M {x} 0 L {x} {max_y} M {min_x} {y} L {max_x} {y}")) + .into(), + ); } Canvas::new() @@ -681,7 +678,6 @@ impl Component for PwtRRDGraph { selection: None, view_range: None, captured_pointer_id: None, - draw_cross: false, cross_pos: None, tooltip_pos: None, tooltip_ref: NodeRef::default(), @@ -724,11 +720,11 @@ impl Component for PwtRRDGraph { true } Msg::PointerEnter => { - self.draw_cross = true; + self.cross_pos = None; true } Msg::PointerLeave => { - self.draw_cross = false; + self.cross_pos = None; true } Msg::StartSelection(x, pointer_id) => { @@ -800,21 +796,19 @@ impl Component for PwtRRDGraph { let mut serie0_value = None; let mut serie1_value = None; - if self.draw_cross { - if let Some((x, _)) = self.cross_pos { - let (data0, data1, data2) = self.get_view_data(ctx); - let idx = self.offset_to_time_index(x, data0); - if let Some(t) = data0.get(idx) { - data_time = Some(format_date_time(*t)); - if let Some(v) = data1.get(idx) { - if v.is_finite() { - serie0_value = Some(render_value(props, *v)); - } + if let Some((x, _)) = self.cross_pos { + let (data0, data1, data2) = self.get_view_data(ctx); + let idx = self.offset_to_time_index(x, data0); + if let Some(t) = data0.get(idx) { + data_time = Some(format_date_time(*t)); + if let Some(v) = data1.get(idx) { + if v.is_finite() { + serie0_value = Some(render_value(props, *v)); } - if let Some(v) = data2.get(idx) { - if v.is_finite() { - serie1_value = Some(render_value(props, *v)); - } + } + if let Some(v) = data2.get(idx) { + if v.is_finite() { + serie1_value = Some(render_value(props, *v)); } } } @@ -824,7 +818,7 @@ impl Component for PwtRRDGraph { .node_ref(self.tooltip_ref.clone()) .attribute("role", "tooltip") .attribute("aria-live", "polite") - .attribute("data-show", (self.draw_cross && data_time.is_some()).then_some("")) + .attribute("data-show", (self.cross_pos.is_some() && data_time.is_some()).then_some("")) .class("pwt-tooltip") .class("pwt-tooltip-rich") .with_optional_child(match (self.serie0_visible, &props.serie0) { -- 2.39.5 _______________________________________________ yew-devel mailing list yew-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/yew-devel