Skip to content

Commit 4684af2

Browse files
wolmirmattseddon
andauthored
Sort and Filter indicators for the Experiments Table (#1760)
* Add arrow sort indicators and filter indicators to columns * Fix filters prop dependencies * fix tests * add filters to deeply nested storybook * refactor table head for complexity * fix dev server chaos * Fix PR change requests * Remove unnecessary click handlers * Fix test imports Co-authored-by: Matt Seddon <[email protected]>
1 parent 20d30e1 commit 4684af2

File tree

22 files changed

+276
-218
lines changed

22 files changed

+276
-218
lines changed

extension/src/experiments/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@ export class Experiments extends BaseRepository<TableData> {
440440
columnOrder: this.columns.getColumnOrder(),
441441
columnWidths: this.columns.getColumnWidths(),
442442
columns: this.columns.getSelected(),
443+
filters: this.experiments.getFilterPaths(),
443444
hasCheckpoints: this.hasCheckpoints(),
444445
hasColumns: this.columns.hasColumns(),
445446
hasRunningExperiment: this.experiments.hasRunningExperiment(),

extension/src/experiments/model/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,10 @@ export class ExperimentsModel extends ModelWithPersistence {
162162
return [...this.filters.values()]
163163
}
164164

165+
public getFilterPaths() {
166+
return this.getFilters().map(({ path }) => path)
167+
}
168+
165169
public canAutoApplyFilters(...filterIdsToRemove: string[]): boolean {
166170
if (!this.useFiltersForSelection) {
167171
return true

extension/src/experiments/webview/contract.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type TableData = {
6060
hasRunningExperiment: boolean
6161
rows: Row[]
6262
sorts: SortDefinition[]
63+
filters: string[]
6364
}
6465

6566
export type InitiallyUndefinedTableData = TableData | undefined

extension/src/test/fixtures/expShow/deeplyNested.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@ const deeplyNestedTableData: TableData = {
281281
changes: [],
282282
columnOrder: [],
283283
columnWidths: {},
284+
filters: [
285+
'params:params.yaml:nested1.doubled',
286+
'params:params.yaml:nested1%2Enested2%2Enested3.nested4.nested5b.doubled'
287+
],
284288
hasCheckpoints: false,
285289
hasRunningExperiment: false,
286290
sorts: [

extension/src/test/fixtures/expShow/tableData.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import columnsFixture from './columns'
55
const tableDataFixture: TableData = {
66
rows: rowsFixture,
77
columns: columnsFixture,
8+
filters: [],
89
hasCheckpoints: true,
910
hasRunningExperiment: true,
1011
hasColumns: true,

extension/src/test/suite/experiments/index.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ suite('Experiments Test Suite', () => {
125125
columnOrder: [],
126126
columnWidths: {},
127127
columns: columnsFixture,
128+
filters: [],
128129
hasCheckpoints: true,
129130
hasColumns: true,
130131
hasRunningExperiment: true,
@@ -683,6 +684,7 @@ suite('Experiments Test Suite', () => {
683684
columnOrder: [],
684685
columnWidths: {},
685686
columns: [],
687+
filters: [],
686688
hasCheckpoints: true,
687689
hasColumns: true,
688690
hasRunningExperiment: true,

extension/src/test/suite/experiments/model/filterBy/tree.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ suite('Experiments Filter By Tree Test Suite', () => {
109109
columnOrder: [],
110110
columnWidths: {},
111111
columns: columnsFixture,
112+
filters: [accuracyPath],
112113
hasCheckpoints: true,
113114
hasColumns: true,
114115
hasRunningExperiment: true,
@@ -138,6 +139,7 @@ suite('Experiments Filter By Tree Test Suite', () => {
138139
columnOrder: [],
139140
columnWidths: {},
140141
columns: columnsFixture,
142+
filters: [],
141143
hasCheckpoints: true,
142144
hasColumns: true,
143145
hasRunningExperiment: true,

webview/src/experiments/components/Experiments.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ import { GetStarted } from '../../shared/components/getStarted/GetStarted'
2828
import { DragDropProvider } from '../../shared/components/dragDrop/DragDropContext'
2929
import { EmptyState } from '../../shared/components/emptyState/EmptyState'
3030

31-
const DEFAULT_COLUMN_WIDTH = 75
32-
const MINIMUM_COLUMN_WIDTH = 50
31+
const DEFAULT_COLUMN_WIDTH = 90
32+
const MINIMUM_COLUMN_WIDTH = 90
3333

3434
const timeFormatter = new Intl.DateTimeFormat([], {
3535
hour: '2-digit',
@@ -138,6 +138,7 @@ export const ExperimentsTable: React.FC<{
138138
columnOrder: [],
139139
columnWidths: {},
140140
columns: [],
141+
filters: [],
141142
hasCheckpoints: false,
142143
hasColumns: false,
143144
hasRunningExperiment: false,

webview/src/experiments/components/table/MergeHeaderGroups.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ export const MergedHeaderGroups: React.FC<{
1515
headerGroup: HeaderGroup<Experiment>
1616
columns: HeaderGroup<Experiment>[]
1717
sorts: SortDefinition[]
18+
filters: string[]
1819
orderedColumns: Column[]
1920
onDragUpdate: OnDragOver
2021
onDragStart: OnDragStart
2122
onDragEnd: OnDrop
2223
}> = ({
2324
headerGroup,
2425
sorts,
26+
filters,
2527
columns,
2628
orderedColumns,
2729
onDragUpdate,
@@ -41,6 +43,7 @@ export const MergedHeaderGroups: React.FC<{
4143
column={column}
4244
columns={columns}
4345
sorts={sorts}
46+
filters={filters}
4447
onDragOver={onDragUpdate}
4548
onDragStart={onDragStart}
4649
onDrop={onDragEnd}

webview/src/experiments/components/table/SortPicker.tsx

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)