|
|
|
@ -1,3 +1,4 @@ |
|
|
|
|
import { defaults } from 'lodash'; |
|
|
|
|
import { useEffect, useMemo, useState } from 'react'; |
|
|
|
|
import { useAsyncFn } from 'react-use'; |
|
|
|
|
|
|
|
|
@ -23,6 +24,7 @@ import { InsertPosition } from './../../utils/routeTree'; |
|
|
|
|
import { NotificationPoliciesFilter, findRoutesByMatchers, findRoutesMatchingPredicate } from './Filters'; |
|
|
|
|
import { useAddPolicyModal, useAlertGroupsModal, useDeletePolicyModal, useEditPolicyModal } from './Modals'; |
|
|
|
|
import { Policy } from './Policy'; |
|
|
|
|
import { TIMING_OPTIONS_DEFAULTS } from './timingOptions'; |
|
|
|
|
import { |
|
|
|
|
useAddNotificationPolicy, |
|
|
|
|
useDeleteNotificationPolicy, |
|
|
|
@ -218,34 +220,31 @@ export const NotificationPoliciesList = () => { |
|
|
|
|
)} |
|
|
|
|
{hasPoliciesData && ( |
|
|
|
|
<Stack direction="column" gap={1}> |
|
|
|
|
{rootRoute && ( |
|
|
|
|
<NotificationPoliciesFilter |
|
|
|
|
onChangeMatchers={setLabelMatchersFilter} |
|
|
|
|
onChangeReceiver={setContactPointFilter} |
|
|
|
|
matchingCount={routesMatchingFilters.matchedRoutesWithPath.size} |
|
|
|
|
/> |
|
|
|
|
)} |
|
|
|
|
{rootRoute && ( |
|
|
|
|
<Policy |
|
|
|
|
receivers={receivers} |
|
|
|
|
currentRoute={rootRoute} |
|
|
|
|
contactPointsState={contactPointsState.receivers} |
|
|
|
|
readOnly={!hasConfigurationAPI} |
|
|
|
|
provisioned={rootRoute[ROUTES_META_SYMBOL]?.provisioned} |
|
|
|
|
alertManagerSourceName={selectedAlertmanager} |
|
|
|
|
onAddPolicy={openAddModal} |
|
|
|
|
onEditPolicy={openEditModal} |
|
|
|
|
onDeletePolicy={openDeleteModal} |
|
|
|
|
onShowAlertInstances={showAlertGroupsModal} |
|
|
|
|
routesMatchingFilters={routesMatchingFilters} |
|
|
|
|
matchingInstancesPreview={{ |
|
|
|
|
groupsMap: routeAlertGroupsMap, |
|
|
|
|
enabled: Boolean(canSeeAlertGroups && !instancesPreviewError), |
|
|
|
|
}} |
|
|
|
|
isAutoGenerated={false} |
|
|
|
|
isDefaultPolicy |
|
|
|
|
/> |
|
|
|
|
)} |
|
|
|
|
<NotificationPoliciesFilter |
|
|
|
|
onChangeMatchers={setLabelMatchersFilter} |
|
|
|
|
onChangeReceiver={setContactPointFilter} |
|
|
|
|
matchingCount={routesMatchingFilters.matchedRoutesWithPath.size} |
|
|
|
|
/> |
|
|
|
|
<Policy |
|
|
|
|
receivers={receivers} |
|
|
|
|
// add the timing defaults to the default policy to make sure child policies inherit properly
|
|
|
|
|
currentRoute={defaults(rootRoute, TIMING_OPTIONS_DEFAULTS)} |
|
|
|
|
contactPointsState={contactPointsState.receivers} |
|
|
|
|
readOnly={!hasConfigurationAPI} |
|
|
|
|
provisioned={rootRoute[ROUTES_META_SYMBOL]?.provisioned} |
|
|
|
|
alertManagerSourceName={selectedAlertmanager} |
|
|
|
|
onAddPolicy={openAddModal} |
|
|
|
|
onEditPolicy={openEditModal} |
|
|
|
|
onDeletePolicy={openDeleteModal} |
|
|
|
|
onShowAlertInstances={showAlertGroupsModal} |
|
|
|
|
routesMatchingFilters={routesMatchingFilters} |
|
|
|
|
matchingInstancesPreview={{ |
|
|
|
|
groupsMap: routeAlertGroupsMap, |
|
|
|
|
enabled: Boolean(canSeeAlertGroups && !instancesPreviewError), |
|
|
|
|
}} |
|
|
|
|
isAutoGenerated={false} |
|
|
|
|
isDefaultPolicy |
|
|
|
|
/> |
|
|
|
|
</Stack> |
|
|
|
|
)} |
|
|
|
|
{addModal} |
|
|
|
|