| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- ///<reference path="../headers/common.d.ts" />
- import coreModule from 'app/core/core_module';
- export interface NavModelItem {
- title: string;
- url: string;
- icon?: string;
- iconUrl?: string;
- }
- export interface NavModel {
- section: NavModelItem;
- menu: NavModelItem[];
- }
- export class NavModelSrv {
- /** @ngInject */
- constructor(private contextSrv) {
- }
- getAlertingNav(subPage) {
- return {
- section: {
- title: 'Alerting',
- url: 'plugins',
- icon: 'icon-gf icon-gf-alert'
- },
- menu: [
- {title: 'Alert List', active: subPage === 0, url: 'alerting/list', icon: 'fa fa-list-ul'},
- {title: 'Notification channels', active: subPage === 1, url: 'alerting/notifications', icon: 'fa fa-bell-o'},
- ]
- };
- }
- getDatasourceNav(subPage) {
- return {
- section: {
- title: 'Data Sources',
- url: 'datasources',
- icon: 'icon-gf icon-gf-datasources'
- },
- menu: [
- {title: 'List view', active: subPage === 0, url: 'datasources', icon: 'fa fa-list-ul'},
- {title: 'Add data source', active: subPage === 1, url: 'datasources/new', icon: 'fa fa-plus'},
- ]
- };
- }
- getPlaylistsNav(subPage) {
- return {
- section: {
- title: 'Playlists',
- url: 'playlists',
- icon: 'fa fa-fw fa-film'
- },
- menu: [
- {title: 'List view', active: subPage === 0, url: 'playlists', icon: 'fa fa-list-ul'},
- {title: 'Add Playlist', active: subPage === 1, url: 'playlists/create', icon: 'fa fa-plus'},
- ]
- };
- }
- getProfileNav() {
- return {
- section: {
- title: 'User Profile',
- url: 'profile',
- icon: 'fa fa-fw fa-user'
- },
- menu: []
- };
- }
- getNotFoundNav() {
- return {
- section: {
- title: 'Page',
- url: '',
- icon: 'fa fa-fw fa-warning'
- },
- menu: []
- };
- }
- getOrgNav(subPage) {
- return {
- section: {
- title: 'Organization',
- url: 'org',
- icon: 'icon-gf icon-gf-users'
- },
- menu: [
- {title: 'Preferences', active: subPage === 0, url: 'org', icon: 'fa fa-fw fa-cog'},
- {title: 'Org Users', active: subPage === 1, url: 'org/users', icon: 'fa fa-fw fa-users'},
- {title: 'API Keys', active: subPage === 2, url: 'org/apikeys', icon: 'fa fa-fw fa-key'},
- ]
- };
- }
- getAdminNav(subPage) {
- return {
- section: {
- title: 'Admin',
- url: 'admin',
- icon: 'fa fa-fw fa-cogs'
- },
- menu: [
- {title: 'Users', active: subPage === 0, url: 'admin/users', icon: 'fa fa-fw fa-user'},
- {title: 'Orgs', active: subPage === 1, url: 'admin/orgs', icon: 'fa fa-fw fa-users'},
- {title: 'Server Settings', active: subPage === 2, url: 'admin/settings', icon: 'fa fa-fw fa-cogs'},
- {title: 'Server Stats', active: subPage === 2, url: 'admin/stats', icon: 'fa fa-fw fa-line-chart'},
- {title: 'Style Guide', active: subPage === 2, url: 'styleguide', icon: 'fa fa-fw fa-key'},
- ]
- };
- }
- getPluginsNav() {
- return {
- section: {
- title: 'Plugins',
- url: 'plugins',
- icon: 'icon-gf icon-gf-apps'
- },
- menu: []
- };
- }
- getDashboardNav(dashboard, dashNavCtrl) {
- // special handling for snapshots
- if (dashboard.meta.isSnapshot) {
- return {
- section: {
- title: dashboard.title,
- icon: 'icon-gf icon-gf-snapshot'
- },
- menu: [
- {
- title: 'Go to original dashboard',
- icon: 'fa fa-fw fa-external-link',
- url: dashboard.snapshot.originalUrl,
- }
- ]
- };
- }
- var menu = [];
- if (dashboard.meta.canEdit) {
- menu.push({
- title: 'Settings',
- icon: 'fa fa-fw fa-cog',
- clickHandler: () => dashNavCtrl.openEditView('settings')
- });
- menu.push({
- title: 'Templating',
- icon: 'fa fa-fw fa-code',
- clickHandler: () => dashNavCtrl.openEditView('templating')
- });
- menu.push({
- title: 'Annotations',
- icon: 'fa fa-fw fa-comment',
- clickHandler: () => dashNavCtrl.openEditView('annotations')
- });
- if (!dashboard.meta.isHome) {
- menu.push({
- title: 'Version history',
- icon: 'fa fa-fw fa-history',
- clickHandler: () => dashNavCtrl.openEditView('history')
- });
- }
- menu.push({
- title: 'View JSON',
- icon: 'fa fa-fw fa-eye',
- clickHandler: () => dashNavCtrl.viewJson()
- });
- }
- if (this.contextSrv.isEditor && !dashboard.editable) {
- menu.push({
- title: 'Make Editable',
- icon: 'fa fa-fw fa-edit',
- clickHandler: () => dashNavCtrl.makeEditable()
- });
- }
- menu.push({
- title: 'Shortcuts',
- icon: 'fa fa-fw fa-keyboard-o',
- clickHandler: () => dashNavCtrl.showHelpModal()
- });
- if (this.contextSrv.isEditor) {
- menu.push({
- title: 'Save As ...',
- icon: 'fa fa-fw fa-save',
- clickHandler: () => dashNavCtrl.saveDashboardAs()
- });
- }
- if (dashboard.meta.canSave) {
- menu.push({
- title: 'Delete',
- icon: 'fa fa-fw fa-trash',
- clickHandler: () => dashNavCtrl.deleteDashboard()
- });
- }
- return {
- section: {
- title: dashboard.title,
- icon: 'icon-gf icon-gf-dashboard'
- },
- menu: menu
- };
- }
- }
- coreModule.service('navModelSrv', NavModelSrv);
|