From 0e571136bbef552eedbac67a3538ee8b39365906 Mon Sep 17 00:00:00 2001 From: Florian Hartwich Date: Sun, 1 Apr 2018 23:29:10 +0200 Subject: [PATCH] simplify armyoverview data structure --- api/routes/overview.js | 40 +++++++++++------------ static/src/app/army/army.component.html | 8 ++--- static/src/app/army/army.component.ts | 2 +- static/src/app/models/model-interfaces.ts | 17 +--------- 4 files changed, 25 insertions(+), 42 deletions(-) diff --git a/api/routes/overview.js b/api/routes/overview.js index c377f99..54eb919 100644 --- a/api/routes/overview.js +++ b/api/routes/overview.js @@ -17,16 +17,12 @@ const overview = new express.Router(); // routes ********************** overview.route('/') .get((req, res, next) => { - let countOpfor = 0; - let countBlufor = 0; - const armyOverview = { - BLUFOR: { - squads: [], - }, - OPFOR: { - squads: [], - }, - }; + const fractions = ['BLUFOR', 'OPFOR']; + const fractionMemberCount = [0, 0]; + const armyOverview = [ + {squads: []}, + {squads: []}, + ]; SquadModel.find({}, {'sortingNumber': 0, 'updatedAt': 0, 'timestamp': 0, '__v': 0}, { sort: { @@ -71,15 +67,14 @@ overview.route('/') const s = squad.toObject(); s.members = squadMembers; s.memberCount = squadMembers.length; - if (s.fraction === 'BLUFOR') { - delete s.fraction; - armyOverview.BLUFOR.squads.push(s); - countBlufor += s.members.length; - } - if (s.fraction === 'OPFOR') { - delete s.fraction; - armyOverview.OPFOR.squads.push(s); - countOpfor += s.members.length; + + for (let i = 0; i < fractions.length; i++) { + if (s.fraction === fractions[i]) { + delete s.fraction; + armyOverview[i].squads.push(s); + fractionMemberCount[i] += s.members.length; + break; + } } } @@ -90,8 +85,11 @@ overview.route('/') if (err) { return next(err); } - armyOverview.BLUFOR.memberCount = countBlufor; - armyOverview.OPFOR.memberCount = countOpfor; + + for (let i = 0; i < fractions.length; i++) { + armyOverview[i].memberCount = fractionMemberCount[i]; + } + res.locals.items = armyOverview; res.locals.processed = true; next(); diff --git a/static/src/app/army/army.component.html b/static/src/app/army/army.component.html index 1baffa1..dce015e 100644 --- a/static/src/app/army/army.component.html +++ b/static/src/app/army/army.component.html @@ -3,7 +3,7 @@

{{fraction.BLUFOR}}

-
+
@@ -27,12 +27,12 @@
-
Armeemitglieder: {{army.BLUFOR.memberCount}}
+
Armeemitglieder: {{army[0].memberCount}}

{{fraction.OPFOR}}

-
+
@@ -56,7 +56,7 @@
-
Armeemitglieder: {{army.OPFOR.memberCount}}
+
Armeemitglieder: {{army[1].memberCount}}
diff --git a/static/src/app/army/army.component.ts b/static/src/app/army/army.component.ts index e22ef7d..47d6443 100644 --- a/static/src/app/army/army.component.ts +++ b/static/src/app/army/army.component.ts @@ -15,7 +15,7 @@ import {CSSHelpers} from '../global.helpers'; }) export class ArmyComponent implements OnInit, OnDestroy { - army: Army = {BLUFOR: {squads: [], memberCount: 0}, OPFOR: {squads: [], memberCount: 0}}; + army: Army[]; readonly fraction = Fraction; diff --git a/static/src/app/models/model-interfaces.ts b/static/src/app/models/model-interfaces.ts index 1a52f36..4e62c2e 100644 --- a/static/src/app/models/model-interfaces.ts +++ b/static/src/app/models/model-interfaces.ts @@ -104,7 +104,6 @@ export interface Decoration { } export interface Army { - BLUFOR: { squads: { _id, name, @@ -115,20 +114,6 @@ export interface Army { rank }[], }[], - memberCount - }; - OPFOR: { - squads: { - _id, - name, - memberCount, - members: { - _id, - username, - rank - }[], - }[], - memberCount - }; + memberCount: number }