ngx-admin-lte
Version:
AdminLTE theme for angular
129 lines (112 loc) • 4.92 kB
text/typescript
import { Component, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { User } from '../../models/user';
import { UserService } from '../../services/user.service';
import { MenuService } from '../../services/menu.service';
import { LoggerService } from '../../services/logger.service';
import { ToasterService, ToasterConfig } from 'angular2-toaster/angular2-toaster';
import { TranslateService } from '../../services/translate.service';
export class LayoutAuthComponent implements OnInit, OnDestroy {
public toastrConfig: ToasterConfig;
public mylinks: Array<any> = [];
public skin = 'skin-blue';
public display_control = true;
public display_user = true;
public display_tasks = true;
public display_messages = true;
public display_notifications = true;
public display_menu_user = true;
public display_menu_search = true;
public menu_title = 'NAVIGATION';
private logger: LoggerService;
constructor(
private userServ: UserService,
private menuServ: MenuService,
private toastr: ToasterService,
private translate: TranslateService,
route: ActivatedRoute) {
const param = route.snapshot.data[0];
this.skin = this.paramExistOrDefault(param, 'skin', 'skin-blue');
this.display_control = this.paramExistOrDefault(param, 'display_control');
this.display_user = this.paramExistOrDefault(param, 'display_user');
this.display_tasks = this.paramExistOrDefault(param, 'display_tasks');
this.display_messages = this.paramExistOrDefault(param, 'display_messages');
this.display_notifications = this.paramExistOrDefault(param, 'display_notifications');
this.display_menu_user = this.paramExistOrDefault(param, 'display_menu_user');
this.display_menu_search = this.paramExistOrDefault(param, 'display_menu_search');
this.menu_title = this.paramExistOrDefault(param, 'display_menu_search', 'NAVIGATION');
this.toastrConfig = new ToasterConfig( {
newestOnTop: true,
showCloseButton: true,
tapToDismiss: false
});
// this.translate = translate.getTranslate();
// this.logger = new LoggerService( this.translate );
}
private paramExistOrDefault(param: any, index: string, defaut: any = true) {
return !!(param[index]) ? param[index] : defaut;
}
public ngOnInit() {
// sedding the resize event, for AdminLTE to place the height
const ie = this.detectIE();
if ( !ie ) {
window.dispatchEvent( new Event( 'resize' ) );
} else {
// solution for IE from @hakonamatata
const event = document.createEvent( 'Event' );
event.initEvent( 'resize', false, true );
window.dispatchEvent( event );
}
// default menu structure, please use the menuService to modify
this.mylinks = [
{
'title': 'Home',
'icon': 'dashboard',
'link': ['/']
}
];
// register to menu change
this.menuServ.getCurrent().subscribe((menu) => {
this.mylinks = menu;
});
document.body.className = 'hold-transition ' + this.skin + ' sidebar-mini';
}
public ngOnDestroy() {
document.body.className = '';
}
protected detectIE(): any {
const ua = window.navigator.userAgent;
// Test values; Uncomment to check result …
// IE 10
// ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
// IE 11
// ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
// IE 12 / Spartan
// ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
// Edge (IE 12+)
// ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
// Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';
const msie = ua.indexOf( 'MSIE ' );
if ( msie > 0 ) {
// IE 10 or older => return version number
return parseInt( ua.substring( msie + 5, ua.indexOf( '.', msie ) ), 10 );
}
const trident = ua.indexOf( 'Trident/' );
if ( trident > 0 ) {
// IE 11 => return version number
const rv = ua.indexOf( 'rv:' );
return parseInt( ua.substring( rv + 3, ua.indexOf( '.', rv ) ), 10 );
}
const edge = ua.indexOf( 'Edge/' );
if ( edge > 0 ) {
// Edge (IE 12+) => return version number
return parseInt( ua.substring( edge + 5, ua.indexOf( '.', edge ) ), 10 );
}
// other browser
return false;
}
}