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 [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id E7E4E1FF15C for <inbox@lore.proxmox.com>; Fri, 30 May 2025 14:22:19 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D9CD22E71B; Fri, 30 May 2025 14:22:35 +0200 (CEST) From: Dominik Csapak <d.csapak@proxmox.com> To: yew-devel@lists.proxmox.com Date: Fri, 30 May 2025 14:22:01 +0200 Message-Id: <20250530122202.2779300-20-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 19/20] rrd: refactor selection rectangle calculation 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> makes the view method a bit easier to read we can omit the subtraction for start and end here, since the selection must be int he correct range anyway. Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- src/rrd/graph.rs | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/rrd/graph.rs b/src/rrd/graph.rs index c54d288..5ffc29d 100644 --- a/src/rrd/graph.rs +++ b/src/rrd/graph.rs @@ -282,29 +282,18 @@ impl PwtRRDGraph { ]); } + // draw selection rectangle if let Some((start, end)) = &self.selection { - let start = (*start).min(data0.len() - 1); - let end = (*end).min(data0.len() - 1); - - match (data0.get(start), data0.get(end)) { + match (data0.get(*start), data0.get(*end)) { (Some(start_data), Some(end_data)) => { - let mut start_x = self.graph_space.compute_x(*start_data); - let mut end_x = self.graph_space.compute_x(*end_data); - - if start_x > end_x { - std::mem::swap(&mut start_x, &mut end_x); - } - - let (start_y, end_y) = - self.graph_space.get_y_range(CoordinateRange::InsideBorder); - + let (x, y, width, height) = self.get_selection_rect(*start_data, *end_data); children.push( Rect::new() .key("selection-rect") .class("pwt-rrd-selection") - .position(start_x as f32, end_y as f32) - .width((end_x - start_x) as f32) - .height((start_y - end_y) as f32) + .position(x, y) + .width(width) + .height(height) .into(), ); } @@ -397,6 +386,25 @@ impl PwtRRDGraph { .into() } + // returns x, y, width, height + fn get_selection_rect(&self, start: i64, end: i64) -> (f32, f32, f32, f32) { + let mut start_x = self.graph_space.compute_x(start); + let mut end_x = self.graph_space.compute_x(end); + + if start_x > end_x { + std::mem::swap(&mut start_x, &mut end_x); + } + + let (start_y, end_y) = self.graph_space.get_y_range(CoordinateRange::InsideBorder); + + ( + start_x as f32, + end_y as f32, + (end_x - start_x) as f32, + (start_y - end_y) as f32, + ) + } + fn offset_to_time_index(&self, x: i32, data0: &[i64]) -> usize { let t = self.graph_space.original_x(x as f64); let start_index = data0.partition_point(|&x| x < t); -- 2.39.5 _______________________________________________ yew-devel mailing list yew-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/yew-devel