This is an automated email from the ASF dual-hosted git repository.
piotr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/master by this push:
new ebd4e3fa9 chore(deps): upgrade to yew 0.22 and yew-router 0.19 (#2467)
ebd4e3fa9 is described below
commit ebd4e3fa9fbb2796e130d56cc80ebe951b252651
Author: Hubert Gruszecki <[email protected]>
AuthorDate: Wed Dec 10 14:21:51 2025 +0100
chore(deps): upgrade to yew 0.22 and yew-router 0.19 (#2467)
Remove yew-hooks dependency (incompatible with yew 0.22) and implement
custom use_size hook. Replace use_async with standard yew patterns.
---
Cargo.lock | 373 +++------------------
DEPENDENCIES.md | 31 +-
core/bench/dashboard/frontend/Cargo.toml | 7 +-
.../frontend/src/components/chart/single_chart.rs | 2 +-
.../frontend/src/components/chart/trend_chart.rs | 2 +-
.../selectors/recent_benchmarks_selector.rs | 53 ++-
core/bench/dashboard/frontend/src/hooks/mod.rs | 20 ++
.../bench/dashboard/frontend/src/hooks/use_size.rs | 75 +++++
core/bench/dashboard/frontend/src/main.rs | 1 +
9 files changed, 186 insertions(+), 378 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index d1d42d46f..8e8525388 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -391,12 +391,6 @@ version = "1.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
-[[package]]
-name = "anymap2"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"
-
[[package]]
name = "apache-avro"
version = "0.17.0"
@@ -974,7 +968,7 @@ source =
"registry+https://github.com/rust-lang/crates.io-index"
checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef"
dependencies = [
"fastrand",
- "gloo-timers 0.3.0",
+ "gloo-timers",
"tokio",
]
@@ -1028,7 +1022,7 @@ dependencies = [
"charming",
"chrono",
"getrandom 0.3.4",
- "gloo 0.11.0",
+ "gloo",
"js-sys",
"serde_json",
"thiserror 2.0.17",
@@ -1036,7 +1030,6 @@ dependencies = [
"wasm-bindgen",
"web-sys",
"yew",
- "yew-hooks",
"yew-router",
]
@@ -1314,12 +1307,6 @@ dependencies = [
"syn 2.0.111",
]
-[[package]]
-name = "boolinator"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9"
-
[[package]]
name = "borsh"
version = "1.6.0"
@@ -1552,7 +1539,7 @@ dependencies = [
"handlebars",
"js-sys",
"serde",
- "serde-wasm-bindgen 0.6.5",
+ "serde-wasm-bindgen",
"serde_json",
"serde_with",
"wasm-bindgen",
@@ -3556,74 +3543,23 @@ dependencies = [
"walkdir",
]
-[[package]]
-name = "gloo"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d"
-dependencies = [
- "gloo-console 0.2.3",
- "gloo-dialogs 0.1.1",
- "gloo-events 0.1.2",
- "gloo-file 0.2.3",
- "gloo-history 0.1.5",
- "gloo-net 0.3.1",
- "gloo-render 0.1.1",
- "gloo-storage 0.2.2",
- "gloo-timers 0.2.6",
- "gloo-utils 0.1.7",
- "gloo-worker 0.2.1",
-]
-
-[[package]]
-name = "gloo"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd35526c28cc55c1db77aed6296de58677dbab863b118483a27845631d870249"
-dependencies = [
- "gloo-console 0.3.0",
- "gloo-dialogs 0.2.0",
- "gloo-events 0.2.0",
- "gloo-file 0.3.0",
- "gloo-history 0.2.2",
- "gloo-net 0.4.0",
- "gloo-render 0.2.0",
- "gloo-storage 0.3.0",
- "gloo-timers 0.3.0",
- "gloo-utils 0.2.0",
- "gloo-worker 0.4.0",
-]
-
[[package]]
name = "gloo"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d15282ece24eaf4bd338d73ef580c6714c8615155c4190c781290ee3fa0fd372"
dependencies = [
- "gloo-console 0.3.0",
- "gloo-dialogs 0.2.0",
- "gloo-events 0.2.0",
- "gloo-file 0.3.0",
- "gloo-history 0.2.2",
- "gloo-net 0.5.0",
- "gloo-render 0.2.0",
- "gloo-storage 0.3.0",
- "gloo-timers 0.3.0",
- "gloo-utils 0.2.0",
- "gloo-worker 0.5.0",
-]
-
-[[package]]
-name = "gloo-console"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f"
-dependencies = [
- "gloo-utils 0.1.7",
- "js-sys",
- "serde",
- "wasm-bindgen",
- "web-sys",
+ "gloo-console",
+ "gloo-dialogs",
+ "gloo-events",
+ "gloo-file",
+ "gloo-history",
+ "gloo-net",
+ "gloo-render",
+ "gloo-storage",
+ "gloo-timers",
+ "gloo-utils",
+ "gloo-worker",
]
[[package]]
@@ -3632,23 +3568,13 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a17868f56b4a24f677b17c8cb69958385102fa879418052d60b50bc1727e261"
dependencies = [
- "gloo-utils 0.2.0",
+ "gloo-utils",
"js-sys",
"serde",
"wasm-bindgen",
"web-sys",
]
-[[package]]
-name = "gloo-dialogs"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6"
-dependencies = [
- "wasm-bindgen",
- "web-sys",
-]
-
[[package]]
name = "gloo-dialogs"
version = "0.2.0"
@@ -3659,16 +3585,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "gloo-events"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc"
-dependencies = [
- "wasm-bindgen",
- "web-sys",
-]
-
[[package]]
name = "gloo-events"
version = "0.2.0"
@@ -3679,18 +3595,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "gloo-file"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7"
-dependencies = [
- "gloo-events 0.1.2",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
-]
-
[[package]]
name = "gloo-file"
version = "0.3.0"
@@ -3698,28 +3602,12 @@ source =
"registry+https://github.com/rust-lang/crates.io-index"
checksum = "97563d71863fb2824b2e974e754a81d19c4a7ec47b09ced8a0e6656b6d54bd1f"
dependencies = [
"futures-channel",
- "gloo-events 0.2.0",
+ "gloo-events",
"js-sys",
"wasm-bindgen",
"web-sys",
]
-[[package]]
-name = "gloo-history"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f"
-dependencies = [
- "gloo-events 0.1.2",
- "gloo-utils 0.1.7",
- "serde",
- "serde-wasm-bindgen 0.5.0",
- "serde_urlencoded",
- "thiserror 1.0.69",
- "wasm-bindgen",
- "web-sys",
-]
-
[[package]]
name = "gloo-history"
version = "0.2.2"
@@ -3727,58 +3615,16 @@ source =
"registry+https://github.com/rust-lang/crates.io-index"
checksum = "903f432be5ba34427eac5e16048ef65604a82061fe93789f2212afc73d8617d6"
dependencies = [
"getrandom 0.2.16",
- "gloo-events 0.2.0",
- "gloo-utils 0.2.0",
+ "gloo-events",
+ "gloo-utils",
"serde",
- "serde-wasm-bindgen 0.6.5",
+ "serde-wasm-bindgen",
"serde_urlencoded",
"thiserror 1.0.69",
"wasm-bindgen",
"web-sys",
]
-[[package]]
-name = "gloo-net"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a66b4e3c7d9ed8d315fd6b97c8b1f74a7c6ecbbc2320e65ae7ed38b7068cc620"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-sink",
- "gloo-utils 0.1.7",
- "http 0.2.12",
- "js-sys",
- "pin-project",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
-[[package]]
-name = "gloo-net"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ac9e8288ae2c632fa9f8657ac70bfe38a1530f345282d7ba66a1f70b72b7dc4"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-sink",
- "gloo-utils 0.2.0",
- "http 0.2.12",
- "js-sys",
- "pin-project",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
[[package]]
name = "gloo-net"
version = "0.5.0"
@@ -3788,7 +3634,7 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-sink",
- "gloo-utils 0.2.0",
+ "gloo-utils",
"http 0.2.12",
"js-sys",
"pin-project",
@@ -3800,16 +3646,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "gloo-render"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764"
-dependencies = [
- "wasm-bindgen",
- "web-sys",
-]
-
[[package]]
name = "gloo-render"
version = "0.2.0"
@@ -3820,28 +3656,13 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "gloo-storage"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480"
-dependencies = [
- "gloo-utils 0.1.7",
- "js-sys",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "wasm-bindgen",
- "web-sys",
-]
-
[[package]]
name = "gloo-storage"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbc8031e8c92758af912f9bc08fbbadd3c6f3cfcbf6b64cdf3d6a81f0139277a"
dependencies = [
- "gloo-utils 0.2.0",
+ "gloo-utils",
"js-sys",
"serde",
"serde_json",
@@ -3850,16 +3671,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "gloo-timers"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
[[package]]
name = "gloo-timers"
version = "0.3.0"
@@ -3872,19 +3683,6 @@ dependencies = [
"wasm-bindgen",
]
-[[package]]
-name = "gloo-utils"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e"
-dependencies = [
- "js-sys",
- "serde",
- "serde_json",
- "wasm-bindgen",
- "web-sys",
-]
-
[[package]]
name = "gloo-utils"
version = "0.2.0"
@@ -3898,42 +3696,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "gloo-worker"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a"
-dependencies = [
- "anymap2",
- "bincode 1.3.3",
- "gloo-console 0.2.3",
- "gloo-utils 0.1.7",
- "js-sys",
- "serde",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
-[[package]]
-name = "gloo-worker"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76495d3dd87de51da268fa3a593da118ab43eb7f8809e17eb38d3319b424e400"
-dependencies = [
- "bincode 1.3.3",
- "futures",
- "gloo-utils 0.2.0",
- "gloo-worker-macros",
- "js-sys",
- "pinned",
- "serde",
- "thiserror 1.0.69",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
[[package]]
name = "gloo-worker"
version = "0.5.0"
@@ -3942,7 +3704,7 @@ checksum =
"085f262d7604911c8150162529cefab3782e91adb20202e8658f7275d2aefe5d"
dependencies = [
"bincode 1.3.3",
"futures",
- "gloo-utils 0.2.0",
+ "gloo-utils",
"gloo-worker-macros",
"js-sys",
"pinned",
@@ -5044,9 +4806,9 @@ checksum =
"e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2"
[[package]]
name = "implicit-clone"
-version = "0.4.9"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8a9aa791c7b5a71b636b7a68207fdebf171ddfc593d9c8506ec4cbc527b6a84"
+checksum = "1689b939ee35e3a075b0834b5672efd43aec8a6e81a1c6002b76a5ca2f211ae0"
dependencies = [
"implicit-clone-derive",
"indexmap 2.12.1",
@@ -7071,23 +6833,6 @@ dependencies = [
"yansi",
]
-[[package]]
-name = "prokio"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488"
-dependencies = [
- "futures",
- "gloo 0.8.1",
- "num_cpus",
- "once_cell",
- "pin-project",
- "pinned",
- "tokio",
- "tokio-stream",
- "wasm-bindgen-futures",
-]
-
[[package]]
name = "prometheus-client"
version = "0.24.0"
@@ -8143,17 +7888,6 @@ dependencies = [
"serde_derive",
]
-[[package]]
-name = "serde-wasm-bindgen"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e"
-dependencies = [
- "js-sys",
- "serde",
- "wasm-bindgen",
-]
-
[[package]]
name = "serde-wasm-bindgen"
version = "0.6.5"
@@ -9387,6 +9121,23 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "tokise"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "decf97738ce15b9e9cc1671ea29b0f6c56538719e1a092d19cc2134bf144e40e"
+dependencies = [
+ "futures",
+ "gloo",
+ "num_cpus",
+ "once_cell",
+ "pin-project",
+ "pinned",
+ "tokio",
+ "tokio-stream",
+ "wasm-bindgen-futures",
+]
+
[[package]]
name = "toml"
version = "0.8.23"
@@ -10884,22 +10635,22 @@ dependencies = [
[[package]]
name = "yew"
-version = "0.21.0"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f1a03f255c70c7aa3e9c62e15292f142ede0564123543c1cc0c7a4f31660cac"
+checksum = "3346273ed61b636f5d84e6c696d40f380045b5565b36c5c47f8fc634b8bf5be6"
dependencies = [
"console_error_panic_hook",
"futures",
- "gloo 0.10.0",
+ "gloo",
"implicit-clone",
"indexmap 2.12.1",
"js-sys",
- "prokio",
"rustversion",
"serde",
"slab",
- "thiserror 1.0.69",
+ "thiserror 2.0.17",
"tokio",
+ "tokise",
"tracing",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -10907,44 +10658,28 @@ dependencies = [
"yew-macro",
]
-[[package]]
-name = "yew-hooks"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "640157ac2d80cf6bf5e7fe4143b90cd6c9ef61c9cb6180f60a50c3074521a142"
-dependencies = [
- "gloo 0.11.0",
- "js-sys",
- "log",
- "serde",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "yew",
-]
-
[[package]]
name = "yew-macro"
-version = "0.21.0"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02fd8ca5166d69e59f796500a2ce432ff751edecbbb308ca59fd3fe4d0343de2"
+checksum = "479e94d645dde3749e81d488c1d32987509dd3b8c31650fcf6e3af1f370e913b"
dependencies = [
- "boolinator",
"once_cell",
"prettyplease",
"proc-macro-error",
"proc-macro2",
"quote",
+ "rustversion",
"syn 2.0.111",
]
[[package]]
name = "yew-router"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ca1d5052c96e6762b4d6209a8aded597758d442e6c479995faf0c7b5538e0c6"
+checksum = "415cb628900ddf1eaf55ebd04163adf1ea80d3f5a9832a876554f9c0fdd4c282"
dependencies = [
- "gloo 0.10.0",
+ "gloo",
"js-sys",
"route-recognizer",
"serde",
@@ -10959,9 +10694,9 @@ dependencies = [
[[package]]
name = "yew-router-macro"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42bfd190a07ca8cfde7cd4c52b3ac463803dc07323db8c34daa697e86365978c"
+checksum = "9e87a3ce33434ab66a700edbaf2cc8a417d9b89f00a6fd8216fd6ac83b0e7b1c"
dependencies = [
"proc-macro2",
"quote",
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index 928173763..c81f89d2d 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -30,7 +30,6 @@ anstyle-parse: 0.2.7, "Apache-2.0 OR MIT",
anstyle-query: 1.1.5, "Apache-2.0 OR MIT",
anstyle-wincon: 3.0.11, "Apache-2.0 OR MIT",
anyhow: 1.0.100, "Apache-2.0 OR MIT",
-anymap2: 0.13.0, "Apache-2.0 OR MIT",
apache-avro: 0.17.0, "Apache-2.0",
arbitrary: 1.4.2, "Apache-2.0 OR MIT",
arc-swap: 1.7.1, "Apache-2.0 OR MIT",
@@ -107,7 +106,6 @@ bollard-buildkit-proto: 0.7.0, "Apache-2.0",
bollard-stubs: 1.49.1-rc.28.4.0, "Apache-2.0",
bon: 3.8.1, "Apache-2.0 OR MIT",
bon-macros: 3.8.1, "Apache-2.0 OR MIT",
-boolinator: 2.4.0, "Apache-2.0 OR MIT",
borsh: 1.6.0, "Apache-2.0 OR MIT",
borsh-derive: 1.6.0, "Apache-2.0",
brotli: 8.0.2, "BSD-3-Clause AND MIT",
@@ -323,32 +321,17 @@ gherkin: 0.14.0, "Apache-2.0 OR MIT",
git2: 0.20.3, "Apache-2.0 OR MIT",
globset: 0.4.18, "MIT OR Unlicense",
globwalk: 0.9.1, "MIT",
-gloo: 0.8.1, "Apache-2.0 OR MIT",
-gloo: 0.10.0, "Apache-2.0 OR MIT",
gloo: 0.11.0, "Apache-2.0 OR MIT",
-gloo-console: 0.2.3, "Apache-2.0 OR MIT",
gloo-console: 0.3.0, "Apache-2.0 OR MIT",
-gloo-dialogs: 0.1.1, "Apache-2.0 OR MIT",
gloo-dialogs: 0.2.0, "Apache-2.0 OR MIT",
-gloo-events: 0.1.2, "Apache-2.0 OR MIT",
gloo-events: 0.2.0, "Apache-2.0 OR MIT",
-gloo-file: 0.2.3, "Apache-2.0 OR MIT",
gloo-file: 0.3.0, "Apache-2.0 OR MIT",
-gloo-history: 0.1.5, "Apache-2.0 OR MIT",
gloo-history: 0.2.2, "Apache-2.0 OR MIT",
-gloo-net: 0.3.1, "Apache-2.0 OR MIT",
-gloo-net: 0.4.0, "Apache-2.0 OR MIT",
gloo-net: 0.5.0, "Apache-2.0 OR MIT",
-gloo-render: 0.1.1, "Apache-2.0 OR MIT",
gloo-render: 0.2.0, "Apache-2.0 OR MIT",
-gloo-storage: 0.2.2, "Apache-2.0 OR MIT",
gloo-storage: 0.3.0, "Apache-2.0 OR MIT",
-gloo-timers: 0.2.6, "Apache-2.0 OR MIT",
gloo-timers: 0.3.0, "Apache-2.0 OR MIT",
-gloo-utils: 0.1.7, "Apache-2.0 OR MIT",
gloo-utils: 0.2.0, "Apache-2.0 OR MIT",
-gloo-worker: 0.2.1, "Apache-2.0 OR MIT",
-gloo-worker: 0.4.0, "Apache-2.0 OR MIT",
gloo-worker: 0.5.0, "Apache-2.0 OR MIT",
gloo-worker-macros: 0.1.0, "Apache-2.0 OR MIT",
governor: 0.10.2, "MIT",
@@ -423,7 +406,7 @@ iggy_connector_stdout_sink: 0.1.0, "Apache-2.0",
iggy_examples: 0.0.5, "Apache-2.0",
ignore: 0.4.25, "MIT OR Unlicense",
impl-more: 0.1.9, "Apache-2.0 OR MIT",
-implicit-clone: 0.4.9, "Apache-2.0 OR MIT",
+implicit-clone: 0.6.0, "Apache-2.0 OR MIT",
implicit-clone-derive: 0.1.2, "Apache-2.0 OR MIT",
indexmap: 1.9.3, "Apache-2.0 OR MIT",
indexmap: 2.12.1, "Apache-2.0 OR MIT",
@@ -622,7 +605,6 @@ proc-macro-error: 1.0.4, "Apache-2.0 OR MIT",
proc-macro-error-attr: 1.0.4, "Apache-2.0 OR MIT",
proc-macro2: 1.0.103, "Apache-2.0 OR MIT",
proc-macro2-diagnostics: 0.10.1, "Apache-2.0 OR MIT",
-prokio: 0.1.0, "Apache-2.0 OR MIT",
prometheus-client: 0.24.0, "Apache-2.0 OR MIT",
prometheus-client-derive-encode: 0.5.0, "Apache-2.0 OR MIT",
prost: 0.14.1, "Apache-2.0",
@@ -715,7 +697,6 @@ semver: 1.0.27, "Apache-2.0 OR MIT",
send_wrapper: 0.6.0, "Apache-2.0 OR MIT",
seq-macro: 0.3.6, "Apache-2.0 OR MIT",
serde: 1.0.228, "Apache-2.0 OR MIT",
-serde-wasm-bindgen: 0.5.0, "MIT",
serde-wasm-bindgen: 0.6.5, "MIT",
serde_bytes: 0.11.19, "Apache-2.0 OR MIT",
serde_core: 1.0.228, "Apache-2.0 OR MIT",
@@ -815,6 +796,7 @@ tokio-rustls: 0.26.4, "Apache-2.0 OR MIT",
tokio-stream: 0.1.17, "MIT",
tokio-tungstenite: 0.28.0, "MIT",
tokio-util: 0.7.17, "MIT",
+tokise: 0.2.0, "Apache-2.0 OR MIT",
toml: 0.8.23, "Apache-2.0 OR MIT",
toml: 0.9.8, "Apache-2.0 OR MIT",
toml_datetime: 0.6.11, "Apache-2.0 OR MIT",
@@ -978,11 +960,10 @@ wyz: 0.5.1, "MIT",
xattr: 1.6.1, "Apache-2.0 OR MIT",
yansi: 1.0.1, "Apache-2.0 OR MIT",
yasna: 0.5.2, "Apache-2.0 OR MIT",
-yew: 0.21.0, "Apache-2.0 OR MIT",
-yew-hooks: 0.3.4, "Apache-2.0 OR MIT",
-yew-macro: 0.21.0, "Apache-2.0 OR MIT",
-yew-router: 0.18.0, "Apache-2.0 OR MIT",
-yew-router-macro: 0.18.0, "Apache-2.0 OR MIT",
+yew: 0.22.0, "Apache-2.0 OR MIT",
+yew-macro: 0.22.0, "Apache-2.0 OR MIT",
+yew-router: 0.19.0, "Apache-2.0 OR MIT",
+yew-router-macro: 0.19.0, "Apache-2.0 OR MIT",
yoke: 0.8.1, "Unicode-3.0",
yoke-derive: 0.8.1, "Unicode-3.0",
zerocopy: 0.8.31, "Apache-2.0 OR BSD-2-Clause OR MIT",
diff --git a/core/bench/dashboard/frontend/Cargo.toml
b/core/bench/dashboard/frontend/Cargo.toml
index fd1696138..af2c48c4c 100644
--- a/core/bench/dashboard/frontend/Cargo.toml
+++ b/core/bench/dashboard/frontend/Cargo.toml
@@ -42,7 +42,8 @@ web-sys = { version = "0.3", features = [
"HtmlSelectElement",
"Clipboard",
"Navigator",
+ "ResizeObserver",
+ "ResizeObserverEntry",
] }
-yew = { version = "0.21", features = ["csr"] }
-yew-hooks = "0.3.4"
-yew-router = "0.18"
+yew = { version = "0.22", features = ["csr"] }
+yew-router = "0.19"
diff --git a/core/bench/dashboard/frontend/src/components/chart/single_chart.rs
b/core/bench/dashboard/frontend/src/components/chart/single_chart.rs
index 807619880..54ceb1767 100644
--- a/core/bench/dashboard/frontend/src/components/chart/single_chart.rs
+++ b/core/bench/dashboard/frontend/src/components/chart/single_chart.rs
@@ -18,6 +18,7 @@
use crate::api::fetch_benchmark_report_full;
use crate::components::chart::{PlotConfig, dispose_chart};
use crate::components::selectors::measurement_type_selector::MeasurementType;
+use crate::hooks::use_size;
use bench_report::report::BenchmarkReport;
use charming::theme::Theme;
use charming::{Echarts, WasmRenderer};
@@ -26,7 +27,6 @@ use gloo::history::{BrowserHistory, History};
use uuid::Uuid;
use yew::platform::spawn_local;
use yew::prelude::*;
-use yew_hooks::use_size;
type CleanupFn = Box<dyn FnOnce()>;
diff --git a/core/bench/dashboard/frontend/src/components/chart/trend_chart.rs
b/core/bench/dashboard/frontend/src/components/chart/trend_chart.rs
index 0c2649b56..2d12da1e6 100644
--- a/core/bench/dashboard/frontend/src/components/chart/trend_chart.rs
+++ b/core/bench/dashboard/frontend/src/components/chart/trend_chart.rs
@@ -19,12 +19,12 @@ use crate::api::fetch_benchmark_trend;
use crate::components::chart::plot_trend::create_chart;
use crate::components::chart::{PlotConfig, PlotType, dispose_chart};
use crate::components::selectors::measurement_type_selector::MeasurementType;
+use crate::hooks::use_size;
use crate::state::hardware::use_hardware;
use charming::Echarts;
use gloo::console::log;
use yew::platform::spawn_local;
use yew::prelude::*;
-use yew_hooks::use_size;
#[derive(Properties, PartialEq)]
#[allow(dead_code)]
diff --git
a/core/bench/dashboard/frontend/src/components/selectors/recent_benchmarks_selector.rs
b/core/bench/dashboard/frontend/src/components/selectors/recent_benchmarks_selector.rs
index 9a21360a9..240b1fc70 100644
---
a/core/bench/dashboard/frontend/src/components/selectors/recent_benchmarks_selector.rs
+++
b/core/bench/dashboard/frontend/src/components/selectors/recent_benchmarks_selector.rs
@@ -22,8 +22,8 @@ use crate::{
use bench_dashboard_shared::BenchmarkReportLight;
use chrono::{DateTime, Utc};
use gloo::console::log;
+use yew::platform::spawn_local;
use yew::prelude::*;
-use yew_hooks::use_async;
/// Format a timestamp string as a human-readable relative time (e.g., "2
hours ago")
fn format_relative_time(timestamp_str: &str) -> String {
@@ -58,38 +58,33 @@ pub fn recent_benchmarks_selector(props:
&RecentBenchmarksSelectorProps) -> Html
let benchmark_ctx = use_benchmark();
let recent_benchmarks = use_state(Vec::<BenchmarkReportLight>::new);
+ let is_loading = use_state(|| true);
- let fetch_benchmarks = {
+ {
let recent_benchmarks = recent_benchmarks.clone();
+ let is_loading = is_loading.clone();
let limit = props.limit;
- use_async(async move {
- match api::fetch_recent_benchmarks(Some(limit)).await {
- Ok(mut data) => {
- data.sort_by(|a, b| {
- let parse_a =
DateTime::parse_from_rfc3339(&a.timestamp);
- let parse_b =
DateTime::parse_from_rfc3339(&b.timestamp);
- match (parse_a, parse_b) {
- (Ok(time_a), Ok(time_b)) => time_b.cmp(&time_a),
- _ => std::cmp::Ordering::Equal,
- }
- });
- recent_benchmarks.set(data.clone());
- Ok(data)
- }
- Err(e) => {
- log!(format!("Error fetching recent benchmarks: {}", e));
- Err(e)
- }
- }
- })
- };
-
- {
- let fetch_benchmarks_effect = fetch_benchmarks.clone();
use_effect_with((), move |_| {
- fetch_benchmarks_effect.run();
- || ()
+ spawn_local(async move {
+ match api::fetch_recent_benchmarks(Some(limit)).await {
+ Ok(mut data) => {
+ data.sort_by(|a, b| {
+ let parse_a =
DateTime::parse_from_rfc3339(&a.timestamp);
+ let parse_b =
DateTime::parse_from_rfc3339(&b.timestamp);
+ match (parse_a, parse_b) {
+ (Ok(time_a), Ok(time_b)) =>
time_b.cmp(&time_a),
+ _ => std::cmp::Ordering::Equal,
+ }
+ });
+ recent_benchmarks.set(data);
+ }
+ Err(e) => {
+ log!(format!("Error fetching recent benchmarks: {}",
e));
+ }
+ }
+ is_loading.set(false);
+ });
});
}
@@ -152,7 +147,7 @@ pub fn recent_benchmarks_selector(props:
&RecentBenchmarksSelectorProps) -> Html
<div class="sidebar-tabs">
<div class="benchmark-list-container close-gap">
<div class="benchmark-list-wrapper">
- if fetch_benchmarks.loading {
+ if *is_loading {
<p class="loading-message">{"Loading recent
benchmarks..."}</p>
} else if filtered_benchmarks.is_empty() {
<div class="no-search-results">
diff --git a/core/bench/dashboard/frontend/src/hooks/mod.rs
b/core/bench/dashboard/frontend/src/hooks/mod.rs
new file mode 100644
index 000000000..2958ef8db
--- /dev/null
+++ b/core/bench/dashboard/frontend/src/hooks/mod.rs
@@ -0,0 +1,20 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+mod use_size;
+
+pub use use_size::use_size;
diff --git a/core/bench/dashboard/frontend/src/hooks/use_size.rs
b/core/bench/dashboard/frontend/src/hooks/use_size.rs
new file mode 100644
index 000000000..95cfa6288
--- /dev/null
+++ b/core/bench/dashboard/frontend/src/hooks/use_size.rs
@@ -0,0 +1,75 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+use std::cell::RefCell;
+use std::rc::Rc;
+use wasm_bindgen::JsCast;
+use wasm_bindgen::closure::Closure;
+use web_sys::{Element, ResizeObserver, ResizeObserverEntry};
+use yew::prelude::*;
+
+type ResizeCallback = Closure<dyn Fn(js_sys::Array)>;
+
+/// Tracks the size of an element using ResizeObserver.
+/// Returns (width, height) in pixels.
+#[hook]
+pub fn use_size(node: NodeRef) -> (u32, u32) {
+ let size = use_state(|| (0_u32, 0_u32));
+
+ {
+ let size = size.clone();
+ use_effect_with(node.clone(), move |node| {
+ let node = node.clone();
+ let observer_handle: Rc<RefCell<Option<ResizeObserver>>> =
Rc::new(RefCell::new(None));
+ let callback_handle: Rc<RefCell<Option<ResizeCallback>>> =
Rc::new(RefCell::new(None));
+
+ if let Some(element) = node.cast::<Element>() {
+ // Set initial size
+ size.set((
+ element.client_width() as u32,
+ element.client_height() as u32,
+ ));
+
+ let size_clone = size.clone();
+ let callback =
+ Closure::<dyn Fn(js_sys::Array)>::new(move |entries:
js_sys::Array| {
+ if let Some(entry) =
entries.get(0).dyn_ref::<ResizeObserverEntry>() {
+ let target = entry.target();
+ let width = target.client_width() as u32;
+ let height = target.client_height() as u32;
+ size_clone.set((width, height));
+ }
+ });
+
+ if let Ok(observer) =
ResizeObserver::new(callback.as_ref().unchecked_ref()) {
+ observer.observe(&element);
+ *observer_handle.borrow_mut() = Some(observer);
+ *callback_handle.borrow_mut() = Some(callback);
+ }
+ }
+
+ move || {
+ if let Some(observer) = observer_handle.borrow_mut().take() {
+ observer.disconnect();
+ }
+ drop(callback_handle.borrow_mut().take());
+ }
+ });
+ }
+
+ *size
+}
diff --git a/core/bench/dashboard/frontend/src/main.rs
b/core/bench/dashboard/frontend/src/main.rs
index d8808fba3..5d6f0972a 100644
--- a/core/bench/dashboard/frontend/src/main.rs
+++ b/core/bench/dashboard/frontend/src/main.rs
@@ -19,6 +19,7 @@ mod api;
mod components;
mod config;
mod error;
+mod hooks;
mod router;
mod state;