Фильтрация сообщений в шапке таблицы

This commit is contained in:
Alexey 2021-05-31 09:34:22 +05:00
parent f7900e36ca
commit 2818610b67

View File

@ -10,8 +10,6 @@ import Notification from '../components/Notification'
const {Option} = Select const {Option} = Select
// Словарь категорий для строк таблицы // Словарь категорий для строк таблицы
const categoryDictionary = { const categoryDictionary = {
1: {title: 'Авария'}, 1: {title: 'Авария'},
@ -19,54 +17,26 @@ const categoryDictionary = {
3: {title: 'Информация'}, 3: {title: 'Информация'},
} }
// Конфигурация таблицы
const columns = [
{
title: 'Дата',
key: 'date',
dataIndex: 'date',
render: (item) => moment(item).format('DD MMM YYYY, HH:MM:ss'),
},
{
title: 'Категория',
key: 'categoryId',
dataIndex: 'categoryId',
render: (_, item) => categoryDictionary[item.categoryId].title,
style: (_, item) => categoryDictionary[item.categoryId].style,
filters: [
{text: 'Авария', value: '1'},
{text: 'Предупреждение', value: '2'},
{text: 'Информация', value: '3'},
]
},
{
title: 'Сообщение',
key: 'message',
dataIndex: 'message',
},
{
title: 'Пользователь',
key: 'user',
dataIndex: 'user',
},
];
// Опции для фильра
// Данные для таблицы // Данные для таблицы
export default function Messages() { export default function Messages() {
let {id} = useParams() let {id} = useParams()
const [messages, setMessages] = useState([]) const [messages, setMessages] = useState([])
const [filteredInfo, setFilteredInfo] = useState({})
const [loader] = useState(false) const [loader] = useState(false)
const filterOptions = [ const filterOptions = [
{label: 'Авария', value: 1}, {label: 'Авария', value: '1'},
{label: 'Предупреждение', value: 2}, {label: 'Предупреждение', value: '2'},
{label: 'Информация', value: 3}, {label: 'Информация', value: '3'},
] ]
const children = filterOptions.map((line) => (<Option key={line.value}>{line.label}</Option>)) const children = filterOptions.map((line) => (<Option key={line.value}>{line.label}</Option>))
const handleChange = (filters) => {
setFilteredInfo({
filteredInfo: filters
})
}
const handleReceiveMessages = (messages) => { const handleReceiveMessages = (messages) => {
if (messages) { if (messages) {
setMessages(messages.items) setMessages(messages.items)
@ -87,6 +57,40 @@ export default function Messages() {
} }
}, [id]) }, [id])
const columns = [
{
title: 'Дата',
key: 'date',
dataIndex: 'date',
render: (item) => moment(item).format('DD MMM YYYY, HH:MM:ss'),
},
{
title: 'Категория',
key: 'categoryId',
dataIndex: 'categoryId',
render: (_, item) => categoryDictionary[item.categoryId].title,
style: (_, item) => categoryDictionary[item.categoryId].style,
filters: [
{text: 'Авария', value: '1'},
{text: 'Предупреждение', value: '2'},
{text: 'Информация', value: '3'},
],
filteredValue: filteredInfo.categoryId,
onFilter: (value, record) => record.categoryId.toString() === value,
ellipsis: true,
},
{
title: 'Сообщение',
key: 'message',
dataIndex: 'message',
},
{
title: 'Пользователь',
key: 'user',
dataIndex: 'user',
},
];
return ( return (
<> <>
<h2>Сообщения</h2> <h2>Сообщения</h2>
@ -97,7 +101,7 @@ export default function Messages() {
allowClear allowClear
placeholder="Фильтр сообщений" placeholder="Фильтр сообщений"
className="filter-selector" className="filter-selector"
// onChange={messagesFilter} onChange={handleChange}
> >
{children} {children}
</Select> </Select>