inboundFilters.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import {Fragment} from 'react';
  2. import type {Field, JsonFormObject} from 'sentry/components/forms/types';
  3. import ExternalLink from 'sentry/components/links/externalLink';
  4. import {t, tct} from 'sentry/locale';
  5. // Export route to make these forms searchable by label/help
  6. export const route = '/settings/:orgId/projects/:projectId/filters/';
  7. const newLineHelpText = t('Separate multiple entries with a newline.');
  8. const globHelpText = tct('Allows [link:glob pattern matching].', {
  9. link: <ExternalLink href="https://en.wikipedia.org/wiki/Glob_(programming)" />,
  10. });
  11. export const getOptionsData = (data: object) => ({options: data});
  12. const formGroups: JsonFormObject[] = [
  13. {
  14. // Form "section"/"panel"
  15. title: t('Custom Filters'),
  16. fields: [
  17. {
  18. name: 'filters:blacklisted_ips',
  19. type: 'string',
  20. multiline: true,
  21. autosize: true,
  22. rows: 1,
  23. maxRows: 10,
  24. placeholder: 'e.g. 127.0.0.1 or 10.0.0.0/8',
  25. label: t('IP Addresses'),
  26. help: (
  27. <Fragment>
  28. {t('Filter events from these IP addresses. ')}
  29. {newLineHelpText}
  30. </Fragment>
  31. ),
  32. getData: getOptionsData,
  33. },
  34. ],
  35. },
  36. ];
  37. export default formGroups;
  38. // These require a feature flag
  39. export const customFilterFields: Field[] = [
  40. {
  41. name: 'filters:releases',
  42. type: 'string',
  43. multiline: true,
  44. autosize: true,
  45. maxRows: 10,
  46. rows: 1,
  47. placeholder: 'e.g. 1.* or [!3].[0-9].*',
  48. label: t('Releases'),
  49. help: (
  50. <Fragment>
  51. {t('Filter events from these releases. ')}
  52. {newLineHelpText} {globHelpText}
  53. </Fragment>
  54. ),
  55. getData: getOptionsData,
  56. },
  57. {
  58. name: 'filters:error_messages',
  59. type: 'string',
  60. multiline: true,
  61. autosize: true,
  62. maxRows: 10,
  63. rows: 1,
  64. placeholder: 'e.g. TypeError* or *: integer division or modulo by zero',
  65. label: t('Error Message'),
  66. help: (
  67. <Fragment>
  68. {t('Filter events by error messages. ')}
  69. {newLineHelpText} {globHelpText}
  70. </Fragment>
  71. ),
  72. getData: getOptionsData,
  73. },
  74. ];