{"version":3,"sources":["webpack:///./node_modules/d3-scale/dist/d3-scale.js","webpack:///./app/containers/SwimlaneCheckup/messages.js","webpack:///./app/components/ProgressBar/index.js","webpack:///./node_modules/react-circular-progressbar/dist/index.js","webpack:///./node_modules/react-circular-progressbar/dist/styles.css?e9fe","webpack:///./node_modules/react-circular-progressbar/dist/styles.css","webpack:///./app/containers/SwimlaneCheckup/ContentStat.js","webpack:///./app/components/ProgressCircle/index.js","webpack:///./app/containers/SwimlaneCheckup/RiskScore.js","webpack:///./app/containers/SwimlaneCheckup/constants.js","webpack:///./app/containers/SwimlaneCheckup/reducer.js","webpack:///./app/containers/SwimlaneCheckup/selectors.js","webpack:///./app/containers/SwimlaneCheckup/actions.js","webpack:///./app/containers/SwimlaneCheckup/sagas.js","webpack:///./app/containers/SwimlaneCheckup/SwimlaneCard.js","webpack:///./app/containers/SwimlaneCheckup/index.js"],"names":["exports","d3Collection","d3Array","d3Interpolate","d3Format","d3Time","d3TimeFormat","initRange","domain","range","arguments","length","this","initInterpolator","interpolator","array","Array","prototype","map","slice","implicit","name","ordinal","index","unknown","scale","d","key","i","get","set","push","_","n","has","call","copy","apply","band","step","bandwidth","undefined","ordinalRange","round","paddingInner","paddingOuter","align","rescale","reverse","start","stop","Math","max","floor","values","rangeRound","padding","min","number","x","unit","identity","normalize","a","b","isNaN","NaN","clamper","t","bimap","interpolate","d0","d1","r0","r1","polymap","j","r","bisect","source","target","clamp","transformer","transform","untransform","piecewise","output","input","invert","y","interpolateNumber","interpolateRound","u","continuous","tickFormat","count","specifier","precision","tickStep","formatSpecifier","type","value","abs","precisionPrefix","formatPrefix","precisionRound","precisionFixed","format","linearish","ticks","nice","i0","i1","tickIncrement","ceil","interval","x0","x1","transformLog","log","transformExp","exp","transformLogn","transformExpn","pow10","isFinite","reflect","f","loggish","logs","pows","base","E","log10","log2","logp","pow","powp","v","p","k","z","Infinity","transformSymlog","c","sign","log1p","transformSymexp","expm1","symlogish","constant","transformPow","exponent","transformSqrt","sqrt","transformSquare","powish","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","date","Date","number$1","calendar","year","month","week","day","hour","minute","second","millisecond","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","bisector","right","every","t0","t1","transformer$1","k10","copy$1","sequentialPow","transformer$2","t2","k21","x2","divergingPow","scaleBand","scalePoint","pointish","scaleIdentity","identity$1","scaleLinear","linear","scaleLog","scaleSymlog","symlog","scaleOrdinal","scaleImplicit","scalePow","scaleSqrt","scaleQuantile","quantile","thresholds","invertExtent","indexOf","sort","ascending","quantiles","scaleQuantize","quantize","scaleThreshold","threshold","scaleTime","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","timeMillisecond","timeFormat","scaleUtc","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","utcSecond","utcMillisecond","utcFormat","UTC","scaleSequential","sequential","scaleSequentialLog","sequentialLog","scaleSequentialPow","scaleSequentialSqrt","scaleSequentialSymlog","sequentialSymlog","scaleSequentialQuantile","sequentialQuantile","scaleDiverging","diverging","scaleDivergingLog","divergingLog","scaleDivergingPow","scaleDivergingSqrt","scaleDivergingSymlog","divergingSymlog","Object","defineProperty","factory","defineMessages","id","defaultMessage","enableAll","enableAllSwombo","themeable","theme","loadingMessage","colorRange","primary","success","fillColor","color","rgb","string","styles","container","height","width","backgroundColor","neutralLight","fill","textAlign","label","light","bodyText","fontWeight","style","neutralDark","React","extendStatics","setPrototypeOf","__proto__","hasOwnProperty","__assign","assign","s","VIEWBOX_CENTER_X","VIEWBOX_CENTER_Y","Path","_a","className","counterClockwise","dashRatio","pathRadius","strokeWidth","createElement","getDashStyle","getPathDescription","fillOpacity","rotation","diameter","PI","gapLength","strokeDasharray","strokeDashoffset","CircularProgressbar","_super","__","constructor","create","__extends","getBackgroundPadding","props","background","backgroundPadding","getPathRadius","getPathRatio","minValue","maxValue","render","circleRatio","classes","text","pathRatio","root","viewBox","cx","cy","trail","path","defaultProps","Component","removeUndefinedValues","obj","keys","forEach","CircularProgressbarWithChildren","children","circularProgressbarProps","e","getOwnPropertySymbols","__rest","position","marginTop","display","flexDirection","justifyContent","alignItems","buildStyles","strokeLinecap","textColor","textSize","pathColor","pathTransition","pathTransitionDuration","trailColor","rotationTransform","rotationTransformOrigin","stroke","transformOrigin","transition","transitionDuration","fontSize","content","module","options","locals","nodeType","typeColors","lowercase","toLowerCase","margin","fa","getIconMapping","faIcon","messages","ProgressCircle","grade","swimlane","loading","hasProgressCircle","size","riskScoreNumeric","finalValue","getAlertLevelColorHML","SEVERITY_CATEGORIES","LOW","MEDIUM","HIGH","to","pathname","search","qs","stringify","status","view","title","prefix","FETCH_SWIMLANE_STATS","FETCH_CF_STATUS","FETCH_SWIMLANE_RISKS","initialState","fromJS","swimlaneStats","swimlaneStatsLoading","cfStatus","cfStatusLoading","swimlaneRisks","swimlaneRisksLoading","swimlaneManagerReducer","handleActions","state","payload","selectSwimlaneCheckupDomain","Map","selectSwimlaneStats","createSelector","swimlaneDomain","selectCfStatusLoading","selectCfStatus","selectSwimlaneRisksLoading","selectSwimlaneRisks","fetchSwimlaneStats","createAction","setSwimlaneStats","fetchSwimlaneStatsError","fetchCfStatus","fetchCfStatusError","setCfStatus","fetchSwimlaneRisks","fetchSwimlaneRisksError","setSwimlaneRisks","swimlaneCheckupSaga","client","getClient","query","gql","results","errors","Error","select","selectQueryTypes","queryTypes","swimlaneMap","data","GroupedQuery","items","swimlaneStat","countsByType","hasGroupedResult","typecount","getInterfaceCount","put","console","error","TICKET_STATUS","NEW","IN_PROGRESS","rollups","swimlaneCfsHasTickets","rollup","swimlaneId","swimlaneSrns","frameworkId","ticketKey","swimlaneRiskScores","riskScore","first","all","takeLatest","SwimlaneCard","disabledObjectives","List","enabledObjectives","objectives","objective","total","swimlaneCfsForObjective","getIn","filter","config","includes","objectiveSrns","showEnableAllObjectiveModal","swimlaneSrn","ContentStat","RiskScore","swimlaneRisk","objectivesLoading","flexWrap","overflow","hasEvaluatedFrameworks","hasFinishedEvaluatingFrameworks","controlGroups","succeedingCFs","cf","passPercent","objectiveWrapper","gridTemplateColumns","IHelp","info","infoMsg","Popover","trigger","ProgressBar","enablingObjectives","findIndex","enablin","enablingAllObjectives","Button","disabled","slimButton","Icon","spin","outline","onClick","showEnableObjectiveModal","objectiveSrn","stopPropagation","preventDefault","swimlaneCard","marginBottom","swimlaneTitle","swimlaneBody","gridTemplateRows","marginRight","whiteSpace","textOverflow","sortedObjectives","sortObjectives","oldProps","setState","Hoverable","renderContent","hovered","BorderedCard","highlight","isEmpty","enableAllObjectives","toJS","intl","formatMessage","renderStat","renderSwimlaneRisk","renderSwimlaneObjectives","compose","injectIntl","ORDERBY","RISK","TITLE","LoadingAnim","SwimlaneCheckup","swimlanes","toList","swimlaneFilter","trim","searchTerm","orderBy","sortBy","risk","allowRemediations","params","enableObjectiveModal","enableAllObjectiveModal","enableAllObjSwimlaneModal","enableAllObjectivesForSwimlane","enableEscalationSchemes","enableObjective","objectivesWithCFs","enablingAllObjectivesForSwimlane","Modal","isOpen","toggle","cancelEnableModal","ModalHeader","ModalBody","checked","onChange","setAllowRemediations","ModalFooter","TextLink","cancelEnableAllModal","cancelEnableAllObjSwimlaneModal","body","header","filters","gridColumnGap","fetchObjectives","swimlanesLoading","loadedControlGroups","isDisabled","isEnableAllObjectiveSwimlaneDisabled","renderConfirmRemediationBotsModal","renderConfirmAllRemediationBotsModal","renderConfirmAllSwomboRemediationBotsModal","showEnableAllObjSwimlaneModal","SearchInput","setSearchFilter","placeholder","Dropdown","selectedValue","setOrder","getFilteredSwimanes","renderSwimlane","mapStateToProps","createStructuredSelector","selectEnablingObjectives","selectEnablingAllObjectives","selectEnablingAllObjectivesForSwimlane","selectObjectives","objectivesError","selectObjectivesError","selectObjectivesLoading","selectSwimlanes","selectSwimlanesLoading","selectControlGroups","selectLoadedControlGroups","withConnect","connect","dispatch","bindActionCreators","withReducer","injectReducer","reducer","withSaga","injectSaga","saga","sagas"],"mappings":"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","file":"19.e420efed05add81e2137.chunk.js","sourcesContent":["// https://d3js.org/d3-scale/ v2.2.2 Copyright 2019 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-collection'), require('d3-array'), require('d3-interpolate'), require('d3-format'), require('d3-time'), require('d3-time-format')) :\ntypeof define === 'function' && define.amd ? define(['exports', 'd3-collection', 'd3-array', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format'], factory) :\n(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n}(this, (function (exports,d3Collection,d3Array,d3Interpolate,d3Format,d3Time,d3TimeFormat) { 'use strict';\n\nfunction initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nfunction initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n\nvar array = Array.prototype;\n\nvar map = array.map;\nvar slice = array.slice;\n\nvar implicit = {name: \"implicit\"};\n\nfunction ordinal() {\n var index = d3Collection.map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = d3Collection.map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nfunction band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = d3Array.range(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nfunction point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n\nfunction constant(x) {\n return function() {\n return x;\n };\n}\n\nfunction number(x) {\n return +x;\n}\n\nvar unit = [0, 1];\n\nfunction identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = d3Array.bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nfunction copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nfunction transformer() {\n var domain = unit,\n range = unit,\n interpolate = d3Interpolate.interpolate,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3Interpolate.interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = d3Interpolate.interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nfunction continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n\nfunction tickFormat(start, stop, count, specifier) {\n var step = d3Array.tickStep(start, stop, count),\n precision;\n specifier = d3Format.formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;\n return d3Format.formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return d3Format.format(specifier);\n}\n\nfunction linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = d3Array.tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = d3Array.tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = d3Array.tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nfunction linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n\nfunction identity$1(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity$1(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n\nfunction nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nfunction loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = d3Format.format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nfunction log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nfunction symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nfunction symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nfunction powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nfunction pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nfunction sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n\nfunction quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = d3Array.quantile(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[d3Array.bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(d3Array.ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n\nfunction quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[d3Array.bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n\nfunction threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[d3Array.bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number$1(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = d3Array.bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(d3Array.tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number$1)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nfunction time() {\n return initRange.apply(calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n\nfunction utcTime() {\n return initRange.apply(calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n\nfunction transformer$1() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nfunction copy$1(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nfunction sequential() {\n var scale = linearish(transformer$1()(identity));\n\n scale.copy = function() {\n return copy$1(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialLog() {\n var scale = loggish(transformer$1()).domain([1, 10]);\n\n scale.copy = function() {\n return copy$1(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialSymlog() {\n var scale = symlogish(transformer$1());\n\n scale.copy = function() {\n return copy$1(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialPow() {\n var scale = powish(transformer$1());\n\n scale.copy = function() {\n return copy$1(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n\nfunction sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((d3Array.bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(d3Array.ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction transformer$2() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nfunction diverging() {\n var scale = linearish(transformer$2()(identity));\n\n scale.copy = function() {\n return copy$1(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingLog() {\n var scale = loggish(transformer$2()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy$1(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingSymlog() {\n var scale = symlogish(transformer$2());\n\n scale.copy = function() {\n return copy$1(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingPow() {\n var scale = powish(transformer$2());\n\n scale.copy = function() {\n return copy$1(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n\nexports.scaleBand = band;\nexports.scalePoint = point;\nexports.scaleIdentity = identity$1;\nexports.scaleLinear = linear;\nexports.scaleLog = log;\nexports.scaleSymlog = symlog;\nexports.scaleOrdinal = ordinal;\nexports.scaleImplicit = implicit;\nexports.scalePow = pow;\nexports.scaleSqrt = sqrt;\nexports.scaleQuantile = quantile;\nexports.scaleQuantize = quantize;\nexports.scaleThreshold = threshold;\nexports.scaleTime = time;\nexports.scaleUtc = utcTime;\nexports.scaleSequential = sequential;\nexports.scaleSequentialLog = sequentialLog;\nexports.scaleSequentialPow = sequentialPow;\nexports.scaleSequentialSqrt = sequentialSqrt;\nexports.scaleSequentialSymlog = sequentialSymlog;\nexports.scaleSequentialQuantile = sequentialQuantile;\nexports.scaleDiverging = diverging;\nexports.scaleDivergingLog = divergingLog;\nexports.scaleDivergingPow = divergingPow;\nexports.scaleDivergingSqrt = divergingSqrt;\nexports.scaleDivergingSymlog = divergingSymlog;\nexports.tickFormat = tickFormat;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","import { defineMessages } from 'react-intl'\n\nexport default defineMessages({\n 'statlabel.Account': {\n id: 'app.containers.SwimlaneCheckup.statlabel.Account',\n defaultMessage: 'Accounts',\n },\n 'statlabel.Infrastructure': {\n id: 'app.containers.SwimlaneCheckup.statlabel.Infrastructure',\n defaultMessage: 'Infrastructure',\n },\n 'statlabel.Data': {\n id: 'app.containers.SwimlaneCheckup.statlabel.Data',\n defaultMessage: 'Data',\n },\n 'statlabel.Protection': {\n id: 'app.containers.SwimlaneCheckup.statlabel.Proptection',\n defaultMessage: 'Protections',\n },\n 'statlabel.Identity': {\n id: 'app.containers.SwimlaneCheckup.statlabel.Identity',\n defaultMessage: 'Identities',\n },\n enableAll: {\n id: 'app.containers.SwimlaneCheckup.enableAll',\n defaultMessage: 'Enable All Objectives',\n },\n enableAllSwombo: {\n id: 'app.containers.SwimlaneCheckup.enableAllSwombo',\n defaultMessage: 'Enable All Objectives on All Swimlanes',\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { scaleLinear } from 'd3-scale'\nimport color from 'color'\nimport _ from 'lodash'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\n\nconst ProgressBar = ({ value, theme, loadingMessage }) => {\n const colorRange = scaleLinear()\n .domain([0, 100])\n .range([theme.primary, theme.success])\n\n const fillColor = color(colorRange(value)).rgb().string()\n\n const styles = {\n container: {\n height: '20px',\n width: '100%',\n backgroundColor: theme.neutralLight,\n },\n fill: {\n height: '100%',\n width: `${value}%`,\n backgroundColor: fillColor,\n textAlign: 'right',\n },\n label: {\n padding: '5px',\n color: value > 2 ? theme.light : theme.bodyText,\n fontWeight: 'bold',\n },\n }\n\n if (loadingMessage) {\n return (\n
\n
\n \n {loadingMessage}\n \n
\n
\n )\n }\n\n return (\n
\n
\n {`${value}%`}\n
\n
\n )\n}\n\nProgressBar.propTypes = {\n value: PropTypes.number,\n theme: themeShape,\n loadingMessage: PropTypes.string,\n}\n\nexport default themeable(ProgressBar)\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar VIEWBOX_WIDTH = 100;\r\nvar VIEWBOX_HEIGHT = 100;\r\nvar VIEWBOX_HEIGHT_HALF = 50;\r\nvar VIEWBOX_CENTER_X = 50;\r\nvar VIEWBOX_CENTER_Y = 50;\n\nfunction Path(_a) {\r\n var className = _a.className, counterClockwise = _a.counterClockwise, dashRatio = _a.dashRatio, pathRadius = _a.pathRadius, strokeWidth = _a.strokeWidth, style = _a.style;\r\n return (React.createElement(\"path\", { className: className, style: Object.assign({}, style, getDashStyle({ pathRadius: pathRadius, dashRatio: dashRatio, counterClockwise: counterClockwise })), d: getPathDescription({\r\n pathRadius: pathRadius,\r\n counterClockwise: counterClockwise,\r\n }), strokeWidth: strokeWidth, fillOpacity: 0 }));\r\n}\r\nfunction getPathDescription(_a) {\r\n var pathRadius = _a.pathRadius, counterClockwise = _a.counterClockwise;\r\n var radius = pathRadius;\r\n var rotation = counterClockwise ? 1 : 0;\r\n return \"\\n M \" + VIEWBOX_CENTER_X + \",\" + VIEWBOX_CENTER_Y + \"\\n m 0,-\" + radius + \"\\n a \" + radius + \",\" + radius + \" \" + rotation + \" 1 1 0,\" + 2 * radius + \"\\n a \" + radius + \",\" + radius + \" \" + rotation + \" 1 1 0,-\" + 2 * radius + \"\\n \";\r\n}\r\nfunction getDashStyle(_a) {\r\n var counterClockwise = _a.counterClockwise, dashRatio = _a.dashRatio, pathRadius = _a.pathRadius;\r\n var diameter = Math.PI * 2 * pathRadius;\r\n var gapLength = (1 - dashRatio) * diameter;\r\n return {\r\n strokeDasharray: diameter + \"px \" + diameter + \"px\",\r\n strokeDashoffset: (counterClockwise ? -gapLength : gapLength) + \"px\",\r\n };\r\n}\n\nvar CircularProgressbar = (function (_super) {\r\n __extends(CircularProgressbar, _super);\r\n function CircularProgressbar() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CircularProgressbar.prototype.getBackgroundPadding = function () {\r\n if (!this.props.background) {\r\n return 0;\r\n }\r\n return this.props.backgroundPadding;\r\n };\r\n CircularProgressbar.prototype.getPathRadius = function () {\r\n return VIEWBOX_HEIGHT_HALF - this.props.strokeWidth / 2 - this.getBackgroundPadding();\r\n };\r\n CircularProgressbar.prototype.getPathRatio = function () {\r\n var _a = this.props, value = _a.value, minValue = _a.minValue, maxValue = _a.maxValue;\r\n var boundedValue = Math.min(Math.max(value, minValue), maxValue);\r\n return (boundedValue - minValue) / (maxValue - minValue);\r\n };\r\n CircularProgressbar.prototype.render = function () {\r\n var _a = this.props, circleRatio = _a.circleRatio, className = _a.className, classes = _a.classes, counterClockwise = _a.counterClockwise, styles = _a.styles, strokeWidth = _a.strokeWidth, text = _a.text;\r\n var pathRadius = this.getPathRadius();\r\n var pathRatio = this.getPathRatio();\r\n return (React.createElement(\"svg\", { className: classes.root + \" \" + className, style: styles.root, viewBox: \"0 0 \" + VIEWBOX_WIDTH + \" \" + VIEWBOX_HEIGHT, \"data-test-id\": \"CircularProgressbar\" },\r\n this.props.background ? (React.createElement(\"circle\", { className: classes.background, style: styles.background, cx: VIEWBOX_CENTER_X, cy: VIEWBOX_CENTER_Y, r: VIEWBOX_HEIGHT_HALF })) : null,\r\n React.createElement(Path, { className: classes.trail, counterClockwise: counterClockwise, dashRatio: circleRatio, pathRadius: pathRadius, strokeWidth: strokeWidth, style: styles.trail }),\r\n React.createElement(Path, { className: classes.path, counterClockwise: counterClockwise, dashRatio: pathRatio * circleRatio, pathRadius: pathRadius, strokeWidth: strokeWidth, style: styles.path }),\r\n text ? (React.createElement(\"text\", { className: classes.text, style: styles.text, x: VIEWBOX_CENTER_X, y: VIEWBOX_CENTER_Y }, text)) : null));\r\n };\r\n CircularProgressbar.defaultProps = {\r\n background: false,\r\n backgroundPadding: 0,\r\n circleRatio: 1,\r\n classes: {\r\n root: 'CircularProgressbar',\r\n trail: 'CircularProgressbar-trail',\r\n path: 'CircularProgressbar-path',\r\n text: 'CircularProgressbar-text',\r\n background: 'CircularProgressbar-background',\r\n },\r\n counterClockwise: false,\r\n className: '',\r\n maxValue: 100,\r\n minValue: 0,\r\n strokeWidth: 8,\r\n styles: {\r\n root: {},\r\n trail: {},\r\n path: {},\r\n text: {},\r\n background: {},\r\n },\r\n text: '',\r\n };\r\n return CircularProgressbar;\r\n}(React.Component));\n\nfunction CircularProgressbarWithChildren(props) {\r\n var children = props.children, circularProgressbarProps = __rest(props, [\"children\"]);\r\n return (React.createElement(\"div\", { \"data-test-id\": \"CircularProgressbarWithChildren\" },\r\n React.createElement(\"div\", { style: { position: 'relative', width: '100%', height: '100%' } },\r\n React.createElement(CircularProgressbar, __assign({}, circularProgressbarProps)),\r\n props.children ? (React.createElement(\"div\", { \"data-test-id\": \"CircularProgressbarWithChildren__children\", style: {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n marginTop: '-100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n } }, props.children)) : null)));\r\n}\n\nfunction buildStyles(_a) {\r\n var rotation = _a.rotation, strokeLinecap = _a.strokeLinecap, textColor = _a.textColor, textSize = _a.textSize, pathColor = _a.pathColor, pathTransition = _a.pathTransition, pathTransitionDuration = _a.pathTransitionDuration, trailColor = _a.trailColor, backgroundColor = _a.backgroundColor;\r\n var rotationTransform = rotation == null ? undefined : \"rotate(\" + rotation + \"turn)\";\r\n var rotationTransformOrigin = rotation == null ? undefined : 'center center';\r\n return {\r\n root: {},\r\n path: removeUndefinedValues({\r\n stroke: pathColor,\r\n strokeLinecap: strokeLinecap,\r\n transform: rotationTransform,\r\n transformOrigin: rotationTransformOrigin,\r\n transition: pathTransition,\r\n transitionDuration: pathTransitionDuration == null ? undefined : pathTransitionDuration + \"s\",\r\n }),\r\n trail: removeUndefinedValues({\r\n stroke: trailColor,\r\n strokeLinecap: strokeLinecap,\r\n transform: rotationTransform,\r\n transformOrigin: rotationTransformOrigin,\r\n }),\r\n text: removeUndefinedValues({\r\n fill: textColor,\r\n fontSize: textSize,\r\n }),\r\n background: removeUndefinedValues({\r\n fill: backgroundColor,\r\n }),\r\n };\r\n}\r\nfunction removeUndefinedValues(obj) {\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] == null) {\r\n delete obj[key];\r\n }\r\n });\r\n return obj;\r\n}\n\nexports.CircularProgressbar = CircularProgressbar;\nexports.CircularProgressbarWithChildren = CircularProgressbarWithChildren;\nexports.buildStyles = buildStyles;\n//# sourceMappingURL=index.js.map\n","\nvar content = require(\"!!../../css-loader/dist/cjs.js!./styles.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../css-loader/dist/cjs.js!./styles.css\", function() {\n\t\tvar newContent = require(\"!!../../css-loader/dist/cjs.js!./styles.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/*\\n * react-circular-progressbar styles\\n * All of the styles in this file are configurable!\\n */\\n\\n.CircularProgressbar {\\n /*\\n * This fixes an issue where the CircularProgressbar svg has\\n * 0 width inside a \\\"display: flex\\\" container, and thus not visible.\\n */\\n width: 100%;\\n /*\\n * This fixes a centering issue with CircularProgressbarWithChildren:\\n * https://github.com/kevinsqi/react-circular-progressbar/issues/94\\n */\\n vertical-align: middle;\\n}\\n\\n.CircularProgressbar .CircularProgressbar-path {\\n stroke: #3e98c7;\\n stroke-linecap: round;\\n -webkit-transition: stroke-dashoffset 0.5s ease 0s;\\n transition: stroke-dashoffset 0.5s ease 0s;\\n}\\n\\n.CircularProgressbar .CircularProgressbar-trail {\\n stroke: #d6d6d6;\\n /* Used when trail is not full diameter, i.e. when props.circleRatio is set */\\n stroke-linecap: round;\\n}\\n\\n.CircularProgressbar .CircularProgressbar-text {\\n fill: #3e98c7;\\n font-size: 20px;\\n dominant-baseline: middle;\\n text-anchor: middle;\\n}\\n\\n.CircularProgressbar .CircularProgressbar-background {\\n fill: #d6d6d6;\\n}\\n\\n/*\\n * Sample background styles. Use these with e.g.:\\n *\\n * \\n */\\n.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-background {\\n fill: #3e98c7;\\n}\\n\\n.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-text {\\n fill: #fff;\\n}\\n\\n.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-path {\\n stroke: #fff;\\n}\\n\\n.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-trail {\\n stroke: transparent;\\n}\\n\", \"\"]);\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FormattedMessage } from 'react-intl'\n\nimport themeable from 'containers/ThemeManager/Themeable'\nimport Icon from 'components/Icon'\nimport { getIconMapping } from 'utils/sonraiUtils'\nimport messages from './messages'\n\nconst ContentStat = ({ nodeType, count, typeColors }) => {\n const lowercase = nodeType.toLowerCase()\n\n return (\n
\n \n  \n {count ? count : '0'}\n   \n
\n )\n}\n\nContentStat.propTypes = {\n typeColors: PropTypes.object,\n count: PropTypes.number,\n nodeType: PropTypes.string,\n}\n\nexport default themeable(ContentStat)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n CircularProgressbarWithChildren,\n buildStyles,\n} from 'react-circular-progressbar'\nimport 'react-circular-progressbar/dist/styles.css'\n\nconst ProgressCircle = props => {\n const { value, pathColor } = props\n return (\n \n
\n \n Risk Grade\n
\n \n \n )\n}\n\nProgressCircle.propTypes = {\n grade: PropTypes.string,\n pathColor: PropTypes.string,\n value: PropTypes.number,\n}\n\nexport default ProgressCircle\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport { Link } from 'react-router-dom'\nimport qs from 'query-string'\nimport _ from 'lodash'\nimport { SquareShimmer } from 'components/ShimmerLoader'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport { getAlertLevelColorHML } from 'utils/widgetUtils'\nimport { SEVERITY_CATEGORIES } from 'appConstants'\nimport ProgressCircle from '../../components/ProgressCircle'\n\nconst RiskScore = ({ value, swimlane, loading, theme, hasProgressCircle }) => {\n if (loading || !value) {\n return (\n
\n \n
\n )\n }\n\n const riskScoreNumeric = value.get('riskScoreNumeric') || 100\n let finalValue = _.round(riskScoreNumeric)\n let grade = value.get('riskScore') || 'A'\n let pathColor\n\n if (grade === 'A') {\n pathColor = theme.success\n } else if (grade === 'B') {\n pathColor = getAlertLevelColorHML(SEVERITY_CATEGORIES.LOW)\n } else if (grade === 'C') {\n pathColor = getAlertLevelColorHML(SEVERITY_CATEGORIES.MEDIUM)\n } else if (grade === 'D') {\n pathColor = '#FF4500' // BLOOORANGE\n } else if (grade === 'F') {\n pathColor = getAlertLevelColorHML(SEVERITY_CATEGORIES.HIGH)\n }\n\n return (\n
\n {!hasProgressCircle ? (\n
\n \n {grade}\n \n
\n Risk Grade\n
\n ) : (\n \n \n \n \n
\n )}\n \n )\n}\n\nRiskScore.propTypes = {\n loading: PropTypes.bool,\n theme: themeShape,\n value: PropTypes.string,\n swimlane: ImmutablePropTypes.map.isRequired,\n hasProgressCircle: PropTypes.bool,\n}\n\nexport default themeable(RiskScore)\n","const prefix = 'app/SwimlaneCheckup/'\nexport const FETCH_SWIMLANE_STATS = prefix + 'FETCH_SWIMLANE_STATS'\nexport const SET_SWIMLANE_STATS = prefix + 'SET_SWIMLANE_STATS'\nexport const FETCH_SWIMLANE_STATS_ERROR = prefix + 'FETCH_SWIMLANE_STATS_ERROR'\nexport const FETCH_CF_STATUS = prefix + 'FETCH_CF_STATUS'\nexport const SET_CF_STATUS = prefix + 'SET_CF_STATUS'\nexport const FETCH_CF_STATUS_ERROR = prefix + 'FETCH_CF_STATUS_ERROR'\nexport const FETCH_SWIMLANE_RISKS = prefix + 'FETCH_SWIMLANE_RISK'\nexport const SET_SWIMLANE_RISKS = prefix + 'SET_SWIMLANE_RISKS'\nexport const FETCH_SWIMLANE_RISKS_ERROR = prefix + 'FETCH_SWIMLANE_RISKS_ERROR'\n","import { fromJS } from 'immutable'\nimport { handleActions } from 'redux-actions'\n\nimport {\n FETCH_SWIMLANE_STATS,\n SET_SWIMLANE_STATS,\n FETCH_SWIMLANE_STATS_ERROR,\n FETCH_CF_STATUS,\n FETCH_CF_STATUS_ERROR,\n SET_CF_STATUS,\n FETCH_SWIMLANE_RISKS_ERROR,\n FETCH_SWIMLANE_RISKS,\n SET_SWIMLANE_RISKS,\n} from './constants'\n\nconst initialState = fromJS({\n swimlaneStats: {},\n swimlaneStatsLoading: false,\n cfStatus: {},\n cfStatusLoading: false,\n swimlaneRisks: {},\n swimlaneRisksLoading: false,\n})\n\nconst swimlaneManagerReducer = handleActions(\n {\n [FETCH_SWIMLANE_STATS]: state => state.set('swimlaneStatsLoading', true),\n [FETCH_SWIMLANE_STATS_ERROR]: state =>\n state.set('swimlaneStatsLoading', false),\n [SET_SWIMLANE_STATS]: (state, { payload }) =>\n state\n .set('swimlaneStats', fromJS(payload))\n .set('swimlaneStatsLoading', false),\n [FETCH_CF_STATUS]: state => state.set('cfStatusLoading', true),\n [FETCH_CF_STATUS_ERROR]: state => state.set('cfStatusLoading', false),\n [SET_CF_STATUS]: (state, { payload }) =>\n state.set('cfStatusLoading', false).set('cfStatus', fromJS(payload)),\n [FETCH_SWIMLANE_RISKS]: state => state.set('swimlaneRisksLoading', true),\n [FETCH_SWIMLANE_RISKS_ERROR]: state =>\n state.set('swimlaneRisksLoading', false),\n [SET_SWIMLANE_RISKS]: (state, { payload }) =>\n state\n .set('swimlaneRisksLoading', false)\n .set('swimlaneRisks', fromJS(payload)),\n },\n initialState\n)\n\nexport default swimlaneManagerReducer\n","import { createSelector } from 'reselect'\nimport { Map } from 'immutable'\n\nconst selectSwimlaneCheckupDomain = state =>\n state.get('swimlaneCheckup') || Map()\n\nexport const selectSwimlaneStatsLoading = createSelector(\n selectSwimlaneCheckupDomain,\n swimlaneDomain => swimlaneDomain.get('swimlaneStatsLoading')\n)\n\nexport const selectSwimlaneStats = createSelector(\n selectSwimlaneCheckupDomain,\n swimlaneDomain => swimlaneDomain.get('swimlaneStats') || Map()\n)\n\nexport const selectCfStatusLoading = createSelector(\n selectSwimlaneCheckupDomain,\n swimlaneDomain => swimlaneDomain.get('cfStatusLoading')\n)\n\nexport const selectCfStatus = createSelector(\n selectSwimlaneCheckupDomain,\n swimlaneDomain => swimlaneDomain.get('cfStatus') || Map()\n)\n\nexport const selectSwimlaneRisksLoading = createSelector(\n selectSwimlaneCheckupDomain,\n swimlaneDomain => swimlaneDomain.get('swimlaneRisksLoading')\n)\n\nexport const selectSwimlaneRisks = createSelector(\n selectSwimlaneCheckupDomain,\n swimlaneDomain => swimlaneDomain.get('swimlaneRisks') || Map()\n)\n","import {\n FETCH_SWIMLANE_STATS,\n SET_SWIMLANE_STATS,\n FETCH_SWIMLANE_STATS_ERROR,\n FETCH_CF_STATUS,\n FETCH_CF_STATUS_ERROR,\n SET_CF_STATUS,\n FETCH_SWIMLANE_RISKS_ERROR,\n FETCH_SWIMLANE_RISKS,\n SET_SWIMLANE_RISKS,\n} from './constants'\n\nimport { createAction } from 'redux-actions'\n\nexport const fetchSwimlaneStats = createAction(FETCH_SWIMLANE_STATS)\nexport const setSwimlaneStats = createAction(SET_SWIMLANE_STATS)\nexport const fetchSwimlaneStatsError = createAction(FETCH_SWIMLANE_STATS_ERROR)\n\nexport const fetchCfStatus = createAction(FETCH_CF_STATUS)\nexport const fetchCfStatusError = createAction(FETCH_CF_STATUS_ERROR)\nexport const setCfStatus = createAction(SET_CF_STATUS)\n\nexport const fetchSwimlaneRisks = createAction(FETCH_SWIMLANE_RISKS)\nexport const fetchSwimlaneRisksError = createAction(FETCH_SWIMLANE_RISKS_ERROR)\nexport const setSwimlaneRisks = createAction(SET_SWIMLANE_RISKS)\n","import { all, put, takeLatest, select } from 'redux-saga/effects'\nimport gql from 'graphql-tag'\nimport _ from 'lodash'\nimport { getClient } from 'apolloClient'\n\nimport { TICKET_STATUS } from 'appConstants'\nimport { selectQueryTypes } from 'containers/SonraiData/selectors'\nimport { getInterfaceCount } from 'utils/sonraiUtils'\n\nimport {\n setSwimlaneStats,\n fetchSwimlaneStatsError,\n setCfStatus,\n fetchCfStatusError,\n setSwimlaneRisks,\n fetchSwimlaneRisksError,\n} from './actions'\nimport {\n FETCH_SWIMLANE_STATS,\n FETCH_CF_STATUS,\n FETCH_SWIMLANE_RISKS,\n} from './constants'\n\nfunction* fetchSwimlaneStats() {\n try {\n const client = getClient()\n const results = yield client.query({\n query: gql`\n query getStatsBySwimlane {\n GroupedQuery(where: { keys: [Swimlane, Label] }) {\n key\n items {\n value\n hasGroupedResult {\n items {\n value\n count\n }\n }\n }\n }\n }\n `,\n })\n\n if (results.errors) {\n throw new Error('Error fetching stats for swimlanes')\n }\n const queryTypes = yield select(selectQueryTypes)\n\n const swimlaneMap = {}\n const stats = results.data.GroupedQuery.items\n stats.forEach(swimlaneStat => {\n const countsByType = {}\n swimlaneStat.hasGroupedResult.items.forEach(typecount => {\n countsByType[typecount.value] = typecount.count\n })\n\n //calculate counts for the interface types\n countsByType['Identity'] = getInterfaceCount(\n queryTypes,\n 'Identity',\n countsByType\n )\n countsByType['Data'] = getInterfaceCount(queryTypes, 'Data', countsByType)\n countsByType['Protection'] = getInterfaceCount(\n queryTypes,\n 'Protection',\n countsByType\n )\n countsByType['Infrastructure'] = getInterfaceCount(\n queryTypes,\n 'Infrastructure',\n countsByType\n )\n\n swimlaneMap[swimlaneStat.value] = countsByType\n })\n\n yield put(setSwimlaneStats(swimlaneMap))\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('error fetching stats for swimlanes', e)\n yield put(fetchSwimlaneStatsError())\n }\n}\n\nfunction* fetchCfStatus() {\n try {\n const client = getClient()\n const results = yield client.query({\n query: gql`\n query getCFTicketsBySwimlane {\n TicketRollups(\n where: {\n resourceSRN: { value: \"ALL\" }\n resourceType: { value: \"ALL\" }\n resourceLabel: { value: \"ALL\" }\n actionClassification: { value: \"ALL\" }\n severityCategory: { value: \"ALL\" }\n ticketKey: { op: NEQ, value: \"ALL\" }\n ticketType: { value: \"Framework\" }\n orgName: { value: \"ALL\" }\n account: { value: \"ALL\" }\n status: { op: IN_LIST, values: [\"${TICKET_STATUS.NEW}\", \"${TICKET_STATUS.IN_PROGRESS}\"] }\n }\n ) {\n items {\n ticketKey\n count\n swimlaneSrns\n }\n }\n }\n `,\n })\n\n const rollups = _.get(results, ['data', 'TicketRollups', 'items'])\n\n if (results.errors || !rollups) {\n throw new Error('Error fetching stats for swimlanes')\n }\n\n const swimlaneCfsHasTickets = {}\n rollups.forEach(rollup => {\n const swimlaneId = rollup.swimlaneSrns[0]\n const frameworkId = rollup.ticketKey\n\n if (rollup.count > 0) {\n if (swimlaneCfsHasTickets[swimlaneId]) {\n swimlaneCfsHasTickets[swimlaneId][frameworkId] = true\n } else {\n swimlaneCfsHasTickets[swimlaneId] = {\n [frameworkId]: true,\n }\n }\n }\n })\n\n yield put(setCfStatus(swimlaneCfsHasTickets))\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('error fetching the ticket status for swimlanes', e)\n yield put(fetchCfStatusError())\n }\n}\n\nfunction* fetchSwimlaneRisks() {\n try {\n const client = getClient()\n const results = yield client.query({\n query: gql`\n query getSwimlaneRisks {\n TicketRollups(\n where: {\n resourceSRN: { value: \"ALL\" }\n resourceType: { value: \"ALL\" }\n resourceLabel: { value: \"ALL\" }\n actionClassification: { value: \"ALL\" }\n severityCategory: { value: \"ALL\" }\n ticketKey: { value: \"ALL\" }\n ticketType: { value: \"ALL\" }\n orgName: { value: \"ALL\" }\n account: { value: \"ALL\" }\n status: { op: IN_LIST, values: [\"${TICKET_STATUS.NEW}\", \"${TICKET_STATUS.IN_PROGRESS}\"] }\n }\n ) {\n items {\n swimlaneSrns\n riskScore\n riskScoreNumeric\n }\n }\n }\n `,\n })\n\n const rollups = _.get(results, ['data', 'TicketRollups', 'items'])\n\n if (results.errors || !rollups) {\n throw new Error('Error fetching risk scores for swimlanes')\n }\n\n const swimlaneRiskScores = {}\n rollups.forEach(rollup => {\n const { riskScore, riskScoreNumeric, swimlaneSrns } = rollup\n const swimlaneId = _.first(swimlaneSrns)\n swimlaneRiskScores[swimlaneId] = {\n riskScore,\n riskScoreNumeric,\n }\n })\n\n yield put(setSwimlaneRisks(swimlaneRiskScores))\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('error fetching the ticket status for swimlanes', e)\n yield put(fetchSwimlaneRisksError())\n }\n}\n\nfunction* swimlaneCheckupSaga() {\n yield all([\n takeLatest(FETCH_SWIMLANE_STATS, fetchSwimlaneStats),\n takeLatest(FETCH_CF_STATUS, fetchCfStatus),\n takeLatest(FETCH_SWIMLANE_RISKS, fetchSwimlaneRisks),\n ])\n}\n\nexport default swimlaneCheckupSaga\n","import React from 'react'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport PropTypes from 'prop-types'\nimport { List, Map } from 'immutable'\nimport { compose } from 'redux'\nimport { Link } from 'react-router-dom'\nimport qs from 'query-string'\nimport Popover, { PopoverBody, PopoverAnchor } from 'components/Popover'\nimport Hoverable from 'components/Hoverable'\nimport IHelp from 'containers/IHelp'\nimport Button from 'components/Button'\nimport ProgressBar from 'components/ProgressBar'\nimport Icon from 'components/Icon'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport BorderedCard from 'components/BorderedCard'\nimport { BlockShimmer } from 'components/ShimmerLoader'\nimport RiskScore from './RiskScore'\nimport ContentStat from './ContentStat'\nimport messages from './messages'\nimport { injectIntl, intlShape } from 'react-intl'\nimport _ from 'lodash'\n\nimport { hasFinishedEvaluatingFrameworks } from 'utils/sonraiUtils'\nexport class SwimlaneCard extends React.Component {\n constructor(props) {\n super(props)\n\n this.styles = {\n swimlaneCard: {\n marginBottom: '1em',\n },\n swimlaneTitle: {\n fontSize: '1.3em',\n fontWeight: 400,\n },\n swimlaneBody: {\n display: 'grid',\n gridTemplateColumns: '1fr 225px 2fr',\n },\n swimlaneStats: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gridTemplateRows: 'auto auto auto 1fr',\n },\n swimlaneRisk: {\n textAlign: 'center',\n },\n slimButton: {\n padding: '3px 8px',\n marginRight: '0.5em',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: 'inherit',\n },\n objectiveWrapper: {\n margin: '0.5em',\n width: '300px',\n },\n }\n\n const sortedObjectives = this.sortObjectives()\n this.state = {\n disabledObjectives: sortedObjectives.disabledObjectives,\n enabledObjectives: sortedObjectives.enabledObjectives,\n }\n }\n\n componentDidUpdate(oldProps) {\n if (oldProps.objectivesLoading && !this.props.objectivesLoading) {\n const sortedObjectives = this.sortObjectives()\n this.setState({\n disabledObjectives: sortedObjectives.disabledObjectives,\n enabledObjectives: sortedObjectives.enabledObjectives,\n })\n }\n }\n\n sortObjectives = () => {\n let disabledObjectives = List()\n let enabledObjectives = List()\n this.props.objectives.forEach(objective => {\n const total = objective.get('definedControlFrameworks', List()).size\n const swimlaneCfsForObjective = objective\n .getIn(['appliedControlFrameworks', 'items'], List())\n .filter(\n config =>\n config &&\n config.get('srn') &&\n (!config.get('swimlaneSRNs') || //null swimlaneSRNs means its applied globally?\n config\n .get('swimlaneSRNs')\n .includes(this.props.swimlane.get('srn')))\n )\n\n const activeCount = swimlaneCfsForObjective.size\n\n if (total !== activeCount) {\n disabledObjectives = disabledObjectives.push(objective)\n } else {\n enabledObjectives = enabledObjectives.push(\n objective.set('swimlaneCfsForObjective', swimlaneCfsForObjective)\n )\n }\n })\n return {\n disabledObjectives,\n enabledObjectives,\n }\n }\n\n enableAllObjectives = objectiveSrns => {\n this.props.showEnableAllObjectiveModal({\n objectiveSrns,\n swimlaneSrn: this.props.swimlane.get('srn'),\n })\n }\n\n renderStat = nodeType => {\n return (\n \n )\n }\n\n renderSwimlaneRisk = () => {\n return (\n \n )\n }\n\n renderSwimlaneObjectives = () => {\n if (this.props.objectivesLoading || this.props.cfStatusLoading) {\n return \n }\n\n return (\n \n {this.state.enabledObjectives.map(objective => {\n const hasEvaluatedFrameworks = hasFinishedEvaluatingFrameworks(\n objective.getIn(['appliedControlFrameworks', 'items'], List()),\n this.props.controlGroups,\n this.props.swimlane.get('srn')\n )\n\n const total = objective.get('definedControlFrameworks', List()).size\n const swimlaneCfsForObjective = objective.get(\n 'swimlaneCfsForObjective'\n )\n const failingCount = swimlaneCfsForObjective.filter(cf =>\n this.props.cfStatus.get(cf.get('srn'))\n ).size\n\n const succeedingCFs = total - failingCount\n const passPercent = Math.floor((succeedingCFs / total) * 100)\n const loadingMessage = _.isNaN(passPercent)\n ? 'No Control Frameworks in this Objective'\n : hasEvaluatedFrameworks\n ? undefined\n : 'Evaluating Frameworks...'\n return (\n \n \n \n {objective.get('name')}\n \n \n \n {!_.isNaN(passPercent) && (\n \n \n \n \n\n \n {hasEvaluatedFrameworks\n ? `${succeedingCFs} out of ${total} frameworks passing`\n : 'Evaluating Frameworks...'}\n \n \n )}\n \n )\n })}\n {this.state.disabledObjectives.map(objective => {\n if (\n this.props.enablingObjectives.findIndex(\n enablin =>\n enablin.get('objectiveSrn') === objective.get('srn') &&\n enablin.get('swimlaneSrn') === this.props.swimlane.get('srn')\n ) !== -1 ||\n this.props.enablingAllObjectives\n ) {\n return (\n
\n \n \n Enabling {objective.get('name')} Objective\n \n
\n )\n } else {\n return (\n \n {\n this.props.showEnableObjectiveModal({\n objectiveSrn: objective.get('srn'),\n swimlaneSrn: this.props.swimlane.get('srn'),\n })\n e.stopPropagation()\n e.preventDefault()\n }}\n >\n Enable {objective.get('name')} Objective\n \n \n \n )\n }\n })}\n \n )\n }\n\n render() {\n const swimlane = this.props.swimlane\n return (\n \n (\n \n \n
\n {swimlane.get('title')}\n
\n {\n this.enableAllObjectives(\n this.state.disabledObjectives\n .map(obj => obj.get('srn'))\n .toJS()\n )\n e.stopPropagation()\n e.preventDefault()\n }}\n color=\"primary\"\n style={this.styles.slimButton}\n >\n {this.props.intl.formatMessage(messages['enableAll'])}\n \n \n\n
\n
\n {this.renderStat('Account')}\n {this.renderStat('Identity')}\n {this.renderStat('Protection')}\n {this.renderStat('Infrastructure')}\n {this.renderStat('Data')}\n
\n
\n {this.renderSwimlaneRisk(swimlane)}\n
\n
\n {this.renderSwimlaneObjectives(swimlane)}\n
\n
\n \n )}\n />\n \n )\n }\n}\n\nSwimlaneCard.propTypes = {\n cfStatus: ImmutablePropTypes.map.isRequired,\n cfStatusLoading: PropTypes.bool,\n enablingObjectives: ImmutablePropTypes.map,\n enablingAllObjectives: PropTypes.bool,\n intl: intlShape,\n showEnableObjectiveModal: PropTypes.func.isRequired,\n showEnableAllObjectiveModal: PropTypes.func.isRequired,\n swimlane: ImmutablePropTypes.map.isRequired,\n swimlaneRisksLoading: PropTypes.bool,\n swimlaneRisk: PropTypes.any,\n swimlaneStats: ImmutablePropTypes.map.isRequired,\n theme: themeShape,\n objectives: ImmutablePropTypes.iterable.isRequired,\n objectivesLoading: PropTypes.bool,\n controlGroups: ImmutablePropTypes.iterable.isRequired,\n}\n\nexport default compose(injectIntl, themeable)(SwimlaneCard)\n","import React from 'react'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { Map, List } from 'immutable'\nimport { createStructuredSelector } from 'reselect'\nimport { compose, bindActionCreators } from 'redux'\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap'\nimport { FormattedMessage } from 'react-intl'\nimport messages from './messages'\nimport { isEnableAllObjectiveSwimlaneDisabled } from 'utils/sonraiUtils'\nimport Icon from 'components/Icon'\nimport { PlainCheckbox } from 'components/Checkbox'\nimport Button from 'components/Button'\nimport TextLink from 'components/TextLink'\nimport SearchInput from 'components/SearchInput'\nimport injectReducer from 'utils/injectReducer'\nimport injectSaga from 'utils/injectSaga'\nimport {\n selectSwimlanes,\n selectSwimlanesLoading,\n} from 'containers/SonraiData/selectors'\nimport LoadingAnim from 'components/LoadingAnim'\nimport {\n selectObjectives,\n selectObjectivesError,\n selectObjectivesLoading,\n selectEnablingObjectives,\n selectEnablingAllObjectivesForSwimlane,\n selectEnablingAllObjectives,\n} from 'containers/SonraiData/selectors'\nimport {\n fetchObjectives,\n enableObjective,\n enableAllObjectives,\n enableAllObjectivesForSwimlane,\n} from 'containers/SonraiData/actions'\nimport Dropdown, {\n DropdownMenu,\n InlineDropdownAnchor,\n DropdownItem,\n} from 'components/Dropdown'\nimport {\n selectControlGroups,\n selectLoadedControlGroups,\n} from 'containers/ControlFrameworkData/selectors'\nimport reducer from './reducer'\nimport {\n selectSwimlaneStats,\n selectCfStatus,\n selectCfStatusLoading,\n selectSwimlaneRisks,\n selectSwimlaneRisksLoading,\n} from './selectors'\nimport {\n fetchSwimlaneStats,\n fetchCfStatus,\n fetchSwimlaneRisks,\n} from './actions'\nimport sagas from './sagas'\n\nimport SwimlaneCard from './SwimlaneCard'\n\nconst ORDERBY = {\n RISK: 'RISK',\n TITLE: 'TITLE',\n}\nexport class SwimlaneCheckup extends React.Component {\n constructor(props) {\n super(props)\n\n this.styles = {\n container: {\n padding: '1em',\n width: '100%',\n height: '100%',\n display: 'grid',\n gridTemplateRows: 'auto 1fr',\n },\n title: {\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n padding: '0rem 0rem 0.5rem 0rem',\n },\n body: {\n overflow: 'auto',\n },\n header: {\n marginBottom: '1em',\n },\n filters: {\n display: 'grid',\n gridTemplateColumns: '1fr auto auto',\n gridColumnGap: '1em',\n alignItems: 'center',\n },\n }\n\n this.state = {\n swimlaneFilter: '',\n orderBy: ORDERBY.RISK,\n enableObjectiveModal: null,\n enableAllObjectiveModal: null,\n allowRemediations: false,\n enableAllObjSwimlaneModal: false,\n }\n\n props.fetchSwimlaneStats()\n props.fetchObjectives()\n props.fetchCfStatus()\n props.fetchSwimlaneRisks()\n }\n\n getFilteredSwimanes = () => {\n let swimlanes = this.props.swimlanes.toList()\n if (this.state.swimlaneFilter.trim()) {\n const searchTerm = this.state.swimlaneFilter.trim().toLowerCase()\n\n swimlanes = this.props.swimlanes.toList().filter(swimlane => {\n const title = (swimlane.get('title') || '').toLowerCase()\n\n return title.includes(searchTerm)\n })\n }\n\n if (this.state.orderBy === ORDERBY.RISK) {\n return swimlanes\n .sortBy(swimlane => {\n const risk = this.props.swimlaneRisks.get(swimlane.get('srn'))\n return risk ? risk : 'A'\n })\n .reverse()\n }\n\n return swimlanes.sortBy(swimlane => {\n return (swimlane.get('title') || '').toLowerCase()\n })\n }\n\n setSearchFilter = e => {\n this.setState({\n swimlaneFilter: e.target.value,\n })\n }\n\n setAllowRemediations = value => {\n this.setState({\n allowRemediations: value,\n })\n }\n\n showEnableObjectiveModal = params => {\n this.setState({\n enableObjectiveModal: params,\n allowRemediations: false,\n })\n }\n\n showEnableAllObjectiveModal = params => {\n this.setState({\n enableAllObjectiveModal: params,\n allowRemediations: false,\n })\n }\n\n showEnableAllObjSwimlaneModal = () => {\n this.setState({\n enableAllObjSwimlaneModal: true,\n allowRemediations: false,\n })\n }\n\n cancelEnableModal = () => {\n this.setState({\n enableObjectiveModal: null,\n allowRemediations: false,\n })\n }\n\n cancelEnableAllModal = () => {\n this.setState({\n enableAllObjectiveModal: null,\n allowRemediations: false,\n })\n }\n\n cancelEnableAllObjSwimlaneModal = () => {\n this.setState({\n enableAllObjSwimlaneModal: false,\n allowRemediations: false,\n })\n }\n\n enableAllObjectivesForSwimlane = () => {\n this.props.enableAllObjectivesForSwimlane({\n ...this.state.enableAllObjectiveModal,\n enableEscalationSchemes: this.state.allowRemediations,\n })\n\n this.setState({\n enableAllObjectiveModal: null,\n allowRemediations: false,\n })\n }\n\n enableObjective = () => {\n this.props.enableObjective({\n ...this.state.enableObjectiveModal,\n enableEscalationSchemes: this.state.allowRemediations,\n })\n\n this.setState({\n enableObjectiveModal: null,\n allowRemediations: false,\n })\n }\n\n setOrder = ({ value }) => {\n this.setState({\n orderBy: value,\n })\n }\n\n renderSwimlane = swimlane => {\n const objectivesWithCFs = this.props.objectives.filter(\n obj => !obj.get('definedControlFrameworks', List()).isEmpty()\n )\n\n return (\n \n )\n }\n\n renderConfirmRemediationBotsModal = () => {\n return (\n \n \n Enable escalations for this objective?\n \n \n

\n Some policies included in objectives have default escalation schemes\n that automatically assign a ticket to a remediation bot.{' '}\n Remediation bots make changes in your cloud to\n automatically resolve problems.{' '}\n

\n {' '}\n Accept default escalation schemes\n
\n \n Cancel\n \n \n
\n )\n }\n\n renderConfirmAllRemediationBotsModal = () => {\n return (\n \n \n Enable escalations for all objectives?\n \n \n

\n Some policies included in objectives have default escalation schemes\n that automatically assign a ticket to a remediation bot.{' '}\n Remediation bots make changes in your cloud to\n automatically resolve problems.{' '}\n

\n {' '}\n Accept default escalation schemes\n
\n \n Cancel\n \n \n
\n )\n }\n\n renderConfirmAllSwomboRemediationBotsModal = () => {\n return (\n \n \n Enable escalations for all objectives on all swimlanes?\n \n \n

\n Some policies included in objectives have default escalation schemes\n that automatically assign a ticket to a remediation bot.{' '}\n Remediation bots make changes in your cloud to\n automatically resolve problems.{' '}\n

\n {' '}\n Accept default escalation schemes\n
\n \n \n Cancel\n \n \n \n
\n )\n }\n\n enableAllObjectives = () => {\n this.props.enableAllObjectives({\n enableEscalationSchemes: this.state.allowRemediations,\n })\n this.setState({\n enableAllObjSwimlaneModal: false,\n allowRemediations: false,\n })\n }\n\n render() {\n if (this.props.swimlanesLoading || !this.props.loadedControlGroups) {\n return \n }\n\n const isDisabled = isEnableAllObjectiveSwimlaneDisabled(\n this.props.objectives,\n this.props.controlGroups\n )\n\n return (\n
\n {this.state.enableObjectiveModal &&\n this.renderConfirmRemediationBotsModal()}\n {this.state.enableAllObjectiveModal &&\n this.renderConfirmAllRemediationBotsModal()}\n {this.state.enableAllObjSwimlaneModal &&\n this.renderConfirmAllSwomboRemediationBotsModal()}\n
\n
\n
All Swimlanes
\n \n {this.props.enablingAllObjectives ? (\n \n \n \n ) : (\n \n )}\n \n
\n
\n \n
\n Sort By:{' '}\n \n \n \n \n \n \n \n
\n
\n
\n
\n {this.getFilteredSwimanes().map(this.renderSwimlane)}\n
\n
\n )\n }\n}\n\nSwimlaneCheckup.propTypes = {\n cfStatus: ImmutablePropTypes.map.isRequired,\n cfStatusLoading: PropTypes.bool,\n enablingObjectives: ImmutablePropTypes.list,\n enablingAllObjectives: PropTypes.bool,\n enablingAllObjectivesForSwimlane: PropTypes.string,\n enableObjective: PropTypes.func,\n enableAllObjectives: PropTypes.func,\n enableAllObjectivesForSwimlane: PropTypes.func,\n fetchSwimlaneStats: PropTypes.func.isRequired,\n fetchObjectives: PropTypes.func.isRequired,\n fetchCfStatus: PropTypes.func.isRequired,\n fetchSwimlaneRisks: PropTypes.func.isRequired,\n swimlanes: ImmutablePropTypes.iterable.isRequired,\n swimlanesLoading: PropTypes.bool,\n swimlaneRisks: ImmutablePropTypes.map.isRequired,\n swimlaneRisksLoading: PropTypes.bool,\n swimlaneStats: ImmutablePropTypes.map.isRequired,\n objectives: ImmutablePropTypes.iterable.isRequired,\n objectivesLoading: PropTypes.bool,\n controlGroups: ImmutablePropTypes.iterable.isRequired,\n loadedControlGroups: PropTypes.bool,\n}\n\nconst mapStateToProps = createStructuredSelector({\n cfStatus: selectCfStatus,\n cfStatusLoading: selectCfStatusLoading,\n enablingObjectives: selectEnablingObjectives,\n enablingAllObjectives: selectEnablingAllObjectives,\n enablingAllObjectivesForSwimlane: selectEnablingAllObjectivesForSwimlane,\n objectives: selectObjectives,\n objectivesError: selectObjectivesError,\n objectivesLoading: selectObjectivesLoading,\n swimlanes: selectSwimlanes,\n swimlanesLoading: selectSwimlanesLoading,\n swimlaneRisks: selectSwimlaneRisks,\n swimlaneRisksLoading: selectSwimlaneRisksLoading,\n swimlaneStats: selectSwimlaneStats,\n controlGroups: selectControlGroups,\n loadedControlGroups: selectLoadedControlGroups,\n})\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n fetchSwimlaneStats,\n fetchObjectives,\n enableObjective,\n enableAllObjectives,\n enableAllObjectivesForSwimlane,\n fetchCfStatus,\n fetchSwimlaneRisks,\n },\n dispatch\n )\n}\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps)\nconst withReducer = injectReducer({ key: 'swimlaneCheckup', reducer })\nconst withSaga = injectSaga({ key: 'swimlaneCheckup', saga: sagas })\n\nexport default compose(withReducer, withConnect, withSaga)(SwimlaneCheckup)\n"],"sourceRoot":""}