Add url state representation for decoration overview
parent
ba987e1b67
commit
15ea13e225
|
@ -7,7 +7,7 @@
|
||||||
<div [ngClass]="{active: active === 'GLOBAL'}" (click)="switchFraction('GLOBAL')">GLOBAL</div>
|
<div [ngClass]="{active: active === 'GLOBAL'}" (click)="switchFraction('GLOBAL')">GLOBAL</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<mat-tab-group>
|
<mat-tab-group [selectedIndex]="selectedType" (selectedIndexChange)="switchTab($event)">
|
||||||
<mat-tab label="Orden">
|
<mat-tab label="Orden">
|
||||||
<ng-template matTabContent>
|
<ng-template matTabContent>
|
||||||
<cc-decoration-panel *ngFor="let decoration of medals"
|
<cc-decoration-panel *ngFor="let decoration of medals"
|
||||||
|
|
|
@ -6,6 +6,7 @@ import {Decoration} from '../../models/model-interfaces';
|
||||||
import {DecorationService} from '../../services/army-management/decoration.service';
|
import {DecorationService} from '../../services/army-management/decoration.service';
|
||||||
import {MatBottomSheet} from '@angular/material';
|
import {MatBottomSheet} from '@angular/material';
|
||||||
import {UserListSheetComponent} from '../user-list-sheet/user-list-sheet.component';
|
import {UserListSheetComponent} from '../user-list-sheet/user-list-sheet.component';
|
||||||
|
import {Location} from '@angular/common';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -23,10 +24,13 @@ export class DecorationOverviewComponent implements OnInit {
|
||||||
|
|
||||||
active: string;
|
active: string;
|
||||||
|
|
||||||
|
selectedType = 0;
|
||||||
|
|
||||||
readonly fraction = Fraction;
|
readonly fraction = Fraction;
|
||||||
|
|
||||||
constructor(private router: Router,
|
constructor(private router: Router,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
|
private location: Location,
|
||||||
private decorationService: DecorationService,
|
private decorationService: DecorationService,
|
||||||
private bottomSheet: MatBottomSheet) {
|
private bottomSheet: MatBottomSheet) {
|
||||||
}
|
}
|
||||||
|
@ -36,17 +40,45 @@ export class DecorationOverviewComponent implements OnInit {
|
||||||
this.decorationService.findDecorations()
|
this.decorationService.findDecorations()
|
||||||
.subscribe(decorations => {
|
.subscribe(decorations => {
|
||||||
this.decorations = decorations;
|
this.decorations = decorations;
|
||||||
this.switchFraction('BLUFOR');
|
const queryParams = this.route.snapshot.queryParams;
|
||||||
|
if (queryParams.type < 2) {
|
||||||
|
this.selectedType = queryParams.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
const fract = queryParams.fraction;
|
||||||
|
if (fract && (fract === 'BLUFOR' || fract === 'OPFOR' || fract === 'GLOBAL')) {
|
||||||
|
this.switchFraction(queryParams.fraction);
|
||||||
|
} else {
|
||||||
|
this.switchFraction('BLUFOR');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
switchFraction(value: string) {
|
switchFraction(value: any) {
|
||||||
this.medals = this.decorations.filter(d => d.fraction === value && d.isMedal);
|
this.medals = this.decorations.filter(d => d.fraction === value && d.isMedal);
|
||||||
this.ribbons = this.decorations.filter(d => d.fraction === value && !d.isMedal);
|
this.ribbons = this.decorations.filter(d => d.fraction === value && !d.isMedal);
|
||||||
this.active = value;
|
this.active = value;
|
||||||
|
this.adjustBrowserUrl(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
switchTab(tabIndex) {
|
||||||
|
this.selectedType = tabIndex;
|
||||||
|
this.adjustBrowserUrl(this.active)
|
||||||
}
|
}
|
||||||
|
|
||||||
select(decoration: Decoration) {
|
select(decoration: Decoration) {
|
||||||
this.bottomSheet.open(UserListSheetComponent, {data: {decoration: decoration}});
|
this.bottomSheet.open(UserListSheetComponent, {data: {decoration: decoration}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
adjustBrowserUrl(fractionKey = '') {
|
||||||
|
const absoluteUrl = this.location.path().split('?')[0];
|
||||||
|
if (fractionKey === 'BLUFOR' && this.selectedType === 0) {
|
||||||
|
this.location.replaceState(absoluteUrl);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const queryPart = fractionKey !== '' ? 'fraction='.concat(fractionKey)
|
||||||
|
.concat('&type=' + this.selectedType) : 'type=0';
|
||||||
|
|
||||||
|
this.location.replaceState(absoluteUrl, queryPart);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue