Release v1.6.0 - Detail parsing & fraction war stats #15
20
README.md
20
README.md
|
@ -8,12 +8,30 @@ _MEAN Application_
|
||||||
|
|
||||||
### Setup mongoDB
|
### Setup mongoDB
|
||||||
|
|
||||||
|
https://docs.mongodb.com/manual/administration/install-community/
|
||||||
|
|
||||||
### Setup node and npm
|
### Setup node and npm
|
||||||
|
|
||||||
|
sudo apt-get install npm nodejs-legacy
|
||||||
|
|
||||||
|
update to latest npm version
|
||||||
|
|
||||||
|
sudo npm install -g npm@latest
|
||||||
|
|
||||||
|
update node to latest version
|
||||||
|
|
||||||
|
sudo npm install -g n@latest
|
||||||
|
n latest
|
||||||
|
|
||||||
|
check versions
|
||||||
|
|
||||||
|
npm -v
|
||||||
|
node -v
|
||||||
|
|
||||||
## Development and Execution
|
## Development and Execution
|
||||||
|
|
||||||
### First run in dev mode
|
### First run in dev mode
|
||||||
|
|
||||||
### Run in Prodction
|
### Run in Production
|
||||||
|
|
||||||
## License Information
|
## License Information
|
||||||
|
|
|
@ -11,6 +11,10 @@ const WarSchema = new Schema({
|
||||||
date: {
|
date: {
|
||||||
type: Date,
|
type: Date,
|
||||||
},
|
},
|
||||||
|
endDate : {
|
||||||
|
type: Date,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
ptBlufor: {
|
ptBlufor: {
|
||||||
type: Number,
|
type: Number,
|
||||||
get: v => Math.round(v),
|
get: v => Math.round(v),
|
||||||
|
@ -61,7 +65,7 @@ const WarSchema = new Schema({
|
||||||
get: v => Math.round(v),
|
get: v => Math.round(v),
|
||||||
set: v => Math.round(v),
|
set: v => Math.round(v),
|
||||||
default: 0
|
default: 0
|
||||||
},
|
}
|
||||||
}, {
|
}, {
|
||||||
collection: 'war',
|
collection: 'war',
|
||||||
timestamps: {createdAt: 'timestamp'}
|
timestamps: {createdAt: 'timestamp'}
|
||||||
|
|
|
@ -65,6 +65,9 @@ const parseWarLog = (lineArray, war) => {
|
||||||
if (line.includes('Endbudget')) {
|
if (line.includes('Endbudget')) {
|
||||||
stats.war['endBudgetBlufor'] = transformMoneyString(budg[11]);
|
stats.war['endBudgetBlufor'] = transformMoneyString(budg[11]);
|
||||||
stats.war['endBudgetOpfor'] = transformMoneyString(budg[14]);
|
stats.war['endBudgetOpfor'] = transformMoneyString(budg[14]);
|
||||||
|
console.log(budg)
|
||||||
|
console.log(budg[0].substr(0, budg[0].length - 1).split('/').join('-') + 'T' + budg[5] +'.000+02:00')
|
||||||
|
war.endDate = new Date(budg[0].substr(0, budg[0].length - 1).split('/').join('-') + 'T0' + budg[5] +'.000+02:00');
|
||||||
} else if (line.includes('Startbudget')) {
|
} else if (line.includes('Startbudget')) {
|
||||||
stats.war.date = new Date(budg[0].substr(0, budg[0].length - 1).split('/').join('-') + 'T22:00:00.000+02:00');
|
stats.war.date = new Date(budg[0].substr(0, budg[0].length - 1).split('/').join('-') + 'T22:00:00.000+02:00');
|
||||||
stats.war['budgetBlufor'] = transformMoneyString(budg[11]);
|
stats.war['budgetBlufor'] = transformMoneyString(budg[11]);
|
||||||
|
|
|
@ -46,6 +46,7 @@ export interface War {
|
||||||
_id?: string;
|
_id?: string;
|
||||||
title?: string;
|
title?: string;
|
||||||
date?: string;
|
date?: string;
|
||||||
|
endDate?: string;
|
||||||
ptBlufor?: number;
|
ptBlufor?: number;
|
||||||
ptOpfor?: number;
|
ptOpfor?: number;
|
||||||
playersBlufor?: number;
|
playersBlufor?: number;
|
||||||
|
|
|
@ -43,11 +43,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.chart-container {
|
.chart-container {
|
||||||
width: 95%;
|
width: 90%;
|
||||||
min-width: 500px;
|
margin: 2%;
|
||||||
|
min-width: 900px;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
margin: 2%;
|
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,7 @@
|
||||||
</ngx-charts-line-chart>
|
</ngx-charts-line-chart>
|
||||||
</div>
|
</div>
|
||||||
<div class="fade-in chart-container">
|
<div class="fade-in chart-container">
|
||||||
<ngx-charts-line-chart
|
<ngx-charts-area-chart
|
||||||
[scheme]="colorScheme"
|
[scheme]="colorScheme"
|
||||||
[results]="flagData"
|
[results]="flagData"
|
||||||
[xAxis]="xAxis"
|
[xAxis]="xAxis"
|
||||||
|
@ -235,7 +235,7 @@
|
||||||
[autoScale]="autoscale"
|
[autoScale]="autoscale"
|
||||||
[timeline]="timeline"
|
[timeline]="timeline"
|
||||||
[roundDomains]="roundDomains">
|
[roundDomains]="roundDomains">
|
||||||
</ngx-charts-line-chart>
|
</ngx-charts-area-chart>
|
||||||
</div>
|
</div>
|
||||||
</tab>
|
</tab>
|
||||||
</tabset>
|
</tabset>
|
||||||
|
|
|
@ -177,7 +177,6 @@ export class WarDetailComponent {
|
||||||
"value": pointEntry.ptOpfor
|
"value": pointEntry.ptOpfor
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.pointData = this.tmpPointData;
|
|
||||||
|
|
||||||
// BUDGET
|
// BUDGET
|
||||||
this.tmpBudgetData[0].series.push({
|
this.tmpBudgetData[0].series.push({
|
||||||
|
@ -194,7 +193,6 @@ export class WarDetailComponent {
|
||||||
"value": budgetEntry.newBudget
|
"value": budgetEntry.newBudget
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.budgetData = this.tmpBudgetData;
|
|
||||||
|
|
||||||
// KILLS
|
// KILLS
|
||||||
let killCountBlufor = 0;
|
let killCountBlufor = 0;
|
||||||
|
@ -241,8 +239,6 @@ export class WarDetailComponent {
|
||||||
"value": killEntry.fraction === 'BLUFOR' ? ffKillCountBlufor : ffKillCountOpfor
|
"value": killEntry.fraction === 'BLUFOR' ? ffKillCountBlufor : ffKillCountOpfor
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.killData = this.tmpKillData;
|
|
||||||
this.friendlyFireData = this.tmpFrienlyFireData;
|
|
||||||
|
|
||||||
// TRANSPORT
|
// TRANSPORT
|
||||||
let transportCountBlufor = 0;
|
let transportCountBlufor = 0;
|
||||||
|
@ -267,7 +263,6 @@ export class WarDetailComponent {
|
||||||
"value": transportEntry.fraction === 'BLUFOR' ? transportCountBlufor : transportCountOpfor
|
"value": transportEntry.fraction === 'BLUFOR' ? transportCountBlufor : transportCountOpfor
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.transportData = this.tmpTransportData;
|
|
||||||
|
|
||||||
// REVIVE & STABILIZE
|
// REVIVE & STABILIZE
|
||||||
let reviveCountBlufor = 0;
|
let reviveCountBlufor = 0;
|
||||||
|
@ -313,13 +308,10 @@ export class WarDetailComponent {
|
||||||
"value": reviveEntry.fraction === 'BLUFOR' ? stabilizeCountBlufor : stabilizeCountOpfor
|
"value": reviveEntry.fraction === 'BLUFOR' ? stabilizeCountBlufor : stabilizeCountOpfor
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.reviveData = this.tmpReviveData;
|
|
||||||
this.stabilizedData = this.tmpStabilizeData;
|
|
||||||
|
|
||||||
|
|
||||||
// FLAG
|
// FLAG
|
||||||
let flagStatusBlufor = 1;
|
let flagStatusBlufor = true;
|
||||||
let flagStatusOpfor = 1;
|
let flagStatusOpfor = true;
|
||||||
this.tmpFlagCaptureData[0].series.push({
|
this.tmpFlagCaptureData[0].series.push({
|
||||||
"name": startDateObj,
|
"name": startDateObj,
|
||||||
"value": flagStatusBlufor
|
"value": flagStatusBlufor
|
||||||
|
@ -331,20 +323,44 @@ export class WarDetailComponent {
|
||||||
|
|
||||||
data.flag.forEach(flagEntry => {
|
data.flag.forEach(flagEntry => {
|
||||||
if (flagEntry.flagFraction === 'BLUFOR') {
|
if (flagEntry.flagFraction === 'BLUFOR') {
|
||||||
flagStatusBlufor = flagEntry.capture ? 0 : 1
|
flagStatusBlufor = !flagEntry.capture
|
||||||
} else {
|
} else {
|
||||||
flagStatusOpfor = flagEntry.capture ? 0 : 1;
|
flagStatusOpfor = !flagEntry.capture;
|
||||||
}
|
}
|
||||||
this.tmpFlagCaptureData[flagEntry.flagFraction === 'BLUFOR' ? 0 : 1].series.push({
|
this.tmpFlagCaptureData[flagEntry.flagFraction === 'BLUFOR' ? 0 : 1].series.push({
|
||||||
"name": new Date(flagEntry.time),
|
"name": new Date(flagEntry.time),
|
||||||
"value": flagEntry.flagFraction === 'BLUFOR' ? flagStatusBlufor : flagStatusOpfor
|
"value": flagEntry.flagFraction === 'BLUFOR' ? flagStatusBlufor : flagStatusOpfor
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.flagData = this.tmpFlagCaptureData;
|
|
||||||
|
this.addFinalTimeDataEntriesAndPopulate(new Date(this.war.endDate));
|
||||||
|
|
||||||
this.fractionChartsInitialized = true;
|
this.fractionChartsInitialized = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addFinalTimeDataEntriesAndPopulate(endDate) {
|
||||||
|
[this.tmpPointData, this.tmpBudgetData, this.tmpTransportData, this.tmpReviveData, this.tmpStabilizeData,
|
||||||
|
this.tmpKillData, this.tmpFrienlyFireData, this.tmpFlagCaptureData].forEach(tmp => {
|
||||||
|
for (let j in [0, 1]) {
|
||||||
|
if (tmp[j].series[tmp[j].series.length - 1].name < endDate) {
|
||||||
|
tmp[j].series.push({
|
||||||
|
'name': endDate,
|
||||||
|
'value': tmp[j].series[tmp[j].series.length - 1].value
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.pointData = this.tmpPointData;
|
||||||
|
this.budgetData = this.tmpBudgetData;
|
||||||
|
this.transportData = this.tmpTransportData;
|
||||||
|
this.reviveData = this.tmpReviveData;
|
||||||
|
this.stabilizedData = this.tmpStabilizeData;
|
||||||
|
this.killData = this.tmpKillData;
|
||||||
|
this.friendlyFireData = this.tmpFrienlyFireData;
|
||||||
|
this.flagData = this.tmpFlagCaptureData;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue