Skip to content

Commit 54be44d

Browse files
committed
feat: improved timeline tooltip, including better time formatting (hide date if same day), fixes #494
1 parent 609a7cc commit 54be44d

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

src/util/tooltip.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,48 @@ export function buildTooltip(bucket, e) {
99
// WARNING: XSS risk, make sure to sanitize properly
1010
// FIXME: Not actually tested against XSS attacks, implementation needs to be verified in tests.
1111
let inner = 'Unknown bucket type';
12+
13+
// if same day, don't show date
14+
let start = moment(e.timestamp);
15+
let stop = moment(e.timestamp).add(e.duration, 'seconds');
16+
if (start.isSame(stop, 'day')) {
17+
start = start.format('HH:mm:ss');
18+
stop = stop.format('HH:mm:ss');
19+
} else {
20+
start = start.format('YYYY-MM-DD HH:mm:ss');
21+
stop = stop.format('YYYY-MM-DD HH:mm:ss');
22+
}
23+
1224
if (bucket.type == 'currentwindow') {
1325
inner = `
14-
<tr><th>App:</th><td>${sanitize(e.data.app)}</td></tr>
15-
<tr><th>Title:</th><td>${sanitize(e.data.title)}</td></tr>
26+
<tr><th>App</th><td>${sanitize(e.data.app)}</td></tr>
27+
<tr><th>Title</th><td>${sanitize(e.data.title)}</td></tr>
1628
`;
1729
} else if (bucket.type == 'web.tab.current') {
1830
inner = `
19-
<tr><th>Title:</th><td>${sanitize(e.data.title)}</td></tr>
20-
<tr><th>URL:</th><td><a href=${sanitize(e.data.url)}>${sanitize(e.data.url)}</a></td></tr>
31+
<tr><th>Title</th><td>${sanitize(e.data.title)}</td></tr>
32+
<tr><th>URL</th><td><a href=${sanitize(e.data.url)}>${sanitize(e.data.url)}</a></td></tr>
2133
`;
2234
} else if (bucket.type.startsWith('app.editor')) {
2335
inner = `
24-
<tr><th>Filename:</th><td>${sanitize(_.last(e.data.file.split('/')))}</td></tr>
25-
<tr><th>Path:</th><td>${sanitize(e.data.file)}</td></tr>
26-
<tr><th>Language:</th><td>${sanitize(e.data.language)}</td></tr>
36+
<tr><th>Filename</th><td>${sanitize(_.last(e.data.file.split('/')))}</td></tr>
37+
<tr><th>Path</th><td>${sanitize(e.data.file)}</td></tr>
38+
<tr><th>Language</th><td>${sanitize(e.data.language)}</td></tr>
2739
`;
2840
} else if (bucket.type.startsWith('general.stopwatch')) {
2941
inner = `
30-
<tr><th>Label:</th><td>${sanitize(e.data.label)}</td></tr>
42+
<tr><th>Label</th><td>${sanitize(e.data.label)}</td></tr>
3143
`;
3244
} else {
3345
inner = `
34-
<tr><td>Data:</td><td>${sanitize(JSON.stringify(e.data))}</td></tr>
46+
<tr><th>Data</th><td>${sanitize(JSON.stringify(e.data))}</td></tr>
3547
`;
3648
}
3749
return `<table>
3850
<tr></tr>
39-
<tr><th>Start:</th><td>${moment(e.timestamp).format()}</td></tr>
40-
<tr><th>Stop:</th><td>${moment(e.timestamp).add(e.duration, 'seconds').format()}</td></tr>
41-
<tr><th>Duration:</th><td>${seconds_to_duration(e.duration)}</td></tr>
51+
<tr><th>Start</th><td>${start}</td></tr>
52+
<tr><th>Stop</th><td>${stop}</td></tr>
53+
<tr><th>Duration&nbsp;</th><td>${seconds_to_duration(e.duration)}</td></tr>
4254
${inner}
4355
</table>`;
4456
}

0 commit comments

Comments
 (0)