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