navModel.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import _ from 'lodash';
  2. import { DataSource, PluginMeta, NavModel } from 'app/types';
  3. import config from 'app/core/config';
  4. export function buildNavModel(ds: DataSource, plugin: PluginMeta, currentPage: string): NavModel {
  5. let title = 'New';
  6. const subTitle = `Type: ${plugin.name}`;
  7. if (ds.id) {
  8. title = ds.name;
  9. }
  10. const main = {
  11. img: plugin.info.logos.large,
  12. id: 'ds-edit-' + plugin.id,
  13. subTitle: subTitle,
  14. url: '',
  15. text: title,
  16. breadcrumbs: [{ title: 'Data Sources', url: 'datasources' }],
  17. children: [
  18. {
  19. active: currentPage === 'datasource-settings',
  20. icon: 'fa fa-fw fa-sliders',
  21. id: 'datasource-settings',
  22. text: 'Settings',
  23. url: `datasources/edit/${ds.id}`,
  24. },
  25. ],
  26. };
  27. const hasDashboards = _.find(plugin.includes, { type: 'dashboard' }) !== undefined;
  28. if (hasDashboards && ds.id) {
  29. main.children.push({
  30. active: currentPage === 'datasource-dashboards',
  31. icon: 'fa fa-fw fa-th-large',
  32. id: 'datasource-dashboards',
  33. text: 'Dashboards',
  34. url: `datasources/edit/${ds.id}/dashboards`,
  35. });
  36. }
  37. if (config.buildInfo.isEnterprise) {
  38. main.children.push({
  39. active: currentPage === 'datasource-permissions',
  40. icon: 'fa fa-fw fa-lock',
  41. id: 'datasource-permissions',
  42. text: 'Permissions',
  43. url: `datasources/edit/${ds.id}/permissions`,
  44. });
  45. }
  46. return {
  47. main: main,
  48. node: _.find(main.children, { active: true }),
  49. };
  50. }