| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // Libraries
- import _ from 'lodash';
- // Utils & Services
- import config from 'app/core/config';
- // Types
- import { NavModel } from 'app/types';
- import { PluginMeta, DataSourceSettings } from '@grafana/ui/src/types';
- export function buildNavModel(ds: DataSourceSettings, plugin: PluginMeta, currentPage: string): NavModel {
- let title = 'New';
- const subTitle = `Type: ${plugin.name}`;
- if (ds.id) {
- title = ds.name;
- }
- const main = {
- img: plugin.info.logos.large,
- id: 'ds-edit-' + plugin.id,
- subTitle: subTitle,
- url: '',
- text: title,
- breadcrumbs: [{ title: 'Data Sources', url: 'datasources' }],
- children: [
- {
- active: currentPage === 'datasource-settings',
- icon: 'fa fa-fw fa-sliders',
- id: 'datasource-settings',
- text: 'Settings',
- url: `datasources/edit/${ds.id}`,
- },
- ],
- };
- const hasDashboards: any = _.find(plugin.includes, { type: 'dashboard' }) !== undefined;
- if (hasDashboards && ds.id) {
- main.children.push({
- active: currentPage === 'datasource-dashboards',
- icon: 'fa fa-fw fa-th-large',
- id: 'datasource-dashboards',
- text: 'Dashboards',
- url: `datasources/edit/${ds.id}/dashboards`,
- });
- }
- if (config.buildInfo.isEnterprise) {
- main.children.push({
- active: currentPage === 'datasource-permissions',
- icon: 'fa fa-fw fa-lock',
- id: 'datasource-permissions',
- text: 'Permissions',
- url: `datasources/edit/${ds.id}/permissions`,
- });
- }
- return {
- main: main,
- node: _.find(main.children, { active: true }),
- };
- }
|