diff --git a/optuna_dashboard/ts/action.ts b/optuna_dashboard/ts/action.ts index e8f2aa35..9f8db581 100644 --- a/optuna_dashboard/ts/action.ts +++ b/optuna_dashboard/ts/action.ts @@ -444,17 +444,9 @@ export const actionCreator = () => { }) } - const tellTrial = ( - studyId: number, - trialId: number, - state: TrialStateFinished, - values?: number[] - ): void => { - const message = - values === undefined - ? `id=${trialId}, state=${state}` - : `id=${trialId}, state=${state}, values=${values}` - tellTrialAPI(trialId, state, values) + const makeTrialFail = (studyId: number, trialId: number): void => { + const message = `id=${trialId}, state=Fail` + tellTrialAPI(trialId, "Fail") .then(() => { const index = studyDetails[studyId].trials.findIndex( (t) => t.trial_id === trialId @@ -465,7 +457,41 @@ export const actionCreator = () => { }) return } - setTrialStateValues(studyId, index, state, values) + setTrialStateValues(studyId, index, "Fail") + enqueueSnackbar(`Successfully updated trial (${message})`, { + variant: "success", + }) + }) + .catch((err) => { + const reason = err.response?.data.reason + enqueueSnackbar( + `Failed to update trial (${message}). Reason: ${reason}`, + { + variant: "error", + } + ) + console.log(err) + }) + } + + const makeTrialComplete = ( + studyId: number, + trialId: number, + values: number[] + ): void => { + const message = `id=${trialId}, state=Complete, values=${values}` + tellTrialAPI(trialId, "Complete", values) + .then(() => { + const index = studyDetails[studyId].trials.findIndex( + (t) => t.trial_id === trialId + ) + if (index === -1) { + enqueueSnackbar(`Unexpected error happens. Please reload the page.`, { + variant: "error", + }) + return + } + setTrialStateValues(studyId, index, "Complete", values) enqueueSnackbar(`Successfully updated trial (${message})`, { variant: "success", }) @@ -498,7 +524,8 @@ export const actionCreator = () => { saveTrialNote, uploadArtifact, deleteArtifact, - tellTrial, + makeTrialComplete, + makeTrialFail, } } diff --git a/optuna_dashboard/ts/components/ObjectiveForm.tsx b/optuna_dashboard/ts/components/ObjectiveForm.tsx index ae8b2ae8..0e61ce09 100644 --- a/optuna_dashboard/ts/components/ObjectiveForm.tsx +++ b/optuna_dashboard/ts/components/ObjectiveForm.tsx @@ -69,7 +69,7 @@ export const ObjectiveForm: FC<{ if (filtered.length !== directions.length) { return } - action.tellTrial(trial.study_id, trial.trial_id, "Complete", filtered) + action.makeTrialComplete(trial.study_id, trial.trial_id, filtered) } const getObjectiveName = (i: number): string => { @@ -264,7 +264,7 @@ export const ObjectiveForm: FC<{ variant="outlined" color="error" onClick={() => { - action.tellTrial(trial.study_id, trial.trial_id, "Fail") + action.makeTrialFail(trial.study_id, trial.trial_id) }} > Fail Trial diff --git a/optuna_dashboard/ts/components/TrialTable.tsx b/optuna_dashboard/ts/components/TrialTable.tsx index 3ea8e14a..32206e8a 100644 --- a/optuna_dashboard/ts/components/TrialTable.tsx +++ b/optuna_dashboard/ts/components/TrialTable.tsx @@ -295,7 +295,7 @@ export const TrialTable: FC<{ return } - action.tellTrial(studyId, trialId, "Complete", objectiveValues) + action.makeTrialComplete(studyId, trialId, objectiveValues) } const handleFailTrial = (e: MouseEvent): void => { @@ -304,7 +304,7 @@ export const TrialTable: FC<{ } const studyId = studyDetail.id const trialId = trials[index].trial_id - action.tellTrial(studyId, trialId, "Fail") + action.makeTrialFail(studyId, trialId) } return (