import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
import { translate as __ } from 'foremanReact/common/I18n';
import {
Select,
SelectOption,
SelectVariant,
Toolbar,
ToolbarContent,
ToolbarToggleGroup,
ToolbarGroup,
ToolbarItem,
} from '@patternfly/react-core';
import FilterIcon from '@patternfly/react-icons/dist/esm/icons/filter-icon';
import ReportLogs from '../ReportLogs';
const ReportLogsFilter = ({ format, meta }) => {
const { logs } = meta;
const filterItems = [
{ text: __('All messages'), accepts: [] },
{
text: __('Notices, warnings and errors'),
accepts: ['notice', 'warning', 'err'],
},
{ text: __('Warnings and errors'), accepts: ['warning', 'err'] },
{ text: __('Errors only'), accepts: ['err'] },
];
const [filteredLogs, setFilteredLogs] = useState(logs);
const [isOpen, setIsOpen] = useState(false);
const [selected, setSelected] = useState(filterItems[0]);
const onToggle = isExpanded => {
setIsOpen(isExpanded);
};
const onSelect = (event, selection) => {
const item = filterItems.find(i => i.text === selection);
setSelected(item);
setIsOpen(false);
};
const filterLogs = (toFilter, accepts) => {
if (!accepts.length) return toFilter;
return toFilter.filter(log => accepts.includes(log[0] || log.level));
};
useEffect(() => {
setFilteredLogs(filterLogs(logs, selected.accepts));
}, [logs, selected]);
const onFilterClear = () => {
setSelected(filterItems[0]);
};
return (
<>
} breakpoint="lg">
{__('Message')}
>
);
};
ReportLogsFilter.propTypes = {
format: PropTypes.string.isRequired,
meta: PropTypes.object,
};
ReportLogsFilter.defaultProps = {
meta: {},
};
export default ReportLogsFilter;