diff --git a/src/app/components/home/home.component.ts b/src/app/components/home/home.component.ts index 89f52f4..4c103f2 100644 --- a/src/app/components/home/home.component.ts +++ b/src/app/components/home/home.component.ts @@ -13,7 +13,7 @@ export class HomeComponent implements OnInit { ngOnInit() { // fix up the language, fetch it from the route! - this.stateService.getLanguageFromRoute(this.route).subscribe(language => {console.log('homecomp gets: ' + language); }); + this.stateService.getLanguageFromRoute(this.route.parent).subscribe(language => {console.log('homecomp gets: ' + language); }); } } diff --git a/src/app/components/languagetoggle/languagetoggle.component.ts b/src/app/components/languagetoggle/languagetoggle.component.ts index 8ce445e..61b4c0c 100644 --- a/src/app/components/languagetoggle/languagetoggle.component.ts +++ b/src/app/components/languagetoggle/languagetoggle.component.ts @@ -19,21 +19,26 @@ export class LanguagetoggleComponent implements OnInit { /** * if this is set to true, the component will be visible */ - private show: boolean; + private show = false; constructor(private route: ActivatedRoute, private stateService: StateService) { } ngOnInit() { this.stateService.getLanguageFromRoute(this.route).subscribe(lang => { - console.log('languagetoggle gets this language: '+ lang); - console.log('('+this.language+')') + console.log('languagetoggle gets this language: ' + lang); + console.log('(' + this.language + ')') if (lang === this.language) { - console.log('equalled! showing the component'); + console.log('equalled (first level of route)! showing the component'); + this.show = true; + } + }); + this.stateService.getLanguageFromRoute(this.route.parent).subscribe(lang => { + console.log('languagetoggle gets this language from parent: ' + lang); + console.log('(' + this.language + ')') + if (lang === this.language) { + console.log('equalled (parent level of route)! showing the component'); this.show = true; - } else { - console.log('not equalled! not showing the component'); - this.show = false; } }); } diff --git a/src/app/components/root/root.component.html b/src/app/components/root/root.component.html index 88fe98a..78627c2 100644 --- a/src/app/components/root/root.component.html +++ b/src/app/components/root/root.component.html @@ -21,6 +21,7 @@ + @@ -30,7 +31,7 @@
- {{getPageType()}} + {{pageType$ | async}}
diff --git a/src/app/components/root/root.component.scss b/src/app/components/root/root.component.scss index 58fe3b4..fd32f77 100644 --- a/src/app/components/root/root.component.scss +++ b/src/app/components/root/root.component.scss @@ -69,7 +69,7 @@ //background-color: aqua; position: absolute; width: 100%; - bottom: -3px; + bottom: 0px; left: 0px; font-size: 89%; text-align: center; diff --git a/src/app/components/root/root.component.ts b/src/app/components/root/root.component.ts index aad00b8..472fe56 100644 --- a/src/app/components/root/root.component.ts +++ b/src/app/components/root/root.component.ts @@ -1,5 +1,9 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, OnInit} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; +import {StateService} from '../../services/state.service'; +import {Observable} from 'rxjs/Observable'; + +import 'rxjs/add/operator/first'; @Component({ selector: 'app-root', @@ -10,24 +14,33 @@ export class RootComponent implements OnInit { title = 'Joachim Homepage'; mousingOver: string = null; + pageType$: Observable; - constructor(private router: Router, private route: ActivatedRoute) { } + constructor(private router: Router, private route: ActivatedRoute, private stateService: StateService) { + } ngOnInit() { console.log('oninit of root component'); this.route.paramMap.subscribe(val => console.log(val)); - } - getPageType() { - if (this.router.url.endsWith('posts')) { + + this.stateService.getLanguageFromRoute(this.route).subscribe(val => {console.log('ngoninit root' + val)}); + + this.pageType$ = this.stateService.getLanguageFromRoute(this.route).map(language => { + if (this.router.url.endsWith('posts')) { return 'Posts'; - } - if (this.router.url.endsWith('cv')) { - return 'Curricululm Vitae'; - } - if ( this.router.url.endsWith('home')) { - return 'Home'; - } - return 'Joa did something wrong...' + } + if (this.router.url.endsWith('cv')) { + return 'Curriculum Vitae'; + } + if (this.router.url.endsWith('home')) { + if (language === 'nl') { + return 'Intro'; + } else { + return 'Home'; + } + } + return 'Joa did something wrong...' + }); } mouseOver(s: string) { @@ -38,4 +51,16 @@ export class RootComponent implements OnInit { mouseOut(s: string) { this.mousingOver = null; } + + toggleLanguage() { + this.stateService.getLanguageFromRoute(this.route).first().subscribe(val => { + if (val === 'nl') { + this.stateService.setLanguage('en', this.route, this.router); + } else if (val === 'en') { + this.stateService.setLanguage('nl', this.route, this.router); + } else { + console.log('Could not toggle the language, pirates stole your tongue.'); + } + }); + } } diff --git a/src/app/services/state.service.ts b/src/app/services/state.service.ts index 1f57ebd..02d823e 100644 --- a/src/app/services/state.service.ts +++ b/src/app/services/state.service.ts @@ -1,6 +1,6 @@ import {Injectable, OnInit} from '@angular/core'; import {Post} from '../model/post'; -import {ActivatedRoute, ParamMap} from '@angular/router'; +import {ActivatedRoute, ParamMap, Router} from '@angular/router'; import 'rxjs/add/operator/filter'; import {Observable} from 'rxjs/Observable'; @@ -20,7 +20,7 @@ export class StateService { * @returns {Observable} */ getLanguageFromRoute(route: ActivatedRoute): Observable { - return route.parent.paramMap.map((params: ParamMap) => { + return route.paramMap.map((params: ParamMap) => { const temp = params.get('language'); return temp; }); @@ -74,4 +74,24 @@ export class StateService { this.tagFilter[tag] = !this.tagFilter[tag]; } } + + setLanguage(language: string, route: ActivatedRoute, router: Router) { + console.log('setting language: '+language); + // // check out the current route + // route.pathFromRoot.forEach(path=>{ + // console.log(path); + // console.log(path.routeConfig); + // }); + router.navigate([language]); + + // route.url.subscribe(segments => { + // console.log(segments); + // //now also do the children + // route.children.forEach(child => { + // child.url.subscribe(childsegment => { + // console.log(childsegment); + // }); + // }); + // }); + } }