9 <meta content=
"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
11 <link rel=
"stylesheet"
12 href=
"/static/AdminLTE-2.3.7/bootstrap/css/bootstrap.min.css">
13 <link rel=
"stylesheet"
14 href=
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
15 <link rel=
"stylesheet"
16 href=
"https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
17 <link rel=
"stylesheet"
18 href=
"/static/AdminLTE-2.3.7/dist/css/AdminLTE.min.css">
19 <link rel=
"stylesheet"
20 href=
"/static/AdminLTE-2.3.7/dist/css/skins/skin-blue.min.css">
22 <script src=
"/static/AdminLTE-2.3.7/plugins/jQuery/jquery-2.2.3.min.js"></script>
24 <script src=
"/static/rivets.bundled.min.js"></script>
25 <script src=
"/static/underscore-min.js"></script>
27 <script src=
"/static/AdminLTE-2.3.7/bootstrap/js/bootstrap.min.js"></script>
28 <script src=
"/static/AdminLTE-2.3.7/dist/js/app.min.js"></script>
30 <script src=
"https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
31 <script src=
"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>
36 $(document).ready(function(){
37 var toplevel_data = {{ toplevel_data }};
38 var refresh_interval =
5000;
40 var refresh = function() {
41 $.get(
"/toplevel_data", function(data) {
42 _.extend(toplevel_data.health, data.health);
43 setTimeout(refresh, refresh_interval);
50 templateDelimiters: [
"{",
"}"]
53 rivets.formatters.health_color = function(status_str) {
54 if (status_str ==
"HEALTH_OK") {
55 return
"color: #00bb00;";
56 } else if (status_str ==
"HEALTH_WARN") {
57 return
"color: #FFC200;";
58 } else if (status_str ==
"HEALTH_ERR") {
59 return
"color: #ff0000;"
63 var truncate = function(n, max_width) {
64 var stringized = n.toString();
65 var parts = stringized.split(
".");
66 if (parts.length ==
1) {
70 var fractional_digits = max_width - parts[
0].length -
1;
71 if (fractional_digits <=
0) {
72 // No width available for the fractional part, drop
73 // it and the decimal point
76 return stringized.substring(
0, max_width);
81 rivets.formatters.dimless = function(n){
83 var units = [' ', 'k', 'M', 'G', 'T', 'P'];
86 while (Math.floor(n / (
1000**unit)).toString().length
> width -
1) {
92 truncated_float = truncate((n / Math.pow(
1000.0, unit)).toString(), width);
94 truncated_float = truncate(n, width);
97 return truncated_float + units[unit];
100 <!--rivet.formatters.mon_summary = function(mon_map) {-->
103 rivets.bind($(
"#health"), toplevel_data.health);
104 rivets.bind($(
"section.sidebar"), toplevel_data);
105 setTimeout(refresh, refresh_interval);
109 <link rel=
"shortcut icon" href=
"http://ceph.com/wp-content/themes/ceph/favicon.ico">
110 <link rel=
"shortcut icon" href=
"/static/favicon.ico">
113 <body class=
"hold-transition skin-blue sidebar-mini">
114 <div class=
"wrapper">
117 <header class=
"main-header">
119 <a href=
"/" class=
"logo">
121 <span class="logo-mini"><b>A</b>LT</span>
122 <span class="logo-lg"><b>Admin</b>LTE</span> -->
123 <span class=
"logo-lg">
124 <img src=
"/static/Ceph_Logo_Standard_RGB_White_120411_fa.png"
125 width=
"123px" height=
"34px"/>
129 <!-- Header Navbar -->
130 <nav class=
"navbar navbar-static-top" role=
"navigation">
131 <!-- Sidebar toggle button-->
132 <a href=
"#" class=
"sidebar-toggle" data-toggle=
"offcanvas"
134 <span class=
"sr-only">Toggle navigation
</span>
137 <div id=
"health" style=
"font-size: 20px; padding: 12px 12px;">
139 <span rv-style=
"overall_status | health_color">
144 <!-- Navbar Right Menu -->
145 <div class=
"navbar-custom-menu">
146 <ul class=
"nav navbar-nav">
152 <!-- Left side column. contains the logo and sidebar -->
153 <aside class=
"main-sidebar">
155 <!-- sidebar: style can be found in sidebar.less -->
156 <section class=
"sidebar">
157 <!-- Sidebar Menu -->
158 <ul class=
"sidebar-menu">
159 <!-- Optionally, you can add icons to the links -->
160 <li><a href=
"/health"><i class=
"fa fa-heart"></i>
161 <span>Cluster health
</span></a>
163 <li><a href=
"/servers"><i class=
"fa fa-server"></i>
164 <span>Servers
</span></a>
166 <li class=
"treeview active">
167 <a href=
"#"><i class=
"fa fa-folder"></i> <span>Filesystems
</span>
168 <span class=
"pull-right-container">
169 <i class=
"fa fa-angle-left pull-right"></i>
172 <ul class=
"treeview-menu menu-open">
173 <li rv-each-filesystem=
"filesystems">
174 <a rv-href=
"filesystem.url">{filesystem.name}
</a>
179 <!-- /.sidebar-menu -->
184 <div id=
"content" class=
"content-wrapper">
186 {% block content %}{% endblock %}
189 <!-- /.content-wrapper -->
192 <footer class=
"main-footer">
193 <!-- To the right -->
194 <div class=
"pull-right hidden-xs">
197 <!-- Default to the left -->
198 <strong>Copyright
© 2016 by Ceph Contributors.
</strong> Free software (LGPL
2.1)
201 <!-- Control Sidebar -->
202 <aside class=
"control-sidebar control-sidebar-dark">
203 <!-- Create the tabs -->
204 <ul class=
"nav nav-tabs nav-justified control-sidebar-tabs">
205 <li class=
"active"><a href=
"#control-sidebar-home-tab" data-toggle=
"tab"><i class=
"fa fa-home"></i></a></li>
206 <li><a href=
"#control-sidebar-settings-tab" data-toggle=
"tab"><i class=
"fa fa-gears"></i></a></li>
209 <div class=
"tab-content">
210 <!-- Home tab content -->
211 <div class=
"tab-pane active" id=
"control-sidebar-home-tab">
212 <h3 class=
"control-sidebar-heading">Recent Activity
</h3>
213 <ul class=
"control-sidebar-menu">
215 <a href=
"javascript::;">
216 <i class=
"menu-icon fa fa-birthday-cake bg-red"></i>
218 <div class=
"menu-info">
219 <h4 class=
"control-sidebar-subheading">Langdon's Birthday
</h4>
221 <p>Will be
23 on April
24th
</p>
226 <!-- /.control-sidebar-menu -->
228 <h3 class=
"control-sidebar-heading">Tasks Progress
</h3>
229 <ul class=
"control-sidebar-menu">
231 <a href=
"javascript::;">
232 <h4 class=
"control-sidebar-subheading">
233 Custom Template Design
234 <span class=
"pull-right-container">
235 <span class=
"label label-danger pull-right">70%
</span>
239 <div class=
"progress progress-xxs">
240 <div class=
"progress-bar progress-bar-danger" style=
"width: 70%"></div>
245 <!-- /.control-sidebar-menu -->
249 <!-- Stats tab content -->
250 <div class=
"tab-pane" id=
"control-sidebar-stats-tab">Stats Tab Content
</div>
252 <!-- Settings tab content -->
253 <div class=
"tab-pane" id=
"control-sidebar-settings-tab">
255 <h3 class=
"control-sidebar-heading">General Settings
</h3>
257 <div class=
"form-group">
258 <label class=
"control-sidebar-subheading">
260 <input type=
"checkbox" class=
"pull-right" checked
>
264 Some information about this general settings option
267 <!-- /.form-group -->
273 <!-- /.control-sidebar -->
274 <!-- Add the sidebar's background. This div must be placed
275 immediately after the control sidebar -->
276 <div class=
"control-sidebar-bg"></div>
286 <!-- Bootstrap 3.3.6 -->
288 <!-- AdminLTE App -->