2017-12-15 02:33:32 -05:00
|
|
|
import { Component } from "@angular/core";
|
2021-11-30 21:27:37 -05:00
|
|
|
import { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router, } from "@angular/router";
|
2020-10-23 07:30:20 -04:00
|
|
|
import { TranslateService } from "@ngx-translate/core";
|
2021-08-11 17:41:29 -04:00
|
|
|
import { filter } from "rxjs/operators";
|
2017-12-14 23:25:15 -05:00
|
|
|
|
|
|
|
@Component({
|
2021-09-01 19:29:24 -04:00
|
|
|
selector: "my-page-header",
|
2017-12-14 23:25:15 -05:00
|
|
|
templateUrl: "./page-header.component.html",
|
|
|
|
styleUrls: ["./page-header.component.scss"],
|
|
|
|
})
|
|
|
|
export class PageHeaderComponent {
|
2017-12-15 02:33:32 -05:00
|
|
|
public pageName: string;
|
2021-12-03 02:33:53 -05:00
|
|
|
public isHome = true;
|
2017-12-15 02:33:32 -05:00
|
|
|
|
2021-09-01 19:01:01 -04:00
|
|
|
constructor(
|
|
|
|
private router: Router,
|
|
|
|
private activatedRoute: ActivatedRoute,
|
|
|
|
public translate: TranslateService
|
|
|
|
) {
|
|
|
|
this.router.events
|
|
|
|
.pipe(filter((ev) => ev instanceof NavigationEnd))
|
|
|
|
.subscribe((ev) => {
|
|
|
|
let currentRoute = this.activatedRoute.root;
|
|
|
|
let url = "";
|
|
|
|
const event = ev as NavigationEnd;
|
2021-12-03 02:33:53 -05:00
|
|
|
let routeCount = 0;
|
2017-12-15 02:33:32 -05:00
|
|
|
|
2021-09-01 19:01:01 -04:00
|
|
|
while (currentRoute.children.length > 0) {
|
|
|
|
const children = currentRoute.children;
|
|
|
|
children.forEach((route) => {
|
2021-12-03 02:33:53 -05:00
|
|
|
const breadcrumb = route.snapshot.data["breadcrumb"];
|
|
|
|
if (typeof(breadcrumb) === 'string' && !route.snapshot.data['#translated']) {
|
|
|
|
this.translate.get(breadcrumb).subscribe((res: string) => {
|
|
|
|
route.snapshot.data["breadcrumb"] = res;
|
|
|
|
route.snapshot.data['#translated'] = true;
|
|
|
|
});
|
2021-09-01 19:01:01 -04:00
|
|
|
}
|
|
|
|
currentRoute = route;
|
2021-12-03 02:33:53 -05:00
|
|
|
routeCount++;
|
2021-09-01 19:01:01 -04:00
|
|
|
url += "/" + route.snapshot.url.map((s) => s.path).join("/");
|
|
|
|
if (route.outlet !== PRIMARY_OUTLET) return;
|
|
|
|
if (!route.routeConfig || !route.routeConfig.data) return;
|
2021-12-03 02:33:53 -05:00
|
|
|
if (url === event.urlAfterRedirects.split("?")[0]) {
|
2021-09-01 19:01:01 -04:00
|
|
|
this.pageName = route.snapshot.data.name;
|
2021-12-03 02:33:53 -05:00
|
|
|
}
|
2021-09-01 19:01:01 -04:00
|
|
|
});
|
|
|
|
}
|
2021-12-03 02:33:53 -05:00
|
|
|
|
|
|
|
this.isHome = routeCount <= 2; // Path of `./riot-app` (2 segments)
|
2021-09-01 19:01:01 -04:00
|
|
|
});
|
2017-12-15 02:33:32 -05:00
|
|
|
}
|
2017-12-14 23:25:15 -05:00
|
|
|
}
|