Compare commits

..

No commits in common. "5f1686c64ef838e24cc1d55e4bc48f671cf8b7e4" and "da29c39b88711a56809714441050f9de84aaf124" have entirely different histories.

33 changed files with 50 additions and 49 deletions

View File

@ -4,7 +4,7 @@
###-------------------------------------------------------------### ###-------------------------------------------------------------###
###------------------- HOW TO USE THIS FILE --------------------### ###------------------- HOW TO USE THIS FILE --------------------###
###-------------------------------------------------------------### ###-------------------------------------------------------------###
### 1. start express server with `npm run start-api-test` ### ### 1. start express server with `npm run start-test` ###
### 2. import data by executing script: `./populate-data.sh` ### ### 2. import data by executing script: `./populate-data.sh` ###
### 3. change data in app as you need for tests ### ### 3. change data in app as you need for tests ###
### 4. export data state with: `./populate-data.sh -m save` ### ### 4. export data state with: `./populate-data.sh -m save` ###

View File

@ -66,14 +66,14 @@ campaigns.route('/:id')
} }
req.body.updatedAt = new Date(); req.body.updatedAt = new Date();
req.body.$inc = {__v: 1}; req.body.$inc = { __v: 1 };
if (req.body.hasOwnProperty('__v')) { if (req.body.hasOwnProperty('__v')) {
delete req.body.__v; delete req.body.__v;
} }
// PATCH is easier with mongoose than PUT. You simply update by all data that comes from outside. no need to // PATCH is easier with mongoose than PUT. You simply update by all data that comes from outside. no need to
// reset attributes that are missing. // reset attributes that are missing.
CampaignModel.findByIdAndUpdate(req.params.id, req.body, {new: true}, (err, item) => { CampaignModel.findByIdAndUpdate(req.params.id, req.body, { new: true }, (err, item) => {
if (err) { if (err) {
err.status = codes.wrongrequest; err.status = codes.wrongrequest;
} else if (!item) { } else if (!item) {
@ -96,7 +96,7 @@ campaigns.route('/:id')
err.status = codes.notfound; err.status = codes.notfound;
return next(err); return next(err);
} }
WarModel.find({campaign: req.params.id}).remove().exec(); WarModel.find({ campaign: req.params.id }).remove().exec();
// TODO: remove all the war logs from fs here!!! // TODO: remove all the war logs from fs here!!!
res.locals.processed = true; res.locals.processed = true;
next(); next();

View File

@ -1,6 +1,7 @@
<code_scheme name="OPT-CC" version="173"> <code_scheme name="OPT-CC" version="173">
<option name="FORMATTER_TAGS_ENABLED" value="true" /> <option name="FORMATTER_TAGS_ENABLED" value="true" />
<JSCodeStyleSettings> <JSCodeStyleSettings>
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
<option name="USE_CHAINED_CALLS_GROUP_INDENTS" value="true" /> <option name="USE_CHAINED_CALLS_GROUP_INDENTS" value="true" />
</JSCodeStyleSettings> </JSCodeStyleSettings>
<TypeScriptCodeStyleSettings> <TypeScriptCodeStyleSettings>

View File

@ -5,7 +5,7 @@
<p>Dieses Formular nur ausfüllen wenn du einer <b>HL</b> angehörst oder <b>SQL</b> bist. Dabei den Nutzernamen aus <p>Dieses Formular nur ausfüllen wenn du einer <b>HL</b> angehörst oder <b>SQL</b> bist. Dabei den Nutzernamen aus
dem OPT Forum verwenden! dem OPT Forum verwenden!
Im Forum eine Nachricht an <a href="https://operation-pandora.com/dashboard/index.php?conversation-add/&userID=9" Im Forum eine Nachricht an <a href="https://opt-dev.de/dashboard/index.php?conversation-add/&userID=9"
target="_blank">HardiReady</a> target="_blank">HardiReady</a>
senden, in welcher der 'geheime Text' steht, den du bei der Registrierung nutzt.<br> senden, in welcher der 'geheime Text' steht, den du bei der Registrierung nutzt.<br>
Dabei kann es sich um irgend eine willkürliche Zeichenfolge oder einen Satz handeln - dient nur dem Abgleich. Dabei kann es sich um irgend eine willkürliche Zeichenfolge oder einen Satz handeln - dient nur dem Abgleich.

View File

@ -1,14 +1,14 @@
import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
import {CampaignPlayer} from '../../../models/model-interfaces'; import {CampaignPlayer} from '../../models/model-interfaces';
import {PlayerService} from '../../../services/logs/player.service'; import {PlayerService} from '../../services/logs/player.service';
import {ChartUtils} from '../../../utils/chart-utils'; import {ChartUtils} from '../../utils/chart-utils';
@Component({ @Component({
selector: 'campaign-player-detail', selector: 'campaign-player-detail',
templateUrl: './campaign-player-detail.component.html', templateUrl: './campaign-player-detail.component.html',
styleUrls: ['./campaign-player-detail.component.css', '../../../style/list-entry.css', styleUrls: ['./campaign-player-detail.component.css', '../../style/list-entry.css',
'../../../style/hide-scrollbar.css', '../../../style/overview.css'] '../../style/hide-scrollbar.css', '../../style/overview.css']
}) })
export class CampaignPlayerDetailComponent implements OnInit { export class CampaignPlayerDetailComponent implements OnInit {

View File

@ -2,14 +2,14 @@ import {Component, ViewChild} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router'; import {ActivatedRoute, Router} from '@angular/router';
import {NgForm} from '@angular/forms'; import {NgForm} from '@angular/forms';
import {Subscription} from 'rxjs/Subscription'; import {Subscription} from 'rxjs/Subscription';
import {Campaign} from '../../../models/model-interfaces'; import {Campaign} from '../../models/model-interfaces';
import {CampaignService} from '../../../services/logs/campaign.service'; import {CampaignService} from '../../services/logs/campaign.service';
@Component({ @Component({
selector: 'campaign-submit', selector: 'campaign-submit',
templateUrl: './campaign-submit.component.html', templateUrl: './campaign-submit.component.html',
styleUrls: ['./campaign-submit.component.css', '../../../style/entry-form.css', '../../../style/overview.css'] styleUrls: ['./campaign-submit.component.css', '../../style/entry-form.css', '../../style/overview.css']
}) })
export class CampaignSubmitComponent { export class CampaignSubmitComponent {
@ -41,7 +41,7 @@ export class CampaignSubmitComponent {
.subscribe(campaign => { .subscribe(campaign => {
let redirectSuccessUrl = '../overview/'; let redirectSuccessUrl = '../overview/';
if (this.campaign._id) { if (this.campaign._id) {
redirectSuccessUrl = '../' + redirectSuccessUrl; redirectSuccessUrl = '../' + redirectSuccessUrl
} }
this.router.navigate([redirectSuccessUrl + campaign._id], {relativeTo: this.route}); this.router.navigate([redirectSuccessUrl + campaign._id], {relativeTo: this.route});
}, },

View File

@ -1,17 +1,17 @@
import {Component, Input, OnInit} from '@angular/core'; import {Component, Input, OnInit} from '@angular/core';
import {ActivatedRoute} from '@angular/router'; import {ActivatedRoute} from '@angular/router';
import {PlayerService} from '../../../services/logs/player.service'; import {PlayerService} from '../../services/logs/player.service';
import {CampaignService} from '../../../services/logs/campaign.service'; import {CampaignService} from '../../services/logs/campaign.service';
import {Fraction} from '../../../utils/fraction.enum'; import {Fraction} from '../../utils/fraction.enum';
import {FormControl} from '@angular/forms'; import {FormControl} from '@angular/forms';
import {Observable} from 'rxjs/Observable'; import {Observable} from 'rxjs/Observable';
import {Player} from '../../../models/model-interfaces'; import {Player} from '../../models/model-interfaces';
@Component({ @Component({
selector: 'stats-highscore', selector: 'stats-highscore',
templateUrl: './highscore.component.html', templateUrl: './highscore.component.html',
styleUrls: ['./highscore.component.css', '../../../style/list-entry.css', '../../../style/overview.css'] styleUrls: ['./highscore.component.css', '../../style/list-entry.css', '../../style/overview.css']
}) })
export class StatisticHighScoreComponent implements OnInit { export class StatisticHighScoreComponent implements OnInit {

View File

@ -1,14 +1,14 @@
import {Component, Input, OnInit} from '@angular/core'; import {Component, Input, OnInit} from '@angular/core';
import {ActivatedRoute} from '@angular/router'; import {ActivatedRoute} from '@angular/router';
import {CampaignService} from '../../../services/logs/campaign.service'; import {CampaignService} from '../../services/logs/campaign.service';
import {ChartUtils} from '../../../utils/chart-utils'; import {ChartUtils} from '../../utils/chart-utils';
import {Fraction} from '../../../utils/fraction.enum'; import {Fraction} from '../../utils/fraction.enum';
@Component({ @Component({
selector: 'stats-overview', selector: 'stats-overview',
templateUrl: './stats-overview.component.html', templateUrl: './stats-overview.component.html',
styleUrls: ['./stats-overview.component.css', '../../../style/list-entry.css', '../../../style/overview.css'] styleUrls: ['./stats-overview.component.css', '../../style/list-entry.css', '../../style/overview.css']
}) })
export class StatisticOverviewComponent implements OnInit { export class StatisticOverviewComponent implements OnInit {

View File

@ -1,16 +1,16 @@
import {RouterModule, Routes} from '@angular/router'; import {RouterModule, Routes} from '@angular/router';
import {StatisticComponent} from './stats.component'; import {StatisticComponent} from './stats.component';
import {WarListComponent} from './war/war-list/war-list.component'; import {WarListComponent} from './war-list/war-list.component';
import {StatisticOverviewComponent} from './campaign/overview/stats-overview.component'; import {StatisticOverviewComponent} from './overview/stats-overview.component';
import {WarItemComponent} from './war/war-list/war-item.component'; import {WarItemComponent} from './war-list/war-item.component';
import {ModuleWithProviders} from '@angular/core'; import {ModuleWithProviders} from '@angular/core';
import {CampaignSubmitComponent} from './campaign/campaign-submit/campaign-submit.component'; import {CampaignSubmitComponent} from './campaign-submit/campaign-submit.component';
import {CampaignPlayerDetailComponent} from './campaign/campaign-player-detail/campaign-player-detail.component'; import {CampaignPlayerDetailComponent} from './campaign-player-detail/campaign-player-detail.component';
import {WarDetailComponent} from './war/war-detail/war-detail.component'; import {WarDetailComponent} from './war-detail/war-detail.component';
import {ScoreboardComponent} from './war/scoreboard/scoreboard.component'; import {ScoreboardComponent} from './war-detail/scoreboard/scoreboard.component';
import {WarSubmitComponent} from './war-submit/war-submit.component'; import {WarSubmitComponent} from './war-submit/war-submit.component';
import {FractionStatsComponent} from './war/fraction-stats/fraction-stats.component'; import {FractionStatsComponent} from './war-detail/fraction-stats/fraction-stats.component';
import {StatisticHighScoreComponent} from './campaign/highscore/highscore.component'; import {StatisticHighScoreComponent} from './highscore/highscore.component';
export const statsRoutes: Routes = [{ export const statsRoutes: Routes = [{

View File

@ -1,17 +1,17 @@
import {Component, OnInit, ViewChild} from '@angular/core'; import {Component, OnInit, ViewChild} from '@angular/core';
import {ActivatedRoute} from '@angular/router'; import {ActivatedRoute} from '@angular/router';
import {WarService} from '../../../services/logs/war.service'; import {WarService} from '../../services/logs/war.service';
import {War} from '../../../models/model-interfaces'; import {War} from '../../models/model-interfaces';
import {ChartUtils} from '../../../utils/chart-utils'; import {ChartUtils} from '../../utils/chart-utils';
import {Fraction} from '../../../utils/fraction.enum'; import {Fraction} from '../../utils/fraction.enum';
import {LogsService} from '../../../services/logs/logs.service'; import {LogsService} from '../../services/logs/logs.service';
import {ScoreboardComponent} from '../scoreboard/scoreboard.component'; import {ScoreboardComponent} from './scoreboard/scoreboard.component';
@Component({ @Component({
selector: 'war-detail', selector: 'war-detail',
templateUrl: './war-detail.component.html', templateUrl: './war-detail.component.html',
styleUrls: ['./war-detail.component.css', '../../../style/list-entry.css', '../../../style/hide-scrollbar.css'] styleUrls: ['./war-detail.component.css', '../../style/list-entry.css', '../../style/hide-scrollbar.css']
}) })
export class WarDetailComponent implements OnInit { export class WarDetailComponent implements OnInit {

View File

@ -1,11 +1,11 @@
import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
import {War} from '../../../models/model-interfaces'; import {War} from '../../models/model-interfaces';
import {LoginService} from '../../../services/app-user-service/login-service'; import {LoginService} from '../../services/app-user-service/login-service';
@Component({ @Component({
selector: 'pjm-war-item', selector: 'pjm-war-item',
templateUrl: './war-item.component.html', templateUrl: './war-item.component.html',
styleUrls: ['./war-item.component.css', '../../../style/list-entry.css'], styleUrls: ['./war-item.component.css', '../../style/list-entry.css'],
changeDetection: ChangeDetectionStrategy.OnPush changeDetection: ChangeDetectionStrategy.OnPush
}) })
export class WarItemComponent implements OnInit { export class WarItemComponent implements OnInit {

View File

@ -1,15 +1,15 @@
import {Component, OnInit} from '@angular/core'; import {Component, OnInit} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router'; import {ActivatedRoute, Router} from '@angular/router';
import {Campaign, War} from '../../../models/model-interfaces'; import {Campaign, War} from '../../models/model-interfaces';
import {WarService} from '../../../services/logs/war.service'; import {WarService} from '../../services/logs/war.service';
import {LoginService} from '../../../services/app-user-service/login-service'; import {LoginService} from '../../services/app-user-service/login-service';
import {CampaignService} from '../../../services/logs/campaign.service'; import {CampaignService} from '../../services/logs/campaign.service';
import {RouteConfig} from '../../../app.config'; import {RouteConfig} from '../../app.config';
@Component({ @Component({
selector: 'war-list', selector: 'war-list',
templateUrl: './war-list.component.html', templateUrl: './war-list.component.html',
styleUrls: ['./war-list.component.css', '../../../style/list-entry.css', '../../../style/select-list.css'] styleUrls: ['./war-list.component.css', '../../style/list-entry.css', '../../style/select-list.css']
}) })
export class WarListComponent implements OnInit { export class WarListComponent implements OnInit {

View File

@ -38,7 +38,7 @@ export class WarSubmitComponent {
fileChange(event) { fileChange(event) {
if (this.validExtensions.filter(ext => event.target.files[0] && if (this.validExtensions.filter(ext => event.target.files[0] &&
event.target.files[0].name.endsWith(ext)).length === 1) { event.target.files[0].name.endsWith(ext)).length == 1) {
this.showFileError = false; this.showFileError = false;
this.fileList = event.target.files; this.fileList = event.target.files;
} else { } else {