From 1ea88b9f3d4299e96fa987b7f43e63b2797e56af Mon Sep 17 00:00:00 2001
From: L4168 <L4168@student.jamk.fi>
Date: Mon, 22 Jul 2019 15:51:56 +0300
Subject: [PATCH] format data for group cluster

---
 src/tracking/tracking.service.ts | 44 ++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 13 deletions(-)

diff --git a/src/tracking/tracking.service.ts b/src/tracking/tracking.service.ts
index c40d5f7..769ae24 100644
--- a/src/tracking/tracking.service.ts
+++ b/src/tracking/tracking.service.ts
@@ -77,28 +77,46 @@ export class TrackingService {
       let factions = await this.factionRepository.find({ game: gameId });
       playerdata = await Promise.all(
         factions.map(async faction => {
-          return await this.trackingrepository.find({
+          let rawdata = await this.trackingrepository.find({
             where: { faction: faction.factionId },
             relations: ['faction', 'gamepersonId'],
           });
+          let groups = {
+            'infantry.svg': [],
+            'recon.svg': [],
+            'mechanized.svg': [],
+          };
+          rawdata.forEach(async player => {
+            groups[player.icon].push(player);
+          });
+          return groups;
         }),
       );
     }
     // parse data
+    // create an array for each faction
+    // inside faction create an array for each icon type
+    // insisde icon arrays include all players with same icon
     const currentdata = await Promise.all(
       await playerdata.map(async faction => {
-        return await Promise.all(
-          faction.map(async player => {
-            return await {
-              gamepersonId: player['gamepersonId']['gamepersonId'],
-              gamepersonRole: player['gamepersonId']['role'],
-              factionId: player['faction']['factionId'],
-              factionColour: player['faction']['colour'],
-              icon: player['icon'],
-              coordinates: player['data'].pop(),
-            };
-          }),
-        );
+        let data = [];
+        for (let group in faction) {
+          data.push(
+            await Promise.all(
+              faction[group].map(async player => {
+                return await {
+                  gamepersonId: player['gamepersonId']['gamepersonId'],
+                  gamepersonRole: player['gamepersonId']['role'],
+                  factionId: player['faction']['factionId'],
+                  factionColour: player['faction']['colour'],
+                  icon: player['icon'],
+                  coordinates: player['data'].pop(),
+                };
+              }),
+            ),
+          );
+        }
+        return data;
       }),
     );
     return currentdata;
-- 
GitLab