{"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/SwimlaneCheckupDetails/constants.js","webpack:///./app/containers/SwimlaneCheckupDetails/reducer.js","webpack:///./app/containers/SwimlaneCheckupDetails/selectors.js","webpack:///./app/containers/SwimlaneCheckupDetails/actions.js","webpack:///./app/containers/SwimlaneCheckupDetails/sagas.js","webpack:///./app/containers/SwimlaneCheckupDetails/PassingPolicy.js","webpack:///./app/containers/SwimlaneCheckupDetails/FailingPolicy.js","webpack:///./app/containers/SwimlaneCheckupDetails/ObjectiveFramework.js","webpack:///./app/containers/SwimlaneCheckupDetails/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_POLICY_ROLLUPS","FETCH_POLICY_TICKETS","FETCH_SWIMLANE_RISK","initialState","fromJS","swimlaneStats","swimlaneStatsLoading","policyTickets","policyTicketsLoading","policyRollups","policyRollupsLoading","swimlaneRisk","policyRiskLoading","swimlaneManagerReducer","handleActions","state","payload","setIn","policySrn","tickets","selectSwimlaneCheckupDetailsDomain","Map","selectSwimlaneSrn","location","parse","swimlaneSrn","selectSwimlane","createSelector","selectSwimlanes","swimlanes","find","selectPolicyTickets","selectPolicyTicketsLoading","selectPolicyRollups","List","selectPolicyRollupsLoading","selectSwimlaneStats","selectSwimlaneRisk","selectSwimlaneRiskLoading","fetchSwimlaneStats","createAction","setSwimlaneStats","fetchSwimlaneStatsError","fetchPolicyTickets","fetchPolicyTicketsError","setPolicyTickets","fetchPolicyRollups","fetchPolicyRollupsError","setPolicyRollups","fetchSwimlaneRisk","setSwimlaneRisk","fetchSwimlaneRiskError","fetchTicketsForPolicy","swimlaneCheckupDetailsSaga","client","getClient","query","gql","variables","results","errors","Error","select","selectQueryTypes","queryTypes","countsByType","data","GroupedQuery","items","swimlaneStat","getInterfaceCount","put","console","error","selectObjectives","objectives","isEmpty","fetchObjectives","cfSrnsForObjectives","Set","objective","getIn","config","includes","add","selectControlGroups","controlFrameworks","getControlGroups","getPolicies","policyIds","cf","pol","TICKET_STATUS","NEW","IN_PROGRESS","policySrns","toList","toJS","rollups","findingsByPolicy","rollup","policyId","ticketKey","riskScore","all","takeLatest","takeEvery","PassingPolicy","policy","marginBottom","Tooltip","maxWidth","anchor","Icon","marginRight","tooltipContent","MarkdownDisplay","FailingPolicy","ticketsCount","ticketsLoading","refreshData","gridTemplateColumns","fail","TextLink","TicketTable","fitAllRows","controlFramework","policies","loadSampleTickets","useState","expanded","setExpanded","fetchTickets","failingCfPolicySrns","filter","srn","onDoubleClickRow","cfPolicies","sortBy","total","failingCount","passPercent","icon","BorderlessButton","onClick","ProgressBar","LoadingAnim","Breadcrumb","SwimlaneCheckupDetails","objectiveSrn","enableObjective","Button","hasFinishedEvaluatingFrameworks","ele","neutralMedium","appliedForSwimlane","tabContent","SectionHeader","renderEnableObjective","renderEnabledObjective","objectivesLoading","objectivesWithCFs","NodeViewTabs","minHeight","gridTemplateRows","tabStyle","renderObjectiveTabContent","ContentStat","gridTemplateAreas","gridColumnGap","gridRowGap","overflow","body","stats","header","headerButton","gridArea","borderLeft","borderRight","borderBottom","swimlanesLoading","loadedControlGroups","breadcrumbs","BorderedCard","outline","RiskScore","swimlaneRiskLoading","renderStat","renderObjectivesTabs","mapStateToProps","createStructuredSelector","enablingObjective","selectEnablingObjectives","selectLoadedControlGroups","objectivesError","selectObjectivesError","selectObjectivesLoading","selectPolicies","selectSwimlanesLoading","withConnect","connect","dispatch","bindActionCreators","withReducer","injectReducer","reducer","withSaga","injectSaga","saga","sagas","compose"],"mappings":"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","file":"20.e5919ba33c38cec9ca08.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/SwimlaneCheckupDetails/'\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'\n\nexport const FETCH_POLICY_ROLLUPS = prefix + 'FETCH_POLICY_ROLLUPS'\nexport const SET_POLICY_ROLLUPS = prefix + 'SET_POLICY_ROLLUPS'\nexport const FETCH_POLICY_ROLLUPS_ERROR = prefix + 'FETCH_POLICY_ROLLUPS_ERROR'\n\nexport const FETCH_POLICY_TICKETS = prefix + 'FETCH_POLICY_TICKETS'\nexport const SET_POLICY_TICKETS = prefix + 'SET_POLICY_TICKETS'\nexport const FETCH_POLICY_TICKETS_ERROR = prefix + 'FETCH_POLICY_TICKETS_ERROR'\n\nexport const FETCH_SWIMLANE_RISK = prefix + 'FETCH_SWIMLANE_RISK'\nexport const SET_SWIMLANE_RISK = prefix + 'SET_SWIMLANE_RISK'\nexport const FETCH_SWIMLANE_RISK_ERROR = prefix + 'FETCH_SWIMLANE_RISK_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_POLICY_TICKETS,\n FETCH_POLICY_TICKETS_ERROR,\n SET_POLICY_TICKETS,\n FETCH_POLICY_ROLLUPS,\n FETCH_POLICY_ROLLUPS_ERROR,\n SET_POLICY_ROLLUPS,\n FETCH_SWIMLANE_RISK,\n FETCH_SWIMLANE_RISK_ERROR,\n SET_SWIMLANE_RISK,\n} from './constants'\n\nconst initialState = fromJS({\n swimlaneStats: {},\n swimlaneStatsLoading: false,\n policyTickets: {},\n policyTicketsLoading: {},\n policyRollups: {},\n policyRollupsLoading: false,\n swimlaneRisk: null,\n policyRiskLoading: 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_POLICY_TICKETS]: (state, { payload }) =>\n state.setIn(['policyTicketsLoading', payload.policySrn], true),\n [FETCH_POLICY_TICKETS_ERROR]: (state, { payload }) =>\n state.setIn(['policyTicketsLoading', payload.policySrn], false),\n [SET_POLICY_TICKETS]: (state, { payload }) =>\n state\n .setIn(['policyTickets', payload.policySrn], fromJS(payload.tickets))\n .setIn(['policyTicketsLoading', payload.policySrn], false),\n [FETCH_POLICY_ROLLUPS]: state => state.set('policyRollupsLoading', true),\n [FETCH_POLICY_ROLLUPS_ERROR]: state =>\n state.set('policyRollupsLoading', false),\n [SET_POLICY_ROLLUPS]: (state, { payload }) =>\n state\n .set('policyRollups', fromJS(payload))\n .set('policyRollupsLoading', false),\n [FETCH_SWIMLANE_RISK]: state => state.set('swimlaneRiskLoading', true),\n [FETCH_SWIMLANE_RISK_ERROR]: state =>\n state.set('swimlaneRiskLoading', false),\n [SET_SWIMLANE_RISK]: (state, { payload }) =>\n state\n .set('swimlaneRisk', fromJS(payload))\n .set('swimlaneRiskLoading', false),\n },\n initialState\n)\n\nexport default swimlaneManagerReducer\n","import { createSelector } from 'reselect'\nimport { Map, List } from 'immutable'\nimport qs from 'query-string'\nimport { selectSwimlanes } from 'containers/SonraiData/selectors'\n\nconst selectSwimlaneCheckupDetailsDomain = state =>\n state.get('swimlaneCheckupDetails') || Map()\n\nexport const selectSwimlaneSrn = (state, props) => {\n if (props && props.location && props.location.search) {\n return qs.parse(props.location.search).swimlaneSrn\n } else {\n return null\n }\n}\n\nexport const selectSwimlane = createSelector(\n [selectSwimlanes, selectSwimlaneSrn],\n (swimlanes, swimlaneSrn) =>\n swimlanes.find(swimlane => swimlane.get('srn') === swimlaneSrn) || Map()\n)\n\nexport const selectPolicyTickets = createSelector(\n selectSwimlaneCheckupDetailsDomain,\n state => state.get('policyTickets') || Map()\n)\n\nexport const selectPolicyTicketsLoading = createSelector(\n selectSwimlaneCheckupDetailsDomain,\n state => state.get('policyTicketsLoading')\n)\n\nexport const selectPolicyRollups = createSelector(\n selectSwimlaneCheckupDetailsDomain,\n state => state.get('policyRollups') || List()\n)\n\nexport const selectPolicyRollupsLoading = createSelector(\n selectSwimlaneCheckupDetailsDomain,\n state => state.get('policyRollupsLoading')\n)\n\nexport const selectSwimlaneStats = createSelector(\n selectSwimlaneCheckupDetailsDomain,\n state => state.get('swimlaneStats') || Map()\n)\n\nexport const selectSwimlaneRisk = createSelector(\n selectSwimlaneCheckupDetailsDomain,\n state => state.get('swimlaneRisk')\n)\n\nexport const selectSwimlaneRiskLoading = createSelector(\n selectSwimlaneCheckupDetailsDomain,\n state => state.get('swimlaneRiskLoading')\n)\n","import {\n FETCH_SWIMLANE_STATS,\n SET_SWIMLANE_STATS,\n FETCH_SWIMLANE_STATS_ERROR,\n FETCH_POLICY_TICKETS,\n FETCH_POLICY_TICKETS_ERROR,\n SET_POLICY_TICKETS,\n FETCH_POLICY_ROLLUPS,\n FETCH_POLICY_ROLLUPS_ERROR,\n SET_POLICY_ROLLUPS,\n FETCH_SWIMLANE_RISK,\n SET_SWIMLANE_RISK,\n FETCH_SWIMLANE_RISK_ERROR,\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 fetchPolicyTickets = createAction(FETCH_POLICY_TICKETS)\nexport const fetchPolicyTicketsError = createAction(FETCH_POLICY_TICKETS_ERROR)\nexport const setPolicyTickets = createAction(SET_POLICY_TICKETS)\n\nexport const fetchPolicyRollups = createAction(FETCH_POLICY_ROLLUPS)\nexport const fetchPolicyRollupsError = createAction(FETCH_POLICY_ROLLUPS_ERROR)\nexport const setPolicyRollups = createAction(SET_POLICY_ROLLUPS)\n\nexport const fetchSwimlaneRisk = createAction(FETCH_SWIMLANE_RISK)\nexport const setSwimlaneRisk = createAction(SET_SWIMLANE_RISK)\nexport const fetchSwimlaneRiskError = createAction(FETCH_SWIMLANE_RISK_ERROR)\n","import {\n all,\n put,\n takeLatest,\n call,\n select,\n takeEvery,\n} from 'redux-saga/effects'\nimport gql from 'graphql-tag'\nimport _ from 'lodash'\nimport { List, Set } from 'immutable'\nimport { getClient } from 'apolloClient'\n\nimport { TICKET_STATUS } from 'appConstants'\nimport { fetchObjectives } from 'containers/SonraiData/sagas'\nimport {\n selectQueryTypes,\n selectObjectives,\n} from 'containers/SonraiData/selectors'\nimport { selectControlGroups } from 'containers/ControlFrameworkData/selectors'\nimport {\n getControlGroups,\n getPolicies,\n} from 'containers/ControlFrameworkData/sagas'\nimport { getInterfaceCount } from 'utils/sonraiUtils'\n\nimport {\n setSwimlaneStats,\n fetchSwimlaneStatsError,\n fetchPolicyTicketsError,\n fetchPolicyRollupsError,\n setPolicyRollups,\n setPolicyTickets,\n setSwimlaneRisk,\n fetchSwimlaneRiskError,\n} from './actions'\nimport {\n FETCH_SWIMLANE_STATS,\n FETCH_POLICY_TICKETS,\n FETCH_POLICY_ROLLUPS,\n FETCH_SWIMLANE_RISK,\n} from './constants'\n\nfunction* fetchSwimlaneStats({ payload }) {\n try {\n const client = getClient()\n const results = yield client.query({\n query: gql`\n query getStatsBySwimlane($swimlaneSrn: String) {\n GroupedQuery(where: { swimlanes: [$swimlaneSrn], keys: [Label] }) {\n key\n items {\n value\n count\n hasGroupedResult {\n items {\n value\n count\n }\n }\n }\n }\n }\n `,\n variables: {\n swimlaneSrn: payload,\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 countsByType = {}\n const stats = results.data.GroupedQuery.items\n stats.forEach(swimlaneStat => {\n countsByType[swimlaneStat.value] = swimlaneStat.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 yield put(setSwimlaneStats(countsByType))\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* fetchPolicyRollups({ payload }) {\n try {\n const swimlaneSrn = payload.swimlaneSrn\n\n let objectives = yield select(selectObjectives)\n if (objectives.isEmpty()) {\n yield call(fetchObjectives)\n objectives = yield select(selectObjectives)\n }\n\n //get a list of control frameworks that are part of objectives\n let cfSrnsForObjectives = Set()\n objectives.forEach(objective =>\n objective\n .getIn(['appliedControlFrameworks', 'items'], List())\n .forEach(config => {\n if (\n config &&\n config.get('srn') &&\n (!config.get('swimlaneSRNs') || //null swimlaneSRNs means its applied globally?\n config.get('swimlaneSRNs').includes(swimlaneSrn))\n ) {\n cfSrnsForObjectives = cfSrnsForObjectives.add(config.get('srn'))\n }\n })\n )\n\n //get a list of all the policies that are part of the objective CFs\n let controlFrameworks = yield select(selectControlGroups)\n if (controlFrameworks.isEmpty()) {\n yield call(getControlGroups)\n yield call(getPolicies)\n controlFrameworks = yield select(selectControlGroups)\n }\n\n let policyIds = Set()\n controlFrameworks.forEach(cf => {\n if (cfSrnsForObjectives.has(cf.get('srn'))) {\n cf.getIn(['contains', 'items'], List()).forEach(pol => {\n policyIds = policyIds.add(pol.get('srn'))\n })\n }\n })\n\n const client = getClient()\n const results = yield client.query({\n query: gql`\n query getTicketsForObjectivesPolicies(\n $policySrns: [String!]!\n $swimlaneSrn: String!\n ) {\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: IN_LIST, values: $policySrns }\n ticketType: { value: \"Policy\" }\n orgName: { value: \"ALL\" }\n account: { value: \"ALL\" }\n status: { op: IN_LIST, values: [\"${TICKET_STATUS.NEW}\", \"${TICKET_STATUS.IN_PROGRESS}\"] }\n swimlaneSrns: { op: EQ, value: $swimlaneSrn }\n }\n ) {\n items {\n ticketKey\n count\n swimlaneSrns\n }\n }\n }\n `,\n variables: {\n policySrns: policyIds.toList().toJS(),\n swimlaneSrn: swimlaneSrn,\n },\n })\n\n const rollups = _.get(results, ['data', 'TicketRollups', 'items'])\n\n if (results.errors || !rollups) {\n throw new Error(results.errors)\n }\n\n const findingsByPolicy = {}\n rollups.forEach(rollup => {\n const policyId = rollup.ticketKey\n if (findingsByPolicy[policyId]) {\n findingsByPolicy[policyId] += rollup.count\n } else {\n findingsByPolicy[policyId] = rollup.count\n }\n })\n\n yield put(setPolicyRollups(findingsByPolicy))\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('error fetching policy tickets for objectives', e)\n yield put(fetchPolicyRollupsError())\n }\n}\n\nfunction* fetchTicketsForPolicy({ payload }) {\n const policySrn = payload.policySrn\n const swimlaneSrn = payload.swimlaneSrn\n\n try {\n const client = getClient()\n const results = yield client.query({\n query: gql`\n query getSampleTicketsForPolicy(\n $policySrn: String!\n $swimlaneSrn: String!\n ) {\n Tickets(\n where: {\n ticketKey: { op: EQ, value: $policySrn }\n status: { op: IN_LIST, values: [\"${TICKET_STATUS.NEW}\", \"${TICKET_STATUS.IN_PROGRESS}\"] }\n swimlaneSrns: { op: EQ, value: $swimlaneSrn }\n }\n ) {\n items(orderBy: [{ severityNumeric: { order: DESC } }], limit: 5) {\n title\n status\n assignedTo\n severityNumeric\n swimlaneSRNs\n createdDate\n lastModified\n resource {\n srn\n label\n name\n friendlyName\n account\n active\n createdDate\n cloudType\n country\n region\n resourceId\n importance\n swimlaneSRNs\n __typename\n }\n evidence {\n conditions\n path\n count\n fieldType\n boolValue\n intValue\n longValue\n value\n prevBoolValue\n prevIntValue\n prevLongValue\n prevValue\n }\n firstSeen\n lastSeen\n createdBy\n ticketKey\n ticketType\n resourceType\n resourceLabel\n actionClassification\n account\n srn\n resourceId\n }\n }\n }\n `,\n variables: {\n policySrn: policySrn,\n swimlaneSrn: swimlaneSrn,\n },\n })\n\n const tickets = _.get(results, ['data', 'Tickets', 'items'])\n\n if (results.errors || !tickets) {\n throw new Error(results.errors)\n }\n\n yield put(\n setPolicyTickets({\n policySrn: policySrn,\n tickets: tickets,\n })\n )\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('error fetching sample tickets for policy', e)\n yield put(fetchPolicyTicketsError({ policySrn: policySrn }))\n }\n}\n\nfunction* fetchSwimlaneRisk({ payload }) {\n try {\n const client = getClient()\n const results = yield client.query({\n query: gql`\n query getSwimlaneRisk($swimlaneSrn: String!) {\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 swimlaneSrns: {op: EQ value: $swimlaneSrn}\n }\n ) {\n items {\n swimlaneSrns\n riskScore\n riskScoreNumeric\n }\n }\n }\n `,\n variables: {\n swimlaneSrn: payload,\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 riskScore = _.get(rollups, [0, 'riskScore'], 'A')\n const riskScoreNumeric = _.get(rollups, [0, 'riskScoreNumeric'], 100)\n\n yield put(\n setSwimlaneRisk({\n riskScore,\n riskScoreNumeric,\n })\n )\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('error fetching the ticket status for swimlanes', e)\n yield put(fetchSwimlaneRiskError())\n }\n}\n\nfunction* swimlaneCheckupDetailsSaga() {\n yield all([\n takeLatest(FETCH_SWIMLANE_STATS, fetchSwimlaneStats),\n takeLatest(FETCH_POLICY_ROLLUPS, fetchPolicyRollups),\n takeEvery(FETCH_POLICY_TICKETS, fetchTicketsForPolicy),\n takeLatest(FETCH_SWIMLANE_RISK, fetchSwimlaneRisk),\n ])\n}\n\nexport default swimlaneCheckupDetailsSaga\n","import React from 'react'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\n\nimport Tooltip from 'components/Tooltip'\nimport MarkdownDisplay from 'components/MarkdownDisplay'\nimport Icon from 'components/Icon'\nimport { themeShape } from 'containers/ThemeManager/Themeable'\n\nconst PassingPolicy = ({ policy, theme }) => {\n return (\n
\n \n \n {policy.get('title')}\n
\n }\n tooltipContent={}\n />\n \n )\n}\n\nPassingPolicy.propTypes = {\n policy: ImmutablePropTypes.map.isRequired,\n theme: themeShape,\n}\n\nexport default PassingPolicy\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\n\nimport { themeShape } from 'containers/ThemeManager/Themeable'\nimport Icon from 'components/Icon'\nimport MarkdownDisplay from 'components/MarkdownDisplay'\nimport { BlockShimmer } from 'components/ShimmerLoader'\nimport TicketTable from 'components/TicketTable'\nimport TextLink from 'components/TextLink'\n\nconst FailingPolicy = ({\n policy,\n swimlaneSrn,\n ticketsCount,\n theme,\n tickets,\n ticketsLoading,\n refreshData,\n objectives,\n}) => {\n return (\n
\n
\n {' '}\n {policy.get('title')}\n
\n
\n \n
\n
\n {ticketsLoading ? (\n
\n \n
\n ) : (\n
\n
\n \n Tickets{' '}\n \n \n View all ({ticketsCount} total)\n \n
\n \n
\n )}\n
\n
\n )\n}\n\nFailingPolicy.propTypes = {\n policy: ImmutablePropTypes.map.isRequired,\n refreshData: PropTypes.func,\n swimlaneSrn: PropTypes.string.isRequired,\n ticketsCount: PropTypes.number,\n tickets: ImmutablePropTypes.list.isRequired,\n ticketsLoading: PropTypes.bool,\n objectives: ImmutablePropTypes.list.isRequired,\n theme: themeShape,\n}\nexport default FailingPolicy\n","import React, { useState, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport { List, Map } from 'immutable'\n\nimport { themeShape } from 'containers/ThemeManager/Themeable'\nimport BorderlessButton from 'components/BorderlessButton'\nimport Icon from 'components/Icon'\nimport ProgressBar from 'components/ProgressBar'\nimport themeable from 'containers/ThemeManager/Themeable'\nimport MarkdownDisplay from 'components/MarkdownDisplay'\n\nimport PassingPolicy from './PassingPolicy'\nimport FailingPolicy from './FailingPolicy'\n\nconst ObjectiveFramework = ({\n controlFramework,\n policies,\n push,\n rollups,\n swimlaneSrn,\n theme,\n loadSampleTickets,\n policyTickets,\n policyTicketsLoading,\n objectives,\n}) => {\n const [expanded, setExpanded] = useState(false)\n\n const fetchTickets = () => {\n const failingCfPolicySrns = controlFramework\n .getIn(['contains', 'items'], List())\n .map(pol => pol.get('srn'))\n .filter(srn => rollups.get(srn))\n .toJS()\n loadSampleTickets(failingCfPolicySrns)\n }\n\n const toggleExpand = () => {\n setExpanded(!expanded)\n\n if (!expanded) {\n //TODO: only load tickets if they are already not loaded\n fetchTickets()\n }\n }\n\n const onDoubleClickRow = ({ srn }) => {\n push({\n pathname: `/App/TicketDetails`,\n search: `srn=${srn}`,\n })\n }\n\n const cfPolicies = controlFramework\n .getIn(['contains', 'items'], List())\n .map(pol => policies.get(pol.get('srn')) || Map())\n .sortBy(policy => policy.get('alertingLevelNumeric'))\n .reverse()\n\n const total = cfPolicies.size\n const failingCount = cfPolicies.filter(pol => rollups.get(pol.get('srn')))\n .size\n const passPercent = Math.floor(((total - failingCount) / total) * 100)\n\n const icon =\n failingCount > 0 ? (\n \n ) : (\n \n )\n return (\n
\n
\n \n \n {icon}\n {controlFramework.get('title')}\n \n
\n \n {expanded && (\n \n
\n \n
\n
\n {cfPolicies.map(policy => {\n const ticketsCount = rollups.get(policy.get('srn')) || 0\n const tickets = policyTickets.get(policy.get('srn')) || List()\n const ticketsLoading = policyTicketsLoading.get(policy.get('srn'))\n\n if (ticketsCount > 0) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n })}\n
\n
\n )}\n
\n )\n}\n\nObjectiveFramework.propTypes = {\n controlFramework: ImmutablePropTypes.map.isRequired,\n swimlaneSrn: PropTypes.string,\n policies: ImmutablePropTypes.map.isRequired,\n push: PropTypes.func.isRequired,\n rollups: ImmutablePropTypes.map.isRequired,\n loadSampleTickets: PropTypes.func.isRequired,\n policyTickets: ImmutablePropTypes.map.isRequired,\n policyTicketsLoading: ImmutablePropTypes.map.isRequired,\n objectives: ImmutablePropTypes.map.isRequired,\n theme: themeShape,\n}\nexport default themeable(ObjectiveFramework)\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 qs from 'query-string'\nimport { push } from 'connected-react-router'\nimport LoadingAnim from 'components/LoadingAnim'\nimport { BlockShimmer } from 'components/ShimmerLoader'\nimport {\n selectControlGroups,\n selectPolicies,\n selectLoadedControlGroups,\n} from 'containers/ControlFrameworkData/selectors'\nimport Icon from 'components/Icon'\nimport NodeViewTabs from 'components/NodeView/NodeViewTabs'\nimport Button from 'components/Button'\nimport MarkdownDisplay from 'components/MarkdownDisplay'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport injectReducer from 'utils/injectReducer'\nimport injectSaga from 'utils/injectSaga'\nimport { hasFinishedEvaluatingFrameworks } from 'utils/sonraiUtils'\nimport BorderedCard from 'components/BorderedCard'\nimport Breadcrumb, { BreadcrumbItem } from 'components/Breadcrumb'\nimport TextLink from 'components/TextLink'\nimport SectionHeader from 'components/SectionHeader'\nimport {\n selectObjectives,\n selectObjectivesError,\n selectObjectivesLoading,\n selectEnablingObjectives,\n selectSwimlanesLoading,\n} from 'containers/SonraiData/selectors'\nimport { enableObjective } from 'containers/SonraiData/actions'\n\nimport reducer from './reducer'\nimport {\n selectSwimlane,\n selectPolicyTickets,\n selectPolicyTicketsLoading,\n selectPolicyRollups,\n selectPolicyRollupsLoading,\n selectSwimlaneSrn,\n selectSwimlaneStats,\n selectSwimlaneRisk,\n selectSwimlaneRiskLoading,\n} from './selectors'\nimport {\n fetchSwimlaneStats,\n fetchPolicyTickets,\n fetchPolicyRollups,\n fetchSwimlaneRisk,\n} from './actions'\nimport sagas from './sagas'\nimport ObjectiveFramework from './ObjectiveFramework'\nimport RiskScore from 'containers/SwimlaneCheckup/RiskScore'\nimport ContentStat from 'containers/SwimlaneCheckup/ContentStat'\n\nexport class SwimlaneCheckupDetails extends React.Component {\n constructor(props) {\n super(props)\n\n this.styles = {\n container: {\n display: 'grid',\n gridTemplateColumns: '1fr',\n gridTemplateRows: 'auto auto 1fr',\n gridTemplateAreas: '\"breadcrumbs\" \"title\" \"policies\"',\n gridColumnGap: '1em',\n gridRowGap: '0.5em',\n padding: '1em',\n height: '100%',\n overflow: 'auto',\n },\n body: {\n overflow: 'auto',\n display: 'grid',\n gridTemplateRows: 'auto 1fr',\n gridTemplateAreas: '\"stats\" \"objectives\"',\n },\n stats: {\n height: '150px',\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n },\n header: {\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n gridTemplateAreas: '\"details button\"',\n },\n headerButton: {\n gridArea: 'button',\n },\n tabContent: {\n background: 'white',\n borderLeft: '1px solid #ccc',\n borderRight: '1px solid #ccc',\n borderBottom: '1px solid #ccc',\n padding: '1em 2em',\n minHeight: '100%',\n },\n swimlaneStats: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gridTemplateRows: 'auto auto auto 1fr',\n },\n }\n\n props.fetchPolicyRollups({ swimlaneSrn: props.swimlaneSrn })\n props.fetchSwimlaneStats(props.swimlaneSrn)\n props.fetchSwimlaneRisk(props.swimlaneSrn)\n }\n\n enableObjective = ({ objectiveSrn }) => {\n this.props.enableObjective({\n objectiveSrn,\n swimlaneSrn: this.props.swimlane.get('srn'),\n })\n }\n\n loadSampleTickets = policySrns => {\n policySrns.forEach(srn => {\n this.props.fetchPolicyTickets({\n policySrn: srn,\n swimlaneSrn: this.props.swimlane.get('srn'),\n })\n })\n }\n\n renderEnableObjective = objective => {\n return (\n
\n \n this.enableObjective({ objectiveSrn: objective.get('srn') })\n }\n >\n Enable {objective.get('title')} Objective\n \n
\n )\n }\n\n renderEnabledObjective = objective => {\n const hasEvaluatedFrameworks = hasFinishedEvaluatingFrameworks(\n objective.getIn(['appliedControlFrameworks', 'items'], List()),\n this.props.controlFrameworks,\n this.props.swimlaneSrn\n )\n if (!hasEvaluatedFrameworks) {\n return (\n \n \n Evaluating Frameworks...\n \n )\n }\n return objective\n .get('definedControlFrameworks', List())\n .sortBy(ele => ele.get('controlFrameworkOrder'))\n .map(cf => {\n if (this.props.policyRollupsLoading) {\n return (\n
\n \n
\n )\n }\n\n return (\n \n )\n })\n }\n\n renderObjectiveTabContent = objective => {\n const appliedForSwimlane = 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.get('swimlaneSRNs').includes(this.props.swimlane.get('srn')))\n )\n\n return (\n
\n
\n {objective.get('name')}\n \n\n {appliedForSwimlane.isEmpty()\n ? this.renderEnableObjective(objective)\n : this.renderEnabledObjective(objective)}\n
\n
\n )\n }\n\n renderObjectivesTabs = () => {\n if (this.props.objectivesLoading) {\n return \n }\n\n const objectivesWithCFs = this.props.objectives.filter(\n obj => !obj.get('definedControlFrameworks', List()).isEmpty()\n )\n\n return (\n \n {objectivesWithCFs.map(this.renderObjectiveTabContent)}\n \n )\n }\n\n renderStat = nodeType => {\n return (\n \n )\n }\n\n render() {\n if (this.props.swimlanesLoading || !this.props.loadedControlGroups) {\n return \n }\n\n return (\n
\n
\n \n \n \n All Swimlanes\n \n \n Swimlane Checkup\n \n
\n \n
\n \n {this.props.swimlane.get('title')}\n \n \n
\n
\n \n Edit Swimlane\n \n \n View in Security Center\n \n
\n
\n \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\n {this.renderObjectivesTabs()}\n
\n
\n )\n }\n}\n\nSwimlaneCheckupDetails.propTypes = {\n controlFrameworks: ImmutablePropTypes.map.isRequired,\n fetchPolicyRollups: PropTypes.func.isRequired,\n fetchPolicyTickets: PropTypes.func.isRequired,\n fetchSwimlaneRisk: PropTypes.func.isRequired,\n fetchSwimlaneStats: PropTypes.func.isRequired,\n enableObjective: PropTypes.func.isRequired,\n loadedControlGroups: PropTypes.bool,\n objectives: ImmutablePropTypes.iterable.isRequired,\n objectivesLoading: PropTypes.bool,\n policies: ImmutablePropTypes.map.isRequired,\n policyRollups: ImmutablePropTypes.map.isRequired,\n policyTickets: ImmutablePropTypes.map.isRequired,\n policyTicketsLoading: ImmutablePropTypes.map.isRequired,\n policyRollupsLoading: PropTypes.bool,\n push: PropTypes.func.isRequired,\n swimlane: ImmutablePropTypes.map.isRequired,\n swimlanesLoading: PropTypes.bool,\n swimlaneRisk: PropTypes.string,\n swimlaneRiskLoading: PropTypes.bool,\n swimlaneStats: ImmutablePropTypes.map.isRequired,\n swimlaneSrn: PropTypes.string,\n theme: themeShape,\n}\n\nconst mapStateToProps = createStructuredSelector({\n controlFrameworks: selectControlGroups,\n enablingObjective: selectEnablingObjectives,\n loadedControlGroups: selectLoadedControlGroups,\n objectives: selectObjectives,\n objectivesError: selectObjectivesError,\n objectivesLoading: selectObjectivesLoading,\n policies: selectPolicies,\n policyRollups: selectPolicyRollups,\n policyRollupsLoading: selectPolicyRollupsLoading,\n policyTickets: selectPolicyTickets,\n policyTicketsLoading: selectPolicyTicketsLoading,\n swimlane: selectSwimlane,\n swimlaneRisk: selectSwimlaneRisk,\n swimlaneRiskLoading: selectSwimlaneRiskLoading,\n swimlaneSrn: selectSwimlaneSrn,\n swimlaneStats: selectSwimlaneStats,\n swimlanesLoading: selectSwimlanesLoading,\n})\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n fetchSwimlaneStats,\n enableObjective,\n fetchPolicyRollups,\n fetchPolicyTickets,\n fetchSwimlaneRisk,\n push,\n },\n dispatch\n )\n}\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps)\nconst withReducer = injectReducer({ key: 'swimlaneCheckupDetails', reducer })\nconst withSaga = injectSaga({ key: 'swimlaneCheckupDetails', saga: sagas })\n\nexport default compose(\n withReducer,\n withConnect,\n withSaga,\n themeable\n)(SwimlaneCheckupDetails)\n"],"sourceRoot":""}