mirror of https://github.com/grafana/grafana
ux: merge branch navbarv2, new navbar with dashboard search available on all pages, closes #6475
parent
1bdf82dca3
commit
e9d5e037e8
@ -0,0 +1,209 @@ |
||||
///<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-bolt', |
||||
clickHandler: () => dashNavCtrl.openEditView('annotations') |
||||
}); |
||||
|
||||
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() |
||||
}); |
||||
} |
||||
|
||||
return { |
||||
section: { |
||||
title: dashboard.title, |
||||
icon: 'icon-gf icon-gf-dashboard' |
||||
}, |
||||
menu: menu |
||||
}; |
||||
} |
||||
} |
||||
|
||||
coreModule.service('navModelSrv', NavModelSrv); |
||||
Loading…
Reference in new issue