Skip to content

Commit efda265

Browse files
committed
polish: add upper bound and date format for chart axis
Fixes microsoft/vscode#107798
1 parent 1a68e7f commit efda265

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

packages/vscode-js-profile-flame/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
"debug.flameGraph.realtimePollInterval": {
8282
"type": "integer",
8383
"minimum": 0.5,
84+
"maximum": 3600,
8485
"default": 1,
8586
"description": "How often (in seconds) to refresh statistics from the runtime"
8687
},

packages/vscode-js-profile-flame/src/realtime/chart.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Metric } from './baseMetric';
66
import styles from './chart.css';
77
import { Configurator } from './configurator';
88
import { FrameCanvas, Sizing } from './frameCanvas';
9+
import { durationFormat } from './metrics';
910
import { Settings } from './settings';
1011

1112
const naturalAspectRatio = 16 / 9;
@@ -197,7 +198,7 @@ export class Chart {
197198

198199
private applySettings() {
199200
const { leftTime, labelList, valueContainer } = this.elements;
200-
leftTime.innerText = `${Math.round(this.settings.value.viewDuration / 1000)}s ago`;
201+
leftTime.innerText = `${durationFormat(this.settings.value.viewDuration / 1000)} ago`;
201202
this.setSeries(labelList, valueContainer);
202203
}
203204

packages/vscode-js-profile-flame/src/realtime/metrics.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,24 @@ const smallPercentFormat = new Intl.NumberFormat(undefined, {
2222
maximumFractionDigits: 2,
2323
});
2424

25+
const durationRawFormat = new Intl.NumberFormat(undefined, {
26+
maximumFractionDigits: 1,
27+
});
28+
29+
export const durationFormat = (seconds: number) => {
30+
if (seconds < 120) {
31+
return `${durationRawFormat.format(seconds)}s`;
32+
}
33+
34+
const minutes = seconds / 60;
35+
if (minutes < 120) {
36+
return `${durationRawFormat.format(minutes)}m`;
37+
}
38+
39+
const hours = minutes / 60;
40+
return `${durationRawFormat.format(hours)}h`;
41+
};
42+
2543
export class CpuMetric extends DerivativeMetric {
2644
public update(timestamp: number, metrics: IDAMetrics): void {
2745
if (metrics.cpu /* node */) {

0 commit comments

Comments
 (0)