,
+ ~selectedBranch=?,
+ ~selectedBenchmarkName=?,
+ ~selectedPull=?,
+ ~worker,
+ ) => {
+ let branchNames = branchesMenuData->Belt.Array.keepMap(obj => obj.branch)
+
+ React.useEffect3(() => {
+ if (
+ Belt.Option.isNone(selectedPull) &&
+ branchNames->Belt.Array.getBy(name => Some(name) == selectedBranch) == None
+ ) {
+ switch branchNames->Belt.Array.getBy(name => Belt.Set.String.has(validDefaults, name)) {
+ | Some(branch) =>
+ AppRouter.RepoBranch({
+ repoId,
+ branch,
+ benchmarkName: selectedBenchmarkName,
+ worker,
+ })->AppRouter.go
+ | _ => ()
+ }
+ }
+ None
+ }, (selectedBranch, branchesMenuData, selectedPull))
+
+ let branches =
+ branchesMenuData
+ ->Belt.Array.mapWithIndex((i, {branch}) => {
+ let branchRoute = switch branch {
+ | None =>
+ AppRouter.Repo({
+ repoId,
+ benchmarkName: selectedBenchmarkName,
+ worker,
+ })
+ | Some(branch) =>
+ AppRouter.RepoBranch({
+ repoId,
+ branch,
+ benchmarkName: selectedBenchmarkName,
+ worker,
+ })
+ }
+ AppRouter.path}
+ text={Belt.Option.getWithDefault(branch, defaultBranch)}
+ />
+ })
+ ->Rx.array(~empty="None"->Rx.string)
+ switch Belt.Array.length(branchesMenuData) {
+ | 0 | 1 => Rx.null
+ | _ =>
+
+ "Branches"
+ {branches}
+
+ }
+ }
+}
+
module SidebarMenu = {
@react.component
- let make = (~repoId, ~selectedPull=?, ~selectedBenchmarkName=?, ~worker) => {
+ let make = (~repoId, ~selectedBranch=?, ~selectedPull=?, ~selectedBenchmarkName=?, ~worker) => {
let ({ReScriptUrql.Hooks.response: response}, _) = {
ReScriptUrql.Hooks.useQuery(
~query=module(SidebarMenuData),
@@ -165,8 +240,9 @@ module SidebarMenu = {
| Error({networkError: Some(_)}) => {"Network Error"->Rx.text}
| Error({networkError: None}) => {"Unknown Error"->Rx.text}
| Fetching => Rx.text("Loading...")
- | Data({benchmarksMenuData, pullsMenuData})
- | PartialData({benchmarksMenuData, pullsMenuData}, _) => <>
+ | Data({benchmarksMenuData, pullsMenuData, branchesMenuData})
+ | PartialData({benchmarksMenuData, pullsMenuData, branchesMenuData}, _) =>
+ <>
{switch Belt.Array.some(benchmarksMenuData, bm => {
bm.benchmark_name !== BenchmarkDataHelpers.defaultBenchmarkName
}) {
@@ -177,6 +253,9 @@ module SidebarMenu = {
| false => Rx.null
}}
+
>
}
@@ -265,6 +344,7 @@ let make = (
~repoIds,
~worker,
~setWorker,
+ ~selectedBranch=?,
~selectedRepoId=?,
~selectedPull=?,
~selectedBenchmarkName=?,
@@ -272,9 +352,10 @@ let make = (
): React.element => {
let menu = switch selectedRepoId {
| None => Rx.null
- | Some(repoId) => <>
+ | Some(repoId) =>
+ <>
-
+
>
}