UI: Use numeric sorting for thread tracks
Before: [Thread 1, Thread 10, Thread 11, Thread 2, Thread 20]
After: [Thread 1, Thread 2, Thread 10, Thread 11]
Bug: 178753925
Change-Id: Ifac7b32f70547de6751665f507a3049c2de6eb49
diff --git a/ui/src/common/actions.ts b/ui/src/common/actions.ts
index 7a590ef..7ddd662 100644
--- a/ui/src/common/actions.ts
+++ b/ui/src/common/actions.ts
@@ -244,6 +244,9 @@
COUNTER_TRACK_KIND,
ASYNC_SLICE_TRACK_KIND
];
+ // Use a numeric collator so threads are sorted as T1, T2, ..., T10, T11,
+ // rather than T1, T10, T11, ..., T2, T20, T21 .
+ const coll = new Intl.Collator([], {sensitivity: 'base', numeric: true});
for (const group of Object.values(state.trackGroups)) {
group.tracks.sort((a: string, b: string) => {
const aKind = threadTrackOrder.indexOf(state.tracks[a].kind);
@@ -258,13 +261,7 @@
} else if (state.tracks[b].isMainThread) {
return 1;
}
- if (aName > bName) {
- return 1;
- } else if (aName === bName) {
- return 0;
- } else {
- return -1;
- }
+ return coll.compare(aName, bName);
} else {
if (aKind === -1) return 1;
if (bKind === -1) return -1;