From 6d8ae27a18f440ac4ece5a1592b515692fbce410 Mon Sep 17 00:00:00 2001 From: Matt Seddon Date: Fri, 22 Jul 2022 12:04:27 +1000 Subject: [PATCH 1/2] Move divider to top of group in experiments table context menu --- .../src/experiments/components/table/Row.tsx | 6 +-- webview/src/stories/Table.stories.tsx | 46 ++++++++++++------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/webview/src/experiments/components/table/Row.tsx b/webview/src/experiments/components/table/Row.tsx index 9ffdbae6b5..d23e3e8d3d 100644 --- a/webview/src/experiments/components/table/Row.tsx +++ b/webview/src/experiments/components/table/Row.tsx @@ -124,13 +124,13 @@ const getRunResumeOptions = ( withId( 'Modify, Reset and Run', MessageFromWebviewType.VARY_EXPERIMENT_PARAMS_RESET_AND_RUN, - !isNotCheckpoint || !projectHasCheckpoints + !isNotCheckpoint || !projectHasCheckpoints, + !hideVaryAndRun ), withId( projectHasCheckpoints ? 'Modify and Resume' : 'Modify and Run', MessageFromWebviewType.VARY_EXPERIMENT_PARAMS_AND_RUN, - !isNotCheckpoint, - !hideVaryAndRun + !isNotCheckpoint ), withId( 'Modify and Queue', diff --git a/webview/src/stories/Table.stories.tsx b/webview/src/stories/Table.stories.tsx index 55f186f6bd..ca229556d6 100644 --- a/webview/src/stories/Table.stories.tsx +++ b/webview/src/stories/Table.stories.tsx @@ -53,6 +53,23 @@ const tableData: TableData = { ] } +const noRunningExperiments = { + ...tableData, + hasRunningExperiment: false, + rows: rowsFixture.map(row => ({ + ...row, + running: false, + subRows: row.subRows?.map(experiment => ({ + ...experiment, + running: false, + subRows: experiment.subRows?.map(checkpoint => ({ + ...checkpoint, + running: false + })) + })) + })) +} + export default { args: { tableData @@ -101,22 +118,19 @@ WithMiddleStates.play = async ({ canvasElement }) => { export const WithNoRunningExperiments = Template.bind({}) WithNoRunningExperiments.args = { - tableData: { - ...tableData, - hasRunningExperiment: false, - rows: rowsFixture.map(row => ({ - ...row, - running: false, - subRows: row.subRows?.map(experiment => ({ - ...experiment, - running: false, - subRows: experiment.subRows?.map(checkpoint => ({ - ...checkpoint, - running: false - })) - })) - })) - } + tableData: noRunningExperiments +} + +export const WithContextMenu = Template.bind({}) +WithContextMenu.args = { + tableData: noRunningExperiments +} +WithContextMenu.play = async ({ canvasElement }) => { + const experiment = await within(canvasElement).findByText('[exp-e7a67]') + userEvent.click(experiment, { + bubbles: true, + button: 2 + }) } export const WithAllDataTypes = Template.bind({}) From 411e3da8ee22668ae4af058a8914568227ba0861 Mon Sep 17 00:00:00 2001 From: Matt Seddon Date: Sat, 23 Jul 2022 10:43:42 +1000 Subject: [PATCH 2/2] fix separator condition for when there are no checkpoints --- .../src/experiments/components/table/Row.tsx | 8 +++-- webview/src/stories/Table.stories.tsx | 36 ++++++++++++++++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/webview/src/experiments/components/table/Row.tsx b/webview/src/experiments/components/table/Row.tsx index d23e3e8d3d..573109f52c 100644 --- a/webview/src/experiments/components/table/Row.tsx +++ b/webview/src/experiments/components/table/Row.tsx @@ -120,17 +120,21 @@ const getRunResumeOptions = ( ) => { const isNotCheckpoint = depth <= 1 || isWorkspace + const resetNeedsSeparator = !hideVaryAndRun && projectHasCheckpoints + const runNeedsSeparator = !hideVaryAndRun && !projectHasCheckpoints + return [ withId( 'Modify, Reset and Run', MessageFromWebviewType.VARY_EXPERIMENT_PARAMS_RESET_AND_RUN, !isNotCheckpoint || !projectHasCheckpoints, - !hideVaryAndRun + resetNeedsSeparator ), withId( projectHasCheckpoints ? 'Modify and Resume' : 'Modify and Run', MessageFromWebviewType.VARY_EXPERIMENT_PARAMS_AND_RUN, - !isNotCheckpoint + !isNotCheckpoint, + runNeedsSeparator ), withId( 'Modify and Queue', diff --git a/webview/src/stories/Table.stories.tsx b/webview/src/stories/Table.stories.tsx index ca229556d6..61aee5aa03 100644 --- a/webview/src/stories/Table.stories.tsx +++ b/webview/src/stories/Table.stories.tsx @@ -70,6 +70,20 @@ const noRunningExperiments = { })) } +const noRunningExperimentsNoCheckpoints = { + ...noRunningExperiments, + hasCheckpoints: false, + rows: rowsFixture.map(row => ({ + ...row, + running: false, + subRows: row.subRows?.map(experiment => ({ + ...experiment, + running: false, + subRows: [] + })) + })) +} + export default { args: { tableData @@ -121,11 +135,11 @@ WithNoRunningExperiments.args = { tableData: noRunningExperiments } -export const WithContextMenu = Template.bind({}) -WithContextMenu.args = { - tableData: noRunningExperiments -} -WithContextMenu.play = async ({ canvasElement }) => { +const contextMenuPlay = async ({ + canvasElement +}: { + canvasElement: HTMLElement +}) => { const experiment = await within(canvasElement).findByText('[exp-e7a67]') userEvent.click(experiment, { bubbles: true, @@ -133,6 +147,18 @@ WithContextMenu.play = async ({ canvasElement }) => { }) } +export const WithContextMenu = Template.bind({}) +WithContextMenu.args = { + tableData: noRunningExperiments +} +WithContextMenu.play = contextMenuPlay + +export const WithContextMenuNoCheckpoints = Template.bind({}) +WithContextMenuNoCheckpoints.args = { + tableData: noRunningExperimentsNoCheckpoints +} +WithContextMenuNoCheckpoints.play = contextMenuPlay + export const WithAllDataTypes = Template.bind({}) WithAllDataTypes.args = { tableData: dataTypesTableData } WithAllDataTypes.play = async ({ canvasElement }) => {