tfabrica
Version:
library for TFabrica - TechSol
108 lines (91 loc) • 3.62 kB
text/typescript
import { Component } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { TfabricaUserData } from '../models/tfabrica.userdata.model';
import { TfabricaUserMenu } from '../models/tfabrica.usermenu.model';
import { TfabricaSharedService } from '../main/tfabrica.shared.service';
import { TfabricaUserMenuService } from '../main/tfabrica.usermenu.service';
import { Subscription } from 'rxjs/Subscription';
export class TfabricaDashboardComponent {
userData: TfabricaUserData;
subscription: Subscription;
loading: boolean;
menuVoices: TfabricaUserMenu[];
displayVoices: TfabricaUserMenu[];
level: number = 0;
prevDisplayVoices: any[];
constructor(
private router: Router,
private tfabricaSharedService: TfabricaSharedService,
private tfabricaUserMenuService: TfabricaUserMenuService
) {
this.userData = tfabricaSharedService.getUser();
this.loading = false;
if (this.userData.isLogged) {
this.createMenu();
}
console.log("TfabricaDashboardComponent constructor");
this.subscription = tfabricaSharedService.userDataLogged$.subscribe(
userData => {
this.userData = userData;
if (this.userData != null) {
if (this.userData.isLogged) {
this.createMenu();
}
}
}
)
}
createMenu() {
if (!this.userData.isLogged) return;
this.tfabricaUserMenuService.menu()
.subscribe(
userMenus => {
console.log(userMenus);
this.menuVoices = userMenus;
this.displayVoices = userMenus;
this.prevDisplayVoices = [];
console.log(this.menuVoices);
this.loading = false;
},
err => {
// Log errors if any
console.log(err);
this.loading = false;
});
}
selectSingleVoice(voice: TfabricaUserMenu) {
console.log(voice);
console.log(voice["subMenu"]);
// if voice have subMenu go Inside at next Level
if (voice["subMenu"] != null && voice["subMenu"] != undefined && voice["subMenu"].length > 0) {
this.prevDisplayVoices.push({
level: this.level,
displayVoices: this.displayVoices
});
this.displayVoices = voice["subMenu"];
this.level = this.level + 1;
} else {
let path :string = voice['path'];
if (path.charAt(0) == "/") {
this.tfabricaSharedService.selectedVoice = voice;
this.tfabricaSharedService.setSelectedVoice(voice);
path = path.substring(1);
}
if (path.charAt(0) == "h") {
this.loading = true;
window.location.href = path;
return;
}
this.router.navigate(['main', { outlets: { 'main': path } }]);
}
}
backToPreviousMenu() {
this.displayVoices = this.prevDisplayVoices[this.prevDisplayVoices.length - 1].displayVoices;
this.prevDisplayVoices.splice(this.prevDisplayVoices.length, 1);
this.level = this.level - 1;
}
}