浏览代码

refactor(): began refactoring topnav directive to be more like the new style of components, and also make it usable on all pages including dashboard

Torkel Ödegaard 10 年之前
父节点
当前提交
070af40487

+ 27 - 0
public/app/core/components/navbar/navbar.html

@@ -0,0 +1,27 @@
+<div class="navbar navbar-static-top">
+	<div class="navbar-inner"><div class="container-fluid">
+			<div class="top-nav">
+				<div class="top-nav-btn top-nav-menu-btn">
+					<a class="pointer" ng-click="ctrl.contextSrv.toggleSideMenu()">
+						<span class="top-nav-logo-background">
+							<img class="logo-icon" src="img/fav32.png"></img>
+						</span>
+						<i class="fa fa-caret-down"></i>
+					</a>
+				</div>
+
+				<span class="icon-circle top-nav-icon">
+					<i ng-class="icon"></i>
+				</span>
+
+				<a ng-href="{{titleUrl}}" class="top-nav-title">
+					{{ctrl.title}}
+				</a>
+				<i ng-show="subnav" class="top-nav-breadcrumb-icon fa fa-angle-right"></i>
+			</div>
+
+			<div ng-transclude></div>
+		</div>
+	</div>
+</div>
+

+ 36 - 0
public/app/core/components/navbar/navbar.ts

@@ -0,0 +1,36 @@
+///<reference path="../../../headers/common.d.ts" />
+
+import config from 'app/core/config';
+import _ from 'lodash';
+import $ from 'jquery';
+import coreModule from '../../core_module';
+
+export class NavbarCtrl {
+  contextSrv: any;
+
+  /** @ngInject */
+  constructor(private $scope, contextSrv) {
+    this.contextSrv = contextSrv;
+  }
+}
+
+export function navbarDirective() {
+  return {
+    restrict: 'E',
+    templateUrl: 'app/core/components/navbar/navbar.html',
+    controller: NavbarCtrl,
+    bindToController: true,
+    controllerAs: 'ctrl',
+    transclude: true,
+    scope: {
+      title: "@",
+      titleUrl: "@",
+    },
+    link: function(scope, elem, attrs) {
+      scope.icon = attrs.icon;
+      scope.subnav = attrs.subnav;
+    }
+  };
+}
+
+coreModule.directive('navbar', navbarDirective);

+ 0 - 0
public/app/features/sidemenu/sidemenu.html → public/app/core/components/sidemenu/sidemenu.html


+ 5 - 6
public/app/features/sidemenu/sidemenu.ts → public/app/core/components/sidemenu/sidemenu.ts

@@ -1,12 +1,11 @@
-///<reference path="../../headers/common.d.ts" />
+///<reference path="../../../headers/common.d.ts" />
 
 
 import config from 'app/core/config';
 import config from 'app/core/config';
-import store from 'app/core/store';
 import _ from 'lodash';
 import _ from 'lodash';
-import angular from 'angular';
 import $ from 'jquery';
 import $ from 'jquery';
+import coreModule from '../../core_module';
 
 
-class SideMenuCtrl {
+export class SideMenuCtrl {
   isSignedIn: boolean;
   isSignedIn: boolean;
   showSignout: boolean;
   showSignout: boolean;
   user: any;
   user: any;
@@ -135,7 +134,7 @@ class SideMenuCtrl {
  };
  };
 }
 }
 
 
-function sideMenuDirective() {
+export function sideMenuDirective() {
   return {
   return {
     restrict: 'E',
     restrict: 'E',
     templateUrl: 'app/features/sidemenu/sidemenu.html',
     templateUrl: 'app/features/sidemenu/sidemenu.html',
@@ -146,4 +145,4 @@ function sideMenuDirective() {
   };
   };
 }
 }
 
 
-angular.module('grafana.directives').directive('sidemenu', sideMenuDirective);
+coreModule.directive('sidemenu', sideMenuDirective);

+ 3 - 1
public/app/core/core.ts

@@ -22,6 +22,8 @@ import './jquery_extended';
 import './partials';
 import './partials';
 
 
 import {grafanaAppDirective} from './components/grafana_app';
 import {grafanaAppDirective} from './components/grafana_app';
+import {sideMenuDirective} from './components/sidemenu/sidemenu';
+import {navbarDirective} from './components/navbar/navbar';
 import {arrayJoin} from './directives/array_join';
 import {arrayJoin} from './directives/array_join';
 import 'app/core/controllers/all';
 import 'app/core/controllers/all';
 import 'app/core/services/all';
 import 'app/core/services/all';
@@ -29,4 +31,4 @@ import 'app/core/routes/all';
 import './filters/filters';
 import './filters/filters';
 import coreModule from './core_module';
 import coreModule from './core_module';
 
 
-export {arrayJoin, coreModule, grafanaAppDirective};
+export {arrayJoin, coreModule, grafanaAppDirective, sideMenuDirective, navbarDirective};

+ 0 - 1
public/app/features/all.js

@@ -1,6 +1,5 @@
 define([
 define([
   './panellinks/module',
   './panellinks/module',
-  './sidemenu/sidemenu',
   './dashlinks/module',
   './dashlinks/module',
   './annotations/annotations_srv',
   './annotations/annotations_srv',
   './templating/templateSrv',
   './templating/templateSrv',

+ 8 - 2
public/app/features/playlist/partials/playlist.html

@@ -1,9 +1,15 @@
-<topnav icon="fa fa-fw fa-list" title="Playlists" title-url="playlists" subnav="true">
+<!-- <topnav icon="fa fa&#45;fw fa&#45;list" title="Playlists" title&#45;url="playlists" subnav="true"> -->
+<!-- 	<ul class="nav"> -->
+<!-- 		<li ng&#45;class="{active: isNew()}" ng&#45;show="isNew()"><a href="datasources/create">New</a></li> -->
+<!-- 		<li class="active" ng&#45;show="!isNew()"><a href="playlists/edit/{{playlist.id}}">{{playlist.title}}</a></li> -->
+<!-- 	</ul> -->
+<!-- </topnav> -->
+<navbar title="Playlists" title-url="playlists" icon="fa fa-fw fa-list" subnav="true">
 	<ul class="nav">
 	<ul class="nav">
 		<li ng-class="{active: isNew()}" ng-show="isNew()"><a href="datasources/create">New</a></li>
 		<li ng-class="{active: isNew()}" ng-show="isNew()"><a href="datasources/create">New</a></li>
 		<li class="active" ng-show="!isNew()"><a href="playlists/edit/{{playlist.id}}">{{playlist.title}}</a></li>
 		<li class="active" ng-show="!isNew()"><a href="playlists/edit/{{playlist.id}}">{{playlist.title}}</a></li>
 	</ul>
 	</ul>
-</topnav>
+</navbar>
 
 
 <div class="page-container" ng-form="playlistEditForm">
 <div class="page-container" ng-form="playlistEditForm">
   <div class="page">
   <div class="page">