@cccsaurora/howler-ui 2.13.0-dev.162 → 2.13.0-dev.164
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/routes/advanced/QueryBuilder.js +44 -8
- package/components/routes/help/SearchDocumentation.js +2 -1
- package/locales/en/help/search.json +17 -0
- package/locales/en/translation.json +7 -2
- package/locales/fr/help/search.json +17 -0
- package/locales/fr/translation.json +7 -2
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useMonaco } from '@monaco-editor/react';
|
|
4
4
|
import { OpenInNew, PlayArrowOutlined, SsidChart } from '@mui/icons-material';
|
|
5
5
|
import { Alert, AlertTitle, Autocomplete, Box, Card, Checkbox, Chip, CircularProgress, FormControlLabel, IconButton, ListItemText, Slider, Stack, TextField, Tooltip, Typography, useMediaQuery, useTheme } from '@mui/material';
|
|
6
|
+
import Popper, {} from '@mui/material/Popper';
|
|
6
7
|
import api from '@cccsaurora/howler-ui/api';
|
|
7
8
|
import PageCenter from '@cccsaurora/howler-ui/commons/components/pages/PageCenter';
|
|
8
9
|
import { parseEvent } from '@cccsaurora/howler-ui/commons/components/utils/keyboard';
|
|
@@ -61,6 +62,10 @@ falsepositives:
|
|
|
61
62
|
level: informational
|
|
62
63
|
`
|
|
63
64
|
};
|
|
65
|
+
const LUCENE_QUERY_OPTIONS = ['default', 'facet', 'groupby'];
|
|
66
|
+
const CustomPopper = (props) => {
|
|
67
|
+
return _jsx(Popper, { ...props, style: { width: 'fit-content' }, placement: "bottom-start" });
|
|
68
|
+
};
|
|
64
69
|
const QueryBuilder = () => {
|
|
65
70
|
const { t } = useTranslation();
|
|
66
71
|
const theme = useTheme();
|
|
@@ -73,6 +78,8 @@ const QueryBuilder = () => {
|
|
|
73
78
|
const [type, setType] = useState('lucene');
|
|
74
79
|
const [loading, setLoading] = useState(false);
|
|
75
80
|
const [query, setQuery] = useState(DEFAULT_VALUES.lucene);
|
|
81
|
+
const [queryType, setQueryType] = useState(LUCENE_QUERY_OPTIONS[0]);
|
|
82
|
+
const [groupByField, setGroupByField] = useState(null);
|
|
76
83
|
const [allFields, setAllFields] = useState(true);
|
|
77
84
|
const [fields, setFields] = useState(['howler.id']);
|
|
78
85
|
const [response, setResponse] = useState(null);
|
|
@@ -90,10 +97,25 @@ const QueryBuilder = () => {
|
|
|
90
97
|
};
|
|
91
98
|
let result;
|
|
92
99
|
if (type === 'lucene') {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
100
|
+
if (queryType === 'facet') {
|
|
101
|
+
result = await api.search.facet.hit.post({
|
|
102
|
+
query: sanitizeMultilineLucene(query),
|
|
103
|
+
rows: STEPS[rows],
|
|
104
|
+
fields
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else if (queryType === 'groupby') {
|
|
108
|
+
result = await api.search.grouped.hit.post(groupByField, {
|
|
109
|
+
query: sanitizeMultilineLucene(query),
|
|
110
|
+
...searchProperties
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
result = await api.search.hit.post({
|
|
115
|
+
query: sanitizeMultilineLucene(query),
|
|
116
|
+
...searchProperties
|
|
117
|
+
});
|
|
118
|
+
}
|
|
97
119
|
}
|
|
98
120
|
else if (type === 'eql') {
|
|
99
121
|
result = await api.search.hit.eql.post({
|
|
@@ -116,7 +138,7 @@ const QueryBuilder = () => {
|
|
|
116
138
|
finally {
|
|
117
139
|
setLoading(false);
|
|
118
140
|
}
|
|
119
|
-
}, [allFields, fields, query, rows, type]);
|
|
141
|
+
}, [allFields, fields, groupByField, query, queryType, rows, type]);
|
|
120
142
|
const onKeyDown = useCallback(event => {
|
|
121
143
|
const parsedEvent = parseEvent(event);
|
|
122
144
|
if (parsedEvent.isCtrl && parsedEvent.isEnter) {
|
|
@@ -146,6 +168,12 @@ const QueryBuilder = () => {
|
|
|
146
168
|
maxHeight: '85vh'
|
|
147
169
|
}));
|
|
148
170
|
}, [query, response, showModal, showWarningMessage, t, type]);
|
|
171
|
+
const searchDisabled = useMemo(() => type === 'lucene' && queryType === 'groupby' && !groupByField, [groupByField, queryType, type]);
|
|
172
|
+
useEffect(() => {
|
|
173
|
+
if (type !== 'lucene' && queryType !== 'default') {
|
|
174
|
+
setQueryType('default');
|
|
175
|
+
}
|
|
176
|
+
}, [queryType, type]);
|
|
149
177
|
useEffect(() => {
|
|
150
178
|
if (!monaco) {
|
|
151
179
|
return;
|
|
@@ -190,13 +218,21 @@ const QueryBuilder = () => {
|
|
|
190
218
|
display: 'flex',
|
|
191
219
|
alignSelf: 'stretch'
|
|
192
220
|
}
|
|
193
|
-
}, children: [smallButtons ? (_jsx(Tooltip, { title: t('route.actions.execute'), children: _jsx(IconButton, { size: "small", sx: { alignSelf: 'start' }, color: "success", onClick: execute, children: loading ? _jsx(CircularProgress, { size: 18, color: "success" }) : _jsx(PlayArrowOutlined, { color:
|
|
221
|
+
}, children: [smallButtons ? (_jsx(Tooltip, { title: t('route.actions.execute'), children: _jsx(IconButton, { size: "small", sx: { alignSelf: 'start' }, color: "success", onClick: execute, disabled: searchDisabled, children: loading ? (_jsx(CircularProgress, { size: 18, color: "success" })) : (_jsx(PlayArrowOutlined, { color: searchDisabled ? 'disabled' : 'success' })) }) })) : (_jsx(CustomButton, { size: "small", variant: "outlined", startIcon: loading ? (_jsx(CircularProgress, { size: 18, color: "success" })) : (_jsx(PlayArrowOutlined, { color: searchDisabled ? 'disabled' : 'success', sx: { '& path': { stroke: 'currentcolor', strokeWidth: '1px' } } })), color: "success", onClick: execute, disabled: searchDisabled, children: t('route.actions.execute') })), _jsxs(Stack, { direction: compactLayout ? 'column' : 'row', spacing: 1, children: [_jsx(Autocomplete, { value: type, onChange: (__, value) => setType(value), options: QUERY_TYPES, getOptionLabel: option => t(`route.advanced.query.${option}`), renderOption: (props, option) => (_jsx(ListItemText, { ...props, sx: { flexDirection: 'column', alignItems: 'start !important' }, primary: t(`route.advanced.query.${option}`), secondary: t(`route.advanced.query.${option}.description`) })), renderInput: params => (_jsx(TextField, { ...params, size: "small", label: t('route.advanced.type'), sx: { minWidth: '250px' } })), sx: [
|
|
194
222
|
!compactLayout && {
|
|
195
223
|
height: '100%',
|
|
196
224
|
'& .MuiFormControl-root': { height: '100%', '& > div': { height: '100%' } }
|
|
197
225
|
}
|
|
198
|
-
], slotProps: { paper: { sx: { minWidth: '600px' } } } }), _jsx(Card, { variant: "outlined", sx: { flex: 1, maxWidth: '350px', minWidth: '210px' }, children: _jsxs(Stack, { spacing: 0.5, sx: { px: 1, alignItems: 'start' }, children: [_jsxs(Typography, { variant: "caption", color: "text.secondary", sx: { whiteSpace: 'nowrap' }, children: [t('route.advanced.rows'), ": ", STEPS[rows]] }), _jsx(Slider, { size: "small", valueLabelDisplay: "off", value: rows, onChange: (_, value) => setRows(value), min: 0, max: 9, step: 1, marks: true, track: false, sx: { py: 0.5 } })] }) })] }), allFields ? (_jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: allFields, onChange: (__, checked) => setAllFields(checked) }), label: t('route.advanced.fields.all'), sx: { '& > span': { color: 'text.secondary' }, alignSelf: 'start' } })) : (_jsx(Autocomplete, { fullWidth: true, renderTags: values => values.length <= 3 ? (_jsx(Stack, { direction: "row", spacing: 0.5, children: values.map(_value => (_jsx(Chip, { size: "small", label: _value }, _value))) })) : (_jsx(Tooltip, { title: _jsx(Stack, { spacing: 1, children: values.map(_value => (_jsx("span", { children: _value }, _value))) }), children: _jsx(Chip, { size: "small", label: values.length }) })), multiple: true, size: "small", options: fieldOptions, value: fields, onChange: (__, values) => (values.length > 0 ? setFields(values) : setAllFields(true)), renderInput: params => _jsx(TextField, { ...params, label: t('route.advanced.fields') }), sx: { maxWidth: '500px', width: '20vw', minWidth: '200px', '& label': { zIndex: 1200 } }, onKeyDown: onKeyDown })), _jsx(FlexOne, {}), type === 'lucene' &&
|
|
199
|
-
(smallButtons ? (_jsx(Tooltip, { title: t('route.advanced.open'), children: _jsx(IconButton, { color: "primary", sx: { alignSelf: 'center' }, component: Link, disabled: !response, to: `/hits?query=${sanitizeMultilineLucene(query).replaceAll('\n', ' ').trim()}`, children: _jsx(OpenInNew, { fontSize: "small" }) }) })) : (_jsx(CustomButton, { size: "small", variant: "outlined", startIcon: _jsx(OpenInNew, {}), component: Link, disabled: !response, ...{ to: `/hits?query=${sanitizeMultilineLucene(query).replaceAll('\n', ' ').trim()}` }, children: t('route.advanced.open') }))), smallButtons ? (_jsx(Tooltip, { title: response ? t('route.advanced.create.rule') : t('route.advanced.create.rule.disabled'), children: _jsx(IconButton, { size: "small", sx: { alignSelf: 'center' }, color: "info", onClick: onCreateRule, disabled: !response, children: _jsx(SsidChart, {}) }) })) : (_jsx(CustomButton, { size: "small", variant: "outlined", color: "info", startIcon: _jsx(SsidChart, {}), onClick: onCreateRule, disabled: !response, ...{ to: `/hits?query=${sanitizeMultilineLucene(query).replaceAll('\n', ' ').trim()}` }, tooltip: !response && t('route.advanced.create.rule.disabled'), children: t('route.advanced.create.rule') }))] }), _jsxs(Box, { width: "100%", height: "calc(100vh - 112px)", sx: { position: 'relative', overflow: 'hidden', borderTop: `thin solid ${theme.palette.divider}` }, children: [_jsx(Box, { sx: {
|
|
226
|
+
], slotProps: { paper: { sx: { minWidth: '600px' } } } }), _jsx(Card, { variant: "outlined", sx: { flex: 1, maxWidth: '350px', minWidth: '210px' }, children: _jsxs(Stack, { spacing: 0.5, sx: { px: 1, alignItems: 'start' }, children: [_jsxs(Typography, { variant: "caption", color: "text.secondary", sx: { whiteSpace: 'nowrap' }, children: [t('route.advanced.rows'), ": ", STEPS[rows]] }), _jsx(Slider, { size: "small", valueLabelDisplay: "off", value: rows, onChange: (_, value) => setRows(value), min: 0, max: 9, step: 1, marks: true, track: false, sx: { py: 0.5 } })] }) })] }), type === 'lucene' && (_jsx(Autocomplete, { size: "small", getOptionLabel: opt => t(`route.advanced.query.type.${opt}`), options: LUCENE_QUERY_OPTIONS, value: queryType, onChange: (_event, value) => setQueryType(value), renderInput: params => (_jsx(TextField, { ...params, label: t('route.advanced.query.type'), sx: { minWidth: '200px' } })) })), queryType === 'groupby' && (_jsx(Autocomplete, { size: "small", options: fieldOptions, value: groupByField, onChange: (__, value) => setGroupByField(value), renderInput: params => _jsx(TextField, { ...params, label: t('route.advanced.pivot.field') }), sx: { minWidth: '200px', '& label': { zIndex: 1200 } }, onKeyDown: onKeyDown, PopperComponent: CustomPopper })), allFields && queryType !== 'facet' ? (_jsx(FormControlLabel, { control: _jsx(Checkbox, { size: "small", checked: allFields, onChange: (__, checked) => setAllFields(checked) }), label: t('route.advanced.fields.all'), sx: { '& > span': { color: 'text.secondary' }, alignSelf: 'start' } })) : (_jsx(Autocomplete, { fullWidth: true, renderTags: values => values.length <= 3 ? (_jsx(Stack, { direction: "row", spacing: 0.5, children: values.map(_value => (_jsx(Chip, { size: "small", label: _value }, _value))) })) : (_jsx(Tooltip, { title: _jsx(Stack, { spacing: 1, children: values.map(_value => (_jsx("span", { children: _value }, _value))) }), children: _jsx(Chip, { size: "small", label: values.length }) })), multiple: true, size: "small", options: fieldOptions, value: fields, onChange: (__, values) => (values.length > 0 ? setFields(values) : setAllFields(true)), renderInput: params => _jsx(TextField, { ...params, label: t('route.advanced.fields') }), sx: { maxWidth: '500px', width: '20vw', minWidth: '200px', '& label': { zIndex: 1200 } }, onKeyDown: onKeyDown, PopperComponent: CustomPopper })), _jsx(FlexOne, {}), type === 'lucene' &&
|
|
227
|
+
(smallButtons ? (_jsx(Tooltip, { title: t('route.advanced.open'), children: _jsx(IconButton, { color: "primary", sx: { alignSelf: 'center' }, component: Link, disabled: !response, to: `/hits?query=${sanitizeMultilineLucene(query).replaceAll('\n', ' ').trim()}`, children: _jsx(OpenInNew, { fontSize: "small" }) }) })) : (_jsx(CustomButton, { size: "small", variant: "outlined", startIcon: _jsx(OpenInNew, {}), component: Link, disabled: !response, ...{ to: `/hits?query=${sanitizeMultilineLucene(query).replaceAll('\n', ' ').trim()}` }, children: t('route.advanced.open') }))), smallButtons ? (_jsx(Tooltip, { title: response ? t('route.advanced.create.rule') : t('route.advanced.create.rule.disabled'), children: _jsx(IconButton, { size: "small", sx: { alignSelf: 'center' }, color: "info", onClick: onCreateRule, disabled: !response, children: _jsx(SsidChart, {}) }) })) : (_jsx(CustomButton, { size: "small", variant: "outlined", color: "info", startIcon: _jsx(SsidChart, {}), onClick: onCreateRule, disabled: !response, ...{ to: `/hits?query=${sanitizeMultilineLucene(query).replaceAll('\n', ' ').trim()}` }, tooltip: !response && t('route.advanced.create.rule.disabled'), children: t('route.advanced.create.rule') }))] }), _jsxs(Box, { width: "100%", height: "calc(100vh - 112px)", sx: { position: 'relative', overflow: 'hidden', borderTop: `thin solid ${theme.palette.divider}` }, children: [_jsx(Box, { sx: {
|
|
228
|
+
position: 'absolute',
|
|
229
|
+
top: 0,
|
|
230
|
+
left: 0,
|
|
231
|
+
bottom: 0,
|
|
232
|
+
right: `calc(50% + 7px - ${x}px)`,
|
|
233
|
+
pt: 1,
|
|
234
|
+
display: 'flex'
|
|
235
|
+
}, children: _jsx(QueryEditor, { query: query, setQuery: setQuery, language: type, height: "100%" }) }), _jsx(Box, { sx: {
|
|
200
236
|
position: 'absolute',
|
|
201
237
|
top: 0,
|
|
202
238
|
bottom: 0,
|
|
@@ -60,6 +60,7 @@ const TOC_CONFIGS = [
|
|
|
60
60
|
id: 'fields',
|
|
61
61
|
subItems: [{ id: 'fields.legend' }, { id: 'fields.idx_hit' }, { id: 'fields.idx_user', is_admin: true }]
|
|
62
62
|
},
|
|
63
|
+
{ id: 'text vs keywords' },
|
|
63
64
|
{ id: 'wildcard' },
|
|
64
65
|
{
|
|
65
66
|
id: 'regex',
|
|
@@ -108,6 +109,6 @@ const SearchDocumentation = () => {
|
|
|
108
109
|
return (_jsx(PageCenterRoot, { margin: 4, width: "100%", maxWidth: "1750px", textAlign: "left", children: _jsxs(Stack, { sx: { flexDirection: useHorizontal ? 'column' : 'row', '& h1': { mt: 0 } }, children: [_jsx(HelpTabs, { value: location.hash || '#overview', children: TOC_CONFIGS.flatMap(value => [
|
|
109
110
|
_jsx(Tab, { href: `#${value.id}`, label: _jsx(Typography, { variant: "caption", children: t(value.id) }), value: `#${value.id}` }, value.id),
|
|
110
111
|
...(!useHorizontal && value.subItems ? value.subItems : []).map(subItem => (!subItem.is_admin || user.is_admin) && (_jsx(Tab, { sx: { '& > span': { pl: 1 } }, href: `#${subItem.id}`, label: _jsx(Typography, { variant: "caption", children: t(subItem.id) }), value: `#${subItem.id}` }, subItem.id)))
|
|
111
|
-
]) }), _jsxs(Box, { children: [_jsx(Typography, { variant: "h4", children: t('title') }), _jsx(Typography, { variant: "subtitle2", children: t('subtitle') }), _jsxs(Paragraph, { id: "overview", children: [_jsx(Typography, { variant: "h5", children: t('overview') }), _jsx(_Fragment, { children: t('overview.text') })] }), _jsxs(Paragraph, { id: "basic", children: [_jsx(Typography, { variant: "h5", children: t('basic') }), _jsx(_Fragment, { children: t('basic.text') }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('exemples') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('basic.ex1') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('basic.ex2') })] }), _jsxs(Paragraph, { id: "fields", children: [_jsx(Typography, { variant: "h5", children: t('fields') }), _jsx(_Fragment, { children: t('fields.text') }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('exemples') }), _jsxs("ul", { className: "multipleEx", children: [_jsxs("li", { children: [t('fields.ex1.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex1') })] }), _jsxs("li", { children: [t('fields.ex2.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex2') })] }), _jsxs("li", { children: [t('fields.ex3.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex3') })] }), _jsxs("li", { children: [t('fields.ex4.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex4') })] }), _jsxs("li", { children: [t('fields.ex5.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex5') })] })] }), _jsx("div", { className: "padded", children: t('fields.text2') }), _jsxs("div", { children: [_jsx("b", { children: _jsx("i", { children: `${t('fields.important')}:` }) }), ` ${t('fields.important.text')}`] })] }), _jsxs(Paragraph, { id: "fields.legend", children: [_jsx(Typography, { variant: "h6", children: t('fields.legend') }), _jsx(_Fragment, { children: t('fields.legend.text') }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("b", { children: 'text' }), `: ${t('fields.legend.text_field')}`] }), _jsxs("li", { children: [_jsx("b", { children: 'ip' }), `: ${t('fields.legend.ip_field')}`] }), _jsxs("li", { children: [_jsx(SquareChip, { color: "primary", size: "small", label: t('fields.att.default') }), ":", ' ', t('fields.legend.default')] }), _jsxs("li", { children: [_jsx(SquareChip, { color: "warning", size: "small", label: t('fields.att.list') }), ": ", t('fields.legend.list')] }), _jsxs("li", { children: [_jsx(SquareChip, { color: "info", size: "small", label: t('fields.att.stored') }), ": ", t('fields.legend.stored')] })] })] }), Object.keys(indexes).map(idx => (_jsxs(Accordion, { sx: { mb: 2, backgroundColor: 'background.paper' }, children: [_jsx(AccordionSummary, { expandIcon: _jsx(ExpandMore, {}), children: _jsx(Typography, { variant: "h6", children: t(`fields.idx_${idx}`) }) }), _jsx(AccordionDetails, { sx: { px: '0 !important', mt: -6 }, children: _jsx(Paragraph, { id: `fields.idx_${idx}`, children: _jsx(TableRoot, { children: _jsxs(Table, { size: "small", children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { children: t('fields.table.name') }), _jsx(TableCell, { children: t('fields.table.type') }), _jsx(TableCell, { children: t('fields.table.attrib') })] }) }), _jsx(TableBody, { children: Object.keys(indexes[idx]).map(field => indexes[idx][field].indexed && (_jsxs(TableRow, { hover: true, children: [_jsx(TableCell, { width: "50%", style: { wordBreak: 'break-word' }, children: field }), _jsx(TableCell, { children: indexes[idx][field].type }), _jsxs(TableCell, { children: [indexes[idx][field].stored && (_jsx(SquareChip, { color: "info", size: "small", label: t('fields.att.stored') })), indexes[idx][field].list && (_jsx(SquareChip, { color: "warning", size: "small", label: t('fields.att.list') })), indexes[idx][field].default && (_jsx(SquareChip, { color: "primary", size: "small", label: t('fields.att.default') }))] })] }, field))) })] }) }) }) })] }, idx))), _jsxs(Paragraph, { id: "wildcard", children: [_jsx(Typography, { variant: "h5", children: t('wildcard') }), _jsx("div", { className: "padded", children: t('wildcard.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('wildcard.ex') }), _jsx("div", { className: "padded", children: t('wildcard.text2') }), _jsxs("div", { children: [_jsx("b", { children: _jsx("i", { children: `${t('wildcard.note')}:` }) }), ` ${t('wildcard.note.text')}`] })] }), _jsxs(Paragraph, { id: "regex", children: [_jsx(Typography, { variant: "h5", children: t('regex') }), _jsx("div", { className: "padded", children: t('regex.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.ex') }), _jsx("div", { children: _jsx("b", { children: _jsx("i", { children: t('regex.warning') }) }) }), _jsx("div", { className: "padded", children: t('regex.warning.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.warning.ex') }), _jsx("div", { className: "padded", children: t('regex.warning.follow') })] }), _jsxs(Paragraph, { id: "regex.anchoring", children: [_jsx(Typography, { variant: "h6", children: t('regex.anchoring') }), _jsx("div", { className: "padded", children: t('regex.anchoring.text') }), _jsx("div", { className: "padded", children: t('regex.anchoring.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.anchoring.ex') })] }), _jsxs(Paragraph, { id: "regex.chars", children: [_jsx(Typography, { variant: "h6", children: t('regex.chars') }), _jsx("div", { className: "padded", children: t('regex.chars.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.chars.ex') }), _jsx("div", { className: "padded", children: t('regex.chars.text2') }), _jsx("div", { className: "padded", children: t('regex.chars.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.chars.ex2') })] }), _jsxs(Paragraph, { id: "regex.any", children: [_jsx(Typography, { variant: "h6", children: t('regex.any') }), _jsx("div", { className: "padded", children: t('regex.any.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.any.ex') })] }), _jsxs(Paragraph, { id: "regex.oneplus", children: [_jsx(Typography, { variant: "h6", children: t('regex.oneplus') }), _jsx("div", { className: "padded", children: t('regex.oneplus.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.oneplus.ex') })] }), _jsxs(Paragraph, { id: "regex.zeroplus", children: [_jsx(Typography, { variant: "h6", children: t('regex.zeroplus') }), _jsx("div", { className: "padded", children: t('regex.zeroplus.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.zeroplus.ex') })] }), _jsxs(Paragraph, { id: "regex.zeroone", children: [_jsx(Typography, { variant: "h6", children: t('regex.zeroone') }), _jsx("div", { className: "padded", children: t('regex.zeroone.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.zeroone.ex') })] }), _jsxs(Paragraph, { id: "regex.minmax", children: [_jsx(Typography, { variant: "h6", children: t('regex.minmax') }), _jsx("div", { className: "padded", children: t('regex.minmax.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.minmax.ex') }), _jsx("div", { className: "padded", children: t('regex.minmax.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.minmax.ex2') })] }), _jsxs(Paragraph, { id: "regex.grouping", children: [_jsx(Typography, { variant: "h6", children: t('regex.grouping') }), _jsx("div", { className: "padded", children: t('regex.grouping.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.grouping.ex') })] }), _jsxs(Paragraph, { id: "regex.alternation", children: [_jsx(Typography, { variant: "h6", children: t('regex.alternation') }), _jsx("div", { className: "padded", children: t('regex.alternation.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.alternation.ex') })] }), _jsxs(Paragraph, { id: "regex.class", children: [_jsx(Typography, { variant: "h6", children: t('regex.class') }), _jsx("div", { className: "padded", children: t('regex.class.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.class.ex') }), _jsx("div", { className: "padded", children: t('regex.class.text2') }), _jsx("div", { className: "padded", children: t('regex.class.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.class.ex2') })] }), _jsxs(Paragraph, { id: "fuzziness", children: [_jsx(Typography, { variant: "h5", children: t('fuzziness') }), _jsx("div", { className: "padded", children: t('fuzziness.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('fuzziness.ex') }), _jsx("div", { className: "padded", children: t('fuzziness.text2') }), _jsx("div", { className: "padded", children: t('fuzziness.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('fuzziness.ex2') })] }), _jsxs(Paragraph, { id: "proximity", children: [_jsx(Typography, { variant: "h5", children: t('proximity') }), _jsx("div", { className: "padded", children: t('proximity.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('proximity.ex') }), _jsx("div", { className: "padded", children: t('proximity.text2') })] }), _jsxs(Paragraph, { id: "ranges", children: [_jsx(Typography, { variant: "h5", children: t('ranges') }), _jsx(_Fragment, { children: t('ranges.text') }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('exemples') }), _jsxs("ul", { className: "multipleEx", children: [_jsxs("li", { children: [t('ranges.ex1.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex1') })] }), _jsxs("li", { children: [t('ranges.ex2.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex2') })] }), _jsxs("li", { children: [t('ranges.ex3.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex3') })] }), _jsxs("li", { children: [t('ranges.ex4.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex4') })] }), _jsxs("li", { children: [t('ranges.ex5.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex5') })] }), _jsxs("li", { children: [t('ranges.ex6.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex6') })] }), _jsxs("li", { children: [t('ranges.ex7.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex7') })] })] }), _jsx("div", { className: "padded", children: t('ranges.text2') }), _jsx("ul", { className: "multipleEx", children: _jsxs("li", { children: [t('ranges.ex8.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex8') })] }) }), _jsx("div", { className: "padded", children: t('ranges.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex9') }), _jsx("div", { className: "padded", children: t('ranges.text4') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex10') })] }), _jsxs(Paragraph, { id: "ranges.datemath", children: [_jsx(Typography, { variant: "h6", children: t('ranges.datemath') }), _jsx("div", { className: "padded", children: t('ranges.datemath.text') }), _jsxs("ul", { children: [_jsx("li", { children: t('ranges.datemath.list1') }), _jsx("li", { children: t('ranges.datemath.list2') }), _jsx("li", { children: t('ranges.datemath.list3') })] }), _jsx("div", { className: "padded", children: t('ranges.datemath.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.datemath.ex1') }), _jsx("div", { className: "padded", children: t('ranges.datemath.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.datemath.ex2') })] }), _jsxs(Paragraph, { id: "operator", children: [_jsx(Typography, { variant: "h5", children: t('operator') }), _jsx("div", { className: "padded", children: t('operator.text') }), _jsx("div", { className: "padded", children: t('operator.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('operator.ex1') }), _jsx("div", { className: "padded", children: t('operator.text3') }), _jsxs("ul", { children: [_jsx("li", { children: t('operator.list1') }), _jsx("li", { children: t('operator.list2') }), _jsx("li", { children: t('operator.list3') })] }), _jsx("div", { className: "padded", children: t('operator.text4') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('operator.ex2') }), _jsx("div", { className: "padded", children: t('operator.text5') })] }), _jsxs(Paragraph, { id: "grouping", children: [_jsx(Typography, { variant: "h5", children: t('grouping') }), _jsx("div", { className: "padded", children: t('grouping.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('grouping.ex') }), _jsx("div", { className: "padded", children: t('grouping.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('grouping.ex2') })] }), _jsxs(Paragraph, { id: "reserved", children: [_jsx(Typography, { variant: "h5", children: t('reserved') }), _jsx("div", { className: "padded", children: t('reserved.text') }), _jsx("div", { className: "padded", children: t('reserved.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('reserved.ex') }), _jsx("div", { className: "padded", children: t('reserved.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('reserved.ex2') }), _jsx("div", { className: "padded", children: t('reserved.text4') }), _jsxs("div", { className: "padded", children: [_jsx("b", { children: _jsx("i", { children: t('reserved.note') }) }), `: ${t('reserved.text5')}`] })] })] })] }) }));
|
|
112
|
+
]) }), _jsxs(Box, { children: [_jsx(Typography, { variant: "h4", children: t('title') }), _jsx(Typography, { variant: "subtitle2", children: t('subtitle') }), _jsxs(Paragraph, { id: "overview", children: [_jsx(Typography, { variant: "h5", children: t('overview') }), _jsx(_Fragment, { children: t('overview.text') })] }), _jsxs(Paragraph, { id: "basic", children: [_jsx(Typography, { variant: "h5", children: t('basic') }), _jsx(_Fragment, { children: t('basic.text') }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('exemples') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('basic.ex1') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('basic.ex2') })] }), _jsxs(Paragraph, { id: "fields", children: [_jsx(Typography, { variant: "h5", children: t('fields') }), _jsx(_Fragment, { children: t('fields.text') }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('exemples') }), _jsxs("ul", { className: "multipleEx", children: [_jsxs("li", { children: [t('fields.ex1.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex1') })] }), _jsxs("li", { children: [t('fields.ex2.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex2') })] }), _jsxs("li", { children: [t('fields.ex3.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex3') })] }), _jsxs("li", { children: [t('fields.ex4.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex4') })] }), _jsxs("li", { children: [t('fields.ex5.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('fields.ex5') })] })] }), _jsx("div", { className: "padded", children: t('fields.text2') }), _jsxs("div", { children: [_jsx("b", { children: _jsx("i", { children: `${t('fields.important')}:` }) }), ` ${t('fields.important.text')}`] })] }), _jsxs(Paragraph, { id: "text vs keywords", children: [_jsx(Typography, { variant: "h5", children: t('fields.textvskeywords') }), _jsx(_Fragment, { children: t('fields.textvskeywords.description') }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('fields.textvskeywords.keywordfamily') }), _jsxs("ul", { className: "multipleEx", children: [_jsxs("li", { children: [_jsx(Card, { variant: "outlined", className: "pre", children: t('fields.textvskeywords.wildcard') }), t('fields.textvskeywords.wildcard.description')] }), _jsxs("li", { children: [_jsx(Card, { variant: "outlined", className: "pre", children: t('fields.textvskeywords.keyword') }), t('fields.textvskeywords.keyword.description')] }), _jsxs("li", { children: [_jsx(Card, { variant: "outlined", className: "pre", children: t('fields.textvskeywords.constantkeyword') }), t('fields.textvskeywords.constantkeyword.description')] })] }), _jsxs(Typography, { variant: "subtitle2", className: "padded", children: [t('fields.textvskeywords.keyword.more.info'), ' ', _jsx("a", { href: "https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/keyword", style: { color: 'info', textDecoration: 'underline' }, children: "https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/keyword" })] }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('fields.textvskeywords.textfamily') }), _jsxs("ul", { className: "multipleEx", children: [_jsxs("li", { children: [_jsx(Card, { variant: "outlined", className: "pre", children: t('fields.textvskeywords.text') }), t('fields.textvskeywords.text.description')] }), _jsxs("li", { children: [_jsx(Card, { variant: "outlined", className: "pre", children: t('fields.textvskeywords.matchonlytext') }), t('fields.textvskeywords.matchonlytext.description')] })] }), _jsxs(Typography, { variant: "subtitle2", className: "padded", children: [t('fields.textvskeywords.text.more.info'), ' ', _jsx("a", { href: "https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/text", style: { color: 'info', textDecoration: 'underline' }, children: "https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/text" })] }), _jsxs(Typography, { variant: "subtitle2", className: "padded", children: [t('fields.textvskeywords.text.keyword.compare'), ' ', _jsx("a", { href: "https://www.elastic.co/blog/strings-are-dead-long-live-strings", style: { color: 'info', textDecoration: 'underline' }, children: "https://www.elastic.co/blog/strings-are-dead-long-live-strings" })] }), _jsx("div", {})] }), _jsxs(Paragraph, { id: "fields.legend", children: [_jsx(Typography, { variant: "h6", children: t('fields.legend') }), _jsx(_Fragment, { children: t('fields.legend.text') }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("b", { children: 'text' }), `: ${t('fields.legend.text_field')}`] }), _jsxs("li", { children: [_jsx("b", { children: 'ip' }), `: ${t('fields.legend.ip_field')}`] }), _jsxs("li", { children: [_jsx(SquareChip, { color: "primary", size: "small", label: t('fields.att.default') }), ":", ' ', t('fields.legend.default')] }), _jsxs("li", { children: [_jsx(SquareChip, { color: "warning", size: "small", label: t('fields.att.list') }), ": ", t('fields.legend.list')] }), _jsxs("li", { children: [_jsx(SquareChip, { color: "info", size: "small", label: t('fields.att.stored') }), ": ", t('fields.legend.stored')] })] })] }), Object.keys(indexes).map(idx => (_jsxs(Accordion, { sx: { mb: 2, backgroundColor: 'background.paper' }, children: [_jsx(AccordionSummary, { expandIcon: _jsx(ExpandMore, {}), children: _jsx(Typography, { variant: "h6", children: t(`fields.idx_${idx}`) }) }), _jsx(AccordionDetails, { sx: { px: '0 !important', mt: -6 }, children: _jsx(Paragraph, { id: `fields.idx_${idx}`, children: _jsx(TableRoot, { children: _jsxs(Table, { size: "small", children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { children: t('fields.table.name') }), _jsx(TableCell, { children: t('fields.table.type') }), _jsx(TableCell, { children: t('fields.table.attrib') })] }) }), _jsx(TableBody, { children: Object.keys(indexes[idx]).map(field => indexes[idx][field].indexed && (_jsxs(TableRow, { hover: true, children: [_jsx(TableCell, { width: "50%", style: { wordBreak: 'break-word' }, children: field }), _jsx(TableCell, { children: indexes[idx][field].type }), _jsxs(TableCell, { children: [indexes[idx][field].stored && (_jsx(SquareChip, { color: "info", size: "small", label: t('fields.att.stored') })), indexes[idx][field].list && (_jsx(SquareChip, { color: "warning", size: "small", label: t('fields.att.list') })), indexes[idx][field].default && (_jsx(SquareChip, { color: "primary", size: "small", label: t('fields.att.default') }))] })] }, field))) })] }) }) }) })] }, idx))), _jsxs(Paragraph, { id: "wildcard", children: [_jsx(Typography, { variant: "h5", children: t('wildcard') }), _jsx("div", { className: "padded", children: t('wildcard.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('wildcard.ex') }), _jsx("div", { className: "padded", children: t('wildcard.text2') }), _jsxs("div", { children: [_jsx("b", { children: _jsx("i", { children: `${t('wildcard.note')}:` }) }), ` ${t('wildcard.note.text')}`] })] }), _jsxs(Paragraph, { id: "regex", children: [_jsx(Typography, { variant: "h5", children: t('regex') }), _jsx("div", { className: "padded", children: t('regex.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.ex') }), _jsx("div", { children: _jsx("b", { children: _jsx("i", { children: t('regex.warning') }) }) }), _jsx("div", { className: "padded", children: t('regex.warning.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.warning.ex') }), _jsx("div", { className: "padded", children: t('regex.warning.follow') })] }), _jsxs(Paragraph, { id: "regex.anchoring", children: [_jsx(Typography, { variant: "h6", children: t('regex.anchoring') }), _jsx("div", { className: "padded", children: t('regex.anchoring.text') }), _jsx("div", { className: "padded", children: t('regex.anchoring.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.anchoring.ex') })] }), _jsxs(Paragraph, { id: "regex.chars", children: [_jsx(Typography, { variant: "h6", children: t('regex.chars') }), _jsx("div", { className: "padded", children: t('regex.chars.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.chars.ex') }), _jsx("div", { className: "padded", children: t('regex.chars.text2') }), _jsx("div", { className: "padded", children: t('regex.chars.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.chars.ex2') })] }), _jsxs(Paragraph, { id: "regex.any", children: [_jsx(Typography, { variant: "h6", children: t('regex.any') }), _jsx("div", { className: "padded", children: t('regex.any.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.any.ex') })] }), _jsxs(Paragraph, { id: "regex.oneplus", children: [_jsx(Typography, { variant: "h6", children: t('regex.oneplus') }), _jsx("div", { className: "padded", children: t('regex.oneplus.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.oneplus.ex') })] }), _jsxs(Paragraph, { id: "regex.zeroplus", children: [_jsx(Typography, { variant: "h6", children: t('regex.zeroplus') }), _jsx("div", { className: "padded", children: t('regex.zeroplus.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.zeroplus.ex') })] }), _jsxs(Paragraph, { id: "regex.zeroone", children: [_jsx(Typography, { variant: "h6", children: t('regex.zeroone') }), _jsx("div", { className: "padded", children: t('regex.zeroone.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.zeroone.ex') })] }), _jsxs(Paragraph, { id: "regex.minmax", children: [_jsx(Typography, { variant: "h6", children: t('regex.minmax') }), _jsx("div", { className: "padded", children: t('regex.minmax.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.minmax.ex') }), _jsx("div", { className: "padded", children: t('regex.minmax.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.minmax.ex2') })] }), _jsxs(Paragraph, { id: "regex.grouping", children: [_jsx(Typography, { variant: "h6", children: t('regex.grouping') }), _jsx("div", { className: "padded", children: t('regex.grouping.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.grouping.ex') })] }), _jsxs(Paragraph, { id: "regex.alternation", children: [_jsx(Typography, { variant: "h6", children: t('regex.alternation') }), _jsx("div", { className: "padded", children: t('regex.alternation.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.alternation.ex') })] }), _jsxs(Paragraph, { id: "regex.class", children: [_jsx(Typography, { variant: "h6", children: t('regex.class') }), _jsx("div", { className: "padded", children: t('regex.class.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.class.ex') }), _jsx("div", { className: "padded", children: t('regex.class.text2') }), _jsx("div", { className: "padded", children: t('regex.class.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('regex.class.ex2') })] }), _jsxs(Paragraph, { id: "fuzziness", children: [_jsx(Typography, { variant: "h5", children: t('fuzziness') }), _jsx("div", { className: "padded", children: t('fuzziness.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('fuzziness.ex') }), _jsx("div", { className: "padded", children: t('fuzziness.text2') }), _jsx("div", { className: "padded", children: t('fuzziness.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('fuzziness.ex2') })] }), _jsxs(Paragraph, { id: "proximity", children: [_jsx(Typography, { variant: "h5", children: t('proximity') }), _jsx("div", { className: "padded", children: t('proximity.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('proximity.ex') }), _jsx("div", { className: "padded", children: t('proximity.text2') })] }), _jsxs(Paragraph, { id: "ranges", children: [_jsx(Typography, { variant: "h5", children: t('ranges') }), _jsx(_Fragment, { children: t('ranges.text') }), _jsx(Typography, { variant: "subtitle2", className: "padded", children: t('exemples') }), _jsxs("ul", { className: "multipleEx", children: [_jsxs("li", { children: [t('ranges.ex1.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex1') })] }), _jsxs("li", { children: [t('ranges.ex2.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex2') })] }), _jsxs("li", { children: [t('ranges.ex3.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex3') })] }), _jsxs("li", { children: [t('ranges.ex4.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex4') })] }), _jsxs("li", { children: [t('ranges.ex5.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex5') })] }), _jsxs("li", { children: [t('ranges.ex6.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex6') })] }), _jsxs("li", { children: [t('ranges.ex7.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex7') })] })] }), _jsx("div", { className: "padded", children: t('ranges.text2') }), _jsx("ul", { className: "multipleEx", children: _jsxs("li", { children: [t('ranges.ex8.title'), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex8') })] }) }), _jsx("div", { className: "padded", children: t('ranges.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex9') }), _jsx("div", { className: "padded", children: t('ranges.text4') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.ex10') })] }), _jsxs(Paragraph, { id: "ranges.datemath", children: [_jsx(Typography, { variant: "h6", children: t('ranges.datemath') }), _jsx("div", { className: "padded", children: t('ranges.datemath.text') }), _jsxs("ul", { children: [_jsx("li", { children: t('ranges.datemath.list1') }), _jsx("li", { children: t('ranges.datemath.list2') }), _jsx("li", { children: t('ranges.datemath.list3') })] }), _jsx("div", { className: "padded", children: t('ranges.datemath.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.datemath.ex1') }), _jsx("div", { className: "padded", children: t('ranges.datemath.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('ranges.datemath.ex2') })] }), _jsxs(Paragraph, { id: "operator", children: [_jsx(Typography, { variant: "h5", children: t('operator') }), _jsx("div", { className: "padded", children: t('operator.text') }), _jsx("div", { className: "padded", children: t('operator.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('operator.ex1') }), _jsx("div", { className: "padded", children: t('operator.text3') }), _jsxs("ul", { children: [_jsx("li", { children: t('operator.list1') }), _jsx("li", { children: t('operator.list2') }), _jsx("li", { children: t('operator.list3') })] }), _jsx("div", { className: "padded", children: t('operator.text4') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('operator.ex2') }), _jsx("div", { className: "padded", children: t('operator.text5') })] }), _jsxs(Paragraph, { id: "grouping", children: [_jsx(Typography, { variant: "h5", children: t('grouping') }), _jsx("div", { className: "padded", children: t('grouping.text') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('grouping.ex') }), _jsx("div", { className: "padded", children: t('grouping.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('grouping.ex2') })] }), _jsxs(Paragraph, { id: "reserved", children: [_jsx(Typography, { variant: "h5", children: t('reserved') }), _jsx("div", { className: "padded", children: t('reserved.text') }), _jsx("div", { className: "padded", children: t('reserved.text2') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('reserved.ex') }), _jsx("div", { className: "padded", children: t('reserved.text3') }), _jsx(Card, { variant: "outlined", className: "pre", children: t('reserved.ex2') }), _jsx("div", { className: "padded", children: t('reserved.text4') }), _jsxs("div", { className: "padded", children: [_jsx("b", { children: _jsx("i", { children: t('reserved.note') }) }), `: ${t('reserved.text5')}`] })] })] })] }) }));
|
|
112
113
|
};
|
|
113
114
|
export default SearchDocumentation;
|
|
@@ -26,6 +26,23 @@
|
|
|
26
26
|
"fields.idx_view": "View index",
|
|
27
27
|
"fields.important": "Important",
|
|
28
28
|
"fields.important.text": "When using the search engine in the UI, your search query is performed on all these indexes at the same time unless you explicitly specify which index you want to target.",
|
|
29
|
+
"fields.textvskeywords": "Text vs Keywords",
|
|
30
|
+
"fields.textvskeywords.description": "The text field and the keyword field in Howler have differences which grant them their own use cases. These differences are shown as follows:",
|
|
31
|
+
"fields.textvskeywords.keywordfamily": "The keyword family is optimized for fields that represent individual data and includes the following field types:",
|
|
32
|
+
"fields.textvskeywords.wildcard": "wildcard",
|
|
33
|
+
"fields.textvskeywords.wildcard.description": "The wildcard type is optimized for fields with large values or high cardinality. This is the case for most telemetry fields.",
|
|
34
|
+
"fields.textvskeywords.keyword": "keyword",
|
|
35
|
+
"fields.textvskeywords.keyword.description": "Used for structured content with defined values, such as Howler specific fields. These fields do not support wildcard searches.",
|
|
36
|
+
"fields.textvskeywords.constantkeyword": "constant_keyword",
|
|
37
|
+
"fields.textvskeywords.constantkeyword.description": "For keyword fields that always contain the same value. This type should seldom be necessary.",
|
|
38
|
+
"fields.textvskeywords.keyword.more.info": "For more information regarding the Keyword field please checkout the official Elasticsearch documentation:",
|
|
39
|
+
"fields.textvskeywords.textfamily": "The Text family is optimized for searching unstructured human-readable content and includes the following field types:",
|
|
40
|
+
"fields.textvskeywords.text": "text",
|
|
41
|
+
"fields.textvskeywords.text.description": "Traditional field type for full-text content such as the body of an email or document.",
|
|
42
|
+
"fields.textvskeywords.matchonlytext": "match_only_text",
|
|
43
|
+
"fields.textvskeywords.matchonlytext.description": "A space-optimized variant of text that disables scoring and performs slower on queries that need positions. It is best suited for indexing log messages.",
|
|
44
|
+
"fields.textvskeywords.text.more.info": "For more information regarding the Text field please checkout the official Elasticsearch documentation:",
|
|
45
|
+
"fields.textvskeywords.text.keyword.compare": "To get a full list of the different use cases for both Keyword and Text fields, please checkout:",
|
|
29
46
|
"fields.legend": "Legend",
|
|
30
47
|
"fields.legend.default": "Queried when no fields are specified",
|
|
31
48
|
"fields.legend.ip_field": "Can be queried using CIDR notation",
|
|
@@ -431,8 +431,13 @@
|
|
|
431
431
|
"route.advanced.query.yaml": "Sigma Rule",
|
|
432
432
|
"route.advanced.query.yaml.description": "Sigma is a generic and open signature format that allows you to describe relevant log events in a straightforward manner. The rule format is very flexible, easy to write and applicable to any type of log file.",
|
|
433
433
|
"route.advanced.result.title": "Howler Advanced Search",
|
|
434
|
-
"route.advanced.result.description": "
|
|
435
|
-
"route.advanced.type": "Rule Type",
|
|
434
|
+
"route.advanced.result.description": "Execute a query to show results here.",
|
|
435
|
+
"route.advanced.rule.type": "Rule Type",
|
|
436
|
+
"route.advanced.pivot.field": "Group By Field",
|
|
437
|
+
"route.advanced.query.type": "Query Type",
|
|
438
|
+
"route.advanced.query.type.default": "Default",
|
|
439
|
+
"route.advanced.query.type.facet": "Facet",
|
|
440
|
+
"route.advanced.query.type.groupby": "Group By",
|
|
436
441
|
"route.analytics": "Analytics",
|
|
437
442
|
"route.analytics.deleted": "Deleted Rule!",
|
|
438
443
|
"route.analytics.detections": "Detections:",
|
|
@@ -26,6 +26,23 @@
|
|
|
26
26
|
"fields.idx_view": "Index des vues",
|
|
27
27
|
"fields.important": "Important",
|
|
28
28
|
"fields.important.text": "Lorsque vous utilisez le moteur de recherche dans l'interface utilisateur, votre requête de recherche est effectuée sur tous ces index en même temps, sauf si vous spécifiez explicitement l'index que vous souhaitez cibler.",
|
|
29
|
+
"fields.textvskeywords": "Texte vs mots-clés",
|
|
30
|
+
"fields.textvskeywords.description": "Le champ de texte et le champ de mot-clé dans Howler présentent des différences qui leur confèrent leurs propres cas d'utilisation. Ces différences sont présentées comme suit :",
|
|
31
|
+
"fields.textvskeywords.keywordfamily": "La famille de mots-clés est optimisée pour les champs qui représentent des données individuelles et comprend les types de champs suivants :",
|
|
32
|
+
"fields.textvskeywords.wildcard": "wildcard",
|
|
33
|
+
"fields.textvskeywords.wildcard.description": "Le type générique est optimisé pour les champs contenant des valeurs importantes ou présentant une cardinalité élevée. C'est le cas de la plupart des champs de télémétrie.",
|
|
34
|
+
"fields.textvskeywords.keyword": "keyword",
|
|
35
|
+
"fields.textvskeywords.keyword.description": "Utilisé pour le contenu structuré avec des valeurs définies, telles que les champs spécifiques à Howler. Ces champs ne prennent pas en charge les recherches avec caractères génériques.",
|
|
36
|
+
"fields.textvskeywords.constantkeyword": "constant_keyword",
|
|
37
|
+
"fields.textvskeywords.constantkeyword.description": "Pour les champs de mots-clés qui contiennent toujours la même valeur. Ce type devrait rarement être nécessaire.",
|
|
38
|
+
"fields.textvskeywords.keyword.more.info": "Pour plus d'informations sur le champ Keyword, veuillez consulter la documentation officielle d'Elasticsearch :",
|
|
39
|
+
"fields.textvskeywords.textfamily": "La famille Text est optimisée pour la recherche de contenu non structuré lisible par l'homme et comprend les types de champs suivants :",
|
|
40
|
+
"fields.textvskeywords.text": "text",
|
|
41
|
+
"fields.textvskeywords.text.description": "Type de champ traditionnel pour le contenu en texte intégral, tel que le corps d'un e-mail ou d'un document.",
|
|
42
|
+
"fields.textvskeywords.matchonlytext": "match_only_text",
|
|
43
|
+
"fields.textvskeywords.matchonlytext.description": "Une variante du texte optimisée pour l'espace qui désactive le scoring et est moins performante pour les requêtes nécessitant des positions. Elle est particulièrement adaptée à l'indexation des messages de journal.",
|
|
44
|
+
"fields.textvskeywords.text.more.info": "Pour plus d'informations concernant le champ Texte, veuillez consulter la documentation officielle d'Elasticsearch :",
|
|
45
|
+
"fields.textvskeywords.text.keyword.compare": "Pour obtenir la liste complète des différents cas d'utilisation des champs Mot-clé et Texte, veuillez consulter :",
|
|
29
46
|
"fields.legend": "Légende",
|
|
30
47
|
"fields.legend.default": "Interrogé lorsqu'aucun champ n'est spécifié",
|
|
31
48
|
"fields.legend.ip_field": "Peut être interrogé en utilisant la notation CIDR",
|
|
@@ -431,8 +431,13 @@
|
|
|
431
431
|
"route.advanced.query.yaml": "Règle Sigma",
|
|
432
432
|
"route.advanced.query.yaml.description": "Sigma est un format de signature générique et ouvert qui vous permet de décrire des événements de journal pertinents de manière directe. Le format de règle est très flexible, facile à écrire et applicable à tout type de fichier journal.",
|
|
433
433
|
"route.advanced.result.title": "Recherche avancée de howler",
|
|
434
|
-
"route.advanced.result.description": "
|
|
435
|
-
"route.advanced.type": "Type de règle",
|
|
434
|
+
"route.advanced.result.description": "Exécutez une requête pour afficher les résultats ici.",
|
|
435
|
+
"route.advanced.rule.type": "Type de règle",
|
|
436
|
+
"route.advanced.pivot.field": "Champ à regrouper par",
|
|
437
|
+
"route.advanced.query.type": "Type de requête",
|
|
438
|
+
"route.advanced.query.type.default": "Défaut",
|
|
439
|
+
"route.advanced.query.type.facet": "Facette",
|
|
440
|
+
"route.advanced.query.type.groupby": "Regrouper",
|
|
436
441
|
"route.analytics": "Analyses",
|
|
437
442
|
"route.analytics.deleted": "Règle supprimée!",
|
|
438
443
|
"route.analytics.detections": "Détections:",
|