From d4f485cc33f58155db50c7464c799f3de6db41f6 Mon Sep 17 00:00:00 2001 From: c-bata Date: Sat, 14 Jan 2023 18:58:57 +0900 Subject: [PATCH] Implement file-upload button --- optuna_dashboard/ts/components/Note.tsx | 25 ++++++++ optuna_dashboard/ts/components/TrialList.tsx | 64 +++++++++++++++----- 2 files changed, 75 insertions(+), 14 deletions(-) diff --git a/optuna_dashboard/ts/components/Note.tsx b/optuna_dashboard/ts/components/Note.tsx index f1d2fd8f..0556e522 100644 --- a/optuna_dashboard/ts/components/Note.tsx +++ b/optuna_dashboard/ts/components/Note.tsx @@ -24,6 +24,9 @@ import React, { useState, useEffect, DragEventHandler, + useRef, + MouseEventHandler, + ChangeEventHandler, } from "react" import ReactMarkdown from "react-markdown" import remarkGfm from "remark-gfm" @@ -409,6 +412,21 @@ const ArtifactUploader: FC<{ const [dragOver, setDragOver] = useState(false) const [selected, setSelected] = useState(-1) + const inputRef = useRef(null) + const handleClick: MouseEventHandler = (e) => { + if (!inputRef || !inputRef.current) { + return + } + inputRef.current.click() + } + const handleOnChange: ChangeEventHandler = (e) => { + const files = e.target.files + if (files === null) { + return + } + action.uploadArtifact(studyId, trialId, files[0]) + } + const handleDrop: DragEventHandler = (e) => { e.stopPropagation() e.preventDefault() @@ -455,10 +473,17 @@ const ArtifactUploader: FC<{ loading={uploading} loadingPosition="start" startIcon={} + onClick={handleClick} variant="outlined" > Upload + boolean }> = ({ trial, isBestTrial }) => { const theme = useTheme() + const action = actionCreator() const artifactEnabled = useRecoilValue(artifactIsAvailable) const startMs = trial.datetime_start?.getTime() const completeMs = trial.datetime_complete?.getTime() @@ -224,6 +233,21 @@ const TrialListDetail: FC<{ ) + const inputRef = useRef(null) + const handleClick: MouseEventHandler = (e) => { + if (!inputRef || !inputRef.current) { + return + } + inputRef.current.click() + } + const handleOnChange: ChangeEventHandler = (e) => { + const files = e.target.files + if (files === null) { + return + } + action.uploadArtifact(trial.study_id, trial.trial_id, files[0]) + } + return ( - - - Upload a New File - + + + + Upload a New File + +