Skip to content

Commit dfa3e8d

Browse files
authored
Remove revision filtering from comparison table icon menu (#1823)
* Remove revision filtering from comparison table icon menu * Remove useless length check
1 parent 3240d23 commit dfa3e8d

File tree

2 files changed

+3
-148
lines changed

2 files changed

+3
-148
lines changed

webview/src/plots/components/App.test.tsx

Lines changed: 0 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -335,108 +335,6 @@ describe('App', () => {
335335
expect(() => screen.getByTestId('plot-summary.json:loss')).not.toThrow()
336336
})
337337

338-
it('should toggle the visibility of revisions in the comparison table when clicking the revisions in the picker', async () => {
339-
render(
340-
<Plots
341-
state={{
342-
data: {
343-
comparison: comparisonTableFixture,
344-
sectionCollapsed: DEFAULT_SECTION_COLLAPSED,
345-
template: null
346-
}
347-
}}
348-
/>
349-
)
350-
351-
const summaryElement = await screen.findByText('Images')
352-
fireEvent.click(summaryElement, {
353-
bubbles: true,
354-
cancelable: true
355-
})
356-
357-
const comparisonTable = screen.getByRole('table')
358-
359-
const workspaceHeader = within(comparisonTable).queryByText('workspace')
360-
expect(workspaceHeader).toBeInTheDocument()
361-
362-
const [, pickerButton] = screen.queryAllByTestId('icon-menu-item')
363-
fireEvent.mouseEnter(pickerButton)
364-
fireEvent.click(pickerButton)
365-
366-
const [, selectMenu] = screen.getAllByRole('menu')
367-
const workspaceItem = within(selectMenu).getByText('workspace')
368-
369-
fireEvent.click(workspaceItem, {
370-
bubbles: true,
371-
cancelable: true
372-
})
373-
374-
expect(workspaceHeader).not.toBeInTheDocument()
375-
376-
fireEvent.mouseEnter(pickerButton)
377-
fireEvent.click(pickerButton)
378-
379-
fireEvent.click(workspaceItem, {
380-
bubbles: true,
381-
cancelable: true
382-
})
383-
384-
expect(within(comparisonTable).getByText('workspace')).toBeInTheDocument()
385-
})
386-
387-
it('should show the newest revision in the comparision table even if some revisions were filtered out', async () => {
388-
const { rerender } = render(
389-
<Plots
390-
state={{
391-
data: {
392-
comparison: comparisonTableFixture,
393-
sectionCollapsed: DEFAULT_SECTION_COLLAPSED
394-
}
395-
}}
396-
/>
397-
)
398-
399-
const summaryElement = await screen.findByText('Images')
400-
fireEvent.click(summaryElement, {
401-
bubbles: true,
402-
cancelable: true
403-
})
404-
405-
const [, pickerButton] = screen.queryAllByTestId('icon-menu-item')
406-
fireEvent.mouseEnter(pickerButton)
407-
fireEvent.click(pickerButton)
408-
409-
const [, selectMenu] = screen.getAllByRole('menu')
410-
const workspaceItem = within(selectMenu).getByText('workspace')
411-
412-
fireEvent.click(workspaceItem, {
413-
bubbles: true,
414-
cancelable: true
415-
})
416-
417-
const newRevision = 'newRev'
418-
419-
rerender(
420-
<Plots
421-
state={{
422-
data: {
423-
comparison: {
424-
...comparisonTableFixture,
425-
revisions: [
426-
...comparisonTableFixture.revisions,
427-
{ displayColor: '#945dd6', revision: newRevision }
428-
]
429-
},
430-
sectionCollapsed: DEFAULT_SECTION_COLLAPSED
431-
}
432-
}}
433-
/>
434-
)
435-
436-
const workspaceHeader = screen.queryAllByText(newRevision)
437-
expect(workspaceHeader.length).toBe(3) // One in the table, one in the menu, and one in the ribbon
438-
})
439-
440338
it('should send a message to the extension with the selected metrics when toggling the visibility of a plot', async () => {
441339
renderAppWithData({
442340
checkpoint: checkpointPlotsFixture,
Lines changed: 3 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,27 @@
11
import { PlotsComparisonData, Section } from 'dvc/src/plots/webview/contract'
2-
import React, { useEffect, useState } from 'react'
2+
import React from 'react'
33
import { ComparisonTable } from './ComparisonTable'
44
import { BasicContainerProps, PlotsContainer } from '../PlotsContainer'
5-
import { EmptyState } from '../../../shared/components/emptyState/EmptyState'
65

76
interface ComparisonTableWrapper {
87
comparisonTable: PlotsComparisonData
98
basicContainerProps: BasicContainerProps
109
}
1110

12-
// eslint-disable-next-line sonarjs/cognitive-complexity
1311
export const ComparisonTableWrapper: React.FC<ComparisonTableWrapper> = ({
1412
comparisonTable,
1513
basicContainerProps
1614
}) => {
17-
const { revisions: revs, sectionName, size } = comparisonTable
18-
const [allRevisions, setAllRevisions] = useState(
19-
revs?.map(rev => rev.revision) || []
20-
)
21-
const [selectedPlots, setSelectedPlots] = useState<string[]>(allRevisions)
22-
23-
useEffect(() => {
24-
setAllRevisions(allRevs => {
25-
const revisionStrings = revs?.map(rev => rev.revision)
26-
const newRevisions = revisionStrings.filter(rev => !allRevs.includes(rev))
27-
setSelectedPlots(plots => {
28-
const filteredRevisions = plots.filter(plot =>
29-
revisionStrings.includes(plot)
30-
)
31-
return [...filteredRevisions, ...newRevisions]
32-
})
33-
34-
return revisionStrings || []
35-
})
36-
}, [revs, setAllRevisions, setSelectedPlots])
37-
38-
const plots = comparisonTable.plots.filter(plot => {
39-
const plotRevisions = Object.values(plot.revisions)
40-
for (const plotRevision of plotRevisions) {
41-
if (selectedPlots.includes(plotRevision.revision)) {
42-
return true
43-
}
44-
}
45-
return false
46-
})
15+
const { revisions, sectionName, size, plots } = comparisonTable
4716

4817
return (
4918
<PlotsContainer
5019
title={sectionName}
5120
sectionKey={Section.COMPARISON_TABLE}
52-
menu={{
53-
plots: allRevisions,
54-
selectedPlots: selectedPlots,
55-
setSelectedPlots
56-
}}
5721
currentSize={size}
5822
{...basicContainerProps}
5923
>
60-
{plots.length > 0 ? (
61-
<ComparisonTable
62-
plots={plots}
63-
revisions={revs.filter(rev => selectedPlots.includes(rev.revision))}
64-
/>
65-
) : (
66-
<EmptyState isFullScreen={false}>No Revisions to Show</EmptyState>
67-
)}
24+
<ComparisonTable plots={plots} revisions={revisions} />
6825
</PlotsContainer>
6926
)
7027
}

0 commit comments

Comments
 (0)