{"version":3,"sources":["webpack:///./node_modules/reactstrap/es/FormGroup.js","webpack:///./node_modules/reactstrap/es/FormFeedback.js","webpack:///./node_modules/reactstrap/es/Form.js","webpack:///./app/containers/Escalation/messages.js","webpack:///./app/containers/Escalation/RuleDisplay.js","webpack:///./app/containers/Escalation/RuleInputs.js","webpack:///./app/containers/Escalation/DetailInputs.js","webpack:///./app/containers/Escalation/SwimlaneInputs.js","webpack:///./app/containers/Escalation/FilterInputs.js","webpack:///./app/containers/Escalation/AddEscalationModal.js","webpack:///./app/containers/Escalation/index.js"],"names":["propTypes","children","node","row","bool","check","inline","disabled","tag","className","string","cssModule","object","FormGroup","props","Tag","attributes","classes","createElement","defaultProps","valid","tooltip","undefined","FormFeedback","validMode","innerRef","oneOfType","func","Form","_Component","_this","call","this","getRef","bind","submit","_proto","prototype","ref","render","_this$props","defineMessages","allEscalationTitle","id","defaultMessage","addEscalation","missingUser","disabledUser","missingBot","width","Icon","fa","name","mapStateToProps","createStructuredSelector","users","selectSonraiUsers","usersLoading","selectSonraiUsersLoading","bots","selectBots","withConnect","connect","compose","themeable","text","getMissingTooltip","srn","type","style","display","gridTemplateColumns","marginRight","color","fontWeight","fontStyle","Tooltip","trigger","anchor","UserWidget","table","tooltipContent","messages","rule","get","Math","floor","Hoverable","hoverStyle","backgroundColor","theme","highlight","cursor","renderContent","hovered","whiteSpace","overflowX","textOverflow","columnGap","bot","find","getIn","BotWidget","user","startCase","camelCase","getLink","canEdit","BorderlessButton","onClick","delete","roleOptions","value","label","unitOptions","Label","for","dispatch","bindActionCreators","fetchEscalationOptions","fetchPolicies","getBots","useEffect","isEmpty","filters","botOptions","length","setBotOptions","map","toJS","userOptions","setUserOptions","toList","useState","rules","List","selectedRules","setSelectedRules","addNew","setAddNew","newResolvedTime","setNewResolvedTime","newResolvedTimeValid","setNewResolvedTimeValid","newResolvedUnit","setNewResolvedUnit","newActionType","setNewActionType","newActionTarget","setNewActionTarget","test","clearNew","controlHeight","onChange","options","placeholder","renderBotSelect","renderUserSelect","loading","alignItems","justifyContent","renderRoleSelect","styles","empty","buttons","marginTop","addContainer","background","neutralLight","borderRadius","padding","gridTemplateRows","rowGap","topContainer","marginBottom","setRules","marginLeft","sortBy","index","splice","handleRemoveRule","fontSize","verticalAlign","lineHeight","height","Input","params","target","defaultValue","Object","keys","ACTION_TYPES","key","renderSelect","Button","escalateToBot","botSrn","assignUser","userSrn","assignRole","roleType","push","fromJS","actionType","triggerAfter","size","DetailInputs","hasTyped","setHasTyped","invalid","title","setTitle","setDescription","description","allSwimlanes","selectSwimlanes","permissionChecker","swimlanes","swombo","swimlane","sl","selectedSwimlanes","setSelectedSwimlanes","setSwimlanes","sw","swimlaneSRN","isMulti","filter","swim","userHasPermission","permissionName","FILTER_TYPES","policy","controlframework","property","access","activity","custom","all","filterTypeOptions","accessOptions","activityOptions","properties","selectEscalationFilterOptions","loadingProperties","selectEscalationFilterOptionsLoading","policies","selectPolicies","controlFrameworks","selectControlGroups","fetchingPolicies","selectFetchingPolicies","fetchingCFs","selectFetchingControlGroups","getKeyOption","controlFrameworkSrn","toLowerCase","op","selectStyles","option","data","success","policyOptions","setPolicyOptions","controlFrameworkOptions","setControlFrameworkOptions","cf","propertyOptions","setPropertyOptions","prop","allKeys","allTypes","ticketKey","ticketType","selectedFilters","setSelectedFilters","hasPolicyLabels","setHasPolicyLabels","hasCFLabels","setHasCFLabels","newType","setNewType","newKey","setNewKey","newAllKeys","setNewAllKeys","allTicketWarningOpen","setAllTicketWarningOpen","set","setFilters","addAllTicketType","closeButton","getAllKeyText","handleRemoveFilter","data-tip","data-for","place","effect","multiline","html","isDisabled","filteredOptions","renderCFSelect","getKeyLabel","checked","cfSrn","toggle","isOpen","WIZARDS","step","forward","ModalHeader","AddEscalationModal","wizardMode","setWizardMode","shouldClose","setShouldClose","errorMsg","setErrorMsg","creating","error","setError","closeOut","clearError","setTimeout","close","renderDetails","BorderedCard","SwimlaneInputs","renderSwimlanes","FilterInputs","renderFilters","RuleInputs","renderRules","Modal","Alert","ModalBody","minHeight","renderBody","ModalFooter","TextLink","create","outline","SquareLoadingAnimation","Escalation","container","gridRowGap","topGuy","setState","escalationModalOpen","escalations","esc","createdBy","resourceId","pathname","search","qs","stringify","getEscalations","state","SectionHeader","openEscalationModal","list","DataTable","autosize","customColumnConfig","flex","headerName","cellRendererFramework","hide","minWidth","pinned","enableRowGroup","menuTabs","suppressMenu","cellStyle","deleteEscalation","deleting","onDoubleClickRow","handleNav","getEscalationData","createEscalation","closeEscalationModal","creatingError","createEscalationError","React","Component","selectEscalations","selectEscalationsLoading","selectDeletingEscalations","selectCreatingEscalation","selectCreatingEscalationError"],"mappings":"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","file":"21.86021172bd92c2a8b1d5.chunk.js","sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n row: PropTypes.bool,\n check: PropTypes.bool,\n inline: PropTypes.bool,\n disabled: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar FormGroup = function FormGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n row = props.row,\n disabled = props.disabled,\n check = props.check,\n inline = props.inline,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"row\", \"disabled\", \"check\", \"inline\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, row ? 'row' : false, check ? 'form-check' : 'form-group', check && inline ? 'form-check-inline' : false, check && disabled ? 'disabled' : false), cssModule);\n\n if (Tag === 'fieldset') {\n attributes.disabled = disabled;\n }\n\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nFormGroup.propTypes = propTypes;\nFormGroup.defaultProps = defaultProps;\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n valid: PropTypes.bool,\n tooltip: PropTypes.bool\n};\nvar defaultProps = {\n tag: 'div',\n valid: undefined\n};\n\nvar FormFeedback = function FormFeedback(props) {\n var className = props.className,\n cssModule = props.cssModule,\n valid = props.valid,\n tooltip = props.tooltip,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"valid\", \"tooltip\", \"tag\"]);\n\n var validMode = tooltip ? 'tooltip' : 'feedback';\n var classes = mapToCssModules(classNames(className, valid ? \"valid-\" + validMode : \"invalid-\" + validMode), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nFormFeedback.propTypes = propTypes;\nFormFeedback.defaultProps = defaultProps;\nexport default FormFeedback;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n inline: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'form'\n};\n\nvar Form =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Form, _Component);\n\n function Form(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.submit = _this.submit.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Form.prototype;\n\n _proto.getRef = function getRef(ref) {\n if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n this.ref = ref;\n };\n\n _proto.submit = function submit() {\n if (this.ref) {\n this.ref.submit();\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n inline = _this$props.inline,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"cssModule\", \"inline\", \"tag\", \"innerRef\"]);\n\n var classes = mapToCssModules(classNames(className, inline ? 'form-inline' : false), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes\n }));\n };\n\n return Form;\n}(Component);\n\nForm.propTypes = propTypes;\nForm.defaultProps = defaultProps;\nexport default Form;","/*\n * AppLayout Messages\n *\n * This contains all the text for the AppLayout component.\n */\nimport { defineMessages } from 'react-intl'\n\nexport default defineMessages({\n allEscalationTitle: {\n id: 'app.containers.Escalation.allEscalationTitle',\n defaultMessage: 'All Escalation Schemes',\n },\n addEscalation: {\n id: 'app.containers.Escalation.addEscalation',\n defaultMessage: 'Add Escalation',\n },\n missingUser: {\n id: 'app.containers.Escalation.missingUser',\n defaultMessage:\n 'User data failed to load or no longer exists. If user has been deleted the escalation rule will fail.',\n },\n disabledUser: {\n id: 'app.containers.Escalation.disabledUser',\n defaultMessage:\n 'User is disabled. If user is disabled the escalalation rule will fail.',\n },\n missingBot: {\n id: 'app.containers.Escalation.missingBot',\n defaultMessage:\n 'Bot data failed to load or no longer exists. If bot has been deleted the escalation rule will fail.',\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutableProptypes from 'react-immutable-proptypes'\nimport { createStructuredSelector } from 'reselect'\nimport { connect } from 'react-redux'\nimport Hoverable from 'components/Hoverable'\nimport BorderlessButton from 'components/BorderlessButton'\nimport Icon from 'components/Icon'\nimport BotWidget from 'components/BotWidget'\nimport UserWidget from 'components/UserWidget'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport { compose } from 'redux'\nimport { startCase, camelCase } from 'lodash'\nimport { FormattedMessage } from 'react-intl'\nimport {\n selectBots,\n selectSonraiUsers,\n selectSonraiUsersLoading,\n} from 'containers/SonraiData/selectors'\nimport { TitleShimmer } from 'components/ShimmerLoader'\nimport Tooltip from 'components/Tooltip'\nimport messages from './messages'\n\nconst RuleDisplay = props => {\n const getMissingTooltip = (srn, type) => {\n if (type === 'bot') {\n return (\n \n \n {`Unavailable - ${srn}`}\n \n )\n }\n\n return (\n \n \n \n \n }\n tooltipContent={\n type === 'user' ? (\n \n ) : type === 'disabled' ? (\n \n ) : (\n \n )\n }\n />\n )\n }\n\n const getLink = () => {\n if (props.rule.get('actionType') === 'ESCALATE_TO_BOT') {\n if (props.bots.get('isLoading')) {\n return \n }\n const bot = props.bots\n .get('data')\n .find(\n bot =>\n bot.get('srn') === props.rule.getIn(['escalateToBot', 'botSrn'])\n )\n if (bot) {\n return \n } else {\n return getMissingTooltip(\n props.rule.getIn(['escalateToBot', 'botSrn']),\n bot\n )\n }\n }\n if (props.rule.get('actionType') === 'ASSIGN_USER') {\n if (props.usersLoading) {\n return \n }\n const user = props.users.get(props.rule.getIn(['assignUser', 'userSrn']))\n if (user) {\n if (user.get('isActive')) {\n return (\n \n )\n } else {\n return getMissingTooltip(\n props.rule.getIn(['assignUser', 'userSrn']),\n 'disabled'\n )\n }\n } else {\n return getMissingTooltip(\n props.rule.getIn(['assignUser', 'userSrn']),\n 'user'\n )\n }\n } else if (props.rule.get('actionType') === 'ASSIGN_ROLE') {\n return (\n \n {startCase(camelCase(props.rule.getIn(['assignRole', 'roleType'])))}\n \n )\n }\n }\n\n const getTypeMessage = () => {\n if (props.rule.get('actionType') === 'ESCALATE_TO_BOT') {\n return ' escalate to applicable bot '\n }\n if (props.rule.get('actionType') === 'ASSIGN_USER') {\n return ' escalate to user '\n } else if (props.rule.get('actionType') === 'ASSIGN_ROLE') {\n return ' escalate to role '\n }\n }\n\n const buildTimeMessage = () => {\n let text = ' after '\n if (props.rule.get('triggerAfter') < 86400) {\n text += `${Math.floor(props.rule.get('triggerAfter') / 3600)} hour(s)`\n } else {\n text += `${Math.floor(props.rule.get('triggerAfter') / 86400)} day(s)`\n }\n return text\n }\n\n const message = buildTimeMessage() + getTypeMessage()\n\n return (\n
\n (\n \n \n
\n If  not resolved\n
\n\n
{message}
\n \n {getLink()}\n
\n \n\n {hovered && props.canEdit && (\n \n \n \n )}\n \n )}\n />\n \n )\n}\n\nRuleDisplay.propTypes = {\n rule: ImmutableProptypes.map,\n bots: ImmutableProptypes.map,\n users: ImmutableProptypes.map,\n usersLoading: PropTypes.bool,\n delete: PropTypes.func,\n canEdit: PropTypes.bool,\n theme: themeShape,\n}\n\nconst mapStateToProps = createStructuredSelector({\n users: selectSonraiUsers,\n usersLoading: selectSonraiUsersLoading,\n bots: selectBots,\n})\n\nconst withConnect = connect(mapStateToProps, null)\n\nexport default compose(withConnect, themeable)(RuleDisplay)\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutableProptypes from 'react-immutable-proptypes'\nimport { connect } from 'react-redux'\nimport { createStructuredSelector } from 'reselect'\nimport { bindActionCreators, compose } from 'redux'\nimport { Form, Input, FormGroup, Label } from 'reactstrap'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport { fromJS, List } from 'immutable'\nimport Select from 'react-select'\nimport Icon from 'components/Icon'\nimport BorderlessButton from 'components/BorderlessButton'\nimport Button from 'components/Button'\nimport { getBots } from 'containers/SonraiData/actions'\nimport {\n selectBots,\n selectSonraiUsers,\n selectSonraiUsersLoading,\n} from 'containers/SonraiData/selectors'\nimport { fetchEscalationOptions } from 'containers/EscalationData/actions'\nimport { fetchPolicies } from 'containers/ControlFrameworkData/actions'\nimport RuleDisplay from './RuleDisplay'\nimport { ACTION_TYPES } from 'appConstants'\nimport { TitleShimmer } from 'components/ShimmerLoader'\n\nconst roleOptions = [\n { value: 'SYSTEM_ADMIN', label: 'System Admin' },\n { value: 'SWIMLANE_OWNER', label: 'Swimlane Owner' },\n]\n\nconst unitOptions = [\n { label: 'Hour(s)', value: 'hour' },\n { label: 'Day(s)', value: 'day' },\n]\n\nconst RuleInputs = props => {\n useEffect(() => {\n if (props.bots.get('data').isEmpty() && !props.bots.get('isLoading')) {\n props.getBots({ filters: {} })\n }\n }, [])\n\n useEffect(() => {\n if (botOptions.length < 1 && !props.bots.get('data').isEmpty()) {\n setBotOptions(\n props.bots\n .get('data')\n .map(bot => ({ label: bot.get('title'), value: bot.get('srn') }))\n .toJS()\n )\n }\n }, [props.bots])\n\n useEffect(() => {\n if (userOptions.length < 1 && !props.users.isEmpty()) {\n setUserOptions(\n props.users\n .map(user => ({\n label: user.get('name'),\n value: user.get('srn'),\n }))\n .toList()\n .toJS()\n )\n }\n })\n\n const [selectedRules, setSelectedRules] = useState(\n props.rules ? props.rules : List()\n )\n const [addNew, setAddNew] = useState(false)\n\n const [newResolvedTime, setNewResolvedTime] = useState(0)\n const [newResolvedTimeValid, setNewResolvedTimeValid] = useState(true)\n const [newResolvedUnit, setNewResolvedUnit] = useState(unitOptions[0])\n const [newActionType, setNewActionType] = useState(null)\n const [newActionTarget, setNewActionTarget] = useState(null)\n\n const [botOptions, setBotOptions] = useState([])\n const [userOptions, setUserOptions] = useState([])\n\n useEffect(() => {\n if (newResolvedTime) {\n if (/^\\d+$/.test(newResolvedTime)) {\n setNewResolvedTimeValid(true)\n } else {\n setNewResolvedTimeValid(false)\n }\n }\n }, [newResolvedTime])\n\n const clearNew = () => {\n setAddNew(false)\n setNewResolvedTime(0)\n setNewResolvedUnit(unitOptions[0])\n setNewActionType(null)\n setNewActionTarget(null)\n }\n\n const renderSelect = () => {\n switch (newActionType.value) {\n case 'ESCALATE_TO_BOT':\n return renderBotSelect()\n case 'ASSIGN_USER':\n return renderUserSelect(props.usersLoading)\n case 'ASSIGN_ROLE':\n return renderRoleSelect()\n }\n }\n\n const renderBotSelect = () => {\n return (\n
\n \n \n
\n )\n }\n\n const renderUserSelect = loading => {\n return (\n
\n \n {loading ? (\n \n \n
\n ) : (\n \n )}\n \n )\n }\n\n const renderRoleSelect = () => {\n return (\n
\n \n \n
\n )\n }\n\n const styles = {\n addNew: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n empty: {\n fontWeight: 400,\n fontStyle: 'italic',\n },\n buttons: {\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n marginTop: '1em',\n columnGap: '1em',\n },\n addContainer: {\n background: props.theme.neutralLight,\n borderRadius: '0.25em',\n padding: '0.5em',\n marginTop: '1em',\n display: 'grid',\n gridTemplateRows: 'auto auto auto',\n rowGap: '1em',\n },\n topContainer: {\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n marginBottom: '1em',\n },\n }\n\n const handleRemoveRule = index => {\n setSelectedRules(selectedRules.splice(index, 1))\n }\n\n const handleAddRule = () => {\n let target = {}\n switch (newActionType.value) {\n case 'ESCALATE_TO_BOT':\n target.escalateToBot = {\n botSrn: newActionTarget.value,\n }\n break\n case 'ASSIGN_USER':\n target.assignUser = {\n userSrn: newActionTarget.value,\n }\n break\n case 'ASSIGN_ROLE':\n target.assignRole = {\n roleType: newActionTarget.value,\n }\n break\n }\n setSelectedRules(\n selectedRules.push(\n fromJS({\n actionType: newActionType.value,\n triggerAfter:\n newResolvedUnit.value === 'hour'\n ? newResolvedTime * 3600\n : newResolvedTime * 86400,\n ...target,\n })\n )\n )\n clearNew()\n }\n\n useEffect(() => {\n props.setRules(selectedRules)\n }, [selectedRules])\n\n useEffect(() => {\n if (!props.canEdit) {\n setSelectedRules(props.rules ? props.rules : List())\n }\n }, [props.rules])\n\n return (\n
\n \n
\n
\n {selectedRules.isEmpty() ? 'No Rules Assigned' : 'Rules Assigned'}\n
\n
\n {!addNew && props.canEdit && (\n setAddNew(true)} color=\"primary\">\n New Rule\n \n \n )}\n
\n
\n {selectedRules\n .sortBy(rule => rule.get('triggerAfter'))\n .map((rule, index) => {\n return (\n
\n {!props.bots.get('data').isEmpty() &&\n !props.bots.get('isLoading') ? (\n handleRemoveRule(index)}\n canEdit={props.canEdit}\n rule={rule}\n />\n ) : (\n \n )}\n
\n )\n })}\n\n {addNew && (\n
\n
\n
\n \n {\n setNewResolvedTime(params.target.value)\n }}\n type=\"number\"\n defaultValue={0}\n />\n
\n
\n \n \n
\n
\n
\n
\n \n {\n setNewActionType(params)\n setNewActionTarget(null)\n }}\n options={Object.keys(ACTION_TYPES).map(key => ({\n value: key,\n label: ACTION_TYPES[key],\n }))}\n placeholder=\"Select an Action...\"\n />\n
\n
\n {newActionType && renderSelect()}\n
\n
\n\n
\n \n Add\n \n \n
\n \n Close\n \n
\n
\n
\n )}\n
\n
\n )\n}\n\nRuleInputs.propTypes = {\n rules: ImmutableProptypes.list,\n usersLoading: PropTypes.bool,\n setRules: PropTypes.func,\n getBots: PropTypes.func,\n users: ImmutableProptypes.map,\n canEdit: PropTypes.bool,\n bots: ImmutableProptypes.map,\n theme: themeShape,\n}\n\nconst mapStateToProps = createStructuredSelector({\n users: selectSonraiUsers,\n usersLoading: selectSonraiUsersLoading,\n bots: selectBots,\n})\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n fetchEscalationOptions,\n fetchPolicies,\n getBots,\n },\n dispatch\n )\n}\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps)\n\nexport default compose(withConnect, themeable)(RuleInputs)\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Form, FormFeedback, Input, FormGroup, Label } from 'reactstrap'\n\nconst styles = {\n label: { fontWeight: 400, fontStyle: 'italic' },\n}\nconst DetailInputs = props => {\n const [hasTyped, setHasTyped] = useState(false)\n return (\n
\n \n \n {\n props.setTitle(params.target.value)\n setHasTyped(true)\n }}\n value={props.title}\n />\n Enter an Escalation title.\n \n \n \n {\n props.setDescription(params.target.value)\n setHasTyped(true)\n }}\n value={props.description}\n />\n \n
\n )\n}\n\nDetailInputs.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n setTitle: PropTypes.func,\n setDescription: PropTypes.func,\n}\n\nexport default DetailInputs\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutableProptypes from 'react-immutable-proptypes'\nimport { createStructuredSelector } from 'reselect'\nimport { compose } from 'redux'\nimport { connect } from 'react-redux'\nimport { Form, FormGroup, Label } from 'reactstrap'\nimport Select from 'react-select'\nimport { selectSwimlanes } from 'containers/SonraiData/selectors'\nimport { fromJS } from 'immutable'\nimport permissionChecker from 'containers/PermissionChecker'\n\nconst findLabel = (srn, swimlanes) => {\n const swimlane = swimlanes.find(sl => sl.get('srn') === srn)\n if (swimlane) {\n return swimlane.get('title')\n } else {\n return srn\n }\n}\n\nconst styles = {\n label: {\n fontWeight: 400,\n fontStyle: 'italic',\n },\n}\n\nconst SwimlaneInputs = props => {\n const [selectedSwimlanes, setSelectedSwimlanes] = useState(\n props.swimlanes\n ? props.swimlanes\n .map(swombo => ({\n label: findLabel(swombo.get('swimlaneSRN'), props.allSwimlanes),\n value: swombo.get('swimlaneSRN'),\n }))\n .toJS()\n : []\n )\n\n useEffect(() => {\n props.setSwimlanes(\n fromJS(\n selectedSwimlanes\n ? selectedSwimlanes.map(sw => ({ swimlaneSRN: sw.value }))\n : null\n )\n )\n }, [selectedSwimlanes])\n\n const handleChangeSwimlanes = params => {\n setSelectedSwimlanes(params)\n }\n\n const getOptions = () => {\n return props.allSwimlanes\n .toList()\n .filter(swim => {\n return props.userHasPermission({\n permissionName: 'assign.escalations',\n swimlanes: [swim.get('srn')],\n })\n })\n .map(swombo => ({\n value: swombo.get('srn'),\n label: swombo.get('title'),\n }))\n .toJS()\n }\n\n return (\n
\n \n \n \n \n
\n )\n}\n\nSwimlaneInputs.propTypes = {\n allSwimlanes: ImmutableProptypes.map,\n setSwimlanes: PropTypes.func,\n userHasPermission: PropTypes.func.isRequired,\n swimlanes: ImmutableProptypes.list,\n}\n\nconst mapStateToProps = createStructuredSelector({\n allSwimlanes: selectSwimlanes,\n})\n\nconst withConnect = connect(mapStateToProps, null)\n\nexport default compose(withConnect, permissionChecker)(SwimlaneInputs)\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutableProptypes from 'react-immutable-proptypes'\nimport { connect } from 'react-redux'\nimport { createStructuredSelector } from 'reselect'\nimport { bindActionCreators, compose } from 'redux'\nimport {\n Form,\n Input,\n FormGroup,\n Label,\n Modal,\n ModalHeader,\n ModalBody,\n} from 'reactstrap'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport { fromJS, List } from 'immutable'\nimport Select from 'react-select'\nimport Icon from 'components/Icon'\nimport BorderlessButton from 'components/BorderlessButton'\nimport Button from 'components/Button'\nimport TextLink from 'components/TextLink'\nimport Hoverable from 'components/Hoverable'\nimport ReactTooltip from 'react-tooltip'\nimport {\n selectEscalationFilterOptions,\n selectEscalationFilterOptionsLoading,\n} from 'containers/EscalationData/selectors'\nimport {\n selectPolicies,\n selectControlGroups,\n selectFetchingPolicies,\n selectFetchingControlGroups,\n} from 'containers/ControlFrameworkData/selectors'\nimport { fetchEscalationOptions } from 'containers/EscalationData/actions'\nimport { startCase } from 'lodash'\nimport { TitleShimmer } from 'components/ShimmerLoader'\n\nconst FILTER_TYPES = {\n policy: 'Control Policy',\n controlframework: 'Control Framework',\n property: 'Property Change',\n access: 'Access',\n activity: 'Activity',\n custom: 'Custom Ticket',\n all: 'Enable All',\n}\n\nconst filterTypeOptions = Object.keys(FILTER_TYPES).map(key => ({\n value: key,\n label: FILTER_TYPES[key],\n}))\n\n// Access -> Has permission to, Actionable by\nconst accessOptions = [\n { value: 'hasPermissionTo', label: 'Has Permission To' },\n { value: 'actionableBy', label: 'Actionable By' },\n]\n// Activity -> Accessed from, Accessed using\nconst activityOptions = [\n { value: 'accessedFrom', label: 'Accessed From' },\n { value: 'accessedUsing', label: 'Accessed Using' },\n]\n\nconst getKeyText = keys => {\n return `Key: ${keys.get('label')}`\n}\n\nconst FilterInputs = props => {\n const getKeyOption = (type, key, controlFrameworkSrn) => {\n const lowerType = type ? type.toLowerCase() : ''\n switch (lowerType) {\n case 'policy':\n return {\n value: key,\n label: controlFrameworkSrn\n ? props.controlFrameworks.getIn(\n [controlFrameworkSrn, 'title'],\n controlFrameworkSrn\n )\n : props.policies.getIn([key, 'title'], key),\n }\n case 'property':\n return {\n value: key,\n label: startCase(key),\n }\n case 'access':\n return {\n value: key,\n label: accessOptions.find(op => op.value === key)\n ? accessOptions.find(op => op.value === key).label\n : '',\n }\n case 'activity':\n return {\n value: key,\n label: activityOptions.find(op => op.value === key)\n ? activityOptions.find(op => op.value === key).label\n : '',\n }\n case 'custom':\n return {\n value: key,\n label: key,\n }\n }\n }\n\n const selectStyles = {\n option: (styles, { data }) => {\n return {\n ...styles,\n // backgroundColor:\n // data.value === 'ALL' ? props.theme.success : 'inherited',\n color: data.value === 'all' ? props.theme.success : 'inherited',\n ':hover': {\n backgroundColor: '#B2D4FF',\n },\n }\n },\n }\n\n const buildOptionsOnMount = filters => {\n return fromJS(\n filters.toJS().map(filter => ({\n allKeys: filter.allKeys,\n allTypes: filter.allTypes,\n ticketKey: getKeyOption(\n filter.ticketType,\n filter.ticketKey,\n filter.controlFrameworkSrn\n ),\n ticketType: {\n value: filter.ticketType,\n label:\n FILTER_TYPES[\n filter.ticketType ? filter.ticketType.toLowerCase() : ''\n ],\n },\n controlFrameworkSrn: filter.controlFrameworkSrn,\n }))\n )\n }\n\n useEffect(() => {\n if (props.properties.isEmpty() && !props.loadingProperties) {\n props.fetchEscalationOptions()\n }\n }, [])\n\n useEffect(() => {\n if (\n !policyOptions &&\n !props.policies.isEmpty() &&\n !props.fetchingPolicies\n ) {\n setPolicyOptions(\n props.policies\n .map(policy => ({\n value: policy.get('srn'),\n label: policy.get('title'),\n }))\n .toList()\n .toJS()\n )\n }\n if (\n !controlFrameworkOptions &&\n !props.controlFrameworks.isEmpty() &&\n !props.fetchingCFs\n ) {\n setControlFrameworkOptions(\n props.controlFrameworks\n .map(cf => ({\n value: cf.get('srn'),\n label: cf.get('title'),\n }))\n .toList()\n .toJS()\n )\n }\n if (\n !propertyOptions &&\n !props.properties.isEmpty() &&\n !props.loadingProperties\n ) {\n setPropertyOptions(\n props.properties\n .map(prop => ({\n value: prop.get('keyName'),\n label: startCase(prop.get('keyName')),\n }))\n .toJS()\n )\n }\n })\n\n const [selectedFilters, setSelectedFilters] = useState(\n buildOptionsOnMount(props.filters ? props.filters : List())\n )\n const [hasPolicyLabels, setHasPolicyLabels] = useState(false)\n const [hasCFLabels, setHasCFLabels] = useState(false)\n const [addNew, setAddNew] = useState(false)\n\n const [newType, setNewType] = useState(null)\n const [newKey, setNewKey] = useState('')\n const [newAllKeys, setNewAllKeys] = useState(false)\n\n const [policyOptions, setPolicyOptions] = useState(null)\n const [controlFrameworkOptions, setControlFrameworkOptions] = useState(null)\n const [propertyOptions, setPropertyOptions] = useState(null)\n\n const [allTicketWarningOpen, setAllTicketWarningOpen] = useState(false)\n\n useEffect(() => {\n if (\n (!props.policies.isEmpty() &&\n !props.fetchingPolicies &&\n !hasPolicyLabels) ||\n (!props.controlFrameworks.isEmpty() && !props.fetchingCFs && !hasCFLabels)\n ) {\n setSelectedFilters(\n selectedFilters.map(filter => {\n if (\n filter.getIn(['ticketType', 'value'], '').toLowerCase() === 'policy'\n ) {\n return filter.set(\n 'ticketKey',\n fromJS(\n getKeyOption(\n filter.getIn(['ticketType', 'value']),\n filter.getIn(['ticketKey', 'value']),\n filter.get('controlFrameworkSrn')\n )\n )\n )\n } else {\n return filter\n }\n })\n )\n if (\n !props.policies.isEmpty() &&\n !props.fetchingPolicies &&\n !hasPolicyLabels\n ) {\n setHasPolicyLabels(true)\n }\n if (\n !props.controlFrameworks.isEmpty() &&\n !props.fetchingCFs &&\n !hasCFLabels\n ) {\n setHasCFLabels(true)\n }\n }\n }, [props.fetchingPolicies, props.fetchingCFs])\n\n useEffect(() => {\n props.setFilters(\n fromJS(\n selectedFilters\n .map(filter => ({\n allKeys: filter.get('allKeys'),\n ticketKey: filter.get('ticketKey'),\n ticketType: startCase(filter.getIn(['ticketType', 'value'])),\n allTypes: filter.get('allTypes'),\n controlFrameworkSrn: filter.get('controlFrameworkSrn'),\n }))\n .toJS()\n )\n )\n }, [selectedFilters])\n\n useEffect(() => {\n if (newType && newType.value === 'all' && !allTicketWarningOpen) {\n setAddNew(false)\n clearNew()\n if (selectedFilters.isEmpty()) {\n addAllTicketType()\n } else {\n setAllTicketWarningOpen(true)\n }\n }\n }, [newType])\n\n const styles = {\n addNew: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n empty: {\n fontWeight: 400,\n fontStyle: 'italic',\n },\n topContainer: {\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n marginBottom: '1em',\n },\n closeButton: {\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n marginTop: '1em',\n columnGap: '1em',\n },\n addContainer: {\n background: props.theme.neutralLight,\n borderRadius: '0.25em',\n padding: '0.5em',\n marginTop: '1em',\n },\n }\n\n const getAllKeyText = type => {\n const lowerType = type ? type.toLowerCase() : ''\n switch (lowerType) {\n case 'policy':\n return 'All Policies Selected...'\n case 'property':\n return 'All Properties Selected...'\n case 'access':\n return 'All Access Selected...'\n case 'activity':\n return 'All Activity Selected...'\n case 'all':\n return 'All Keys Selected...'\n default:\n return null\n }\n }\n\n const renderPolicySelect = () => {\n if (props.fetchingPolicies || !policyOptions) {\n return \n }\n\n return (\n
\n \n setNewKey(params)}\n options={policyOptions.filter(policy => {\n if (selectedFilters && !selectedFilters.isEmpty()) {\n if (\n selectedFilters.find(\n filter =>\n filter.getIn(['ticketKey', 'value']) === policy.value\n )\n ) {\n return false\n }\n return true\n } else {\n return true\n }\n })}\n />\n
\n )\n }\n\n const renderCFSelect = () => {\n if (props.fetchingCFs || !controlFrameworkOptions) {\n return \n }\n\n let filteredOptions = null\n if (selectedFilters && !selectedFilters.isEmpty()) {\n filteredOptions = controlFrameworkOptions.filter(\n cf =>\n !selectedFilters.find(\n filter => filter.get('controlFrameworkSrn') === cf.value\n )\n )\n }\n\n return (\n
\n \n setNewKey(params)}\n options={filteredOptions ? filteredOptions : controlFrameworkOptions}\n />\n
\n )\n }\n\n const renderPropertySelect = () => {\n if (props.loadingProperties || !propertyOptions) {\n return \n }\n\n return (\n
\n \n setNewKey(params)}\n options={propertyOptions.filter(prop => {\n if (selectedFilters && !selectedFilters.isEmpty()) {\n if (\n selectedFilters.find(\n filter => filter.getIn(['ticketKey', 'value']) === prop.value\n )\n ) {\n return false\n }\n return true\n } else {\n return true\n }\n })}\n />\n
\n )\n }\n\n const renderAccessSelect = () => {\n return (\n
\n \n setNewKey(params)}\n options={accessOptions.filter(access => {\n if (selectedFilters && !selectedFilters.isEmpty()) {\n if (\n selectedFilters.find(\n filter =>\n filter.getIn(['ticketKey', 'value']) === access.value\n )\n ) {\n return false\n }\n return true\n } else {\n return true\n }\n })}\n />\n
\n )\n }\n\n const renderActivitySelect = () => {\n return (\n
\n \n setNewKey(params)}\n options={activityOptions.filter(activity => {\n if (selectedFilters && !selectedFilters.isEmpty()) {\n if (\n selectedFilters.find(\n filter =>\n filter.getIn(['ticketKey', 'value']) === activity.value\n )\n ) {\n return false\n }\n return true\n } else {\n return true\n }\n })}\n />\n
\n )\n }\n\n const renderCustomSelect = () => {\n return
Custom
\n }\n\n const renderSelect = () => {\n const lowerType = newType.value ? newType.value.toLowerCase() : ''\n switch (lowerType) {\n case 'policy':\n return renderPolicySelect()\n case 'controlframework':\n return renderCFSelect()\n case 'property':\n return renderPropertySelect()\n case 'access':\n return renderAccessSelect()\n case 'activity':\n return renderActivitySelect()\n case 'custom':\n return renderCustomSelect()\n default:\n return null\n }\n }\n\n const clearNew = () => {\n setAddNew(false)\n setNewType(null)\n setNewKey('')\n setNewAllKeys(false)\n }\n\n const handleAddFilter = () => {\n let type = newType\n let cfSrn = null\n const lowerType = newType.value ? newType.value.toLowerCase() : ''\n if (lowerType === 'controlframework') {\n type = filterTypeOptions.find(\n op => op.value && op.value.toLowerCase() === 'policy'\n )\n cfSrn = newKey.value\n }\n\n clearNew()\n setSelectedFilters(\n selectedFilters.push(\n fromJS({\n ticketType: type,\n ticketKey: newAllKeys ? null : newKey,\n allKeys: newAllKeys,\n allTypes: false,\n controlFrameworkSrn: cfSrn,\n })\n )\n )\n }\n\n const getKeyLabel = () => {\n const lowerType = newType.value ? newType.value.toLowerCase() : ''\n switch (lowerType) {\n case 'policy':\n return 'All Policies'\n case 'property':\n return 'All Properties'\n case 'access':\n return 'All Access'\n case 'activity':\n return 'All Activities'\n case 'custom':\n return 'All Keys'\n default:\n return null\n }\n }\n\n const addAllTicketType = () => {\n clearNew()\n setAllTicketWarningOpen(false)\n setSelectedFilters(\n fromJS([\n {\n ticketType: { value: 'all', label: 'Enable All' },\n ticketKey: null,\n allKeys: true,\n allTypes: true,\n controlFrameworkSrn: null,\n },\n ])\n )\n }\n\n const handleRemoveFilter = index => {\n setSelectedFilters(selectedFilters.splice(index, 1))\n }\n\n return (\n
\n \n
\n
\n {selectedFilters.isEmpty()\n ? `No Filters Assigned`\n : `Filters Assigned`}\n
\n
\n {!addNew && (\n {\n selectedFilters.getIn([0, 'allTypes'], false)\n ? handleRemoveFilter(0)\n : setAddNew(true)\n }}\n color=\"primary\"\n >\n {selectedFilters.getIn([0, 'allTypes'], false)\n ? `Remove All Types`\n : `New Filter`}\n \n \n )}\n
\n
\n {selectedFilters.map((filter, index) => {\n return (\n
\n (\n \n \n
\n {filter.get('allTypes')\n ? `All Ticket Types`\n : filter.get('controlFrameworkSrn')\n ? 'Control Framework'\n : filter.getIn(['ticketType', 'label'])}\n
\n \n {(filter.get('controlFrameworkSrn') &&\n (props.fetchingCFs ||\n props.controlFrameworks.isEmpty())) ||\n (filter\n .getIn(['ticketType', 'value'], '')\n .toLowerCase() === 'policy' &&\n (props.fetchingPolicies ||\n props.policies.isEmpty())) ? (\n \n ) : filter.get('allKeys') ? (\n getAllKeyText(filter.getIn(['ticketType', 'value']))\n ) : (\n
{filter.getIn(['ticketKey', 'label'])}
\n )}\n
\n {hovered && (\n handleRemoveFilter(index)}\n >\n \n \n )}\n \n \n )}\n />\n \n {filter.get('allKeys')\n ? getAllKeyText(filter.getIn(['ticketType', 'value']))\n : getKeyText(filter.get('ticketKey'))}\n \n \n )\n })}\n\n {addNew && (\n
\n
\n \n {\n setNewKey('')\n setNewAllKeys(false)\n setNewType(params)\n }}\n options={filterTypeOptions}\n styles={selectStyles}\n />\n
\n {newType && (\n
\n {renderSelect()}\n {newType.value &&\n newType.value.toLowerCase() !== 'controlframework' && (\n setNewAllKeys(!newAllKeys)}\n >\n \n {}}\n />\n \n )}\n
\n )}\n
\n \n Add\n \n \n
\n \n Close\n \n
\n
\n
\n )}\n {allTicketWarningOpen && (\n setAllTicketWarningOpen(false)} isOpen={true}>\n \n Enabling all ticket types will remove all other filters.\n \n \n \n setAllTicketWarningOpen(false)}\n color=\"primary\"\n >\n Cancel\n \n \n Confirm\n \n \n \n \n )}\n
\n
\n )\n}\n\nFilterInputs.propTypes = {\n filters: ImmutableProptypes.list,\n policies: ImmutableProptypes.map,\n controlFrameworks: ImmutableProptypes.map,\n properties: ImmutableProptypes.list,\n loadingProperties: PropTypes.bool,\n fetchingPolicies: PropTypes.bool,\n fetchingCFs: PropTypes.bool,\n setFilters: PropTypes.func,\n fetchEscalationOptions: PropTypes.func,\n theme: themeShape,\n}\n\nconst mapStateToProps = createStructuredSelector({\n properties: selectEscalationFilterOptions,\n loadingProperties: selectEscalationFilterOptionsLoading,\n policies: selectPolicies,\n controlFrameworks: selectControlGroups,\n fetchingPolicies: selectFetchingPolicies,\n fetchingCFs: selectFetchingControlGroups,\n})\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n fetchEscalationOptions,\n },\n dispatch\n )\n}\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps)\n\nexport default compose(withConnect, themeable)(FilterInputs)\n","import React, { Fragment, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport Button from 'components/Button'\nimport Icon from 'components/Icon'\nimport BorderedCard from 'components/BorderedCard'\nimport TextLink from 'components/TextLink'\n\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Alert } from 'reactstrap'\n\nimport DetailInputs from './DetailInputs'\nimport SwimlaneInputs from './SwimlaneInputs'\nimport FilterInputs from './FilterInputs'\nimport RuleInputs from './RuleInputs'\nimport { List } from 'immutable'\n\nconst WIZARDS = { DETAILS: 1, SWIMLANES: 2, FILTERS: 3, RULES: 4 }\n\nconst styles = {\n step: {\n fontWeight: 400,\n fontSize: '1em',\n marginBottom: '1em',\n },\n buttons: {\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n columnGap: '1em',\n justifyContent: 'center',\n },\n forward: {\n display: 'flex',\n alignItems: 'center',\n },\n}\n\nconst AddEscalationModal = props => {\n const [wizardMode, setWizardMode] = useState(WIZARDS.DETAILS)\n const [title, setTitle] = useState('')\n const [description, setDescription] = useState('')\n const [swimlanes, setSwimlanes] = useState(List())\n const [filters, setFilters] = useState(List())\n const [rules, setRules] = useState(List())\n const [shouldClose, setShouldClose] = useState(false)\n const [errorMsg, setErrorMsg] = useState(null)\n\n const nextStep = () => {\n if (wizardMode < WIZARDS.RULES) {\n setWizardMode(wizardMode + 1)\n } else {\n setShouldClose(true)\n props.create({\n title: title,\n description: description,\n swimlanes: swimlanes,\n filters: filters,\n rules: rules,\n })\n }\n }\n\n const justFinish = () => {\n setShouldClose(true)\n props.create({\n title: title,\n description: description,\n swimlanes: swimlanes,\n filters: filters,\n rules: rules,\n })\n }\n\n useEffect(() => {\n if (!props.creating && shouldClose && !props.error) {\n closeOut()\n } else if (!props.creating && props.error) {\n setError()\n }\n }, [props.creating])\n\n const setError = () => {\n setErrorMsg(props.error)\n props.clearError()\n setTimeout(() => {\n setErrorMsg(null)\n props.close()\n }, 5000)\n }\n\n const closeOut = () => {\n setWizardMode(0)\n props.close()\n }\n\n const prevStep = () => {\n if (wizardMode > WIZARDS.DETAILS) {\n setWizardMode(wizardMode - 1)\n }\n }\n\n const renderBody = () => {\n switch (wizardMode) {\n case WIZARDS.DETAILS:\n return renderDetails()\n case WIZARDS.SWIMLANES:\n return renderSwimlanes()\n case WIZARDS.FILTERS:\n return renderFilters()\n case WIZARDS.RULES:\n return renderRules()\n default:\n return null\n }\n }\n\n const renderDetails = () => {\n return (\n \n
Step 1
\n \n \n \n
\n )\n }\n\n const renderSwimlanes = () => {\n return (\n \n
Step 2
\n \n \n \n
\n )\n }\n\n const renderFilters = () => {\n return (\n \n
Step 3
\n \n \n \n
\n )\n }\n\n const renderRules = () => {\n return (\n \n
Step 4
\n \n \n \n
\n )\n }\n\n return (\n \n {errorMsg && {errorMsg}}\n Add Escalation Wizard\n {renderBody()}\n \n
\n \n Cancel\n \n
\n
\n {wizardMode === WIZARDS.RULES ? (\n
 
\n ) : (\n \n Skip and Create\n \n )}\n {wizardMode > 1 && (\n \n \n \n )}\n \n {wizardMode === WIZARDS.RULES ? `Create` : 'Next'}\n {!wizardMode === WIZARDS.RULES && (\n \n )}\n \n
\n
\n
\n )\n}\n\nAddEscalationModal.propTypes = {\n close: PropTypes.func,\n create: PropTypes.func,\n clearError: PropTypes.func,\n creating: PropTypes.bool,\n error: PropTypes.string,\n}\n\nexport default AddEscalationModal\n","import React from 'react'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport PropTypes from 'prop-types'\nimport { FormattedMessage } from 'react-intl'\nimport messages from './messages'\nimport { push } from 'connected-react-router'\nimport { connect } from 'react-redux'\nimport { createStructuredSelector } from 'reselect'\nimport { bindActionCreators, compose } from 'redux'\nimport {\n getEscalations,\n createEscalation,\n deleteEscalation,\n createEscalationError,\n} from 'containers/EscalationData/actions'\nimport {\n selectEscalations,\n selectEscalationsLoading,\n selectDeletingEscalations,\n selectCreatingEscalation,\n selectCreatingEscalationError,\n} from 'containers/EscalationData/selectors'\nimport permissionChecker from 'containers/PermissionChecker'\nimport BorderedCard from 'components/BorderedCard'\nimport DataTable from 'components/DataTable'\nimport SectionHeader from 'components/SectionHeader'\nimport Button from 'components/Button'\nimport TextLink from 'components/TextLink'\nimport Icon from 'components/Icon'\nimport SquareLoadingAnimation from 'components/SquareLoadingAnimation'\nimport AddEscalationModal from './AddEscalationModal'\nimport qs from 'query-string'\nimport UserWidget from 'components/UserWidget'\n\nexport class Escalation extends React.Component {\n constructor(props) {\n super(props)\n if (!props.loading && props.escalations.isEmpty()) {\n props.getEscalations()\n }\n this.state = {\n escalationModalOpen: false,\n }\n }\n styles = {\n container: {\n padding: '1em',\n height: '100%',\n display: 'grid',\n gridTemplateRows: 'auto 1fr',\n gridRowGap: '1em',\n },\n topGuy: {\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n },\n }\n\n openEscalationModal = () => {\n this.setState({ escalationModalOpen: true })\n }\n\n closeEscalationModal = () => {\n this.setState({ escalationModalOpen: false })\n }\n\n getEscalationData = () => {\n return this.props.escalations\n .map(esc => ({\n title: esc.get('title'),\n description: esc.get('description'),\n createdBy: esc.get('createdBy'),\n srn: esc.get('srn'),\n delete: esc.get('srn'),\n resourceId: esc.get('resourceId'),\n }))\n .toList()\n .toJS()\n }\n\n handleNav = params => {\n this.props.push({\n pathname: '/App/EscalationDetails',\n search: qs.stringify({\n srn: params.srn,\n }),\n })\n }\n\n render() {\n const canEdit = this.props.userHasPermission({\n permissionName: 'edit.escalations',\n })\n\n return (\n
\n
\n \n \n \n
\n {canEdit && (\n \n )}\n
\n
\n \n {this.props.loading ? (\n \n \n
\n ) : (\n {\n return \n },\n },\n srn: {\n hide: true,\n },\n resourceId: {\n hide: true,\n },\n delete: {\n width: 50,\n minWidth: 50,\n pinned: 'right',\n headerName: '',\n enableRowGroup: false,\n menuTabs: [],\n suppressMenu: true,\n cellStyle: {\n padding: '0 0.5em',\n },\n cellRendererFramework: params => {\n if (\n !this.props.userHasPermission({\n permissionName: 'edit.escalations',\n resourceId: params.data.resourceId,\n })\n ) {\n return null\n }\n\n return (\n {\n this.props.deleteEscalation(params.data.delete)\n }}\n disabled={this.props.deleting.get(params.data.delete)}\n title=\"Delete\"\n >\n \n \n )\n },\n },\n }}\n onDoubleClickRow={this.handleNav}\n data={this.getEscalationData()}\n />\n )}\n \n {this.state.escalationModalOpen && (\n this.props.createEscalationError({ error: null })}\n />\n )}\n \n )\n }\n}\n\nEscalation.propTypes = {\n loading: PropTypes.bool,\n creating: PropTypes.bool,\n escalations: ImmutablePropTypes.map,\n getEscalations: PropTypes.func,\n createEscalation: PropTypes.func,\n push: PropTypes.func,\n userHasPermission: PropTypes.func.isRequired,\n deleteEscalation: PropTypes.func,\n createEscalationError: PropTypes.func,\n deleting: ImmutablePropTypes.map,\n creatingError: PropTypes.string,\n}\n\nconst mapStateToProps = createStructuredSelector({\n escalations: selectEscalations,\n loading: selectEscalationsLoading,\n deleting: selectDeletingEscalations,\n creating: selectCreatingEscalation,\n creatingError: selectCreatingEscalationError,\n})\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getEscalations,\n push,\n createEscalation,\n deleteEscalation,\n createEscalationError,\n },\n dispatch\n )\n}\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps)\n\nexport default compose(withConnect, permissionChecker)(Escalation)\n"],"sourceRoot":""}