web-interface.assets.bb8c8232-8288.6812618135ea3c8c8e22.js.map Maven / Gradle / Ivy
{"version":3,"file":"bb8c8232-8288.6812618135ea3c8c8e22.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/common/EntityDataTable/MoreActions.tsx","webpack://graylog-web-interface/./src/components/common/PageNavigation.tsx","webpack://graylog-web-interface/./src/components/event-definitions/constants.ts","webpack://graylog-web-interface/./src/components/events/EventsPageNavigation.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definitions/EventDefinitionActions.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definitions/SchedulingCell.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definitions/StatusCell.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definitions/BulkActions.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definitions/EventDefinitionsContainer.tsx","webpack://graylog-web-interface/./src/pages/EventDefinitionsPage.tsx"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport DropdownButton from 'components/bootstrap/DropdownButton';\n\nimport { MORE_ACTIONS_TITLE, MORE_ACTIONS_HOVER_TITLE } from './Constants';\n\ntype Props = React.PropsWithChildren<{\n disabled?: boolean,\n}>\nconst MoreActions = ({ children, disabled }: Props) => (\n \n {children}\n \n);\n\nMoreActions.defaultProps = {\n disabled: false,\n};\n\nexport default MoreActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { LinkContainer } from 'components/common/router';\nimport { IfPermitted } from 'components/common';\nimport NavItemStateIndicator, {\n hoverIndicatorStyles,\n activeIndicatorStyles,\n} from 'components/common/NavItemStateIndicator';\n\nconst Container = styled(ButtonToolbar)`\n margin-bottom: 10px;\n`;\n\nconst StyledButton = styled(Button)(({ theme }) => css`\n font-family: ${theme.fonts.family.navigation};\n font-size: ${theme.fonts.size.navigation};\n color: ${theme.colors.variant.darker.default};\n \n &:hover,\n &:focus {\n background: inherit;\n text-decoration: none;\n }\n\n &:hover {\n color: inherit;\n ${hoverIndicatorStyles(theme)}\n }\n\n &.active {\n color: ${theme.colors.global.textDefault};\n\n ${activeIndicatorStyles(theme)}\n\n &:hover,\n &:focus {\n ${activeIndicatorStyles(theme)}\n }\n`);\n\nStyledButton.displayName = 'Button';\n\ntype Props = {\n /**\n * List of nav items. Define permissions, if the item should only be displayed for users with specific permissions.\n * By default, an item is active if the current URL starts with the item URL.\n * If you only want to display an item as active only when its path matches exactly, set `exactPathMatch` to true.\n */\n items: Array<{\n title: string,\n path: string,\n permissions?: string | Array\n exactPathMatch?: boolean,\n }>\n}\n\n/**\n * Simple tab navigation to allow navigating to subareas of a page.\n */\nconst PageNavigation = ({ items }: Props) => (\n \n {items.map(({ path, title, permissions, exactPathMatch }) => {\n if (!path) {\n return null;\n }\n\n return (\n \n \n \n \n {title}\n \n \n \n \n );\n })}\n \n);\n\nexport default PageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport type { Sort } from 'stores/PaginationTypes';\n\nexport const SYSTEM_EVENT_DEFINITION_TYPE = 'system-notifications-v1';\n\nexport const ENTITY_TABLE_ID = 'event_definitions';\nexport const DEFAULT_LAYOUT = {\n pageSize: 20,\n sort: { attributeId: 'title', direction: 'asc' } as Sort,\n displayedColumns: ['title', 'description', 'priority', 'scheduling', 'status', 'matched_at'],\n columnsOrder: ['title', 'description', 'priority', 'matched_at', 'status', 'scheduling'],\n};\n\nexport const ADDITIONAL_ATTRIBUTES = [\n { id: 'scheduling', title: 'Scheduling', sortable: false },\n { id: 'matched_at', title: 'Last Matched', sortable: true },\n];\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport PageNavigation from 'components/common/PageNavigation';\nimport Routes from 'routing/Routes';\nimport { Row } from 'components/bootstrap';\n\nconst NAV_ITEMS = [\n { title: 'Alerts & Events', path: Routes.ALERTS.LIST, exactPathMatch: true },\n { title: 'Event Definitions', path: Routes.ALERTS.DEFINITIONS.LIST },\n { title: 'Notifications', path: Routes.ALERTS.NOTIFICATIONS.LIST },\n];\n\nconst EventsPageNavigation = () => (\n \n \n
\n);\n\nexport default EventsPageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport Routes from 'routing/Routes';\nimport { LinkContainer } from 'components/common/router';\nimport {\n IfPermitted,\n ShareButton,\n ConfirmDialog,\n} from 'components/common';\nimport {\n ButtonToolbar,\n MenuItem,\n} from 'components/bootstrap';\nimport useGetPermissionsByScope from 'hooks/useScopePermissions';\nimport { EventDefinitionsActions } from 'stores/event-definitions/EventDefinitionsStore';\nimport EntityShareModal from 'components/permissions/EntityShareModal';\nimport UserNotification from 'util/UserNotification';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport useSelectedEntities from 'components/common/EntityDataTable/hooks/useSelectedEntities';\nimport MoreActions from 'components/common/EntityDataTable/MoreActions';\n\nimport type { EventDefinition } from '../event-definitions-types';\n\ntype Props = {\n eventDefinition: EventDefinition,\n refetchEventDefinitions: () => void,\n}\n\nconst DIALOG_TYPES = {\n COPY: 'copy',\n DELETE: 'delete',\n DISABLE: 'disable',\n ENABLE: 'enable',\n};\n\nconst DIALOG_TEXT = {\n [DIALOG_TYPES.COPY]: {\n dialogTitle: 'Copy Event Definition',\n dialogBody: (definitionTitle) => `Are you sure you want to create a copy of \"${definitionTitle}\"?`,\n },\n [DIALOG_TYPES.DELETE]: {\n dialogTitle: 'Delete Event Definition',\n dialogBody: (definitionTitle) => `Are you sure you want to delete \"${definitionTitle}\"?`,\n },\n [DIALOG_TYPES.DISABLE]: {\n dialogTitle: 'Disable Event Definition',\n dialogBody: (definitionTitle) => `Are you sure you want to disable \"${definitionTitle}\"?`,\n },\n [DIALOG_TYPES.ENABLE]: {\n dialogTitle: 'Enable Event Definition',\n dialogBody: (definitionTitle) => `Are you sure you want to enable \"${definitionTitle}\"?`,\n },\n};\n\nconst EventDefinitionActions = ({ eventDefinition, refetchEventDefinitions }: Props) => {\n const { deselectEntity } = useSelectedEntities();\n const { scopePermissions } = useGetPermissionsByScope(eventDefinition);\n const [currentDefinition, setCurrentDefinition] = useState(null);\n const [showDialog, setShowDialog] = useState(false);\n const [dialogType, setDialogType] = useState(null);\n const [showEntityShareModal, setShowEntityShareModal] = useState(false);\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n\n const showActions = (): boolean => scopePermissions?.is_mutable;\n\n const isSystemEventDefinition = (): boolean => eventDefinition?.config?.type === 'system-notifications-v1';\n\n const isAggregationEventDefinition = (): boolean => eventDefinition?.config?.type === 'aggregation-v1';\n\n const updateState = ({ show, type, definition }) => {\n setShowDialog(show);\n setDialogType(type);\n\n setCurrentDefinition(definition);\n };\n\n const handleAction = (action, definition) => {\n switch (action) {\n case DIALOG_TYPES.COPY:\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.ROW_ACTION_COPY_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-row',\n app_action_value: 'copy-menuitem',\n });\n\n updateState({ show: true, type: DIALOG_TYPES.COPY, definition });\n\n break;\n case DIALOG_TYPES.DELETE:\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.ROW_ACTION_DELETE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-row',\n app_action_value: 'delete-menuitem',\n });\n\n updateState({ show: true, type: DIALOG_TYPES.DELETE, definition });\n\n break;\n case DIALOG_TYPES.ENABLE:\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.ROW_ACTION_ENABLE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-row',\n app_action_value: 'enable-menuitem',\n });\n\n updateState({ show: true, type: DIALOG_TYPES.ENABLE, definition });\n\n break;\n case DIALOG_TYPES.DISABLE:\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.ROW_ACTION_DISABLE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-row',\n app_action_value: 'disable-menuitem',\n });\n\n updateState({ show: true, type: DIALOG_TYPES.DISABLE, definition });\n\n break;\n default:\n break;\n }\n };\n\n const handleShare = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.ROW_ACTION_SHARE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-list',\n app_action_value: 'share-button',\n });\n\n setShowEntityShareModal(true);\n };\n\n const handleClearState = () => {\n updateState({ show: false, type: null, definition: null });\n refetchEventDefinitions();\n };\n\n const handleConfirm = () => {\n switch (dialogType) {\n case 'copy':\n EventDefinitionsActions.copy(currentDefinition).finally(() => {\n handleClearState();\n });\n\n break;\n case 'delete':\n EventDefinitionsActions.delete(currentDefinition).then(\n () => {\n deselectEntity(currentDefinition.id);\n\n UserNotification.success('Event Definition deleted successfully',\n `Event Definition \"${eventDefinition.title}\" was deleted successfully.`);\n },\n (error) => {\n const errorStatus = error?.additional?.body?.errors?.dependency.join(' ') || error;\n\n UserNotification.error(`Deleting Event Definition \"${eventDefinition.title}\" failed with status: ${errorStatus}`,\n 'Could not delete Event Definition');\n },\n ).finally(() => {\n handleClearState();\n });\n\n break;\n case 'enable':\n EventDefinitionsActions.enable(currentDefinition).finally(() => {\n handleClearState();\n });\n\n break;\n case 'disable':\n EventDefinitionsActions.disable(currentDefinition).finally(() => {\n handleClearState();\n });\n\n break;\n default:\n break;\n }\n };\n\n const isEnabled = eventDefinition?.state === 'ENABLED';\n\n return (\n <>\n \n \n \n \n \n \n \n \n {!isSystemEventDefinition() && (\n \n )}\n \n \n\n {showActions() && (\n \n \n \n \n )}\n {\n isAggregationEventDefinition() && (\n <>\n \n \n \n \n\n >\n )\n }\n \n \n {showDialog && (\n \n {DIALOG_TEXT[dialogType].dialogBody(currentDefinition.title)}\n \n )}\n {showEntityShareModal && (\n setShowEntityShareModal(false)} />\n )}\n >\n );\n};\n\nexport default EventDefinitionActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport moment from 'moment';\nimport styled, { css } from 'styled-components';\n\nimport { OverlayTrigger, Icon, Timestamp } from 'components/common';\nimport Button from 'components/bootstrap/Button';\nimport { EventDefinitionsActions } from 'stores/event-definitions/EventDefinitionsStore';\n\nimport type { Scheduler, EventDefinition } from '../event-definitions-types';\n\ntype Props = {\n definition: EventDefinition,\n};\n\nconst DetailTitle = styled.dt`\n float: left;\n clear: left;\n`;\n\nconst DetailValue = styled.dd(({ theme }) => css`\n margin-left: 180px;\n word-wrap: break-word;\n\n &:not(:last-child) {\n border-bottom: 1px solid ${theme.colors.variant.lightest.default};\n margin-bottom: 5px;\n padding-bottom: 5px;\n }\n`);\n\nconst DetailsButton = styled(Button)`\n padding: 6px 8px;\n`;\n\nconst getTimeRange = (scheduler: Scheduler) => {\n const from = scheduler?.data?.timerange_from;\n const to = scheduler?.data?.timerange_to;\n\n return (\n <>\n Next time range: \n \n >\n );\n};\n\nconst detailsPopover = (scheduler: Scheduler, clearNotifications: () => void) => (\n \n Status: \n {scheduler.status} \n {scheduler.triggered_at && (\n <>\n Last execution: \n \n >\n )}\n {scheduler.next_time && (\n <>\n Next execution: \n \n >\n )}\n {getTimeRange(scheduler)}\n Queued notifications: \n {scheduler.queued_notifications}\n {scheduler.queued_notifications > 0 && (\n \n )}\n \n
\n);\n\nconst SchedulingInfo = ({\n executeEveryMs,\n searchWithinMs,\n scheduler,\n title,\n clearNotifications,\n}:{\n executeEveryMs: number,\n searchWithinMs: number,\n scheduler: Scheduler, title: string,\n clearNotifications: () => void\n}) => {\n const executeEveryFormatted = moment.duration(executeEveryMs)\n .format('d [days] h [hours] m [minutes] s [seconds]', { trim: 'all', usePlural: false });\n const searchWithinFormatted = moment.duration(searchWithinMs)\n .format('d [days] h [hours] m [minutes] s [seconds]', { trim: 'all' });\n\n return (\n <>\n {`Runs every ${executeEveryFormatted}, searching within the last ${searchWithinFormatted}. `}\n \n \n \n >\n );\n};\n\nconst SchedulingCell = ({ definition } : Props) => {\n if (!definition?.config?.search_within_ms && !definition?.config?.execute_every_ms) {\n return <>Not Scheduled.>;\n }\n\n const clearNotifications = (eventDefinition: EventDefinition) => () => {\n // eslint-disable-next-line no-alert\n if (window.confirm(`Are you sure you want to clear queued notifications for \"${eventDefinition.title}\"?`)) {\n EventDefinitionsActions.clearNotificationQueue(eventDefinition);\n }\n };\n\n const {\n title,\n config: {\n search_within_ms: searchWithinMs,\n execute_every_ms: executeEveryMs,\n },\n scheduler,\n } = definition;\n\n return (\n \n );\n};\n\nexport default SchedulingCell;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useCallback, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { EventDefinitionsActions } from 'stores/event-definitions/EventDefinitionsStore';\nimport { Label, BootstrapModalConfirm } from 'components/bootstrap';\nimport { Icon } from 'components/common';\n\nimport type { EventDefinition } from '../event-definitions-types';\n\nconst StatusLabel = styled(Label)<{ $clickable: boolean }>(({ $clickable }) => css`\n cursor: ${$clickable ? 'pointer' : 'default'};\n display: inline-flex;\n justify-content: center;\n gap: 4px;\n`);\n\nconst Spacer = styled.div`\n border-left: 1px solid currentColor;\n height: 1em;\n`;\n\nconst _title = (disabled: boolean, disabledChange: boolean, description: string) => {\n if (disabledChange) {\n return description;\n }\n\n return disabled ? 'Enable' : 'Disable';\n};\n\ntype Props ={\n eventDefinition: EventDefinition,\n refetchEventDefinitions: () => void,\n}\n\nconst StatusCell = ({ eventDefinition, refetchEventDefinitions } : Props) => {\n const [showConfirmDisableModal, setShowConfirmDisableModal] = useState(false);\n\n const isEnabled = eventDefinition?.state === 'ENABLED';\n const disableChange = eventDefinition?.config?.type === 'system-notifications-v1';\n const description = isEnabled ? 'enabled' : 'disabled';\n const title = _title(!isEnabled, disableChange, description);\n\n const toggleEventDefinitionStatus = useCallback(async () => {\n if (isEnabled) {\n setShowConfirmDisableModal(true);\n } else {\n await EventDefinitionsActions.enable(eventDefinition);\n await refetchEventDefinitions();\n }\n }, [isEnabled, eventDefinition, refetchEventDefinitions]);\n\n const handleConfirmDisable = useCallback(async () => {\n await EventDefinitionsActions.disable(eventDefinition);\n await refetchEventDefinitions();\n setShowConfirmDisableModal(false);\n }, [eventDefinition, refetchEventDefinitions]);\n\n return (\n <>\n \n {description}\n {!disableChange && (\n <>\n \n \n >\n )}\n \n {showConfirmDisableModal && (\n setShowConfirmDisableModal(false)}>\n {`Do you really want to disable event definition '${eventDefinition.title}'?`}\n \n )}\n >\n );\n};\n\nexport default StatusCell;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useCallback, useState } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { ConfirmDialog } from 'components/common';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport { qualifyUrl, getPathnameWithoutId } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport { MenuItem } from 'components/bootstrap';\nimport StringUtils from 'util/StringUtils';\nimport BulkActionsDropdown from 'components/common/EntityDataTable/BulkActionsDropdown';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport useSelectedEntities from 'components/common/EntityDataTable/hooks/useSelectedEntities';\n\nconst ACTION_TYPES = {\n DELETE: 'delete',\n DISABLE: 'disable',\n ENABLE: 'enable',\n};\nconst getDescriptor = (count: number) => StringUtils.pluralize(count, 'event definition', 'event definitions');\n\nconst ACTION_TEXT = {\n [ACTION_TYPES.DELETE]: {\n dialogTitle: 'Delete Event Definitions',\n dialogBody: (count: number) => `Are you sure you want to delete ${count} ${getDescriptor(count)}?`,\n bulkActionUrl: ApiRoutes.EventDefinitionsApiController.bulkDelete().url,\n\n },\n [ACTION_TYPES.DISABLE]: {\n dialogTitle: 'Disable Event Definitions',\n dialogBody: (count: number) => `Are you sure you want to disable ${count} ${getDescriptor(count)}?`,\n bulkActionUrl: ApiRoutes.EventDefinitionsApiController.bulkUnschedule().url,\n },\n [ACTION_TYPES.ENABLE]: {\n dialogTitle: 'Enable Event Definitions',\n dialogBody: (count: number) => `Are you sure you want to enable ${count} ${getDescriptor(count)}?`,\n bulkActionUrl: ApiRoutes.EventDefinitionsApiController.bulkSchedule().url,\n },\n};\n\nconst BulkActions = () => {\n const queryClient = useQueryClient();\n const { selectedEntities, setSelectedEntities } = useSelectedEntities();\n const [showDialog, setShowDialog] = useState(false);\n const [actionType, setActionType] = useState(null);\n const selectedItemsAmount = selectedEntities?.length;\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n const refetchEventDefinitions = useCallback(() => queryClient.invalidateQueries(['eventDefinition', 'overview']), [queryClient]);\n\n const updateState = ({ show, type }) => {\n setShowDialog(show);\n setActionType(type);\n };\n\n const handleAction = (action) => {\n switch (action) {\n case ACTION_TYPES.DELETE:\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.BULK_ACTION_DELETE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-bulk',\n app_action_value: 'delete-menuitem',\n });\n\n updateState({ show: true, type: ACTION_TYPES.DELETE });\n\n break;\n case ACTION_TYPES.ENABLE:\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.BULK_ACTION_ENABLE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-bulk',\n app_action_value: 'enable-menuitem',\n });\n\n updateState({ show: true, type: ACTION_TYPES.ENABLE });\n\n break;\n case ACTION_TYPES.DISABLE:\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.BULK_ACTION_DISABLE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-bulk',\n app_action_value: 'disable-menuitem',\n });\n\n updateState({ show: true, type: ACTION_TYPES.DISABLE });\n\n break;\n default:\n break;\n }\n };\n\n const handleClearState = () => {\n updateState({ show: false, type: null });\n refetchEventDefinitions();\n };\n\n const onAction = useCallback(() => {\n fetch('POST',\n qualifyUrl(ACTION_TEXT[actionType].bulkActionUrl),\n { entity_ids: selectedEntities },\n ).then(({ failures }) => {\n if (failures?.length) {\n const notUpdatedDefinitionIds = failures.map(({ entity_id }) => entity_id);\n setSelectedEntities(notUpdatedDefinitionIds);\n } else {\n setSelectedEntities([]);\n UserNotification.success(`${selectedItemsAmount} ${getDescriptor(selectedItemsAmount)} ${StringUtils.pluralize(selectedItemsAmount, 'was', 'were')} ${actionType}d successfully.`, 'Success');\n }\n })\n .catch((error) => {\n UserNotification.error(`An error occurred while ${actionType} event definition. ${error}`);\n }).finally(() => {\n refetchEventDefinitions();\n });\n }, [actionType, refetchEventDefinitions, selectedEntities, selectedItemsAmount, setSelectedEntities]);\n\n const handleConfirm = () => {\n onAction();\n setShowDialog(false);\n };\n\n return (\n <>\n \n \n \n \n \n {showDialog && (\n \n {ACTION_TEXT[actionType]?.dialogBody(selectedItemsAmount)}\n \n )}\n >\n );\n};\n\nexport default BulkActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\n\nimport { EntityDataTable, NoSearchResult, PaginatedList, QueryHelper, RelativeTime, SearchForm, Spinner } from 'components/common';\nimport type { Sort } from 'stores/PaginationTypes';\nimport usePaginationQueryParameter from 'hooks/usePaginationQueryParameter';\nimport { Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport type { ColumnRenderers } from 'components/common/EntityDataTable';\nimport useTableLayout from 'components/common/EntityDataTable/hooks/useTableLayout';\nimport useUpdateUserLayoutPreferences from 'components/common/EntityDataTable/hooks/useUpdateUserLayoutPreferences';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nimport EventDefinitionActions from './EventDefinitionActions';\nimport SchedulingCell from './SchedulingCell';\nimport StatusCell from './StatusCell';\nimport BulkActions from './BulkActions';\n\nimport type { EventDefinition } from '../event-definitions-types';\nimport useEventDefinitions from '../hooks/useEventDefinitions';\nimport { ENTITY_TABLE_ID, DEFAULT_LAYOUT, ADDITIONAL_ATTRIBUTES } from '../constants';\n\nconst customColumnRenderers = (refetchEventDefinitions: () => void): ColumnRenderers => ({\n attributes: {\n title: {\n renderCell: (title: string, eventDefinition) => (\n {title}\n ),\n },\n matched_at: {\n renderCell: (_matched_at: string, eventDefinition) => (\n eventDefinition.matched_at ? : 'Never'\n ),\n },\n scheduling: {\n renderCell: (_scheduling: string, eventDefinition) => (\n \n ),\n },\n status: {\n renderCell: (_status: string, eventDefinition) => (\n \n ),\n staticWidth: 100,\n },\n priority: {\n staticWidth: 100,\n },\n },\n});\n\nconst EventDefinitionsContainer = () => {\n const [query, setQuery] = useState('');\n const { layoutConfig, isInitialLoading: isLoadingLayoutPreferences } = useTableLayout({\n entityTableId: ENTITY_TABLE_ID,\n defaultPageSize: DEFAULT_LAYOUT.pageSize,\n defaultDisplayedAttributes: DEFAULT_LAYOUT.displayedColumns,\n defaultSort: DEFAULT_LAYOUT.sort,\n });\n const paginationQueryParameter = usePaginationQueryParameter(undefined, 20);\n const { mutate: updateTableLayout } = useUpdateUserLayoutPreferences(ENTITY_TABLE_ID);\n const { data: paginatedEventDefinitions, refetch: refetchEventDefinitions, isInitialLoading: isLoadingEventDefinitions } = useEventDefinitions({\n query,\n page: paginationQueryParameter.page,\n pageSize: layoutConfig.pageSize,\n sort: layoutConfig.sort,\n });\n const columnRenderers = customColumnRenderers(refetchEventDefinitions);\n const columnDefinitions = useMemo(\n () => ([...(paginatedEventDefinitions?.attributes ?? []), ...ADDITIONAL_ATTRIBUTES]),\n [paginatedEventDefinitions?.attributes],\n );\n\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n\n const onSearch = useCallback((newQuery: string) => {\n paginationQueryParameter.resetPage();\n setQuery(newQuery);\n }, [paginationQueryParameter]);\n\n const onReset = useCallback(() => {\n onSearch('');\n }, [onSearch]);\n\n const onColumnsChange = useCallback((displayedAttributes: Array) => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.COLUMNS_CHANGED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-list',\n app_action_value: 'columns-select',\n columns: displayedAttributes,\n });\n\n updateTableLayout({ displayedAttributes });\n }, [pathname, sendTelemetry, updateTableLayout]);\n\n const onPageSizeChange = useCallback((newPageSize: number) => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.PAGE_SIZE_CHANGED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-list',\n app_action_value: 'page-size-select',\n page_size: newPageSize,\n });\n\n paginationQueryParameter.setPagination({ page: 1, pageSize: newPageSize });\n updateTableLayout({ perPage: newPageSize });\n }, [paginationQueryParameter, pathname, sendTelemetry, updateTableLayout]);\n\n const onSortChange = useCallback((newSort: Sort) => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_LIST.SORT_CHANGED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-list',\n app_action_value: 'sort-select',\n sort: newSort,\n });\n\n paginationQueryParameter.resetPage();\n updateTableLayout({ sort: newSort });\n }, [paginationQueryParameter, pathname, sendTelemetry, updateTableLayout]);\n\n const renderEventDefinitionActions = useCallback((listItem: EventDefinition) => (\n \n ), [refetchEventDefinitions]);\n\n if (isLoadingLayoutPreferences || isLoadingEventDefinitions) {\n return ;\n }\n\n const { elements, pagination: { total } } = paginatedEventDefinitions;\n\n return (\n \n \n } />\n \n \n {elements?.length === 0 ? (\n No Event Definition has been found \n ) : (\n data={elements}\n visibleColumns={layoutConfig.displayedAttributes}\n columnsOrder={DEFAULT_LAYOUT.columnsOrder}\n onColumnsChange={onColumnsChange}\n onSortChange={onSortChange}\n onPageSizeChange={onPageSizeChange}\n pageSize={layoutConfig.pageSize}\n bulkSelection={{ actions: }}\n activeSort={layoutConfig.sort}\n actionsCellWidth={160}\n rowActions={renderEventDefinitionActions}\n columnRenderers={columnRenderers}\n columnDefinitions={columnDefinitions}\n entityAttributesAreCamelCase={false} />\n )}\n \n \n\n );\n};\n\nexport default EventDefinitionsContainer;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Button, Col, Row } from 'components/bootstrap';\nimport { DocumentTitle, IfPermitted, PageHeader } from 'components/common';\nimport EventDefinitionsContainer from 'components/event-definitions/event-definitions/EventDefinitionsContainer';\nimport Routes from 'routing/Routes';\nimport DocsHelper from 'util/DocsHelper';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport EventsPageNavigation from 'components/events/EventsPageNavigation';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nconst EventDefinitionsPage = () => {\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n\n return (\n \n \n \n \n \n \n \n )}\n documentationLink={{\n title: 'Alerts documentation',\n path: DocsHelper.PAGES.ALERTS,\n }}>\n \n Create new Event Definitions that will allow you to search for different Conditions and alert on them.\n \n \n\n \n \n \n \n
\n \n );\n};\n\nexport default EventDefinitionsPage;\n"],"names":["MoreActions","children","disabled","Container","StyledButton","theme","items","path","title","permissions","exactPathMatch","SYSTEM_EVENT_DEFINITION_TYPE","ENTITY_TABLE_ID","DEFAULT_LAYOUT","ADDITIONAL_ATTRIBUTES","NAV_ITEMS","DIALOG_TYPES","DIALOG_TEXT","definitionTitle","eventDefinition","refetchEventDefinitions","deselectEntity","useSelectedEntities","scopePermissions","currentDefinition","setCurrentDefinition","showDialog","setShowDialog","dialogType","setDialogType","showEntityShareModal","setShowEntityShareModal","pathname","useLocation","sendTelemetry","useSendTelemetry","showActions","isSystemEventDefinition","isAggregationEventDefinition","updateState","show","type","definition","handleAction","action","handleShare","handleClearState","handleConfirm","UserNotification","error","errorStatus","isEnabled","Routes","EntityShareModal","DetailTitle","DetailValue","DetailsButton","Button","getTimeRange","scheduler","from","to","detailsPopover","clearNotifications","SchedulingInfo","executeEveryMs","searchWithinMs","executeEveryFormatted","searchWithinFormatted","StatusLabel","$clickable","Spacer","_title","disabledChange","description","showConfirmDisableModal","setShowConfirmDisableModal","disableChange","toggleEventDefinitionStatus","handleConfirmDisable","ACTION_TYPES","getDescriptor","count","StringUtils","ACTION_TEXT","ApiRoutes","queryClient","selectedEntities","setSelectedEntities","actionType","setActionType","selectedItemsAmount","onAction","failures","notUpdatedDefinitionIds","entity_id","BulkActionsDropdown","customColumnRenderers","_matched_at","_scheduling","_status","query","setQuery","layoutConfig","isLoadingLayoutPreferences","useTableLayout","paginationQueryParameter","usePaginationQueryParameter","updateTableLayout","useUpdateUserLayoutPreferences","paginatedEventDefinitions","isLoadingEventDefinitions","useEventDefinitions","columnRenderers","columnDefinitions","onSearch","newQuery","onReset","onColumnsChange","displayedAttributes","onPageSizeChange","newPageSize","onSortChange","newSort","renderEventDefinitionActions","listItem","elements","total","EventsPageNavigation","DocsHelper"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy