Commit efed13b9 by Torkel Ödegaard

Work on login and sidemenu

parent 9e30599f
<div class="navbar navbar-static-top">
<div class="navbar-inner">
<div class="container-fluid">
<span class="brand">
<i class="icon-gears" style=""></i>
<span style="color: white; padding-left: 4px;">Grafana</span>
<ul class="nav" ng-controller='DashboardNavCtrl' ng-init="init()">
</span>
</ul>
</div>
</div>
</div>
<section class="pro-sidemenu-items">
<div class="dropdown pro-side-menu-user">
<img src="https://secure.gravatar.com/avatar/c8656e8972626f01e1703681d5e55f92?s=90&default=blank">
<a class="dropdown-toggle pro-sidemenu-link " data-toggle="dropdown">
torkelo
<i class="icon-caret-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/logout" target="_blank">Logout</a></li>
</ul>
</div>
<a class="pro-sidemenu-link" href="/dashboard/db/home">
<i class="icon-th-large"></i>
Dashboards
</a>
<a class="pro-sidemenu-link" href="/charts">
<i class="icon-signal"></i>
Graphs
</a>
<a class="pro-sidemenu-link" href="/charts">
<i class="icon-bolt" style="padding-right: 23px"></i>
Alerts
</a>
<a class="pro-sidemenu-link" href="/admin/datasources">
<i class="icon-sitemap"></i>
Data sources
</a>
<a class="pro-sidemenu-link" href="/admin">
<i class="icon-tasks"></i>
Global options
</a>
<a class="pro-sidemenu-link" href="/admin">
<i class="icon-user"></i>
User accounts
</a>
</section>
</div>
{"editable":true,"nav":[{"collapse":false,"enable":true,"notice":false,"now":true,"refresh_intervals":["5s","10s","30s","1m","5m","15m","30m","1h","2h","1d"],"status":"Stable","time_options":["5m","15m","1h","6h","12h","24h","2d","7d","30d"],"type":"timepicker"}],"pulldowns":[{"collapse":false,"enable":false,"notice":false,"type":"filtering"},{"enable":false,"type":"annotations"}],"rows":[{"collapsable":true,"collapse":false,"editable":true,"height":"190px","notice":false,"panels":[{"content":"\u003ch3 class=\"text-center\"\u003eWelcome to grafana demo, playground and interactive tutorial site.\u003c/h2\u003e\n\n\u003cdiv class=\"row-fluid\"\u003e\n\u0009\u003cdiv class=\"span4\"\u003e\n\u0009\u0009\u003ch4\u003eFeature showcases\u003c/h2\u003e\n\u0009\u0009\u003cul\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/graph-styles.json\"\u003eGraphs styles\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/templated-graphs.json\"\u003eTemplated graphs\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/templated-graphs-nested.json\"\u003eTemplated graphs nested\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/annotations.json\"\u003eAnnotations\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/white-theme.json\"\u003eWhite theme\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u003c/ul\u003e\n\u0009\u003c/div\u003e\n\u0009\u003cdiv class=\"span4\"\u003e\n\u0009\u0009\u003ch4\u003eGraphite tutorials\u003c/h2\u003e\n\u0009\u0009\u003cul\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Graphite introduction (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Basic functions (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Advanced functions (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Tips and tricks (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u003c/ul\u003e\n\u0009\u003c/div\u003e\n\u0009\u003cdiv class=\"span4\"\u003e\n\u0009\u0009\u003ch4\u003eInfluxDB examples\u003c/h2\u003e\n\u0009\u0009\u003cul\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009TODO\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u003c/ul\u003e\n\u0009\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript type=\"text/javascript\"\u003e(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\nm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\nga('create', 'UA-47280256-1', 'grafana.org');\nga('send', 'pageview');\u003c/script\u003e","editable":true,"error":false,"id":1,"loadingEditor":false,"mode":"html","span":12,"style":{},"title":"Grafana demo site","type":"text"}],"title":"test"},{"collapsable":true,"collapse":false,"editable":true,"height":"250px","notice":false,"panels":[{"aliasColors":{"web_server_01":"#B7DBAB","web_server_02":"#7EB26D","web_server_03":"#508642","web_server_04":"#3F6833"},"aliasYAxis":{},"annotate":{"enable":false},"bars":false,"datasource":null,"editable":true,"fill":3,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":2,"interactive":true,"legend":{"avg":false,"current":false,"max":false,"min":false,"show":true,"total":false,"values":false},"legend_counts":true,"lines":true,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":true,"steppedLine":false,"targets":[{"target":"aliasByNode(scaleToSeconds(apps.fakesite.*.counters.requests.count,1),2)"}],"timezone":"browser","title":"server requests","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["short","short"],"zerofill":true},{"aliasColors":{"logins":"#7EB26D","logins (-1 day)":"#447EBC"},"aliasYAxis":{},"annotate":{"enable":false},"bars":false,"datasource":null,"editable":true,"fill":1,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":3,"interactive":true,"legend":{"avg":false,"current":true,"max":true,"min":true,"show":true,"total":false,"values":true},"legend_counts":true,"lines":true,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":false,"steppedLine":false,"targets":[{"target":"alias(scaleToSeconds(apps.fakesite.web_server_01.counters.requests.count,1),'logins')"},{"target":"alias(timeShift(scaleToSeconds(apps.fakesite.web_server_01.counters.requests.count,1),'1h'),'logins (-1 hour)')"}],"timezone":"browser","title":"logins","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["short","short"],"zerofill":true}],"title":"test"},{"collapsable":true,"collapse":false,"editable":true,"height":"300px","notice":false,"panels":[{"aliasColors":{"cpu":"#E24D42"},"aliasYAxis":{"cpu":2},"annotate":{"enable":false},"bars":false,"datasource":null,"editable":true,"fill":0,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":4,"interactive":true,"legend":{"avg":false,"current":true,"max":false,"min":true,"show":true,"total":false,"values":true},"legend_counts":true,"lines":true,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":false,"steppedLine":false,"targets":[{"target":"alias(scale(scaleToSeconds(apps.fakesite.web_server_01.counters.requests.count,1),1000000),'memory')"},{"target":"alias(scaleToSeconds(apps.fakesite.web_server_01.counters.request_status.code_302.count,1),'cpu')"}],"timezone":"browser","title":"Memory / CPU","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["bytes","none"],"zerofill":true},{"aliasColors":{"upper_25":"#BA43A9","upper_50":"#7EB26D","upper_75":"#EAB839"},"aliasYAxis":{},"annotate":{"enable":false},"bars":true,"datasource":null,"editable":true,"fill":1,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":5,"interactive":true,"legend":{"alignAsTable":true,"avg":true,"current":false,"max":false,"min":false,"rightSide":true,"show":true,"total":false,"values":true},"legend_counts":true,"lines":false,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":true,"steppedLine":false,"targets":[{"target":"aliasByNode(statsd.fakesite.timers.ads_timer.*,4)"}],"timezone":"browser","title":"client side full page load","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["ms","short"],"zerofill":true}],"title":""},{"collapsable":true,"collapse":false,"editable":true,"height":"250px","notice":false,"panels":[],"title":"test"}],"style":"dark","tags":["showcase","startpage","home","default"],"templating":{"list":[]},"time":{"from":"now-15m","to":"now"},"timezone":"browser","title":"Grafana Play Home","version":3}
\ No newline at end of file
{"editable":true,"nav":[{"collapse":false,"enable":true,"notice":false,"now":true,"refresh_intervals":["5s","10s","30s","1m","5m","15m","30m","1h","2h","1d"],"status":"Stable","time_options":["5m","15m","1h","6h","12h","24h","2d","7d","30d"],"type":"timepicker"}],"pulldowns":[{"collapse":false,"enable":false,"notice":false,"type":"filtering"},{"enable":false,"type":"annotations"}],"rows":[{"collapsable":true,"collapse":false,"editable":true,"height":"190px","notice":false,"panels":[{"content":"\u003ch3 class=\"text-center\"\u003eWelcome to grafana demo, playground and interactive tutorial site.\u003c/h2\u003e\n\n\u003cdiv class=\"row-fluid\"\u003e\n\u0009\u003cdiv class=\"span4\"\u003e\n\u0009\u0009\u003ch4\u003eFeature showcases\u003c/h2\u003e\n\u0009\u0009\u003cul\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/graph-styles.json\"\u003eGraphs styles\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/templated-graphs.json\"\u003eTemplated graphs\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/templated-graphs-nested.json\"\u003eTemplated graphs nested\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/annotations.json\"\u003eAnnotations\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009\u003ca href=\"#/dashboard/file/white-theme.json\"\u003eWhite theme\u003c/a\u003e\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u003c/ul\u003e\n\u0009\u003c/div\u003e\n\u0009\u003cdiv class=\"span4\"\u003e\n\u0009\u0009\u003ch4\u003eGraphite tutorials\u003c/h2\u003e\n\u0009\u0009\u003cul\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Graphite introduction (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Basic functions (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Advanced functions (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009Tips and tricks (TODO)\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u003c/ul\u003e\n\u0009\u003c/div\u003e\n\u0009\u003cdiv class=\"span4\"\u003e\n\u0009\u0009\u003ch4\u003eInfluxDB examples\u003c/h2\u003e\n\u0009\u0009\u003cul\u003e\n\u0009\u0009\u0009\u003cli\u003e\n\u0009\u0009\u0009\u0009TODO\n\u0009\u0009\u0009\u003c/li\u003e\n\u0009\u0009\u003c/ul\u003e\n\u0009\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript type=\"text/javascript\"\u003e(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\nm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\nga('create', 'UA-47280256-1', 'grafana.org');\nga('send', 'pageview');\u003c/script\u003e","editable":true,"error":false,"id":1,"loadingEditor":false,"mode":"html","span":12,"style":{},"title":"Grafana demo site","type":"text"}],"title":"test"},{"collapsable":true,"collapse":false,"editable":true,"height":"250px","notice":false,"panels":[{"aliasColors":{"web_server_01":"#B7DBAB","web_server_02":"#7EB26D","web_server_03":"#508642","web_server_04":"#3F6833"},"aliasYAxis":{},"annotate":{"enable":false},"bars":false,"datasource":null,"editable":true,"fill":3,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":2,"interactive":true,"legend":{"avg":false,"current":false,"max":false,"min":false,"show":true,"total":false,"values":false},"legend_counts":true,"lines":true,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":true,"steppedLine":false,"targets":[{"target":"aliasByNode(scaleToSeconds(apps.fakesite.*.counters.requests.count,1),2)"}],"timezone":"browser","title":"server requests","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["short","short"],"zerofill":true},{"aliasColors":{"logins":"#7EB26D","logins (-1 day)":"#447EBC"},"aliasYAxis":{},"annotate":{"enable":false},"bars":false,"datasource":null,"editable":true,"fill":1,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":3,"interactive":true,"legend":{"avg":false,"current":true,"max":true,"min":true,"show":true,"total":false,"values":true},"legend_counts":true,"lines":true,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":false,"steppedLine":false,"targets":[{"target":"alias(scaleToSeconds(apps.fakesite.web_server_01.counters.requests.count,1),'logins')"},{"target":"alias(timeShift(scaleToSeconds(apps.fakesite.web_server_01.counters.requests.count,1),'1h'),'logins (-1 hour)')"}],"timezone":"browser","title":"logins","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["short","short"],"zerofill":true}],"title":"test"},{"collapsable":true,"collapse":false,"editable":true,"height":"300px","notice":false,"panels":[{"aliasColors":{"cpu":"#E24D42"},"aliasYAxis":{"cpu":2},"annotate":{"enable":false},"bars":false,"datasource":null,"editable":true,"fill":0,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":4,"interactive":true,"legend":{"avg":false,"current":true,"max":false,"min":true,"show":true,"total":false,"values":true},"legend_counts":true,"lines":true,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":false,"steppedLine":false,"targets":[{"target":"alias(scale(scaleToSeconds(apps.fakesite.web_server_01.counters.requests.count,1),1000000),'memory')"},{"target":"alias(scaleToSeconds(apps.fakesite.web_server_01.counters.request_status.code_302.count,1),'cpu')"}],"timezone":"browser","title":"Memory / CPU","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["bytes","none"],"zerofill":true},{"aliasColors":{"upper_25":"#BA43A9","upper_50":"#7EB26D","upper_75":"#EAB839"},"aliasYAxis":{},"annotate":{"enable":false},"bars":true,"datasource":null,"editable":true,"fill":1,"grid":{"leftMax":null,"leftMin":null,"max":null,"min":0,"rightMax":null,"rightMin":null,"threshold1":null,"threshold1Color":"rgba(216, 200, 27, 0.27)","threshold2":null,"threshold2Color":"rgba(234, 112, 112, 0.22)"},"id":5,"interactive":true,"legend":{"alignAsTable":true,"avg":true,"current":false,"max":false,"min":false,"rightSide":true,"show":true,"total":false,"values":true},"legend_counts":true,"lines":false,"linewidth":2,"nullPointMode":"connected","options":false,"percentage":false,"pointradius":5,"points":false,"renderer":"flot","resolution":100,"scale":1,"span":6,"spyable":true,"stack":true,"steppedLine":false,"targets":[{"target":"aliasByNode(statsd.fakesite.timers.ads_timer.*,4)"}],"timezone":"browser","title":"client side full page load","tooltip":{"query_as_alias":true,"value_type":"cumulative"},"type":"graph","x-axis":true,"y-axis":true,"y_formats":["ms","short"],"zerofill":true}],"title":""},{"collapsable":true,"collapse":false,"editable":true,"height":"250px","notice":false,"panels":[],"title":"test"}],"style":"dark","tags":["showcase","startpage","home","default"],"templating":{"list":[]},"time":{"from":"now-15m","to":"now"},"timezone":"browser","title":"home","version":3}
\ No newline at end of file
Subproject commit 472e1c6d8e4f6b1ea094d6e017e1a98803e48989
Subproject commit 34ab1e529b499af836631f8076c2c4df02be5860
......@@ -6,6 +6,7 @@ func init() {
addRoutes(func(self *HttpServer) {
self.router.GET("/login/*_", self.index)
self.router.POST("/login", self.loginPost)
self.router.POST("/logout", self.logoutPost)
})
}
......@@ -32,6 +33,14 @@ func (self *HttpServer) loginPost(c *gin.Context) {
}
}
func (self *HttpServer) logoutPost(c *gin.Context) {
session, _ := sessionStore.Get(c.Request, "grafana-session")
session.Values["login"] = nil
session.Save(c.Request, c.Writer)
c.JSON(200, gin.H{"status": "logged out"})
}
func (self *HttpServer) authMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
session, _ := sessionStore.Get(c.Request, "grafana-session")
......
......@@ -23,12 +23,20 @@
<link rel="stylesheet" href="/public/css/grafana.light.min.css" ng-if="grafana.style === 'light'">
<div ng-repeat='alert in dashAlerts.list' class="alert-{{alert.severity}} dashboard-notice" ng-show="$last">
<button type="button" class="close" ng-click="dashAlerts.clear(alert)" style="padding-right:50px">&times;</button>
<strong>{{alert.title}}</strong> <span ng-bind-html='alert.text'></span> <div style="padding-right:10px" class='pull-right small'> {{$index + 1}} alert(s) </div>
</div>
<div class="pro-container" ng-class="{'pro-sidemenu-open': showProSideMenu}">
<div ng-view ng-class="{'dashboard-fullscreen': fullscreen}"></div>
<aside class="pro-sidemenu" ng-if="showProSideMenu">
<div ng-include="'app/partials/pro/sidemenu.html'"></div>
</aside>
<div ng-repeat='alert in dashAlerts.list' class="alert-{{alert.severity}} dashboard-notice" ng-show="$last">
<button type="button" class="close" ng-click="dashAlerts.clear(alert)" style="padding-right:50px">&times;</button>
<strong>{{alert.title}}</strong> <span ng-bind-html='alert.text'></span> <div style="padding-right:10px" class='pull-right small'> {{$index + 1}} alert(s) </div>
</div>
<div ng-view class="pro-main-view" ng-class="{'dashboard-fullscreen': fullscreen}"></div>
</div>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment