left-menu.component.ts 1.54 KB
import {Component, OnInit} from '@angular/core';
import {MenuGroup} from '../models/menu-group.model';
import {MENU} from "../defines/menu";
import {ActivatedRoute, UrlSegment} from "@angular/router";

@Component({
  selector: 'left-menu',
  templateUrl: './left-menu.component.html',
  styleUrls: ['./left-menu.component.scss']
})
export class LeftMenuComponent implements OnInit {

  menu: MenuGroup[];
  styleClass: string;


  searchPath(path : string, menu : MenuGroup[]): boolean {

    menu.forEach(group => {
      group.items.forEach(item => {
        if(path.startsWith(item.path)) {
          return true;
        }
      });
    });

    return false;
  }




  constructor(private route: ActivatedRoute) {

    this.route.url.subscribe(segments  => {
      let path : string = segments.map(segment => segment.path).join("/");

      console.log(path);

      if(this.searchPath(path, MENU.USER)) {
        this.activateUser();
        return;
      }

      if(this.searchPath(path, MENU.INFO)) {
        this.activateInfo();
        return;
      }

      if(this.searchPath(path, MENU.ADMIN)) {
        this.activateAdmin();
        return;
      }

    });
  }



  ngOnInit() {

  }


  activateInfo() {
    console.log("activating info");
    this.menu =  MENU.INFO;
    this.styleClass = "infoMenu";
  }

  activateUser() {

    console.log("activating user");
    this.menu =  MENU.USER;
    this.styleClass = "userMenu";
  }


  activateAdmin() {

    console.log("activating admin");
    this.menu =  MENU.ADMIN;
    this.styleClass = "adminMenu";
  }

}