From 17fc765a0dd704d700b8356ecd556ad9809f8e70 Mon Sep 17 00:00:00 2001 From: moririn2528 Date: Fri, 25 Aug 2023 12:58:44 +0900 Subject: [PATCH 1/8] update feedback screen --- optuna_dashboard/ts/components/Note.tsx | 37 +++-- .../ts/components/PreferentialTrials.tsx | 150 ++++++++++++++---- optuna_dashboard/ts/components/TrialList.tsx | 3 +- 3 files changed, 143 insertions(+), 47 deletions(-) diff --git a/optuna_dashboard/ts/components/Note.tsx b/optuna_dashboard/ts/components/Note.tsx index 051ca10a..bad60cf9 100644 --- a/optuna_dashboard/ts/components/Note.tsx +++ b/optuna_dashboard/ts/components/Note.tsx @@ -101,13 +101,15 @@ export const TrialNote: FC<{ trialId: number latestNote: Note cardSx?: SxProps -}> = ({ studyId, trialId, latestNote, cardSx }) => { + editable: boolean +}> = ({ studyId, trialId, latestNote, cardSx, editable }) => { return ( ) } @@ -582,7 +584,8 @@ const NoteBase: FC<{ trialId?: number latestNote: Note cardSx?: SxProps -}> = ({ studyId, trialId, latestNote, cardSx }) => { + editable: boolean +}> = ({ studyId, trialId, latestNote, cardSx, editable }) => { const theme = useTheme() const [editorMounted, setEditorMounted] = useState(false) @@ -597,21 +600,23 @@ const NoteBase: FC<{ }} > - { - setEditorMounted(true) - }} - > - - + {editable && ( + { + setEditorMounted(true) + }} + > + + + )} - {editorMounted && ( + {editable && editorMounted && ( + return ( + + ) } return ( - - - Trial {trial.number} (trial_id={trial.trial_id}) - + - + setDetailShown(true)}> + + + setDetailShown(false)}> + + false} + directions={[]} + objectiveNames={[]} + /> + + ) } @@ -61,10 +134,12 @@ export const PreferentialTrials: FC<{ studyDetail: StudyDetail | null }> = ({ if (studyDetail === null || !studyDetail.is_preferential) { return null } + const theme = useTheme() const [displayTrials, setDisplayTrials] = useState({ numbers: studyDetail.best_trials.map((t) => t.number), last_number: Math.max(...studyDetail.best_trials.map((t) => t.number), -1), }) + const [shuffleTrial, setShuffleTrial] = useState(0) const new_trails = studyDetail.best_trials.filter( (t) => displayTrials.last_number < t.number && @@ -102,19 +177,34 @@ export const PreferentialTrials: FC<{ studyDetail: StudyDetail | null }> = ({ } }) } + const shuffleFlag = shuffleTrial + 20 < displayTrials.last_number + if (shuffleFlag) { + setShuffleTrial(displayTrials.last_number) + } return ( - - {displayTrials.numbers.map((t, index) => ( - trial.number === t)} - studyDetail={studyDetail} - hideTrial={() => { - hideTrial(t) - }} - /> - ))} + + + Which trial is worst? + + + {displayTrials.numbers.map((t, index) => ( + trial.number === t)} + studyDetail={studyDetail} + hideTrial={() => { + hideTrial(t) + }} + /> + ))} + ) } diff --git a/optuna_dashboard/ts/components/TrialList.tsx b/optuna_dashboard/ts/components/TrialList.tsx index eb700c13..5ad6e2f8 100644 --- a/optuna_dashboard/ts/components/TrialList.tsx +++ b/optuna_dashboard/ts/components/TrialList.tsx @@ -143,7 +143,7 @@ const useIsBestTrial = ( }, [studyDetail]) } -const TrialListDetail: FC<{ +export const TrialListDetail: FC<{ trial: Trial isBestTrial: (trialId: number) => boolean directions: StudyDirection[] @@ -301,6 +301,7 @@ const TrialListDetail: FC<{ trialId={trial.trial_id} latestNote={trial.note} cardSx={{ marginBottom: theme.spacing(2) }} + editable={true} /> Date: Fri, 25 Aug 2023 18:04:38 +0900 Subject: [PATCH 2/8] fix by review --- .../ts/components/PreferentialTrials.tsx | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/optuna_dashboard/ts/components/PreferentialTrials.tsx b/optuna_dashboard/ts/components/PreferentialTrials.tsx index 9737a756..e00f2b91 100644 --- a/optuna_dashboard/ts/components/PreferentialTrials.tsx +++ b/optuna_dashboard/ts/components/PreferentialTrials.tsx @@ -18,7 +18,6 @@ const PreferentialTrial: FC<{ const action = actionCreator() const trialWidth = 500 const trialHeight = 300 - const [hover, setHover] = useState(false) const [detailShown, setDetailShown] = useState(false) if (trial == undefined) { @@ -48,8 +47,6 @@ const PreferentialTrial: FC<{ .filter((t) => t !== trial.number) action.updatePreference(trial.study_id, best_trials, [trial.number]) }} - onMouseEnter={() => setHover(true)} - onMouseLeave={() => setHover(false)} sx={{ "::before": { content: '""', @@ -84,17 +81,20 @@ const PreferentialTrial: FC<{ @@ -104,11 +104,12 @@ const PreferentialTrial: FC<{ setDetailShown(false)}> = ({ } }) } - const shuffleFlag = shuffleTrial + 20 < displayTrials.last_number - if (shuffleFlag) { - setShuffleTrial(displayTrials.last_number) - } return ( - + = ({ fontWeight: theme.typography.fontWeightBold, }} > - Which trial is worst? + Which trial is the worst? {displayTrials.numbers.map((t, index) => ( From b2cb0e064c5eb351d8c4b543445d47e826e4e08e Mon Sep 17 00:00:00 2001 From: c-bata Date: Mon, 28 Aug 2023 11:28:23 +0900 Subject: [PATCH 3/8] Fix the sort of user_attr values --- optuna_dashboard/ts/components/TrialTable.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optuna_dashboard/ts/components/TrialTable.tsx b/optuna_dashboard/ts/components/TrialTable.tsx index ed930c9c..8fcce63c 100644 --- a/optuna_dashboard/ts/components/TrialTable.tsx +++ b/optuna_dashboard/ts/components/TrialTable.tsx @@ -157,7 +157,7 @@ export const TrialTable: FC<{ if (firstVal === secondVal) { return 0 } else if (firstVal && secondVal) { - return firstVal < secondVal ? 1 : -1 + return Number(firstVal) < Number(secondVal) ? 1 : -1 } else if (firstVal) { return -1 } else { From 5f518b416e5dd1886f5b25968ae70c6dbfa907e1 Mon Sep 17 00:00:00 2001 From: moririn2528 Date: Mon, 28 Aug 2023 11:43:50 +0900 Subject: [PATCH 4/8] change component to card --- .../ts/components/PreferentialTrials.tsx | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/optuna_dashboard/ts/components/PreferentialTrials.tsx b/optuna_dashboard/ts/components/PreferentialTrials.tsx index e00f2b91..7554e3d1 100644 --- a/optuna_dashboard/ts/components/PreferentialTrials.tsx +++ b/optuna_dashboard/ts/components/PreferentialTrials.tsx @@ -1,5 +1,12 @@ import React, { FC, useState } from "react" -import { Typography, Box, Button, useTheme } from "@mui/material" +import { + Typography, + Box, + useTheme, + Card, + CardContent, + CardActions, +} from "@mui/material" import ClearIcon from "@mui/icons-material/Clear" import IconButton from "@mui/material/IconButton" import OpenInFullIcon from "@mui/icons-material/OpenInFull" @@ -32,14 +39,29 @@ const PreferentialTrial: FC<{ } return ( - - - setDetailShown(true)}> - - + setDetailShown(false)}> - + ) } @@ -140,7 +161,6 @@ export const PreferentialTrials: FC<{ studyDetail: StudyDetail | null }> = ({ numbers: studyDetail.best_trials.map((t) => t.number), last_number: Math.max(...studyDetail.best_trials.map((t) => t.number), -1), }) - const [shuffleTrial, setShuffleTrial] = useState(0) const new_trails = studyDetail.best_trials.filter( (t) => displayTrials.last_number < t.number && From a8c3e082074a518d24dcce89aa85792a037c6fbe Mon Sep 17 00:00:00 2001 From: moririn2528 Date: Mon, 28 Aug 2023 16:14:58 +0900 Subject: [PATCH 5/8] remove duplicate cards --- optuna_dashboard/ts/components/Note.tsx | 39 ++++++++----------- .../ts/components/PreferentialTrials.tsx | 15 +++---- optuna_dashboard/ts/components/TrialList.tsx | 1 - 3 files changed, 22 insertions(+), 33 deletions(-) diff --git a/optuna_dashboard/ts/components/Note.tsx b/optuna_dashboard/ts/components/Note.tsx index bad60cf9..09270213 100644 --- a/optuna_dashboard/ts/components/Note.tsx +++ b/optuna_dashboard/ts/components/Note.tsx @@ -101,15 +101,13 @@ export const TrialNote: FC<{ trialId: number latestNote: Note cardSx?: SxProps - editable: boolean -}> = ({ studyId, trialId, latestNote, cardSx, editable }) => { +}> = ({ studyId, trialId, latestNote, cardSx }) => { return ( ) } @@ -165,7 +163,7 @@ const useConfirmCloseDialog = ( return [openDialog, renderDialog] } -const MarkdownRenderer: FC<{ body: string }> = ({ body }) => ( +export const MarkdownRenderer: FC<{ body: string }> = ({ body }) => ( - editable: boolean -}> = ({ studyId, trialId, latestNote, cardSx, editable }) => { +}> = ({ studyId, trialId, latestNote, cardSx }) => { const theme = useTheme() const [editorMounted, setEditorMounted] = useState(false) @@ -600,23 +597,21 @@ const NoteBase: FC<{ }} > - {editable && ( - { - setEditorMounted(true) - }} - > - - - )} + { + setEditorMounted(true) + }} + > + + - {editable && editorMounted && ( + {editorMounted && ( ) @@ -52,7 +53,6 @@ const PreferentialTrial: FC<{ setDetailShown(true)} aria-label="show detail" @@ -72,6 +72,7 @@ const PreferentialTrial: FC<{ sx={{ padding: 0, position: "relative", + overflow: "hidden", "::before": { content: '""', position: "absolute", @@ -91,17 +92,11 @@ const PreferentialTrial: FC<{ > - + Date: Mon, 28 Aug 2023 18:04:26 +0900 Subject: [PATCH 6/8] fix by review --- .../ts/components/PreferentialTrials.tsx | 125 ++++++++++-------- 1 file changed, 68 insertions(+), 57 deletions(-) diff --git a/optuna_dashboard/ts/components/PreferentialTrials.tsx b/optuna_dashboard/ts/components/PreferentialTrials.tsx index 4693de5a..9929590d 100644 --- a/optuna_dashboard/ts/components/PreferentialTrials.tsx +++ b/optuna_dashboard/ts/components/PreferentialTrials.tsx @@ -6,6 +6,7 @@ import { Card, CardContent, CardActions, + CardActionArea, } from "@mui/material" import ClearIcon from "@mui/icons-material/Clear" import IconButton from "@mui/material/IconButton" @@ -15,6 +16,7 @@ import Modal from "@mui/material/Modal" import { actionCreator } from "../action" import { TrialListDetail } from "./TrialList" import { MarkdownRenderer } from "./Note" +import { red } from "@mui/material/colors" const PreferentialTrial: FC<{ trial?: Trial @@ -44,12 +46,12 @@ const PreferentialTrial: FC<{ sx={{ width: trialWidth, minHeight: trialHeight, - position: "relative", margin: theme.spacing(2), padding: 0, }} > + Trial {trial.number} - { - hideTrial() - const best_trials = studyDetail.best_trials - .map((t) => t.number) - .filter((t) => t !== trial.number) - action.updatePreference(trial.study_id, best_trials, [trial.number]) - }} - sx={{ - padding: 0, - position: "relative", - overflow: "hidden", - "::before": { - content: '""', - position: "absolute", - top: 0, - left: 0, - width: "100%", - height: "100%", - backgroundColor: theme.palette.mode === "dark" ? "white" : "black", - opacity: 0, - zIndex: 1, - transition: "opacity 0.3s ease-out", - }, - ":hover::before": { - opacity: 0.1, - }, - }} - > - + { + hideTrial() + const best_trials = studyDetail.best_trials + .map((t) => t.number) + .filter((t) => t !== trial.number) + action.updatePreference(trial.study_id, best_trials, [trial.number]) }} - > - - - - - + > + + + + + + + setDetailShown(false)}> Date: Mon, 28 Aug 2023 18:09:07 +0900 Subject: [PATCH 7/8] minor fix --- optuna_dashboard/ts/components/PreferentialTrials.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optuna_dashboard/ts/components/PreferentialTrials.tsx b/optuna_dashboard/ts/components/PreferentialTrials.tsx index 9929590d..b629bc4a 100644 --- a/optuna_dashboard/ts/components/PreferentialTrials.tsx +++ b/optuna_dashboard/ts/components/PreferentialTrials.tsx @@ -141,7 +141,7 @@ const PreferentialTrial: FC<{ > false} + isBestTrial={() => true} directions={[]} objectiveNames={[]} /> From 3acd952fc2fdb269c1653f60e90f67a3fd46135d Mon Sep 17 00:00:00 2001 From: moririn2528 Date: Mon, 28 Aug 2023 18:17:39 +0900 Subject: [PATCH 8/8] minor fix --- .../ts/components/PreferentialTrials.tsx | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/optuna_dashboard/ts/components/PreferentialTrials.tsx b/optuna_dashboard/ts/components/PreferentialTrials.tsx index b629bc4a..27219a56 100644 --- a/optuna_dashboard/ts/components/PreferentialTrials.tsx +++ b/optuna_dashboard/ts/components/PreferentialTrials.tsx @@ -135,16 +135,25 @@ const PreferentialTrial: FC<{ width: "80%", maxHeight: "90%", margin: "auto", + overflow: "hidden", backgroundColor: theme.palette.mode === "dark" ? "black" : "white", borderRadius: theme.spacing(3), }} > - true} - directions={[]} - objectiveNames={[]} - /> + + true} + directions={[]} + objectiveNames={[]} + /> +