From 980c8254a026a9685b865f5f5a41f80a80543970 Mon Sep 17 00:00:00 2001
From: ddamiron <ddamiron@sii.fr>
Date: Fri, 19 Jul 2019 17:07:32 +0200
Subject: [PATCH] add logs: pre-report, report and home components

---
 src/app/app.routing.module.ts                 |  25 ++-
 src/app/components/index.ts                   |  13 +-
 .../logs-home/logs-home.component.html        |  37 ++++
 .../logs-home.component.scss}                 |   0
 .../logs-home/logs-home.component.ts          |  79 +++++++++
 .../logs-sessions.component.html              |   2 +-
 .../logs-sessions/logs-sessions.component.ts  |   2 +-
 .../logs-slugs/logs-slugs.component.html      |   6 +-
 .../logs-slugs/logs-slugs.component.ts        |   1 +
 .../logs-data/logs-data.component.html        |   0
 .../report/logs-data/logs-data.component.scss |  27 +++
 .../logs-data/logs-data.component.ts          |   4 +-
 .../logs-graph/logs-graph.component.html      |   0
 .../logs-graph/logs-graph.component.scss      |   0
 .../logs-graph/logs-graph.component.ts        |   4 +-
 .../logs-pre-report.component.html            | 158 ++++++++++++++++++
 .../logs-pre-report.component.scss            |  22 +++
 .../logs-pre-report.component.ts              |  60 +++++++
 .../logs-report/logs-report.component.html    |  10 ++
 .../logs-report/logs-report.component.scss    |  22 +++
 .../logs-report/logs-report.component.ts      |  78 +++++++++
 src/app/services/data-logs.service.ts         |  68 +++++++-
 22 files changed, 597 insertions(+), 21 deletions(-)
 create mode 100644 src/app/components/logs-dashboard/logs-home/logs-home.component.html
 rename src/app/components/logs-dashboard/{logs-data/logs-data.component.scss => logs-home/logs-home.component.scss} (100%)
 create mode 100644 src/app/components/logs-dashboard/logs-home/logs-home.component.ts
 rename src/app/components/logs-dashboard/{ => report}/logs-data/logs-data.component.html (100%)
 create mode 100644 src/app/components/logs-dashboard/report/logs-data/logs-data.component.scss
 rename src/app/components/logs-dashboard/{ => report}/logs-data/logs-data.component.ts (97%)
 rename src/app/components/logs-dashboard/{ => report}/logs-graph/logs-graph.component.html (100%)
 rename src/app/components/logs-dashboard/{ => report}/logs-graph/logs-graph.component.scss (100%)
 rename src/app/components/logs-dashboard/{ => report}/logs-graph/logs-graph.component.ts (97%)
 create mode 100644 src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.html
 create mode 100644 src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.scss
 create mode 100644 src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.ts
 create mode 100644 src/app/components/logs-dashboard/report/logs-report/logs-report.component.html
 create mode 100644 src/app/components/logs-dashboard/report/logs-report/logs-report.component.scss
 create mode 100644 src/app/components/logs-dashboard/report/logs-report/logs-report.component.ts

diff --git a/src/app/app.routing.module.ts b/src/app/app.routing.module.ts
index e13d295..bd1e3dd 100644
--- a/src/app/app.routing.module.ts
+++ b/src/app/app.routing.module.ts
@@ -9,8 +9,11 @@ import { ResourceFormComponent } from './components/resources/edit/resource-form
 import { ResourceDetailComponent } from './components/resources/detail/resource-detail.component';
 import { FormatsComponent, FormatDetailComponent, FormatFormComponent } from './components';
 import { AuthenticatedGuard } from './user/guards/authenticated.guard';
-import { LogsDataComponent } from './components/logs-dashboard/logs-data/logs-data.component';
-import { LogsGraphComponent } from './components/logs-dashboard/logs-graph/logs-graph.component';
+import { LogsDataComponent } from './components/logs-dashboard/report/logs-data/logs-data.component';
+import { LogsGraphComponent } from './components/logs-dashboard/report/logs-graph/logs-graph.component';
+import { LogsPreReportComponent } from './components/logs-dashboard/report/logs-pre-report/logs-pre-report.component';
+import { LogsReportComponent } from './components/logs-dashboard/report/logs-report/logs-report.component';
+import { LogsHomeComponent } from './components/logs-dashboard/logs-home/logs-home.component';
 
 const appRoutes: Routes = [
   {
@@ -119,12 +122,28 @@ const appRoutes: Routes = [
   },
   {
     path: 'datalogs',
-    component: LogsDataComponent,
+    component: LogsHomeComponent,
     canActivate: [AuthenticatedGuard],
     data: {
       title: 'datalogs',
     },
   },
+  {
+    path: 'datalogs/preReport/:type/:id',
+    component: LogsPreReportComponent,
+    canActivate: [AuthenticatedGuard],
+    data: {
+      title: 'preReport',
+    },
+  },
+  {
+    path: 'datalogs/report/:slug/:sessionId/:urlCode',
+    component: LogsReportComponent,
+    canActivate: [AuthenticatedGuard],
+    data: {
+      title: 'report',
+    },
+  },
 ];
 
 @NgModule({
diff --git a/src/app/components/index.ts b/src/app/components/index.ts
index a37c9af..3e5157e 100644
--- a/src/app/components/index.ts
+++ b/src/app/components/index.ts
@@ -14,10 +14,13 @@ import { FormatDetailComponent } from './formats/detail/format-detail.component'
 import { FormatFormComponent } from './formats/edit/format-form.component';
 import { ImageUploadComponent } from './image-upload/image-upload.component';
 import { NotificationsComponent } from './notifications/notifications.component';
-import { LogsDataComponent } from './logs-dashboard/logs-data/logs-data.component';
-import { LogsGraphComponent } from './logs-dashboard/logs-graph/logs-graph.component';
+import { LogsDataComponent } from './logs-dashboard/report/logs-data/logs-data.component';
+import { LogsGraphComponent } from './logs-dashboard/report/logs-graph/logs-graph.component';
 import { LogsSessionsComponent } from './logs-dashboard/logs-sessions/logs-sessions.component';
 import { LogsSlugsComponent } from './logs-dashboard/logs-slugs/logs-slugs.component';
+import { LogsPreReportComponent } from './logs-dashboard/report/logs-pre-report/logs-pre-report.component';
+import { LogsReportComponent } from './logs-dashboard/report/logs-report/logs-report.component';
+import { LogsHomeComponent } from './logs-dashboard/logs-home/logs-home.component';
 
 export {
   MenuComponent,
@@ -40,6 +43,9 @@ export {
   LogsGraphComponent,
   LogsSessionsComponent,
   LogsSlugsComponent,
+  LogsPreReportComponent,
+  LogsReportComponent,
+  LogsHomeComponent,
 };
 
 // tslint:disable-next-line:variable-name
@@ -64,4 +70,7 @@ export const AppComponents = [
   LogsGraphComponent,
   LogsSessionsComponent,
   LogsSlugsComponent,
+  LogsPreReportComponent,
+  LogsReportComponent,
+  LogsHomeComponent,
 ];
diff --git a/src/app/components/logs-dashboard/logs-home/logs-home.component.html b/src/app/components/logs-dashboard/logs-home/logs-home.component.html
new file mode 100644
index 0000000..111a796
--- /dev/null
+++ b/src/app/components/logs-dashboard/logs-home/logs-home.component.html
@@ -0,0 +1,37 @@
+<div class="section">
+  <div class="columns is-centered is-marginless">
+    <div class="input-field">
+      <form>
+        <label> Slug/Uuid: </label>
+        <input type="text" size="40" name="slug" [(ngModel)]="slug">
+         &nbsp;
+        <label> SessionId: </label>
+        <input type="text" size="40" name="sessionId" [(ngModel)]="sessionId">
+
+        <a class="button button-gl " [routerLink]="['report', slug, sessionId, 'home']">
+          <i class="fas fa-search"></i>
+        </a>
+      </form>
+      <br>
+
+
+      <a class="button button-gl is-centered" (click)="tabsToggler(true)">
+        Slugs
+      </a>
+      <a class="button button-gl is-centered" (click)="tabsToggler(false)">
+        Sessions
+      </a>
+
+    </div>
+  </div>
+
+  <div class="columns is-centered is-marginless">
+    <div class="column has-text-centered is-marginless">
+      <app-logs-sessions [hidden]="isToggled" [childSessionId]="sessionId" [childNbSessions]="nbSessionId">
+      </app-logs-sessions>
+      <app-logs-slugs [hidden]="!isToggled" [childSlugsList]="allFields.slug_list" [childNbSlugs]="nbSlug"
+        [childNbUuids]="nbUuid"></app-logs-slugs>
+    </div>
+  </div>
+
+
diff --git a/src/app/components/logs-dashboard/logs-data/logs-data.component.scss b/src/app/components/logs-dashboard/logs-home/logs-home.component.scss
similarity index 100%
rename from src/app/components/logs-dashboard/logs-data/logs-data.component.scss
rename to src/app/components/logs-dashboard/logs-home/logs-home.component.scss
diff --git a/src/app/components/logs-dashboard/logs-home/logs-home.component.ts b/src/app/components/logs-dashboard/logs-home/logs-home.component.ts
new file mode 100644
index 0000000..03e064b
--- /dev/null
+++ b/src/app/components/logs-dashboard/logs-home/logs-home.component.ts
@@ -0,0 +1,79 @@
+import { Component, OnInit } from '@angular/core';
+import { DataLogsService } from 'src/app/services/data-logs.service';
+import { ActivatedRoute, ParamMap } from '@angular/router';
+import { switchMap } from 'rxjs/operators';
+import { ILogs } from 'src/app/models/logs.model';
+import { FormsModule } from '@angular/forms';
+
+@Component({
+  selector: 'app-logs-home',
+  templateUrl: './logs-home.component.html',
+  styleUrls: ['./logs-home.component.scss'],
+})
+export class LogsHomeComponent implements OnInit {
+  isDashboardDisplayed: boolean = false;
+  uuid: string;
+  allFields: any;
+  sessionId: string;
+  slug: string;
+  data: any;
+  stepData: ILogs;
+  allStepsData: any;
+  nbSessionId: number;
+  nbUuid: number;
+  nbSlug: number;
+  isToggled: boolean;
+
+  sessionIdList: [string];
+  constructor(
+    private dataLogsService: DataLogsService,
+    private route: ActivatedRoute,
+  ) { }
+
+  ngOnInit() {
+    this.isToggled = true;
+    this.data = [];
+    this.uuid = 'c1b069ca-181d-4265-9838-8d182f207bd3';
+    this.sessionId = '372b59a4-72b0-4a3a-b518-843e516da0cd';
+    this.slug = 'arbres-alignement-metropole-lyon';
+    this.allStepsData = [];
+    this.allFields = [];
+    this.getAllUniqueFields();
+
+  }
+
+  onSubmit() {
+    this.isDashboardDisplayed = true;
+    this.isToggled = false;
+    this.dataLogsService.uuidToSessionId(this.uuid)
+    .subscribe((result) => {
+      this.data.uuid = result[0]._id.uuid;
+      this.data.sessionIdList = result[0].session_id_list;
+    },
+    );
+    this.dataLogsService.getAllStepsDuration(
+    this.uuid,
+    this.sessionId,
+  ).subscribe((results) => {
+    console.log('results', results);
+    this.allStepsData = results;
+  },
+  );
+  }
+
+  getAllUniqueFields() {
+    this.dataLogsService.getAllUniqueFields().subscribe((result) => {
+      this.allFields = result[0];
+      this.nbSessionId = result[0]['session_id_list'].length;
+      this.nbUuid = result[0]['uuid_list'].length;
+      this.nbSlug = result[0]['slug_list'].length;
+
+    },
+    );
+  }
+  tabsToggler(oneBoolean) {
+    this.isToggled = oneBoolean;
+    this.isDashboardDisplayed = false;
+  }
+
+}
diff --git a/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.html b/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.html
index 04f36d8..0fd69dd 100644
--- a/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.html
+++ b/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.html
@@ -52,7 +52,7 @@
                 0
               </div>
               <div class="column is-1 actions"> 
-                  <a class="button button-gl " (click)="onSubmit()">
+                  <a class="button button-gl " [routerLink]="['preReport','session', session._id]">
                       <i class="fas fa-eye"></i> Voir
                   </a>
               </div>
diff --git a/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.ts b/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.ts
index 1fc59e5..e4edb3b 100644
--- a/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.ts
+++ b/src/app/components/logs-dashboard/logs-sessions/logs-sessions.component.ts
@@ -15,7 +15,7 @@ export class LogsSessionsComponent implements OnInit {
   @Input() childNbSessions: number;
   allSessionsIdInfo: [];
   childSessionsList: any;
-
+  urlCode: string = 'sessionUrl';
   constructor(
     private dataLogsService: DataLogsService,
   ) { }
diff --git a/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.html b/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.html
index e3ecc3f..c844b77 100644
--- a/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.html
+++ b/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.html
@@ -5,11 +5,7 @@
         <div class="column has-text-left">
           <div class="columns is-centered is-marginless">
             <div class="column has-text-left">
-
               <h2>{{ childNbSlugs -1 }} slugs trouvées</h2>
-
-              <h2>{{ childNbUuids }} uuid trouvées</h2>
-
             </div>
           </div>
         </div>
@@ -58,7 +54,7 @@
 
             </div>
             <div class="column  is-1 has-text-centered actions"> 
-                <a class="button button-gl is-centered" (click)="onSubmit()">
+                <a class="button button-gl is-centered" [routerLink]="['preReport','slug', slug]">
                     <i class="fas fa-eye"></i> Voir
                   </a>
             </div>
diff --git a/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.ts b/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.ts
index d851fd7..87331e9 100644
--- a/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.ts
+++ b/src/app/components/logs-dashboard/logs-slugs/logs-slugs.component.ts
@@ -15,6 +15,7 @@ export class LogsSlugsComponent implements OnInit {
   @Input() childSlugsList: any;
   @Input() childNbSlugs: any;
   @Input() childNbUuids: any;
+  urlCode: string = 'slugUrl';
 
   allSessionsIdInfo: [];
   childSessionsList: any;
diff --git a/src/app/components/logs-dashboard/logs-data/logs-data.component.html b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.html
similarity index 100%
rename from src/app/components/logs-dashboard/logs-data/logs-data.component.html
rename to src/app/components/logs-dashboard/report/logs-data/logs-data.component.html
diff --git a/src/app/components/logs-dashboard/report/logs-data/logs-data.component.scss b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.scss
new file mode 100644
index 0000000..fb31c60
--- /dev/null
+++ b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.scss
@@ -0,0 +1,27 @@
+figure {
+    text-align: center;
+  }
+  figure img{
+    max-width: 150px;
+    display: inline-block;
+    margin-top: 20px;
+  }
+  
+  .card-header-title {
+    justify-content: center;
+  }
+
+  .mini-log-card{
+    margin-top: 20px;
+    padding: 20px;
+    background-color: yellow;
+
+  }
+  .input-field{
+    width: 200%;
+    margin-top: 20px;
+  }
+
+  .hidden {
+    display: none;
+  }
\ No newline at end of file
diff --git a/src/app/components/logs-dashboard/logs-data/logs-data.component.ts b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.ts
similarity index 97%
rename from src/app/components/logs-dashboard/logs-data/logs-data.component.ts
rename to src/app/components/logs-dashboard/report/logs-data/logs-data.component.ts
index 440cc9d..d230e4b 100644
--- a/src/app/components/logs-dashboard/logs-data/logs-data.component.ts
+++ b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.ts
@@ -71,8 +71,8 @@ export class LogsDataComponent implements OnInit {
     },
     );
   }
-  tabsToggler(boolean) {
-    this.isToggled = boolean;
+  tabsToggler(oneBoolean) {
+    this.isToggled = oneBoolean;
     this.isDashboardDisplayed = false;
   }
 
diff --git a/src/app/components/logs-dashboard/logs-graph/logs-graph.component.html b/src/app/components/logs-dashboard/report/logs-graph/logs-graph.component.html
similarity index 100%
rename from src/app/components/logs-dashboard/logs-graph/logs-graph.component.html
rename to src/app/components/logs-dashboard/report/logs-graph/logs-graph.component.html
diff --git a/src/app/components/logs-dashboard/logs-graph/logs-graph.component.scss b/src/app/components/logs-dashboard/report/logs-graph/logs-graph.component.scss
similarity index 100%
rename from src/app/components/logs-dashboard/logs-graph/logs-graph.component.scss
rename to src/app/components/logs-dashboard/report/logs-graph/logs-graph.component.scss
diff --git a/src/app/components/logs-dashboard/logs-graph/logs-graph.component.ts b/src/app/components/logs-dashboard/report/logs-graph/logs-graph.component.ts
similarity index 97%
rename from src/app/components/logs-dashboard/logs-graph/logs-graph.component.ts
rename to src/app/components/logs-dashboard/report/logs-graph/logs-graph.component.ts
index b4d0747..1415e94 100644
--- a/src/app/components/logs-dashboard/logs-graph/logs-graph.component.ts
+++ b/src/app/components/logs-dashboard/report/logs-graph/logs-graph.component.ts
@@ -34,7 +34,7 @@ export class LogsGraphComponent implements OnInit {
     this.yValues = [];
     this.dataset = [];
     this.getData();
-    this.myChart.update();
+    // this.myChart.update();
 
   }
 
@@ -112,7 +112,7 @@ export class LogsGraphComponent implements OnInit {
     }
   }
   replotGraph() {
-    this.myChart.destroy();
+    // this.myChart.destroy();
     this.getData();
     this.myChart.update();
   }
diff --git a/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.html b/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.html
new file mode 100644
index 0000000..9449cf2
--- /dev/null
+++ b/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.html
@@ -0,0 +1,158 @@
+<ng-container 
+*ngIf="nbObjects!==0"
+>
+
+  <app-back-button [route]="'/datalogs'" [title]="'Retourner à la liste des slugs et sessionIds'"></app-back-button>
+
+  <h1>{{ title }}</h1>
+  <div [ngClass]="{'hidden': isSession}">
+    <div class="section">
+      <div class="columns is-centered is-marginless">
+        <div class="column has-text-left">
+          <h2>{{ nbObjects }} Sessions trouvées</h2>
+        </div>
+      </div>
+
+      <div class="table">
+        <div class="header columns is-marginless">
+          <div class="column is-4 has-text-centered">
+            <span (click)="sortBy('name')" class="is-sortable">
+              <span class="column-title">SessionId</span>
+              <p></p>
+            </span>
+          </div>
+          <div class="column is-1 has-text-centered">
+            <span class="column-title">All ?</span>
+          </div>
+          <div class="column is-2 has-text-centered">
+            <span class="column-title">Completion Date</span>
+          </div>
+          <div class="column is-2 has-text-centered">
+            <span class="column-title">Duration</span>
+          </div>
+          <div class="column  is-1 has-text-centered">
+            <span class="column-title">Errors?</span>
+          </div>
+          <div class="column is-1 has-text-centered">
+            <span class="column-title"></span>
+          </div>
+        </div>
+        <div class="data-list">
+          <div class="data columns is-multiline is-vcentered is-marginless"
+            *ngFor="let session of responseArray.session_id_list; let i=index;">
+            <div class="column is-4 has-text-centered">
+              {{ session }}
+            </div>
+            <div class="column is-1 has-text-centered">
+              <!-- {{ format.mapServerType}} -->
+            </div>
+            <div class="column is-2 has-text-centered">
+              <span class="column-title">Completion Date</span>
+            </div>
+            <div class="column is-2 has-text-centered">
+              <span class="column-title">{{ session.totalHoursSpent }}:
+                {{ session.totalMinutesSpent }}:
+                {{ session.totalSecondsSpent }}</span>
+            </div>
+            <div class="column  is-1 has-text-centered actions">
+              0
+            </div>
+            <div class="column is-1 actions"> 
+                <a class="button button-gl " [routerLink]="['../../../../datalogs/report', id, session, 'slug']">
+                    <i class="fas fa-eye"></i> Voir
+                </a>
+            </div>
+          </div>
+        </div>
+        <div class="columns is-marginless">
+          <div class="column">
+            <!-- <app-paginator *ngIf="paginator.length > 0" [length]="paginator.length" [pageSize]="paginator.limit"
+                [pageSizeOptions]="paginator.pageSizeOptions" [pageIndex]="paginator.pageIndex" [pagesToShow]="5"
+                [showFirstLastButtons]="true" (page)="changePagination($event)"
+                (pageSizeChanged)="changePageSize($event)">
+              </app-paginator> -->
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <div [ngClass]="{'hidden': !isSession}" >
+    <div class="section">
+      <div class="columns is-left is-marginless">
+        <div class="column has-text-left">
+          <div class="columns is-centered is-marginless">
+            <div class="column has-text-left">
+
+              <h2>{{ nbObjects -1 }} slugs trouvées</h2>
+
+              <!-- <h2>{{ childNbUuids }} uuid trouvées</h2> -->
+
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <div class="table">
+        <div class="header columns is-marginless">
+          <div class="column is-4 has-text-centered">
+            <span (click)="sortBy('name')" class="is-sortable">
+              <span class="column-title">Slugs</span>
+              <p></p>
+            </span>
+          </div>
+          <div class="column is-1 has-text-centered">
+            <span class="column-title">Uuids</span>
+          </div>
+          <div class="column is-2 has-text-centered">
+            <span class="column-title">Completion Date</span>
+          </div>
+          <div class="column is-2 has-text-centered">
+            <span class="column-title">Last</span>
+          </div>
+          <div class="column  is-1 has-text-centered">
+            <span class="column-title">Errors?</span>
+          </div>
+          <div class="column  is-1 has-text-centered">
+            <span class="column-title"></span>
+          </div>
+        </div>
+        <div class="data-list">
+          <div class="data columns is-multiline is-vcentered is-marginless"
+            *ngFor="let slug of responseArray.slug_list; let i=index;">
+            <div class="column is-4 has-text-centered">
+              {{ slug }}
+            </div>
+            <div class="column is-1 has-text-centered">
+              <!-- {{ format.mapServerType}} -->
+            </div>
+            <div class="column is-2 has-text-centered">
+              <span class="column-title">Completion Date</span>
+            </div>
+            <div class="column is-2 has-text-centered">
+              <span class="column-title"></span>
+            </div>
+            <div class="column  is-1 has-text-centered actions">
+
+            </div>
+            <div class="column is-1 actions"> 
+                <a class="button button-gl " [routerLink]="['../../../../datalogs/report', slug, id, 'session']">
+                    <i class="fas fa-eye"></i> Voir
+                </a>
+            </div>
+          </div>
+          <div class="columns is-marginless">
+            <div class="column">
+              <!-- <app-paginator *ngIf="paginator.length > 0" [length]="paginator.length" [pageSize]="paginator.limit"
+                    [pageSizeOptions]="paginator.pageSizeOptions" [pageIndex]="paginator.pageIndex" [pagesToShow]="5"
+                    [showFirstLastButtons]="true" (page)="changePagination($event)"
+                    (pageSizeChanged)="changePageSize($event)">
+                  </app-paginator> -->
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+
+</ng-container>
\ No newline at end of file
diff --git a/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.scss b/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.scss
new file mode 100644
index 0000000..0d8923b
--- /dev/null
+++ b/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.scss
@@ -0,0 +1,22 @@
+.full-width {
+  width: 100%;
+}
+
+h1 {
+  text-align: center
+}
+
+.icon {
+  cursor: pointer;
+  &:hover {
+    .fa-plus {
+      color: lightblue;
+    }
+    .fa-trash {
+      color: #d5232a;
+    }
+  }
+}
+.hidden {
+  display: none;
+}
\ No newline at end of file
diff --git a/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.ts b/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.ts
new file mode 100644
index 0000000..e69f7c3
--- /dev/null
+++ b/src/app/components/logs-dashboard/report/logs-pre-report/logs-pre-report.component.ts
@@ -0,0 +1,60 @@
+import { Component, OnInit } from '@angular/core';
+import { ActivatedRoute, ParamMap, Router } from '@angular/router';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { filter, switchMap } from 'rxjs/operators';
+import { Format } from 'src/app/models/format.model';
+import { DataLogsService } from 'src/app/services/data-logs.service';
+
+@Component({
+  selector: 'app-logs-pre-report',
+  templateUrl: './logs-pre-report.component.html',
+  styleUrls: ['./logs-pre-report.component.scss'],
+})
+export class LogsPreReportComponent implements OnInit {
+
+  responseArray: any = [];
+  form: FormGroup;
+  title: string;
+  type: string ;
+  id: string;
+  serviceName:string;
+  nbObjects: number = 0;
+  isSession:boolean = false;
+
+  constructor(
+    private _dataLogsService: DataLogsService,
+    private _route: ActivatedRoute,
+    private _router: Router,
+    private _fb: FormBuilder,
+  ) {
+  }
+
+  ngOnInit() {
+    this.title = this._route.snapshot.data.title;
+    this.id = this._route.snapshot.paramMap.get('id');
+    this.type = this._route.snapshot.paramMap.get('type');
+    if (this.type === 'session') {
+      this.isSession = true;
+    }
+
+    this._route.paramMap.pipe(
+      filter((paramMap: ParamMap) => (paramMap.get('id') !== null)),
+      filter((paramMap: ParamMap) => (paramMap.get('type') !== null)),
+      switchMap((paramMap: ParamMap) => this._dataLogsService.getComplementaryFromSlugOrSession(
+        paramMap.get('type'),
+        paramMap.get('id'))))
+      .subscribe((response) => {
+
+        this.responseArray = response[0];
+        if (this.type === 'session') {
+          this.nbObjects = response[0].slug_list.length;
+        } else {
+          this.nbObjects = response[0].session_id_list.length;
+        }
+        console.log('responseArray: ', this.responseArray);
+        console.log('nbObjects: ', this.nbObjects);
+
+      });
+  }
+
+}
diff --git a/src/app/components/logs-dashboard/report/logs-report/logs-report.component.html b/src/app/components/logs-dashboard/report/logs-report/logs-report.component.html
new file mode 100644
index 0000000..b08386b
--- /dev/null
+++ b/src/app/components/logs-dashboard/report/logs-report/logs-report.component.html
@@ -0,0 +1,10 @@
+<ng-container >
+
+  <app-back-button [routerLink]="previousUrl" [title]="'Retourner au pre-report'"></app-back-button>
+
+  <h1>{{ title }}</h1>
+
+
+  <app-logs-graph [childUuid]="uuid" [childSessionId]="sessionId" [childSlug]="slug"></app-logs-graph>
+
+</ng-container>
\ No newline at end of file
diff --git a/src/app/components/logs-dashboard/report/logs-report/logs-report.component.scss b/src/app/components/logs-dashboard/report/logs-report/logs-report.component.scss
new file mode 100644
index 0000000..0d8923b
--- /dev/null
+++ b/src/app/components/logs-dashboard/report/logs-report/logs-report.component.scss
@@ -0,0 +1,22 @@
+.full-width {
+  width: 100%;
+}
+
+h1 {
+  text-align: center
+}
+
+.icon {
+  cursor: pointer;
+  &:hover {
+    .fa-plus {
+      color: lightblue;
+    }
+    .fa-trash {
+      color: #d5232a;
+    }
+  }
+}
+.hidden {
+  display: none;
+}
\ No newline at end of file
diff --git a/src/app/components/logs-dashboard/report/logs-report/logs-report.component.ts b/src/app/components/logs-dashboard/report/logs-report/logs-report.component.ts
new file mode 100644
index 0000000..4253a25
--- /dev/null
+++ b/src/app/components/logs-dashboard/report/logs-report/logs-report.component.ts
@@ -0,0 +1,78 @@
+import { Component, OnInit } from '@angular/core';
+import { ActivatedRoute, ParamMap, Router } from '@angular/router';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { filter, switchMap } from 'rxjs/operators';
+import { Format } from 'src/app/models/format.model';
+import { DataLogsService } from 'src/app/services/data-logs.service';
+
+@Component({
+  selector: 'app-logs-report',
+  templateUrl: './logs-report.component.html',
+  styleUrls: ['./logs-report.component.scss'],
+})
+export class LogsReportComponent implements OnInit {
+
+  responseArray: any = [];
+  form: FormGroup;
+  title: string;
+  slug: string ;
+  uuid:string;
+  previousUrl: string ;
+  sessionId: string;
+  serviceName:string;
+  nbObjects: number = 0;
+  urlCode: string = '';
+  isSession:boolean = false;
+
+  constructor(
+    private _dataLogsService: DataLogsService,
+    private _route: ActivatedRoute,
+    private _router: Router,
+    private _fb: FormBuilder,
+  ) {
+  }
+
+  ngOnInit() {
+    this.title = this._route.snapshot.data.title;
+    this.sessionId = this._route.snapshot.paramMap.get('sessionId');
+    this.slug = this._route.snapshot.paramMap.get('slug');
+    this.urlCode = this._route.snapshot.paramMap.get('urlCode');
+    if (this.urlCode === 'session') {
+      this.previousUrl = '/datalogs/preReport/session/' + this.sessionId;
+
+    } else if (this.urlCode === 'slug') {
+      this.previousUrl = '/datalogs/preReport/slug/' + this.slug;
+    } else {
+      this.previousUrl = '/datalogs';
+    }
+    this.getUuidFromSlug(this.slug);
+
+    // this._route.paramMap.pipe(
+    //   filter((paramMap: ParamMap) => (paramMap.get('id') !== null)),
+    //   filter((paramMap: ParamMap) => (paramMap.get('type') !== null)),
+    //   switchMap((paramMap: ParamMap) => this._dataLogsService.getComplementaryFromSlugOrSession(
+    //     paramMap.get('type'),
+    //     paramMap.get('id'))))
+    //   .subscribe((response) => {
+
+    //     this.responseArray = response[0];
+    //     if (this.type === 'session') {
+    //       this.nbObjects = response[0].slug_list.length;
+    //     } else {
+    //       this.nbObjects = response[0].session_id_list.length;
+    //     }
+    //     console.log('responseArray: ', this.responseArray);
+    //     console.log('nbObjects: ', this.nbObjects);
+
+    //   });
+  }
+
+  getUuidFromSlug(slug) {
+    this._dataLogsService.getUuidFromSlug(slug).subscribe((result) => {
+      console.log(result[0]);
+      this.uuid = result[0].uuid_list[0];
+    },
+    );
+  }
+
+}
diff --git a/src/app/services/data-logs.service.ts b/src/app/services/data-logs.service.ts
index cc60917..b5a90f8 100644
--- a/src/app/services/data-logs.service.ts
+++ b/src/app/services/data-logs.service.ts
@@ -19,7 +19,7 @@ export class DataLogsService {
   private _launchNewAggregationSubject: Subject<any>;
 
   constructor(
-      private _httpClient: HttpClient) {
+    private _httpClient: HttpClient) {
     this.resourceServiceUrl = `${APP_CONFIG.restHeartAggregations.url}`;
     this._launchNewAggregationSubject = new Subject<any>();
     this.limit = 10;
@@ -27,7 +27,7 @@ export class DataLogsService {
   }
 
   uuidToSessionId(uuid): Observable<any[]> {
-    const query = { uuid : uuid };
+    const query = { uuid: uuid };
     const aggregationEndPoint = 'uuidToSessionId?avars=';
     const stringQuery = JSON.stringify(query);
     return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
@@ -38,7 +38,7 @@ export class DataLogsService {
   }
 
   getAllStepsDuration(uuid, sessionId): Observable<any[]> {
-    const query = { uuid : uuid, session_id: sessionId };
+    const query = { uuid: uuid, session_id: sessionId };
     const aggregationEndPoint = 'stepTimeAggr?avars=';
     const stringQuery = JSON.stringify(query);
     return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
@@ -55,8 +55,8 @@ export class DataLogsService {
       }),
     );
   }
-  getData(uuid, sessionId): Observable<any[]> {
-    const query = { uuid : uuid, session_id: sessionId };
+  getData(thisUuid, sessionId): Observable<any[]> {
+    const query = { uuid: thisUuid, session_id: sessionId };
     const stringQuery = JSON.stringify(query);
     const aggregationEndPoint = 'reportDataAggr?avars=';
     return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
@@ -75,4 +75,62 @@ export class DataLogsService {
       }),
     );
   }
+
+  getSlugFromSessionId(sessionId): Observable<any[]> {
+    const query = { session_id: sessionId };
+    const stringQuery = JSON.stringify(query);
+    const aggregationEndPoint = 'sessionIdToSlug?avars=';
+    return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
+      map((response) => {
+        return response;
+      }),
+    );
+  }
+
+  getUuidFromSlug(slug): Observable<any[]> {
+    const query = { slug };
+    const stringQuery = JSON.stringify(query);
+    const aggregationEndPoint = 'slugToUuid?avars=';
+    return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
+      map((response) => {
+        return response;
+      }),
+    );
+  }
+
+  getSessionIdFromSlug(slug): Observable<any[]> {
+    const query = { slug };
+    const stringQuery = JSON.stringify(query);
+    const aggregationEndPoint = 'slugToSessionId?avars=';
+    return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
+      map((response) => {
+        return response;
+      }),
+    );
+  }
+
+  getComplementaryFromSlugOrSession(type, typeInfo): Observable<any[]> {
+    if (type === 'slug') {
+      const query = { slug: typeInfo };
+      const stringQuery = JSON.stringify(query);
+      const aggregationEndPoint = 'slugToSessionId?avars=';
+      return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
+        map((response) => {
+          return response;
+        }),
+      );
+
+    } else {
+      const query = { session_id: typeInfo };
+      const stringQuery = JSON.stringify(query);
+      const aggregationEndPoint = 'sessionIdToSlug?avars=';
+      return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe(
+        map((response) => {
+          return response;
+        }),
+      );
+    }
+
+  }
+
 }
-- 
GitLab