import classNames from 'classnames'; import { usePromise } from 'hooks/usePromise'; import React, { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next'; import { canExport, getProfile, setProfile } from 'services/config'; import { run, useLog } from 'services/s3si'; import { Checkbox } from './Checkbox'; import { Loading } from './Loading'; type RunPanelProps = { } export const RunPanel: React.FC = () => { const { t } = useTranslation(); const { result } = usePromise(() => getProfile(0)); const [exportBattle, setExportBattle] = useState(true); const [exportCoop, setExportCoop] = useState(true); const [loading, setLoading] = useState(false); if (!result) { return } const onClick = async () => { setLoading(true); try { const { state } = result; const newState = await run(state, { exporter: "stat.ink,file", monitor: false, withSummary: false, skipMode: exportBattle === false ? 'vs' : exportCoop === false ? 'coop' : undefined, }); await setProfile(0, { ...result, state: newState, }) } finally { setLoading(false); } } const disabled = !canExport(result); return <>
{t('导出对战数据')} {t('导出打工数据')}
} export type LogPanelProps = { className?: string } export const LogPanel: React.FC = ({ className }) => { const { renderedLogs } = useLog(); const div = useRef(null); const { t } = useTranslation(); useEffect(() => { if (div.current) { div.current.scrollTop = div.current.scrollHeight; } }, [renderedLogs]) return
{renderedLogs.length === 0 &&
{t('欢迎! 请点击"导出"按钮开始使用.')}
} {renderedLogs.map((line, i) =>
{line}
)}
}