/*! Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one or more contributor license agreements. * Licensed under the Elastic License 2.0; you may not use this file except in compliance with the Elastic License 2.0. */ (window.triggersActionsUi_bundle_jsonpfunction=window.triggersActionsUi_bundle_jsonpfunction||[]).push([[48],{162:function(e,t,s){"use strict";s.r(t),s.d(t,"RulesSettingsLink",(function(){return U})),s.d(t,"default",(function(){return U}));var n=s(1),a=s.n(n),i=s(2),l=s(25),o=s(3),r=s(29),u=s(13),c=s.n(u),g=s(11),d=s(0);const j=o.i18n.translate("xpack.triggersActionsUI.rulesSettings.flapping.lookBackWindowLabel",{defaultMessage:"Rule run look back window"}),b=o.i18n.translate("xpack.triggersActionsUI.rulesSettings.flapping.lookBackWindowHelp",{defaultMessage:"The minimum number of runs in which the threshold must be met."}),p=o.i18n.translate("xpack.triggersActionsUI.rulesSettings.flapping.statusChangeThresholdLabel",{defaultMessage:"Alert status change threshold"}),x=o.i18n.translate("xpack.triggersActionsUI.rulesSettings.flapping.statusChangeThresholdHelp",{defaultMessage:"The minimum number of times an alert must switch states in the look back window."}),h=e=>o.i18n.translate("xpack.triggersActionsUI.rulesSettings.flapping.statusChangeThresholdTimes",{defaultMessage:"{amount, number} {amount, plural, one {time} other {times}}",values:{amount:e}}),O=()=>Object(d.jsx)(i.EuiTitle,{size:"xs"},Object(d.jsx)("h5",null,Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.flapping.alertFlappingDetection",defaultMessage:"Alert flapping detection"}))),m=()=>Object(d.jsx)(i.EuiText,{color:"subdued",size:"s"},Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.flapping.alertFlappingDetectionDescription",defaultMessage:"Modify the frequency that an alert can go between active and recovered over a period of rule runs."})),S=Object(n.memo)((e=>{const{label:t,labelPopoverText:s,min:n,max:a,value:l,disabled:o,onChange:r,...u}=e;return Object(d.jsx)(i.EuiFormRow,{label:Object(d.jsx)("div",null,t," ",Object(d.jsx)(i.EuiIconTip,{color:"subdued",size:"s",type:"questionInCircle",content:s}))},Object(d.jsx)(i.EuiRange,c()({min:n,max:a,step:1,value:l,disabled:o,onChange:r,showLabels:!0,showValue:!0},u)))})),f=Object(n.memo)((e=>{const{flappingSettings:t,compressed:s=!1,onChange:n}=e,{lookBackWindow:u,statusChangeThreshold:c}=t,{application:{capabilities:f}}=Object(r.b)().services,{rulesSettings:{writeFlappingSettingsUI:k}}=f,w=k;return Object(d.jsx)(i.EuiFlexGroup,{direction:"column"},s&&Object(d.jsx)(a.a.Fragment,null,Object(d.jsx)(i.EuiFlexItem,null,Object(d.jsx)(i.EuiFlexGroup,{direction:"column",gutterSize:"s"},Object(d.jsx)(i.EuiFlexItem,null,Object(d.jsx)(O,null)),Object(d.jsx)(i.EuiFlexItem,null,Object(d.jsx)(m,null)),Object(d.jsx)(i.EuiSpacer,{size:"s"})))),Object(d.jsx)(i.EuiFlexItem,{grow:!1},Object(d.jsx)(S,{"data-test-subj":"lookBackWindowRangeInput",min:g.MIN_LOOK_BACK_WINDOW,max:g.MAX_LOOK_BACK_WINDOW,value:u,onChange:e=>n("lookBackWindow",parseInt(e.currentTarget.value,10)),label:j,labelPopoverText:b,disabled:!w})),Object(d.jsx)(i.EuiFlexItem,{grow:!1},Object(d.jsx)(S,{"data-test-subj":"statusChangeThresholdRangeInput",min:g.MIN_STATUS_CHANGE_THRESHOLD,max:g.MAX_STATUS_CHANGE_THRESHOLD,value:c,onChange:e=>n("statusChangeThreshold",parseInt(e.currentTarget.value,10)),label:p,labelPopoverText:x,disabled:!w})),Object(d.jsx)(i.EuiFlexItem,{grow:!1},Object(d.jsx)(i.EuiPanel,{borderRadius:"none",color:"subdued"},Object(d.jsx)(i.EuiText,{size:"s"},Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.flapping.flappingSettingsDescription",defaultMessage:"An alert is flapping if it changes status at least {statusChangeThreshold} in the last {lookBackWindow}.",values:{lookBackWindow:Object(d.jsx)("b",null,(E=u,o.i18n.translate("xpack.triggersActionsUI.rulesSettings.flapping.lookBackWindowLabelRuleRuns",{defaultMessage:"{amount, number} rule {amount, plural, one {run} other {runs}}",values:{amount:E}}))),statusChangeThreshold:Object(d.jsx)("b",null,h(c))}})))));var E}));var k=s(19),w=s(5);var E=s(50);const M=o.i18n.translate("xpack.triggersActionsUI.rulesSettings.modal.flappingDetectionDescription",{defaultMessage:"Detect alerts that switch quickly between active and recovered states and reduce unwanted noise for these flapping alerts."}),I=o.i18n.translate("xpack.triggersActionsUI.rulesSettings.modal.flappingOnLabel",{defaultMessage:"On (recommended)"}),F=o.i18n.translate("xpack.triggersActionsUI.rulesSettings.modal.flappingOffLabel",{defaultMessage:"Off"}),C=Object(n.memo)((()=>Object(d.jsx)(i.EuiEmptyPrompt,{"data-test-subj":"rulesSettingsErrorPrompt",color:"danger",iconType:"warning",title:Object(d.jsx)("h4",null,Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.modal.errorPromptTitle",defaultMessage:"Unable to load your rules settings"})),body:Object(d.jsx)("p",null,Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.modal.errorPromptBody",defaultMessage:"There was an error loading your rules settings. Contact your administrator for help"}))}))),T=Object(n.memo)((e=>{const{settings:t,onChange:s,isSwitchDisabled:n}=e;return Object(d.jsx)(i.EuiFlexItem,null,Object(d.jsx)(i.EuiFlexGroup,{direction:"column"},Object(d.jsx)(i.EuiFlexItem,{grow:!1},Object(d.jsx)(i.EuiText,{color:"subdued",size:"s"},Object(d.jsx)("p",null,M))),Object(d.jsx)(i.EuiFlexItem,{grow:!1},Object(d.jsx)(i.EuiSwitch,{"data-test-subj":"rulesSettingsModalEnableSwitch",label:t.enabled?I:F,checked:t.enabled,disabled:n,onChange:s}))))})),A=Object(n.memo)((e=>{const{settings:t,onChange:s}=e;return t?t.enabled?Object(d.jsx)(i.EuiFlexItem,null,Object(d.jsx)(f,{flappingSettings:t,onChange:s})):Object(d.jsx)(i.EuiFlexItem,{"data-test-subj":"rulesSettingsModalFlappingOffPrompt"},Object(d.jsx)(i.EuiPanel,{borderRadius:"none",color:"subdued",grow:!1},Object(d.jsx)(i.EuiText,{size:"s"},Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.flapping.flappingSettingsOffDescription",defaultMessage:"Alert flapping detection is off. Alerts will be generated based on the rule interval, which might result in higher alert volumes."})))):null})),v=Object(n.memo)((e=>{const{isVisible:t,onClose:s,setUpdatingRulesSettings:a,onSave:u}=e,{application:{capabilities:c}}=Object(r.b)().services,{rulesSettings:{show:g,save:j,writeFlappingSettingsUI:b,readFlappingSettingsUI:p}}=c,[x,h]=Object(n.useState)(),{isLoading:m,isError:S}=(e=>{const{enabled:t,onSuccess:s}=e,{http:n,notifications:{toasts:a}}=Object(r.b)().services,{data:i,isFetching:l,isError:u,isLoadingError:c,isLoading:g}=Object(k.useQuery)({queryKey:["getFlappingSettings"],queryFn:()=>(async({http:e})=>(({look_back_window:e,status_change_threshold:t,...s})=>({...s,lookBackWindow:e,statusChangeThreshold:t}))(await e.get(`${w.j}/rules/settings/_flapping`)))({http:n}),onError:()=>{a.addDanger(o.i18n.translate("xpack.triggersActionsUI.rulesSettings.modal.getRulesSettingsError",{defaultMessage:"Failed to get rules Settings."}))},onSuccess:s,enabled:t,refetchOnWindowFocus:!1,retry:!1});return{isLoading:g||l,isError:u||c,data:i}})({enabled:t,onSuccess:e=>{x||h({enabled:e.enabled,lookBackWindow:e.lookBackWindow,statusChangeThreshold:e.statusChangeThreshold})}}),{mutate:f}=(e=>{const{onSave:t,onClose:s,setUpdatingRulesSettings:n}=e,{http:a,notifications:{toasts:i}}=Object(r.b)().services;return Object(k.useMutation)({mutationFn:e=>(async({http:e,flappingSettings:t})=>{let s;try{s=JSON.stringify({enabled:t.enabled,look_back_window:t.lookBackWindow,status_change_threshold:t.statusChangeThreshold})}catch(e){throw new Error(`Unable to parse flapping settings update params: ${e}`)}return(({look_back_window:e,status_change_threshold:t,...s})=>({...s,lookBackWindow:e,statusChangeThreshold:t}))(await e.post(`${w.j}/rules/settings/_flapping`,{body:s}))})({http:a,flappingSettings:e}),onMutate:()=>{s(),null==n||n(!0)},onSuccess:()=>{i.addSuccess(o.i18n.translate("xpack.triggersActionsUI.rulesSettings.modal.updateRulesSettingsSuccess",{defaultMessage:"Rules settings updated successfully."}))},onError:()=>{i.addDanger(o.i18n.translate("xpack.triggersActionsUI.rulesSettings.modal.updateRulesSettingsFailure",{defaultMessage:"Failed to update rules settings."}))},onSettled:()=>{null==n||n(!1),null==t||t()}})})({onSave:u,onClose:s,setUpdatingRulesSettings:a}),M=j&&b&&!S,I=g&&p,F=(e,t)=>{if(!x)return;const s={...x,[e]:t};h({...s,statusChangeThreshold:Math.min(s.lookBackWindow,s.statusChangeThreshold)})};return t?Object(d.jsx)(i.EuiModal,{"data-test-subj":"rulesSettingsModal",onClose:s,maxWidth:880},Object(d.jsx)(i.EuiModalHeader,null,Object(d.jsx)(i.EuiModalHeaderTitle,{component:"h3"},Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.modal.title",defaultMessage:"Rule settings"}))),Object(d.jsx)(i.EuiModalBody,null,Object(d.jsx)(i.EuiCallOut,{size:"s",title:o.i18n.translate("xpack.triggersActionsUI.rulesSettings.modal.calloutMessage",{defaultMessage:"Apply to all rules within the current space."})}),Object(d.jsx)(i.EuiHorizontalRule,null),S||!I?Object(d.jsx)(C,null):!x||m?Object(d.jsx)(E.a,null):Object(d.jsx)(i.EuiForm,null,Object(d.jsx)(i.EuiFlexGroup,null,Object(d.jsx)(i.EuiFlexItem,null,Object(d.jsx)(O,null))),Object(d.jsx)(i.EuiSpacer,{size:"s"}),Object(d.jsx)(i.EuiFlexGroup,null,Object(d.jsx)(T,{isSwitchDisabled:!M,settings:x,onChange:e=>F("enabled",e.target.checked)}),Object(d.jsx)(A,{settings:x,onChange:(e,t)=>F(e,t)}))),Object(d.jsx)(i.EuiSpacer,null),Object(d.jsx)(i.EuiHorizontalRule,{margin:"none"})),Object(d.jsx)(i.EuiModalFooter,null,Object(d.jsx)(i.EuiButtonEmpty,{"data-test-subj":"rulesSettingsModalCancelButton",onClick:s},Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.modal.cancelButton",defaultMessage:"Cancel"})),Object(d.jsx)(i.EuiButton,{fill:!0,"data-test-subj":"rulesSettingsModalSaveButton",onClick:()=>{x&&f(x)},disabled:!M},Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.modal.saveButton",defaultMessage:"Save"})))):null})),U=()=>{const[e,t]=Object(n.useState)(!1),{application:{capabilities:s}}=Object(r.b)().services,{show:o,readFlappingSettingsUI:u}=s.rulesSettings;return o&&u?Object(d.jsx)(a.a.Fragment,null,Object(d.jsx)(i.EuiButtonEmpty,{onClick:()=>t(!0),iconType:"gear","data-test-subj":"rulesSettingsLink"},Object(d.jsx)(l.FormattedMessage,{id:"xpack.triggersActionsUI.rulesSettings.link.title",defaultMessage:"Settings"})),Object(d.jsx)(v,{isVisible:e,onClose:()=>t(!1)})):null}}}]);