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 index 57c37011c71373eb0cd98a7c2a82dc3b38237758..a8bbd2e381bb905e1268a154990d1e3727813d44 100644 --- a/src/app/components/logs-dashboard/logs-home/logs-home.component.ts +++ b/src/app/components/logs-dashboard/logs-home/logs-home.component.ts @@ -1,9 +1,7 @@ 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', diff --git a/src/app/components/logs-dashboard/report/logs-data/logs-data.component.html b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.html index aa1a22323c3357a2263029d6bba67e998ea0732c..ffb029fb40bede1d16eeed02eff5b2fb4fe73b50 100644 --- a/src/app/components/logs-dashboard/report/logs-data/logs-data.component.html +++ b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.html @@ -1,12 +1,17 @@ +<div class="section"> + <label class="btn btn-outline-secondary" *ngFor="let logType of logTypes"> + <input type="checkbox" [(ngModel)]="logType.selected"> {{logType.name}} + </label> +</div> <div class="section"> <div class="columns is-centered is-marginless"> <div class="column has-text-left"> <div *ngFor="let oneStepData of allStepsData"> - <div class="mini-log-card" *ngIf="oneStepData"> + <div class="mini-info-card" *ngIf="oneStepData" (click)='getLogsSelector(oneStepData._id.step);'> <span> - <p>slug: {{oneStepData._id.slug}} </p> + <!-- <p>slug: {{oneStepData._id.slug}} </p> <p>uuid: {{oneStepData._id.uuid}} </p> - <p>sessionId: {{oneStepData._id.session_id}} </p> + <p>sessionId: {{oneStepData._id.session_id}} </p> --> <h3> <p>step: {{oneStepData._id.step}}</p> <p>total-time: {{oneStepData.totalHoursSpent}}h : {{oneStepData.totalMinutesSpent}}m : @@ -15,6 +20,51 @@ </span> </div> </div> + </div> - </div> + <div class="column has-text-left"> + <div class="mini-log-card" *ngIf="!allLogs?.lenght>0"> + <p>No DATA</p> + </div> + <!-- <div class="mini-error-card" *ngIf="!allErrorLogs?.lenght>0"> + <p>No DATA</p> + </div> --> + + <div *ngFor="let oneLog of allLogs"> + + <div class="mini-log-card" *ngIf="oneLog"> + <span> + <!-- <p>slug: {{oneLog.slug}} </p> + <p>uuid: {{oneLog.uuid}} </p> + <p>sessionId: {{oneLog.session_id}} </p> --> + <h3> + <p>step: {{oneLog.step}}</p> + <p>status: {{oneLog.status}}</p> + <p>info: {{oneLog.info}}</p> + <p>progress-ratio: {{oneLog.progress_ratio}}</p> + + </h3> + </span> + </div> + </div> + <div *ngFor="let oneErrorLog of allErrorLogs"> + + <div class="mini-error-card" *ngIf="oneErrorLog"> + <span> + <p>slug: {{oneErrorLog.slug}} </p> + <p>uuid: {{oneErrorLog.uuid}} </p> + <p>sessionId: {{oneErrorLog.session_id}} </p> + <h3> + <p>step: {{oneErrorLog.step}}</p> + <p>status: {{oneErrorLog.status}}</p> + <p>info: {{oneErrorLog.info}}</p> + <p>progress-ratio: {{oneErrorLog.progress_ratio}}</p> + + </h3> + </span> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file 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 index fb31c60a8f490f55699c010d6888cf52f723cf1d..0d609c85e000636a5ee67c9ad831e56cf17dee16 100644 --- 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 @@ -11,11 +11,24 @@ figure { justify-content: center; } - .mini-log-card{ + .mini-info-card{ margin-top: 20px; padding: 20px; background-color: yellow; + } + .mini-log-card{ + margin-top: 20px; + padding: 20px; + background-color: greenyellow; + + } + + .mini-error-card{ + margin-top: 20px; + padding: 20px; + background-color: red; + } .input-field{ width: 200%; diff --git a/src/app/components/logs-dashboard/report/logs-data/logs-data.component.ts b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.ts index 1f45b96e5f3411086d4b7340ce979157f97a743e..9a373a4e6a031b21349eade36a764a2f57eb9f69 100644 --- a/src/app/components/logs-dashboard/report/logs-data/logs-data.component.ts +++ b/src/app/components/logs-dashboard/report/logs-data/logs-data.component.ts @@ -14,6 +14,16 @@ export class LogsDataComponent implements OnChanges { @Input() childUuid: string = ''; @Input() childSessionId: string = ''; @Input() childSlug: string; + logTypes: any = [ + { + name : 'error', + selected : true, + }, + { + name : 'info', + selected : false, + }, + ]; isDashboardDisplayed: boolean = false; uuid: string; sessionId: string; @@ -21,9 +31,12 @@ export class LogsDataComponent implements OnChanges { data: any; stepData: ILogs; allStepsData: any; + allErrorLogs: any; + allLogs: any; nbSessionId: number; nbUuid: number; nbSlug: number; + tempStep: string = ''; sessionIdList: [string]; constructor( @@ -35,6 +48,7 @@ export class LogsDataComponent implements OnChanges { this.data = []; this.slug = this.childSlug; this.allStepsData = []; + this.allErrorLogs = []; this.getLogsSteps(); } @@ -51,7 +65,48 @@ export class LogsDataComponent implements OnChanges { }, ); } + } + getLogsSelector(step) { + this.tempStep = step; + this.allErrorLogs = []; + this.allLogs = []; + if (this.logTypes[0].selected === true) { + this.getErrorStepsLogs(step); + } + if (this.logTypes[1].selected === true) { + this.getSimpleStepsLogs(step); + } + } + getErrorStepsLogs(step) { + if ((this.childUuid != null) && (this.childSessionId != null)) { + // console.log('parameters', this.childUuid, this.childSessionId); + this.dataLogsService.getLogsStepsLogs( + step, + this.childSessionId, + this.childSlug, + 'ERROR', + ).subscribe((results) => { + // console.log('results', results); + this.allErrorLogs = results; + }, + ); + } } + getSimpleStepsLogs(step) { + if ((this.childUuid != null) && (this.childSessionId != null)) { + // console.log('parameters', this.childUuid, this.childSessionId); + this.dataLogsService.getLogsStepsLogs( + step, + this.childSessionId, + this.childSlug, + 'INFO', + ).subscribe((results) => { + // console.log('results', results); + this.allLogs = results; + }, + ); + } + } } 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 index 87db07de688349cf66880686032a3a4c0f8981ce..d20d630080d2a17fca0dad453b9d86c93448f581 100644 --- 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 @@ -7,6 +7,11 @@ <app-logs-graph [childUuid]="uuid" [childSessionId]="sessionId" [childSlug]="slug"></app-logs-graph> + <div class="columns is-centered "> + <hr> + <h3>Détails de la session:</h3> + <hr> + </div> <app-logs-data [childUuid]="uuid" [childSessionId]="sessionId" [childSlug]="slug"></app-logs-data> </div> </ng-container> \ No newline at end of file diff --git a/src/app/services/data-logs.service.ts b/src/app/services/data-logs.service.ts index b5a90f8aa7a0ed40af75d73097901ab8988213c9..5875ec0c1675a3b4de697a4e8a132d06daeb2245 100644 --- a/src/app/services/data-logs.service.ts +++ b/src/app/services/data-logs.service.ts @@ -27,8 +27,8 @@ export class DataLogsService { } uuidToSessionId(uuid): Observable<any[]> { - const query = { uuid: uuid }; - const aggregationEndPoint = 'uuidToSessionId?avars='; + const query = { uuid }; + const aggregationEndPoint = '/_aggrs/uuidToSessionId?avars='; const stringQuery = JSON.stringify(query); return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { @@ -38,8 +38,8 @@ export class DataLogsService { } getAllStepsDuration(uuid, sessionId): Observable<any[]> { - const query = { uuid: uuid, session_id: sessionId }; - const aggregationEndPoint = 'stepTimeAggr?avars='; + const query = { uuid, session_id: sessionId }; + const aggregationEndPoint = '/_aggrs/stepTimeAggr?avars='; const stringQuery = JSON.stringify(query); return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { @@ -48,7 +48,7 @@ export class DataLogsService { ); } getAllUniqueFields(): Observable<any[]> { - const aggregationEndPoint = 'getAllUniqueFields'; + const aggregationEndPoint = '/_aggrs/getAllUniqueFields'; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint).pipe( map((response) => { return response; @@ -58,7 +58,7 @@ export class DataLogsService { getData(thisUuid, sessionId): Observable<any[]> { const query = { uuid: thisUuid, session_id: sessionId }; const stringQuery = JSON.stringify(query); - const aggregationEndPoint = 'reportDataAggr?avars='; + const aggregationEndPoint = '/_aggrs/reportDataAggr?avars='; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { return response; @@ -68,7 +68,7 @@ export class DataLogsService { getProcessTimeAggr(sessionId): Observable<any[]> { const query = { session_id: sessionId }; const stringQuery = JSON.stringify(query); - const aggregationEndPoint = 'processTimeAggr?avars='; + const aggregationEndPoint = '/_aggrs/processTimeAggr?avars='; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { return response; @@ -79,7 +79,7 @@ export class DataLogsService { getSlugFromSessionId(sessionId): Observable<any[]> { const query = { session_id: sessionId }; const stringQuery = JSON.stringify(query); - const aggregationEndPoint = 'sessionIdToSlug?avars='; + const aggregationEndPoint = '/_aggrs/sessionIdToSlug?avars='; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { return response; @@ -90,7 +90,7 @@ export class DataLogsService { getUuidFromSlug(slug): Observable<any[]> { const query = { slug }; const stringQuery = JSON.stringify(query); - const aggregationEndPoint = 'slugToUuid?avars='; + const aggregationEndPoint = '/_aggrs/slugToUuid?avars='; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { return response; @@ -101,7 +101,29 @@ export class DataLogsService { getSessionIdFromSlug(slug): Observable<any[]> { const query = { slug }; const stringQuery = JSON.stringify(query); - const aggregationEndPoint = 'slugToSessionId?avars='; + const aggregationEndPoint = '/_aggrs/slugToSessionId?avars='; + return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( + map((response) => { + return response; + }), + ); + } + + getLogsFromSessionIdAndSlug(sessionId, slug, loglevel): Observable<any[]> { + const query = { slug, loglevel, session_id : sessionId }; + const stringQuery = JSON.stringify(query); + const aggregationEndPoint = '?filter='; + return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( + map((response) => { + return response; + }), + ); + } + + getLogsStepsLogs(step, sessionId, slug, loglevel): Observable<any[]> { + const query = { step, slug, loglevel, session_id : sessionId }; + const stringQuery = JSON.stringify(query); + const aggregationEndPoint = '?filter='; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { return response; @@ -113,7 +135,7 @@ export class DataLogsService { if (type === 'slug') { const query = { slug: typeInfo }; const stringQuery = JSON.stringify(query); - const aggregationEndPoint = 'slugToSessionId?avars='; + const aggregationEndPoint = '/_aggrs/slugToSessionId?avars='; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { return response; @@ -123,7 +145,7 @@ export class DataLogsService { } else { const query = { session_id: typeInfo }; const stringQuery = JSON.stringify(query); - const aggregationEndPoint = 'sessionIdToSlug?avars='; + const aggregationEndPoint = '/_aggrs/sessionIdToSlug?avars='; return this._httpClient.get<any[]>(this.resourceServiceUrl + aggregationEndPoint + stringQuery).pipe( map((response) => { return response; diff --git a/src/assets/config/config.json b/src/assets/config/config.json index 0025ba0682ee8c451cec00c93ed13e29db1e836a..3c76a048ba149e89de4cdea6c0da49e55745ec64 100644 --- a/src/assets/config/config.json +++ b/src/assets/config/config.json @@ -15,7 +15,7 @@ "url": "https://kong-dev.alpha.grandlyon.com/middleware-legacy/" }, "restHeartAggregations": { - "url": "http://localhost:8080/indexerdb/indexer_logs/_aggrs/" + "url": "http://localhost:8080/indexerdb/indexer_logs" } }