diff --git a/optuna_dashboard/ts/components/Note.tsx b/optuna_dashboard/ts/components/Note.tsx index 051ca10a..09270213 100644 --- a/optuna_dashboard/ts/components/Note.tsx +++ b/optuna_dashboard/ts/components/Note.tsx @@ -163,7 +163,7 @@ const useConfirmCloseDialog = ( return [openDialog, renderDialog] } -const MarkdownRenderer: FC<{ body: string }> = ({ body }) => ( +export const MarkdownRenderer: FC<{ body: string }> = ({ body }) => ( + return ( + + ) } return ( - - - Trial {trial.number} (trial_id={trial.trial_id}) - - - - - + + + Trial {trial.number} + { + hideTrial() + action.skipPreferentialTrial(trial.study_id, trial.trial_id) + }} + aria-label="skip trial" + > + + + setDetailShown(true)} + aria-label="show detail" + > + + + + + { + 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.2, + }, + }} + > + + + + + + + + setDetailShown(false)}> + + + true} + directions={[]} + objectiveNames={[]} + /> + + + + ) } @@ -70,6 +184,7 @@ 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), @@ -113,17 +228,28 @@ export const PreferentialTrials: FC<{ studyDetail: StudyDetail | null }> = ({ } return ( - - {displayTrials.numbers.map((t, index) => ( - trial.number === t)} - studyDetail={studyDetail} - hideTrial={() => { - hideTrial(t) - }} - /> - ))} + + + Which trial is the 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 4a54331d..4aceb619 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[] 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 {