tfabrica
Version:
library for TFabrica - TechSol
144 lines (110 loc) • 4.19 kB
text/typescript
import { Component, ViewChild } from '@angular/core';
import { TfabricaSharedService } from './tfabrica.shared.service';
import { Subscription } from 'rxjs/Subscription';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { TfabricaUserMenuService } from '../main/tfabrica.usermenu.service';
import { TfabricaUserData } from '../models/tfabrica.userdata.model';
import { TfabricaUserMenu } from '../models/tfabrica.usermenu.model';
export class TfabricaSidenavComponent {
userData: TfabricaUserData;
tleftmenu;
loading: boolean;
menuVoices: TfabricaUserMenu[];
displayVoices: any[];
subscription: Subscription;
subscriptionShared: Subscription;
constructor(
private tfabricaSharedService: TfabricaSharedService,
private tfabricaUserMenuService: TfabricaUserMenuService,
private router: Router
) {
this.userData = tfabricaSharedService.getUser();
this.loading = false;
this.menuVoices = [];
if (this.userData.isLogged) {
this.createMenu();
}
this.subscriptionShared = tfabricaSharedService.userDataLogged$.subscribe(
userData => {
this.userData = userData;
if (this.userData != null) {
if (this.userData.isLogged) {
this.createMenu();
}
}
}
)
this.subscription = tfabricaSharedService.mainLeftSidenavToggled$.subscribe(
toogle => {
this.toggleSidenavMenu();
}
)
}
toggleSidenavMenu() {
}
backToHome() {
this.tfabricaSharedService.toggleMainLeftSidenav(true);
this.router.navigate(['/main', { outlets: { 'main': ['home'] } }]);
}
goToVoice(voiceName) {
console.log(voiceName);
this.tfabricaSharedService.toggleMainLeftSidenav(true);
this.router.navigate(['/main', { outlets: { 'main': [voiceName] } }]);
}
createMenu() {
if (!this.userData.isLogged) return;
this.menuVoices = Array<TfabricaUserMenu>();
this.tfabricaUserMenuService.menu()
.subscribe(
userMenus => {
console.log(userMenus);
this.menuVoices = userMenus;
this.loading = false;
this.designMenu();
},
err => {
// Log errors if any
console.log(err);
this.loading = false;
});
}
designMenu() {
let actThis = this;
this.displayVoices = Array<TfabricaUserMenu>();
actThis.attachSubMenu(this.menuVoices);
console.log(this.displayVoices);
}
attachSubMenu(subMenu: Array<TfabricaUserMenu>) {
let actThis = this;
subMenu.forEach(function (entry) {
actThis.displayVoices.push(entry);
if (entry.isOpen) {
actThis.attachSubMenu(entry.subMenu);
}
});
}
selectSingleVoice(singleVoice: TfabricaUserMenu) {
console.log(singleVoice);
singleVoice.isOpen = !singleVoice.isOpen;
if (singleVoice.subMenu.length == 0) {
this.tfabricaSharedService.toggleMainLeftSidenav(true);
var path: string = singleVoice.path;
if (path.startsWith("/")) {
this.tfabricaSharedService.selectedVoice = singleVoice;
this.tfabricaSharedService.setSelectedVoice(singleVoice);
path = path.substring(1);
}
if (path.startsWith("http")) {
this.loading = true;
window.location.href = path;
return;
}
this.router.navigate(['main', { outlets: { 'main': path } }]);
}
this.designMenu();
}
}