Skip to content

Commit 914ec37

Browse files
committed
optimization
1 parent 9fe5f93 commit 914ec37

File tree

2 files changed

+78
-12
lines changed

2 files changed

+78
-12
lines changed

src/app/pages/show-project/show-project.component.html

+5-5
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,19 @@ <h3> {{ risk?.projectName }} <button *ngIf="showVulnAuditor" (click)="displayPro
3636
<div class="row">
3737
<div class="col-md-12">
3838
<nb-card >
39-
<nb-tabset>
39+
<nb-tabset (changeTab)="onTabChange($event)">
4040
<nb-tab tabTitle="Assets" tabIcon="list-outline">
41-
<ngx-manage-assets [projectName]="risk?.projectName"></ngx-manage-assets>
41+
<ngx-manage-assets *ngIf="assetsDataLoaded" [projectName]="risk?.projectName"></ngx-manage-assets>
4242
</nb-tab>
4343

4444
<nb-tab tabTitle="All Vulnerabilities" tabIcon="browser-outline" [badgeText]="vulnsNumber" [badgeStatus]="vulnsColor" badgePosition="center end" >
45-
<ngx-details-tables id="detailsTables" *ngIf="showDetailsTemplate"></ngx-details-tables>
45+
<ngx-details-tables id="detailsTables" *ngIf="showDetailsTemplate && vulnerabilitiesDataLoaded"></ngx-details-tables>
4646

4747
</nb-tab>
4848
<nb-tab tabTitle="Statistics" tabIcon="pie-chart-outline" >
49-
<ngx-trend-chart [vulnTrendChart]="vulnTrendChart" *ngIf="showDetailsTemplate && vulnTrendChart" [severities]="severities" [showDetailsTemplate]="showDetailsTemplate" [class.hidden]="!showConfigTemplate"></ngx-trend-chart>
49+
<ngx-trend-chart [vulnTrendChart]="vulnTrendChart" *ngIf="showDetailsTemplate && vulnTrendChart && statisticsDataLoaded" [severities]="severities" [showDetailsTemplate]="showDetailsTemplate" [class.hidden]="!showConfigTemplate"></ngx-trend-chart>
5050
</nb-tab>
51-
<nb-tab tabTitle="Metrics" tabIcon="activity-outline">
51+
<nb-tab *ngIf="metricsDataLoaded" tabTitle="Metrics" tabIcon="activity-outline">
5252
<div class="metrics-container">
5353
<ngx-metric class="metric-card col-md-4" title="Number of active vulnerabilities" image="success1.png" [accent]="vulnNumberColor" [topLine]="projectMetric?.activeVulnNo+''" [bottomLine]="projectMetric?.activeVulnNo > globalMetric?.activeVulnAvg ? 'Which is more then average:' + globalMetric?.activeVulnAvg : 'Which is better then average:' + globalMetric?.activeVulnAvg "></ngx-metric>
5454
<ngx-metric class="metric-card col-md-4" title="Number of Fixed vulnerabilities" image="001-no-passing.png" [accent]="fixedVulnColor" [topLine]="projectMetric?.fixedVulnNo+''" [bottomLine]="'Which is ' + projectMetric?.fixedVulnPercent + '% of all vulnerabilities'"></ngx-metric>

src/app/pages/show-project/show-project.component.ts

+73-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
1-
import {ChangeDetectorRef, Component, ElementRef, OnInit, TemplateRef, ViewChild} from '@angular/core';
1+
import {
2+
ChangeDetectionStrategy,
3+
ChangeDetectorRef,
4+
Component,
5+
ElementRef,
6+
OnInit,
7+
TemplateRef,
8+
ViewChild,
9+
} from '@angular/core';
210
import {Risk} from '../../@core/Model/Risk';
311
import {ShowProjectService} from '../../@core/service/ShowProjectService';
412
import {ActivatedRoute, Router} from '@angular/router';
513
import {CookieService} from 'ngx-cookie-service';
614
import {ProjectConstants} from '../../@core/constants/ProjectConstants';
715
import {ScannerType} from '../../@core/Model/Scanner';
816
import {CiOperations} from '../../@core/Model/CiOperations';
9-
import {NbDialogService, NbWindowService} from '@nebular/theme';
17+
import {NbDialogService, NbTabComponent, NbWindowService} from '@nebular/theme';
1018
import {FormBuilder} from '@angular/forms';
1119
import {Toast} from '../../@core/utils/Toast';
1220
import {ProjectInfo} from '../../@core/Model/ProjectInfo';
@@ -23,6 +31,7 @@ import {DashboardService} from '../../@core/service/DashboardService';
2331
selector: 'ngx-show-project',
2432
templateUrl: './show-project.component.html',
2533
styleUrls: ['./show-project.component.scss'],
34+
changeDetection: ChangeDetectionStrategy.OnPush,
2635
})
2736
export class ShowProjectComponent implements OnInit {
2837
@ViewChild('vulnAuditorSettings')
@@ -56,6 +65,12 @@ export class ShowProjectComponent implements OnInit {
5665
vulnsNumber: string = '0';
5766
vulnsColor: string = 'success';
5867

68+
assetsDataLoaded = false;
69+
vulnerabilitiesDataLoaded = false;
70+
statisticsDataLoaded = false;
71+
metricsDataLoaded = false;
72+
73+
5974
private vulnAuditorForm: any;
6075
private projectUserForm: any;
6176
projectUser: ProjectUser = new ProjectUser;
@@ -79,11 +94,11 @@ export class ShowProjectComponent implements OnInit {
7994
this.loadScannerTypes();
8095
this.loadProjectInfo();
8196
this.loadCiOperations();
82-
this.loadTrendChartData();
83-
this.loadProjectStats();
84-
this.loadCodes();
97+
// this.loadTrendChartData();
98+
// this.loadProjectStats();
99+
// this.loadCodes();
85100
this.updateOffset();
86-
this.loadProjectMetric();
101+
// this.loadProjectMetric();
87102
this.vulnAuditorForm = this.formBuilder.group({
88103
enableVulnAuditor: this.projectInfo.vulnAuditorEnable,
89104
dclocation: this.projectInfo.networkdc,
@@ -189,7 +204,7 @@ export class ShowProjectComponent implements OnInit {
189204
});
190205
}
191206
ngOnInit() {
192-
this.loadSeveritiesChart();
207+
// this.loadSeveritiesChart();
193208
this.role = this.cookieService.get('role');
194209
this.showConfigTemplate = this.role !== 'ROLE_ADMIN' && this.role !== 'ROLE_EDITOR_RUNNER';
195210
this.showVulnAuditor = true;
@@ -324,4 +339,55 @@ export class ShowProjectComponent implements OnInit {
324339
});
325340
});
326341
}
342+
343+
onTabChange(tab: NbTabComponent) {
344+
switch (tab.tabTitle) {
345+
case 'Assets':
346+
if (!this.assetsDataLoaded) {
347+
this.loadAssetsData();
348+
this.assetsDataLoaded = true;
349+
}
350+
break;
351+
case 'All Vulnerabilities':
352+
if (!this.vulnerabilitiesDataLoaded) {
353+
this.loadVulnerabilitiesData();
354+
this.vulnerabilitiesDataLoaded = true;
355+
}
356+
break;
357+
case 'Statistics':
358+
if (!this.statisticsDataLoaded) {
359+
this.loadStatisticsData();
360+
this.statisticsDataLoaded = true;
361+
}
362+
break;
363+
case 'Metrics':
364+
if (!this.metricsDataLoaded) {
365+
this.loadMetricsData();
366+
this.metricsDataLoaded = true;
367+
}
368+
break;
369+
// Handle other tabs
370+
}
371+
}
372+
373+
loadAssetsData() {
374+
this.loadCodes();
375+
// Any additional data for Assets tab
376+
}
377+
378+
loadVulnerabilitiesData() {
379+
this.loadProjectStats();
380+
// Any additional data for Vulnerabilities tab
381+
}
382+
383+
loadStatisticsData() {
384+
this.loadTrendChartData();
385+
this.loadSeveritiesChart();
386+
// Any additional data for Statistics tab
387+
}
388+
389+
loadMetricsData() {
390+
this.loadProjectMetric();
391+
// Any additional data for Metrics tab
392+
}
327393
}

0 commit comments

Comments
 (0)