This repository has been archived by the owner on Jan 24, 2023. It is now read-only.
/
application-instance-chart.component.ts
71 lines (57 loc) · 2.21 KB
/
application-instance-chart.component.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { Component, OnInit, Input } from '@angular/core';
import { MetricsLineChartConfig } from '../../../../shared/components/metrics-chart/metrics-chart.types';
import { MetricsConfig } from '../../../../shared/components/metrics-chart/metrics-chart.component';
import { IMetricMatrixResult } from '../../../../store/types/base-metric.types';
import { FetchApplicationMetricsAction } from '../../../../store/actions/metrics.actions';
import { MetricsChartHelpers } from '../../../../shared/components/metrics-chart/metrics.component.helpers';
import { IMetricApplication } from '../../../../store/types/metric.types';
@Component({
selector: 'app-application-instance-chart',
templateUrl: './application-instance-chart.component.html',
styleUrls: ['./application-instance-chart.component.scss']
})
export class ApplicationInstanceChartComponent implements OnInit {
@Input('appGuid')
private appGuid: string;
@Input('endpointGuid')
private endpointGuid: string;
@Input('yAxisLabel')
private yAxisLabel: string;
@Input('metricName')
private metricName: string;
@Input('seriesTranslation')
private seriesTranslation: string;
@Input('title')
public title: string;
public instanceChartConfig: MetricsLineChartConfig;
public instanceMetricConfig: MetricsConfig<IMetricMatrixResult<IMetricApplication>>;
constructor() { }
private buildChartConfig() {
const lineChartConfig = new MetricsLineChartConfig();
lineChartConfig.xAxisLabel = 'Time';
lineChartConfig.yAxisLabel = this.yAxisLabel;
return lineChartConfig;
}
ngOnInit() {
this.instanceChartConfig = this.buildChartConfig();
this.instanceMetricConfig = {
getSeriesName: result => `Instance ${result.metric.instance_index}`,
mapSeriesItemName: MetricsChartHelpers.getDateSeriesName,
sort: MetricsChartHelpers.sortBySeriesName,
mapSeriesItemValue: this.getmapSeriesItemValue(),
metricsAction: new FetchApplicationMetricsAction(
this.appGuid,
this.endpointGuid,
this.metricName,
),
};
}
private getmapSeriesItemValue() {
switch (this.seriesTranslation) {
case 'mb':
return (bytes) => bytes / 1000000;
default:
return undefined;
}
}
}