diff --git a/apps/admin/src/pages/Rooms/index.tsx b/apps/admin/src/pages/Rooms/index.tsx index c7b6cf6..56e138d 100644 --- a/apps/admin/src/pages/Rooms/index.tsx +++ b/apps/admin/src/pages/Rooms/index.tsx @@ -45,6 +45,7 @@ const RoomsPage: React.FC = () => { const [archivedCount, setArchivedCount] = useState(0); const [searchText, setSearchText] = useState(''); const [filterBuilding, setFilterBuilding] = useState(undefined); + const [filterStatus, setFilterStatus] = useState(undefined); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [form] = Form.useForm(); @@ -89,13 +90,12 @@ const RoomsPage: React.FC = () => { let result = data; if (searchText) { const keyword = searchText.toLowerCase(); - result = result.filter((r: any) => r.roomNumber?.toLowerCase().includes(keyword)); - } - if (filterBuilding) { - result = result.filter((r: any) => r.building === filterBuilding); + result = result.filter((r: Record) => typeof r.roomNumber === 'string' && r.roomNumber.toLowerCase().includes(keyword)); } + if (filterBuilding) result = result.filter((r: Record) => r.building === filterBuilding); + if (filterStatus) result = result.filter((r: Record) => r.status === filterStatus); return result; - }, [data, searchText, filterBuilding]); + }, [data, searchText, filterBuilding, filterStatus]); const handleSave = async () => { const values = await form.validateFields(); @@ -314,6 +314,8 @@ const RoomsPage: React.FC = () => { onChange={(v) => setFilterBuilding(v)} options={buildings.map((b) => ({ value: b, label: b }))} /> + { setFilterStatus(v); }}> + {Object.entries(statusMap).filter(([k]) => k !== 'archived').map(([k, v]) => {v.text})} + +