Skip to content

Commit 0e1521d

Browse files
committed
Implement column sorting in the generic TreeView.
It's not used by any TreeView users yet. The next commit will use it for the marker table. The intention is to also use it for the function list.
1 parent 274a6a7 commit 0e1521d

6 files changed

Lines changed: 391 additions & 21 deletions

File tree

src/components/marker-table/index.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { PureComponent } from 'react';
66
import memoize from 'memoize-immutable';
77

88
import explicitConnect from '../../utils/connect';
9-
import { TreeView } from '../shared/TreeView';
9+
import { type SortableColumn, type Tree, TreeView } from '../shared/TreeView';
1010
import { MarkerTableEmptyReasons } from './MarkerTableEmptyReasons';
1111
import {
1212
getZeroAt,
@@ -50,7 +50,7 @@ type MarkerDisplayData = {
5050
details: string;
5151
};
5252

53-
class MarkerTree {
53+
class MarkerTree implements Tree<MarkerDisplayData> {
5454
_getMarker: (param: MarkerIndex) => Marker;
5555
_markerIndexes: MarkerIndex[];
5656
_zeroAt: Milliseconds;
@@ -73,6 +73,10 @@ class MarkerTree {
7373
this._getMarkerLabel = getMarkerLabel;
7474
}
7575

76+
getSortableColumns(): SortableColumn[] {
77+
return [];
78+
}
79+
7680
copyTable = (
7781
format: 'plain' | 'markdown',
7882
onExceeedMaxCopyRows: (rows: number, maxRows: number) => void
@@ -180,7 +184,7 @@ class MarkerTree {
180184
}
181185

182186
getAllDescendants() {
183-
return new Set();
187+
return new Set<number>();
184188
}
185189

186190
getParent(): MarkerIndex {
@@ -366,7 +370,7 @@ class MarkerTableImpl extends PureComponent<Props> {
366370
) : (
367371
<TreeView
368372
maxNodeDepth={0}
369-
tree={tree as any}
373+
tree={tree}
370374
fixedColumns={this._fixedColumns}
371375
mainColumn={this._mainColumn}
372376
onSelectionChange={this._onSelectionChange}

src/components/shared/TreeView.css

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,12 @@
112112
}
113113

114114
.treeViewHeaderColumn {
115-
position: relative;
116115
line-height: 15px;
117116
white-space: nowrap;
118117
}
119118

120119
.treeViewHeaderColumn,
120+
.treeViewSortButton,
121121
.treeViewRowColumn,
122122
.treeViewRowScrolledColumns {
123123
box-sizing: border-box;
@@ -130,6 +130,31 @@
130130
text-overflow: ellipsis;
131131
}
132132

133+
.treeViewSortButton {
134+
border: 0;
135+
background: none;
136+
color: inherit;
137+
font: inherit;
138+
text-align: inherit;
139+
}
140+
141+
.treeViewSortButton:active:hover {
142+
background-color: var(--clickable-ghost-active-background-color);
143+
}
144+
145+
.treeViewSortButton.sortInactive::after {
146+
content: ' ▲';
147+
opacity: 0;
148+
}
149+
150+
.treeViewSortButton.sortAscending::after {
151+
content: ' ▲';
152+
}
153+
154+
.treeViewSortButton.sortDescending::after {
155+
content: ' ▼';
156+
}
157+
133158
.treeViewHeaderColumnDivider,
134159
.treeViewRowColumnDivider {
135160
display: flex;

0 commit comments

Comments
 (0)