diff --git a/static/src/app/app.routing.ts b/static/src/app/app.routing.ts index 1f7ac03..bf03c99 100644 --- a/static/src/app/app.routing.ts +++ b/static/src/app/app.routing.ts @@ -1,7 +1,7 @@ import {RouterModule, Routes} from '@angular/router'; -import {LoginComponent} from './login/index'; -import {NotFoundComponent} from './common/not-found/not-found.component'; -import {LoginGuardAdmin, LoginGuardHL} from './login/login.guard'; +import {LoginComponent, LoginGuardMT} from './login'; +import {NotFoundComponent} from './common/not-found'; +import {LoginGuardAdmin, LoginGuardHL} from './login'; import {armyRoutes, armyRoutingComponents} from './army/army.routing'; import {SignupComponent} from './login/signup.component'; import {RouteConfig} from './app.config'; @@ -72,4 +72,4 @@ export const appRouting = RouterModule.forRoot(appRoutes); export const routingComponents = [...armyRoutingComponents, LoginComponent, SignupComponent, NotFoundComponent]; -export const routingProviders = [LoginGuardHL, LoginGuardAdmin]; +export const routingProviders = [LoginGuardHL, LoginGuardMT, LoginGuardAdmin]; diff --git a/static/src/app/services/logs/war.service.ts b/static/src/app/services/logs/war.service.ts index fb6d5d6..e4551b1 100644 --- a/static/src/app/services/logs/war.service.ts +++ b/static/src/app/services/logs/war.service.ts @@ -38,5 +38,9 @@ export class WarService { .map(res => res.json()); } + updateWar(war: War) { + return this.http.put(this.config.apiWarPath, war) + .map(res => res.json()); + } } diff --git a/static/src/app/statistic/campaign/campaign-submit/campaign-submit.component.ts b/static/src/app/statistic/campaign/campaign-submit/campaign-submit.component.ts index 5609e4c..d7d38f3 100644 --- a/static/src/app/statistic/campaign/campaign-submit/campaign-submit.component.ts +++ b/static/src/app/statistic/campaign/campaign-submit/campaign-submit.component.ts @@ -26,7 +26,6 @@ export class CampaignSubmitComponent { constructor(private route: ActivatedRoute, private router: Router, private campaignService: CampaignService) { - this.subscription = this.route.params .map(params => params['id']) .filter(id => id !== undefined) @@ -55,5 +54,4 @@ export class CampaignSubmitComponent { this.router.navigate(['..'], {relativeTo: this.route}); return false; } - } diff --git a/static/src/app/statistic/stats.routing.ts b/static/src/app/statistic/stats.routing.ts index 1df891c..f020788 100644 --- a/static/src/app/statistic/stats.routing.ts +++ b/static/src/app/statistic/stats.routing.ts @@ -11,6 +11,8 @@ import {WarSubmitComponent} from './war/war-submit/war-submit.component'; import {FractionStatsComponent} from './war/fraction-stats/fraction-stats.component'; import {StatisticHighScoreComponent} from './campaign/highscore/highscore.component'; import {WarHeaderComponent} from "./war/war-header/war-header.component"; +import {WarEditComponent} from "./war/war-edit/war-edit.component"; +import {LoginGuardMT} from "../login"; export const statsRoutes: Routes = [{ @@ -32,21 +34,6 @@ export const statsRoutes: Routes = [{ component: StatisticHighScoreComponent, outlet: 'right' }, - { - path: 'campaign', - component: CampaignSubmitComponent, - outlet: 'right' - }, - { - path: 'campaign/:id', - component: CampaignSubmitComponent, - outlet: 'right' - }, - { - path: 'new', - component: WarSubmitComponent, - outlet: 'right' - }, { path: 'war/:id', component: WarHeaderComponent, @@ -56,11 +43,35 @@ export const statsRoutes: Routes = [{ path: 'campaign-player/:id/:playerName', component: CampaignPlayerDetailComponent, outlet: 'right' + }, + { + path: 'campaign', + component: CampaignSubmitComponent, + outlet: 'right', + canActivate: [LoginGuardMT] + }, + { + path: 'campaign/:id', + component: CampaignSubmitComponent, + outlet: 'right', + canActivate: [LoginGuardMT] + }, + { + path: 'submit-war', + component: WarSubmitComponent, + outlet: 'right', + canActivate: [LoginGuardMT] + }, + { + path: 'submit-war/:id', + component: WarEditComponent, + outlet: 'right', + canActivate: [LoginGuardMT] }]; export const statsRouterModule: ModuleWithProviders = RouterModule.forChild(statsRoutes); export const statsRoutingComponents = [StatisticComponent, StatisticOverviewComponent, StatisticHighScoreComponent, - CampaignSubmitComponent, WarListComponent, WarSubmitComponent, WarHeaderComponent, ScoreboardComponent, - FractionStatsComponent, CampaignPlayerDetailComponent, WarItemComponent]; + CampaignSubmitComponent, WarListComponent, WarSubmitComponent, WarEditComponent, WarHeaderComponent, + ScoreboardComponent, FractionStatsComponent, CampaignPlayerDetailComponent, WarItemComponent]; diff --git a/static/src/app/statistic/war/war-edit/war-edit.component.css b/static/src/app/statistic/war/war-edit/war-edit.component.css new file mode 100644 index 0000000..e69de29 diff --git a/static/src/app/statistic/war/war-edit/war-edit.component.html b/static/src/app/statistic/war/war-edit/war-edit.component.html new file mode 100644 index 0000000..c86a154 --- /dev/null +++ b/static/src/app/statistic/war/war-edit/war-edit.component.html @@ -0,0 +1,58 @@ +
+

Schlacht hinzufügen

+ +
+ + + + +
+ +
+ + +
+ +
+ + + + Logfile muss im Format RPT, LOG oder TXT vorliegen + +
+ + + + + + + + {{error}} + + +
diff --git a/static/src/app/statistic/war/war-edit/war-edit.component.ts b/static/src/app/statistic/war/war-edit/war-edit.component.ts new file mode 100644 index 0000000..a0004ad --- /dev/null +++ b/static/src/app/statistic/war/war-edit/war-edit.component.ts @@ -0,0 +1,58 @@ +import {Component, ViewChild} from '@angular/core'; +import {ActivatedRoute, Router} from '@angular/router'; +import {NgForm} from '@angular/forms'; +import {WarService} from '../../../services/logs/war.service'; +import {War} from '../../../models/model-interfaces'; +import {CampaignService} from "../../../services/logs/campaign.service"; +import {Subscription} from 'rxjs/Subscription'; + + +@Component({ + selector: 'war-edit', + templateUrl: './war-edit.component.html', + styleUrls: ['./war-edit.component.css', '../../../style/load-indicator.css', + '../../../style/entry-form.css', '../../../style/overview.css'] +}) +export class WarEditComponent { + + war: War = {players: []}; + + subscription: Subscription; + + showFileError = false; + + showErrorLabel = false; + + error; + + @ViewChild(NgForm) form: NgForm; + + constructor(private route: ActivatedRoute, + private router: Router, + private warService: WarService, + private campaignService: CampaignService) { + this.subscription = this.route.params + .map(params => params['id']) + .filter(id => id !== undefined) + .flatMap(id => this.warService.getWar(id)) + .subscribe(war => { + this.war = war; + }); + } + + updateWar() { + this.warService.updateWar(this.war) + .subscribe(war => { + this.router.navigate(['../war/' + war._id], {relativeTo: this.route}); + }, + error => { + this.error = error._body.error.message; + this.showErrorLabel = true; + }); + } + + cancel() { + this.router.navigate(['..'], {relativeTo: this.route}); + return false; + } +} diff --git a/static/src/app/statistic/war/war-list/war-list.component.ts b/static/src/app/statistic/war/war-list/war-list.component.ts index 75d92cc..e18d329 100644 --- a/static/src/app/statistic/war/war-list/war-list.component.ts +++ b/static/src/app/statistic/war/war-list/war-list.component.ts @@ -51,7 +51,7 @@ export class WarListComponent implements OnInit { selectNewWar() { this.selectedWarId = null; - this.router.navigate([{outlets: {'right': ['new']}}], {relativeTo: this.route}); + this.router.navigate([{outlets: {'right': ['submit-war']}}], {relativeTo: this.route}); } selectWar(warId) { diff --git a/static/src/app/statistic/war/war-submit/war-submit.component.ts b/static/src/app/statistic/war/war-submit/war-submit.component.ts index f1324fe..1cedb87 100644 --- a/static/src/app/statistic/war/war-submit/war-submit.component.ts +++ b/static/src/app/statistic/war/war-submit/war-submit.component.ts @@ -70,5 +70,4 @@ export class WarSubmitComponent { this.router.navigate(['..'], {relativeTo: this.route}); return false; } - }