Skip to content

Commit 17ac398

Browse files
Updated Nav Menu to support a dynamic number of devices
1 parent 7280c97 commit 17ac398

File tree

1 file changed

+55
-25
lines changed

1 file changed

+55
-25
lines changed

ASCOM.Alpaca.Simulators/Shared/NavMenu.razor

Lines changed: 55 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,65 +9,86 @@
99
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
1010
<ul class="nav flex-column">
1111
<li class="nav-item px-3">
12-
<NavLink class="nav-link" href="control/v1/camera/0/" Match="NavLinkMatch.All">
13-
<span class="oi oi-camera-slr" aria-hidden="true"></span> Camera
14-
</NavLink>
12+
@foreach (var key in ASCOM.Alpaca.DeviceManager.Cameras)
13+
{
14+
<NavLink class="nav-link" href=@GetSetupURL("camera", key.Key) Match="NavLinkMatch.All">
15+
<span class="oi oi-camera-slr" aria-hidden="true"></span> @GetDisplayName("Camera", key.Key)
16+
</NavLink>
17+
}
1518
</li>
1619
<li class="nav-item px-3">
17-
<NavLink class="nav-link" href="/control/v1/covercalibrator/0/" Match="NavLinkMatch.All">
18-
<span class="oi oi-contrast" aria-hidden="true"></span> CoverCalibrator
19-
</NavLink>
20+
@foreach (var key in ASCOM.Alpaca.DeviceManager.CoverCalibrators)
21+
{
22+
<NavLink class="nav-link" href=@GetSetupURL("covercalibrator", key.Key) Match="NavLinkMatch.All">
23+
<span class="oi oi-contrast" aria-hidden="true"></span> @GetDisplayName("CoverCalibrator", key.Key)
24+
</NavLink>
25+
}
2026
</li>
2127
<li class="nav-item px-3">
22-
<NavLink class="nav-link" href="control/v1/dome/0/" Match="NavLinkMatch.All">
23-
<span class="oi oi-aperture" aria-hidden="true"></span> Dome
24-
</NavLink>
28+
@foreach (var key in ASCOM.Alpaca.DeviceManager.Domes)
29+
{
30+
<NavLink class="nav-link" href=@GetSetupURL("dome", key.Key) Match="NavLinkMatch.All">
31+
<span class="oi oi-aperture" aria-hidden="true"></span> @GetDisplayName("Dome", key.Key)
32+
</NavLink>
33+
}
2534
</li>
2635
<li class="nav-item px-3">
2736

2837
@foreach (var key in ASCOM.Alpaca.DeviceManager.FilterWheels)
2938
{
3039
<NavLink class="nav-link" href=@GetSetupURL("filterwheel", key.Key) Match="NavLinkMatch.All">
31-
<span class="oi oi-sun" aria-hidden="true"></span> Filter Wheel - @key.Key
40+
<span class="oi oi-sun" aria-hidden="true"></span> @GetDisplayName("Filter Wheel", key.Key)
3241
</NavLink>
3342
}
3443
</li>
3544
<li class="nav-item px-3">
3645

37-
@foreach(var key in ASCOM.Alpaca.DeviceManager.Focusers)
46+
@foreach (var key in ASCOM.Alpaca.DeviceManager.Focusers)
3847
{
3948
<NavLink class="nav-link" href=@GetSetupURL("focuser", key.Key) Match="NavLinkMatch.All">
40-
<span class="oi oi-elevator" aria-hidden="true"></span> Focuser - @key.Key
49+
<span class="oi oi-elevator" aria-hidden="true"></span> @GetDisplayName("Focuser", key.Key)
4150
</NavLink>
4251
}
4352
</li>
4453
<li class="nav-item px-3">
45-
<NavLink class="nav-link" href="control/v1/observingconditions/0/" Match="NavLinkMatch.All">
46-
<span class="oi oi-cloudy" aria-hidden="true"></span> ObservingConditions
47-
</NavLink>
54+
@foreach (var key in ASCOM.Alpaca.DeviceManager.ObservingConditions)
55+
{
56+
<NavLink class="nav-link" href=@GetSetupURL("observingconditions", key.Key) Match="NavLinkMatch.All">
57+
<span class="oi oi-cloudy" aria-hidden="true"></span> @GetDisplayName("ObservingConditions", key.Key)
58+
</NavLink>
59+
}
4860
</li>
4961
<li class="nav-item px-3">
5062
@foreach (var key in ASCOM.Alpaca.DeviceManager.Rotators)
5163
{
5264
<NavLink class="nav-link" href=@GetSetupURL("rotator", key.Key) Match="NavLinkMatch.All">
53-
<span class="oi oi-elevator" aria-hidden="true"></span> Rotator - @key.Key
65+
<span class="oi oi-loop-circular" aria-hidden="true"></span> @GetDisplayName("Rotator", key.Key)
5466
</NavLink>
5567
}
5668
</li>
5769
<li class="nav-item px-3">
58-
<NavLink class="nav-link" href="setup/v1/safetymonitor/0/setup" Match="NavLinkMatch.All">
59-
<span class="oi oi-ban" aria-hidden="true"></span> SafetyMonitor
60-
</NavLink>
70+
@foreach (var key in ASCOM.Alpaca.DeviceManager.SafetyMonitors)
71+
{
72+
<NavLink class="nav-link" href=@GetSetupURL("safetymonitor", key.Key) Match="NavLinkMatch.All">
73+
<span class="oi oi-ban" aria-hidden="true"></span> @GetDisplayName("SafetyMonitor", key.Key)
74+
</NavLink>
75+
}
6176
</li>
6277
<li class="nav-item px-3">
63-
<NavLink class="nav-link" href="control/v1/switch/0/" Match="NavLinkMatch.All">
64-
<span class="oi oi-circle-check" aria-hidden="true"></span> Switch
65-
</NavLink>
78+
@foreach (var key in ASCOM.Alpaca.DeviceManager.Switches)
79+
{
80+
<NavLink class="nav-link" href=@GetSetupURL("switch", key.Key) Match="NavLinkMatch.All">
81+
<span class="oi oi-circle-check" aria-hidden="true"></span> @GetDisplayName("Switch", key.Key)
82+
</NavLink>
83+
}
6684
</li>
6785
<li class="nav-item px-3">
68-
<NavLink class="nav-link" href="control/v1/telescope/0/" Match="NavLinkMatch.All">
69-
<span class="oi oi-star" aria-hidden="true"></span> Telescope
70-
</NavLink>
86+
@foreach (var key in ASCOM.Alpaca.DeviceManager.Telescopes)
87+
{
88+
<NavLink class="nav-link" href=@GetSetupURL("Telescope", key.Key) Match="NavLinkMatch.All">
89+
<span class="oi oi-star" aria-hidden="true"></span> @GetDisplayName("Telescope", key.Key)
90+
</NavLink>
91+
}
7192
</li>
7293
<li class="nav-item px-3">
7394
<NavLink class="nav-link" href="setup" Match="NavLinkMatch.All">
@@ -115,6 +136,15 @@
115136
return $"control/v1/{dev}/{index}/";
116137
}
117138

139+
string GetDisplayName(string dev, int index)
140+
{
141+
if(index == 0)
142+
{
143+
return dev;
144+
}
145+
return $"{dev} - {index}";
146+
}
147+
118148
void Shutdown()
119149
{
120150
try

0 commit comments

Comments
 (0)