nav_model_srv.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import coreModule from 'app/core/core_module';
  2. import config from 'app/core/config';
  3. import _ from 'lodash';
  4. export interface NavModelItem {
  5. text: string;
  6. url: string;
  7. icon?: string;
  8. img?: string;
  9. id: string;
  10. active?: boolean;
  11. hideFromTabs?: boolean;
  12. divider?: boolean;
  13. children: NavModelItem[];
  14. target?: string;
  15. }
  16. export class NavModel {
  17. breadcrumbs: NavModelItem[];
  18. main: NavModelItem;
  19. node: NavModelItem;
  20. constructor() {
  21. this.breadcrumbs = [];
  22. }
  23. }
  24. export class NavModelSrv {
  25. navItems: any;
  26. /** @ngInject */
  27. constructor() {
  28. this.navItems = config.bootData.navTree;
  29. }
  30. getCfgNode() {
  31. return _.find(this.navItems, { id: 'cfg' });
  32. }
  33. getNav(...args) {
  34. var children = this.navItems;
  35. var nav = new NavModel();
  36. for (let id of args) {
  37. // if its a number then it's the index to use for main
  38. if (_.isNumber(id)) {
  39. nav.main = nav.breadcrumbs[id];
  40. break;
  41. }
  42. let node = _.find(children, { id: id });
  43. nav.breadcrumbs.push(node);
  44. nav.node = node;
  45. nav.main = node;
  46. children = node.children;
  47. }
  48. if (nav.main.children) {
  49. for (let item of nav.main.children) {
  50. item.active = false;
  51. if (item.url === nav.node.url) {
  52. item.active = true;
  53. }
  54. }
  55. }
  56. return nav;
  57. }
  58. getNotFoundNav() {
  59. var node = {
  60. text: 'Page not found',
  61. icon: 'fa fa-fw fa-warning',
  62. subTitle: '404 Error',
  63. };
  64. return {
  65. breadcrumbs: [node],
  66. node: node,
  67. main: node,
  68. };
  69. }
  70. }
  71. coreModule.service('navModelSrv', NavModelSrv);