]>
Commit | Line | Data |
---|---|---|
20effc67 TL |
1 | <div class="cd-navbar-main"> |
2 | <cd-pwd-expiration-notification></cd-pwd-expiration-notification> | |
3 | <cd-telemetry-notification></cd-telemetry-notification> | |
4 | <cd-motd></cd-motd> | |
5 | <cd-notifications-sidebar></cd-notifications-sidebar> | |
6 | <div class="cd-navbar-top"> | |
7 | <nav class="navbar navbar-expand-md navbar-dark cd-navbar-brand"> | |
39ae355f | 8 | <button class="btn btn-link py-0 ms-3" |
20effc67 TL |
9 | (click)="showMenuSidebar = !showMenuSidebar" |
10 | aria-label="toggle sidebar visibility"> | |
11 | <i class="fa fa-bars fa-2x" | |
12 | aria-hidden="true"></i> | |
13 | </button> | |
11fdf7f2 | 14 | |
39ae355f | 15 | <a class="navbar-brand ms-2" |
20effc67 TL |
16 | href="#"> |
17 | <img src="assets/Ceph_Ceph_Logo_with_text_white.svg" | |
18 | alt="Ceph" /> | |
19 | </a> | |
11fdf7f2 | 20 | |
20effc67 TL |
21 | <button type="button" |
22 | class="navbar-toggler" | |
23 | (click)="toggleRightSidebar()"> | |
24 | <span i18n | |
25 | class="sr-only">Toggle navigation</span> | |
26 | <span class=""> | |
27 | <i class="fa fa-navicon fa-lg"></i> | |
28 | </span> | |
29 | </button> | |
11fdf7f2 | 30 | |
20effc67 TL |
31 | <div class="collapse navbar-collapse" |
32 | [ngClass]="{'show': rightSidebarOpen}"> | |
33 | <ul class="nav navbar-nav cd-navbar-utility my-2 my-md-0"> | |
34 | <ng-container *ngTemplateOutlet="cd_utilities"> </ng-container> | |
35 | </ul> | |
36 | </div> | |
37 | </nav> | |
38 | </div> | |
9f95a23c | 39 | |
20effc67 TL |
40 | <div class="wrapper"> |
41 | <!-- Content --> | |
42 | <nav id="sidebar" | |
43 | [ngClass]="{'active': !showMenuSidebar}"> | |
44 | <ngx-simplebar [options]="simplebar"> | |
45 | <ul class="list-unstyled components cd-navbar-primary"> | |
46 | <ng-container *ngTemplateOutlet="cd_menu"> </ng-container> | |
47 | </ul> | |
48 | </ngx-simplebar> | |
49 | </nav> | |
9f95a23c | 50 | |
20effc67 TL |
51 | <!-- Page Content --> |
52 | <div id="content" | |
53 | [ngClass]="{'active': !showMenuSidebar}"> | |
54 | <ng-content></ng-content> | |
55 | </div> | |
11fdf7f2 | 56 | </div> |
9f95a23c | 57 | |
20effc67 TL |
58 | <ng-template #cd_utilities> |
59 | <li class="nav-item"> | |
60 | <cd-language-selector class="cd-navbar"></cd-language-selector> | |
9f95a23c | 61 | </li> |
20effc67 TL |
62 | <li class="nav-item"> |
63 | <cd-notifications class="cd-navbar" | |
64 | (click)="toggleRightSidebar()"></cd-notifications> | |
9f95a23c | 65 | </li> |
20effc67 TL |
66 | <li class="nav-item"> |
67 | <cd-dashboard-help class="cd-navbar"></cd-dashboard-help> | |
68 | </li> | |
69 | <li class="nav-item"> | |
70 | <cd-administration class="cd-navbar"></cd-administration> | |
9f95a23c | 71 | </li> |
20effc67 TL |
72 | <li class="nav-item"> |
73 | <cd-identity class="cd-navbar"></cd-identity> | |
74 | </li> | |
75 | </ng-template> | |
9f95a23c | 76 | |
20effc67 TL |
77 | <ng-template #cd_menu> |
78 | <ng-container *ngIf="enabledFeature$ | async as enabledFeature"> | |
79 | <!-- Dashboard --> | |
80 | <li routerLinkActive="active" | |
81 | class="nav-item tc_menuitem_dashboard"> | |
82 | <a routerLink="/dashboard" | |
83 | class="nav-link"> | |
84 | <span i18n>Dashboard</span> | |
85 | <i [ngClass]="[icons.health]" | |
86 | [ngStyle]="summaryData?.health_status | healthColor"></i> | |
87 | </a> | |
88 | </li> | |
9f95a23c | 89 | |
20effc67 TL |
90 | <!-- Cluster --> |
91 | <li routerLinkActive="active" | |
92 | class="nav-item tc_menuitem_cluster" | |
93 | *ngIf="permissions.hosts.read || permissions.monitor.read || | |
94 | permissions.osd.read || permissions.configOpt.read || | |
95 | permissions.log.read || permissions.prometheus.read"> | |
96 | <a (click)="toggleSubMenu('cluster')" | |
97 | class="nav-link dropdown-toggle" | |
39ae355f TL |
98 | [attr.aria-expanded]="displayedSubMenu === 'cluster'" |
99 | aria-controls="cluster-nav" | |
100 | role="button"> | |
20effc67 TL |
101 | <ng-container i18n>Cluster</ng-container> |
102 | </a> | |
103 | <ul class="list-unstyled" | |
39ae355f | 104 | id="cluster-nav" |
20effc67 TL |
105 | [ngbCollapse]="displayedSubMenu !== 'cluster'"> |
106 | <li routerLinkActive="active" | |
107 | class="tc_submenuitem tc_submenuitem_hosts" | |
108 | *ngIf="permissions.hosts.read"> | |
109 | <a i18n | |
110 | routerLink="/hosts">Hosts</a> | |
111 | </li> | |
112 | <li routerLinkActive="active" | |
113 | class="tc_submenuitem tc_submenuitem_cluster_inventory" | |
114 | *ngIf="permissions.hosts.read"> | |
115 | <a i18n | |
116 | routerLink="/inventory">Physical Disks</a> | |
117 | </li> | |
118 | <li routerLinkActive="active" | |
119 | class="tc_submenuitem tc_submenuitem_cluster_monitor" | |
120 | *ngIf="permissions.monitor.read"> | |
121 | <a i18n | |
122 | routerLink="/monitor/">Monitors</a> | |
123 | </li> | |
124 | <li routerLinkActive="active" | |
125 | class="tc_submenuitem tc_submenuitem_cluster_services" | |
126 | *ngIf="permissions.hosts.read"> | |
127 | <a i18n | |
128 | routerLink="/services/">Services</a> | |
129 | </li> | |
130 | <li routerLinkActive="active" | |
131 | class="tc_submenuitem tc_submenuitem_osds" | |
132 | *ngIf="permissions.osd.read"> | |
133 | <a i18n | |
134 | routerLink="/osd">OSDs</a> | |
135 | </li> | |
136 | <li routerLinkActive="active" | |
137 | class="tc_submenuitem tc_submenuitem_configuration" | |
138 | *ngIf="permissions.configOpt.read"> | |
139 | <a i18n | |
140 | routerLink="/configuration">Configuration</a> | |
141 | </li> | |
142 | <li routerLinkActive="active" | |
143 | class="tc_submenuitem tc_submenuitem_crush" | |
144 | *ngIf="permissions.osd.read"> | |
145 | <a i18n | |
146 | routerLink="/crush-map">CRUSH map</a> | |
147 | </li> | |
148 | <li routerLinkActive="active" | |
149 | class="tc_submenuitem tc_submenuitem_modules" | |
150 | *ngIf="permissions.configOpt.read"> | |
151 | <a i18n | |
152 | routerLink="/mgr-modules">Manager Modules</a> | |
153 | </li> | |
1e59de90 TL |
154 | <li routerLinkActive="active" |
155 | class="tc_submenuitem tc_submenuitem_users" | |
156 | *ngIf="permissions.configOpt.read"> | |
157 | <a i18n | |
158 | routerLink="/ceph-users">Ceph Users</a> | |
159 | </li> | |
20effc67 TL |
160 | <li routerLinkActive="active" |
161 | class="tc_submenuitem tc_submenuitem_log" | |
162 | *ngIf="permissions.log.read"> | |
163 | <a i18n | |
164 | routerLink="/logs">Logs</a> | |
165 | </li> | |
166 | <li routerLinkActive="active" | |
167 | class="tc_submenuitem tc_submenuitem_monitoring" | |
168 | *ngIf="permissions.prometheus.read"> | |
169 | <a routerLink="/monitoring"> | |
1e59de90 | 170 | <ng-container i18n>Alerts</ng-container> |
2a845540 | 171 | <small *ngIf="prometheusAlertService.activeCriticalAlerts > 0" |
39ae355f | 172 | class="badge badge-danger ms-1">{{ prometheusAlertService.activeCriticalAlerts }}</small> |
2a845540 | 173 | <small *ngIf="prometheusAlertService.activeWarningAlerts > 0" |
39ae355f | 174 | class="badge badge-warning ms-1">{{ prometheusAlertService.activeWarningAlerts }}</small> |
20effc67 TL |
175 | </a> |
176 | </li> | |
aee94f69 TL |
177 | <li routerLinkActive="active" |
178 | class="tc_submenuitem tc_submenuitem_upgrade" | |
179 | *ngIf="permissions.configOpt.read"> | |
180 | <a i18n | |
181 | routerLink="/upgrade">Upgrade</a> | |
182 | </li> | |
20effc67 TL |
183 | </ul> |
184 | </li> | |
9f95a23c | 185 | |
20effc67 TL |
186 | <!-- Pools --> |
187 | <li routerLinkActive="active" | |
188 | class="nav-item tc_menuitem_pool" | |
189 | *ngIf="permissions.pool.read"> | |
190 | <a class="nav-link" | |
191 | i18n | |
192 | routerLink="/pool">Pools</a> | |
193 | </li> | |
9f95a23c | 194 | |
20effc67 TL |
195 | <!-- Block --> |
196 | <li routerLinkActive="active" | |
197 | class="nav-item tc_menuitem_block" | |
198 | *ngIf="(permissions.rbdImage.read || permissions.rbdMirroring.read || permissions.iscsi.read) && | |
199 | (enabledFeature.rbd || enabledFeature.mirroring || enabledFeature.iscsi)"> | |
200 | <a class="nav-link dropdown-toggle" | |
201 | (click)="toggleSubMenu('block')" | |
39ae355f TL |
202 | [attr.aria-expanded]="displayedSubMenu === 'block'" |
203 | aria-controls="block-nav" | |
204 | role="button" | |
20effc67 TL |
205 | [ngStyle]="blockHealthColor()"> |
206 | <ng-container i18n>Block</ng-container> | |
207 | </a> | |
9f95a23c | 208 | |
20effc67 | 209 | <ul class="list-unstyled" |
39ae355f | 210 | id="block-nav" |
20effc67 TL |
211 | [ngbCollapse]="displayedSubMenu !== 'block'"> |
212 | <li routerLinkActive="active" | |
213 | class="tc_submenuitem tc_submenuitem_block_images" | |
214 | *ngIf="permissions.rbdImage.read && enabledFeature.rbd"> | |
215 | <a i18n | |
216 | routerLink="/block/rbd">Images</a> | |
217 | </li> | |
9f95a23c | 218 | |
20effc67 TL |
219 | <li routerLinkActive="active" |
220 | class="tc_submenuitem tc_submenuitem_block_mirroring" | |
221 | *ngIf="permissions.rbdMirroring.read && enabledFeature.mirroring"> | |
222 | <a routerLink="/block/mirroring"> | |
223 | <ng-container i18n>Mirroring</ng-container> | |
224 | <small *ngIf="summaryData?.rbd_mirroring?.warnings !== 0" | |
225 | class="badge badge-warning">{{ summaryData?.rbd_mirroring?.warnings }}</small> | |
226 | <small *ngIf="summaryData?.rbd_mirroring?.errors !== 0" | |
227 | class="badge badge-danger">{{ summaryData?.rbd_mirroring?.errors }}</small> | |
228 | </a> | |
229 | </li> | |
9f95a23c | 230 | |
20effc67 TL |
231 | <li routerLinkActive="active" |
232 | class="tc_submenuitem tc_submenuitem_block_iscsi" | |
233 | *ngIf="permissions.iscsi.read && enabledFeature.iscsi"> | |
234 | <a i18n | |
235 | routerLink="/block/iscsi">iSCSI</a> | |
236 | </li> | |
237 | </ul> | |
238 | </li> | |
239 | ||
240 | <!-- NFS --> | |
241 | <li routerLinkActive="active" | |
242 | class="nav-item tc_menuitem_nfs" | |
243 | *ngIf="permissions.nfs.read && enabledFeature.nfs"> | |
244 | <a i18n | |
245 | class="nav-link" | |
246 | routerLink="/nfs">NFS</a> | |
247 | </li> | |
248 | ||
249 | <!-- Filesystem --> | |
250 | <li routerLinkActive="active" | |
251 | class="nav-item tc_menuitem_cephfs" | |
252 | *ngIf="permissions.cephfs.read && enabledFeature.cephfs"> | |
253 | <a i18n | |
254 | class="nav-link" | |
255 | routerLink="/cephfs">File Systems</a> | |
256 | </li> | |
257 | ||
258 | <!-- Object Gateway --> | |
259 | <li routerLinkActive="active" | |
260 | class="nav-item tc_menuitem_rgw" | |
261 | *ngIf="permissions.rgw.read && enabledFeature.rgw"> | |
262 | <a class="nav-link dropdown-toggle" | |
263 | (click)="toggleSubMenu('rgw')" | |
39ae355f TL |
264 | [attr.aria-expanded]="displayedSubMenu === 'rgw'" |
265 | aria-controls="gateway-nav" | |
266 | role="button"> | |
20effc67 TL |
267 | <ng-container i18n>Object Gateway</ng-container> |
268 | </a> | |
269 | <ul class="list-unstyled" | |
39ae355f | 270 | id="gateway-nav" |
20effc67 | 271 | [ngbCollapse]="displayedSubMenu !== 'rgw'"> |
aee94f69 TL |
272 | <li routerLinkActive="active" |
273 | class="tc_submenuitem tc_submenuitem_rgw_overview"> | |
274 | <a i18n | |
275 | routerLink="/rgw/overview">Overview</a> | |
276 | </li> | |
20effc67 TL |
277 | <li routerLinkActive="active" |
278 | class="tc_submenuitem tc_submenuitem_rgw_daemons"> | |
279 | <a i18n | |
1e59de90 | 280 | routerLink="/rgw/daemon">Gateways</a> |
20effc67 TL |
281 | </li> |
282 | <li routerLinkActive="active" | |
283 | class="tc_submenuitem tc_submenuitem_rgw_users"> | |
284 | <a i18n | |
285 | routerLink="/rgw/user">Users</a> | |
286 | </li> | |
287 | <li routerLinkActive="active" | |
288 | class="tc_submenuitem tc_submenuitem_rgw_buckets"> | |
289 | <a i18n | |
290 | routerLink="/rgw/bucket">Buckets</a> | |
291 | </li> | |
aee94f69 TL |
292 | <li routerLinkActive="active" |
293 | class="tc_submenuitem tc_submenuitem_rgw_buckets"> | |
294 | <a i18n | |
295 | routerLink="/rgw/multisite">Multi-Site</a> | |
296 | </li> | |
20effc67 TL |
297 | </ul> |
298 | </li> | |
299 | </ng-container> | |
300 | </ng-template> | |
301 | ||
302 | </div> |