sort on display status (#24252)

Co-authored-by: crazywoola <427733928@qq.com>
This commit is contained in:
znn
2025-08-26 09:25:53 +05:30
committed by GitHub
parent 884fdc2fa8
commit 243876e9b7
2 changed files with 60 additions and 11 deletions

View File

@@ -30,6 +30,7 @@ import Popover from '@/app/components/base/popover'
import Confirm from '@/app/components/base/confirm'
import Tooltip from '@/app/components/base/tooltip'
import Toast, { ToastContext } from '@/app/components/base/toast'
import type { Item } from '@/app/components/base/select'
import type { ColorMap, IndicatorProps } from '@/app/components/header/indicator'
import Indicator from '@/app/components/header/indicator'
import { asyncRunSafe } from '@/utils'
@@ -426,6 +427,8 @@ type IDocumentListProps = {
pagination: PaginationProps
onUpdate: () => void
onManageMetadata: () => void
statusFilter: Item
onStatusFilterChange: (filter: string) => void
}
/**
@@ -440,6 +443,7 @@ const DocumentList: FC<IDocumentListProps> = ({
pagination,
onUpdate,
onManageMetadata,
statusFilter,
}) => {
const { t } = useTranslation()
const { formatTime } = useTimestamp()
@@ -451,6 +455,7 @@ const DocumentList: FC<IDocumentListProps> = ({
const [localDocs, setLocalDocs] = useState<LocalDoc[]>(documents)
const [sortField, setSortField] = useState<'name' | 'word_count' | 'hit_count' | 'created_at' | null>('created_at')
const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('desc')
const {
isShowEditModal,
showEditModal,
@@ -465,12 +470,22 @@ const DocumentList: FC<IDocumentListProps> = ({
})
useEffect(() => {
let filteredDocs = documents
if (statusFilter.value !== 'all') {
filteredDocs = filteredDocs.filter(doc =>
typeof doc.display_status === 'string'
&& typeof statusFilter.value === 'string'
&& doc.display_status.toLowerCase() === statusFilter.value.toLowerCase(),
)
}
if (!sortField) {
setLocalDocs(documents)
setLocalDocs(filteredDocs)
return
}
const sortedDocs = [...documents].sort((a, b) => {
const sortedDocs = [...filteredDocs].sort((a, b) => {
let aValue: any
let bValue: any
@@ -506,7 +521,7 @@ const DocumentList: FC<IDocumentListProps> = ({
})
setLocalDocs(sortedDocs)
}, [documents, sortField, sortOrder])
}, [documents, sortField, sortOrder, statusFilter])
const handleSort = (field: 'name' | 'word_count' | 'hit_count' | 'created_at') => {
if (sortField === field) {