diff --git a/src/routes/_authed/dimzou-translations.tsx b/src/routes/_authed/dimzou-translations.tsx index 1790bb8..3abfa38 100644 --- a/src/routes/_authed/dimzou-translations.tsx +++ b/src/routes/_authed/dimzou-translations.tsx @@ -39,9 +39,12 @@ function DimzouTranslationsPage() { // language filter applies on Enter/blur to avoid a request per keystroke const [languageInput, setLanguageInput] = useState('') const [language, setLanguage] = useState('') + const [sourceInput, setSourceInput] = useState('') + const [sourceDocumentId, setSourceDocumentId] = useState('') const filters: Record = {} if (status !== 'all') filters.status = status if (language) filters.language_code = language + if (sourceDocumentId) filters.source_document_id = sourceDocumentId const list = useListPage('dimzou-translations', fetchDimzouTranslations, filters) @@ -119,7 +122,14 @@ function DimzouTranslationsPage() { canRetranslate ? ( + } @@ -150,6 +160,17 @@ function DimzouTranslationsPage() { placeholder="语言,如 en" className="h-8 w-28" /> + setSourceInput(event.target.value)} + onBlur={() => setSourceDocumentId(sourceInput.trim())} + onKeyDown={(event) => { + if (event.key === 'Enter') setSourceDocumentId(sourceInput.trim()) + }} + inputMode="numeric" + placeholder="源文档 ID" + className="h-8 w-28" + /> - - - - - 全部状态 - {Object.entries(STATE_LABELS).map(([value, label]) => ( - - {label} - - ))} - - +
+ setQueryInput(event.target.value)} + onBlur={() => setQuery(queryInput.trim())} + onKeyDown={(event) => event.key === 'Enter' && setQuery(queryInput.trim())} + /> + setOwnerInput(event.target.value)} + onBlur={() => setOwnerUid(ownerInput.trim())} + onKeyDown={(event) => event.key === 'Enter' && setOwnerUid(ownerInput.trim())} + /> + +
} /> function DimzouPublicationsPage() { const [visibility, setVisibility] = useState('all') + const [queryInput, setQueryInput] = useState('') + const [query, setQuery] = useState('') + const [languageInput, setLanguageInput] = useState('') + const [language, setLanguage] = useState('') const [detail, setDetail] = useState(null) - const list = useListPage( - 'dimzou-publications', - fetchDimzouPublications, - visibility === 'all' ? {} : { visibility }, - ) + const filters: Record = {} + if (visibility !== 'all') filters.visibility = visibility + if (query) filters.q = query + if (language) filters.language = language + const list = useListPage('dimzou-publications', fetchDimzouPublications, filters) const columns: ColumnDef[] = [ { @@ -92,7 +97,26 @@ function DimzouPublicationsPage() { title="发布监控" description="全站已发布内容快照(只读)" actions={ - setQueryInput(event.target.value)} + onBlur={() => setQuery(queryInput.trim())} + onKeyDown={(event) => event.key === 'Enter' && setQuery(queryInput.trim())} + /> + setLanguageInput(event.target.value)} + onBlur={() => setLanguage(languageInput.trim())} + onKeyDown={(event) => + event.key === 'Enter' && setLanguage(languageInput.trim()) + } + /> + + + } />