Improved routing #130

This commit is contained in:
Sven Heidemann 2023-02-16 21:38:29 +01:00
parent f847841582
commit ee351ee749
3 changed files with 64 additions and 18 deletions

View File

@ -1,14 +1,21 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from "@angular/core";
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from "@ngx-translate/core";
import { PrimeNGConfig } from 'primeng/api'; import { PrimeNGConfig } from "primeng/api";
import { AuthService } from './services/auth/auth.service'; import { AuthService } from "./services/auth/auth.service";
import { SocketService } from './services/socket/socket.service'; import { SocketService } from "./services/socket/socket.service";
import { ThemeService } from './services/theme/theme.service'; import { ThemeService } from "./services/theme/theme.service";
import { ActivatedRoute, Router } from "@angular/router";
import { SpinnerService } from "./services/spinner/spinner.service";
import { DataService } from "./services/data/data.service";
import { SidebarService } from "./services/sidebar/sidebar.service";
import { Server } from "./models/data/server.model";
import { Queries } from "./models/graphql/queries.model";
import { Query } from "./models/graphql/query.model";
@Component({ @Component({
selector: 'app-root', selector: "app-root",
templateUrl: './app.component.html', templateUrl: "./app.component.html",
styleUrls: ['./app.component.scss'] styleUrls: ["./app.component.scss"]
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
@ -22,7 +29,7 @@ export class AppComponent implements OnInit {
private themeService: ThemeService, private themeService: ThemeService,
private socket: SocketService, private socket: SocketService,
private translateService: TranslateService, private translateService: TranslateService,
private config: PrimeNGConfig private config: PrimeNGConfig,
) { ) {
this.themeService.sidebarWidth$.subscribe(value => { this.themeService.sidebarWidth$.subscribe(value => {
this.sidebarWidth = value; this.sidebarWidth = value;
@ -36,7 +43,7 @@ export class AppComponent implements OnInit {
} }
ngOnInit(): void { ngOnInit(): void {
this.translateService.setDefaultLang('en'); this.translateService.setDefaultLang("en");
this.themeService.loadTheme(); this.themeService.loadTheme();
this.socket.startSocket(); this.socket.startSocket();
@ -45,7 +52,7 @@ export class AppComponent implements OnInit {
loadLang(): void { loadLang(): void {
let lang = localStorage.getItem(`default_lang`); let lang = localStorage.getItem(`default_lang`);
if (!lang) { if (!lang) {
lang = 'en'; lang = "en";
this.setLang(lang); this.setLang(lang);
} }
this.translate(lang); this.translate(lang);
@ -57,7 +64,7 @@ export class AppComponent implements OnInit {
translate(lang: string) { translate(lang: string) {
this.translateService.use(lang); this.translateService.use(lang);
this.translateService.get('primeng').subscribe(res => this.config.setTranslation(res)); this.translateService.get("primeng").subscribe(res => this.config.setTranslation(res));
} }

View File

@ -1,10 +1,45 @@
import { Component } from '@angular/core'; import { Component, OnInit } from "@angular/core";
import { ActivatedRoute, Router } from "@angular/router";
import { Server } from "../../../../models/data/server.model";
import { Queries } from "../../../../models/graphql/queries.model";
import { Query } from "../../../../models/graphql/query.model";
import { SpinnerService } from "../../../../services/spinner/spinner.service";
import { DataService } from "../../../../services/data/data.service";
import { SidebarService } from "../../../../services/sidebar/sidebar.service";
@Component({ @Component({
selector: 'app-profile', selector: "app-profile",
templateUrl: './profile.component.html', templateUrl: "./profile.component.html",
styleUrls: ['./profile.component.scss'] styleUrls: ["./profile.component.scss"]
}) })
export class ProfileComponent { export class ProfileComponent implements OnInit {
constructor(
private route: ActivatedRoute,
private router: Router,
private spinner: SpinnerService,
private data: DataService,
private sidebar: SidebarService
) {
}
ngOnInit() {
this.spinner.showSpinner();
if (!this.route.snapshot.params["serverId"]) {
this.spinner.hideSpinner();
this.router.navigate(['/dashboard']);
return;
}
this.data.query<Server>(Queries.serversQuery, {
filter: { id: this.route.snapshot.params["serverId"] }
},
function(data: Query) {
return data.servers.length > 0 ? data.servers[0] : null;
}
).subscribe(server => {
this.sidebar.server$.next(server);
this.spinner.hideSpinner();
});
}
} }

View File

@ -38,6 +38,10 @@ export class SidebarService {
if (!(event instanceof NavigationEnd)) { if (!(event instanceof NavigationEnd)) {
return; return;
} }
if (!event.url.startsWith('/server/')) {
this.server$.next(null);
}
}); });
} }