mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
2233 lines
96 KiB
JavaScript
2233 lines
96 KiB
JavaScript
webpackJsonp([40], {
|
|
0: function(e, t, a) {
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
a.p = function() {
|
|
function e() {
|
|
for (var e, a, n = "", l = 0, r = arguments.length; l < r; l++) e = arguments[l].toString(), a = e.length, a > 1 && "/" == e.charAt(a - 1) && (e = e.substring(0, a - 1)), n += "/" != e.charAt(0) ? "/" + e : e;
|
|
if ("/" != n) {
|
|
var o = n.split("/"),
|
|
i = o[1];
|
|
if ("static" == i || "modules" == i) {
|
|
var s = n.substring(i.length + 2, n.length);
|
|
n = "/" + i, window.$C.BUILD_NUMBER && (n += "/@" + window.$C.BUILD_NUMBER), window.$C.BUILD_PUSH_NUMBER && (n += "." + window.$C.BUILD_PUSH_NUMBER), "app" == o[2] && (n += ":" + t("APP_BUILD", 0)), n += "/" + s
|
|
}
|
|
}
|
|
var u = t("MRSPARKLE_ROOT_PATH", "/"),
|
|
d = t("DJANGO_ROOT_PATH", ""),
|
|
f = t("LOCALE", "en-US"),
|
|
c = "";
|
|
return c = d && n.substring(0, d.length) === d ? n.replace(d, d + "/" + f.toLowerCase()) : "/" + f + n, "" == u || "/" == u ? c : u + c
|
|
}
|
|
|
|
function t(e, t) {
|
|
if (window.$C && window.$C.hasOwnProperty(e)) return window.$C[e];
|
|
if (void 0 !== t) return t;
|
|
throw new Error("getConfigValue - " + e + " not set, no default provided")
|
|
}
|
|
return e("/static/app/SplunkEnterpriseSecuritySuite/build/pages") + "/"
|
|
}();
|
|
var l = a("shim/jquery"),
|
|
r = n(l),
|
|
o = a(1),
|
|
i = a(1453),
|
|
s = n(i),
|
|
u = a(1456),
|
|
d = n(u),
|
|
f = a(1607),
|
|
c = a(2929),
|
|
p = n(c);
|
|
a(57), (0, r.default)(".preload").remove(), (0, d.default)(s.default.createElement(p.default, null), {
|
|
pageTitle: (0, o._)("Use Case Library")
|
|
}), (0, f.checkForTour)()
|
|
},
|
|
2199: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
|
|
function l(e) {
|
|
var t = b.default.duration(e, "seconds");
|
|
return Math.floor(t.asHours()) + b.default.utc(t.asMilliseconds()).format(":mm:ss")
|
|
}
|
|
|
|
function r(e, t) {
|
|
var a = void 0,
|
|
n = String(t);
|
|
if ("avg_event_count" === e) a = (0, S._)("Avg. Event Count"), n = (0, _.abbreviateNumber)(t);
|
|
else if ("avg_result_count" === e) a = (0, S._)("Avg. Result Count"), n = (0, _.abbreviateNumber)(t);
|
|
else if ("avg_run_time" === e) a = (0, S._)("Avg. Run Time"), n = l(t);
|
|
else if ("invocations" === e) a = (0, S._)("Invocations"), n = (0, _.abbreviateNumber)(t);
|
|
else if ("skipped" === e) a = (0, S._)("Skipped"), n = (0, _.abbreviateNumber)(t);
|
|
else if ("success" === e) a = (0, S._)("Success"), n = (0, _.abbreviateNumber)(t);
|
|
else if ("update_time" === e) {
|
|
a = (0, S._)("Update Time");
|
|
var r = b.default.unix(t);
|
|
n = r.splunkFormat("lls")
|
|
}
|
|
return {
|
|
label: a,
|
|
value: n
|
|
}
|
|
}
|
|
|
|
function o(e, t) {
|
|
var a = void 0,
|
|
n = String(t);
|
|
if ("access_count" === e) a = (0, S._)("Access Count"), n = (0, _.abbreviateNumber)(t);
|
|
else if ("access_time" === e) {
|
|
a = (0, S._)("Last Access");
|
|
var l = b.default.unix(t);
|
|
n = l.splunkFormat("lls")
|
|
} else if ("buckets" === e) a = (0, S._)("Buckets"), n = (0, _.abbreviateNumber)(t);
|
|
else if ("buckets_size" === e) a = (0, S._)("Buckets Size"), n = (0, _.bytesToFileSize)(t);
|
|
else if ("complete" === e) a = (0, S._)("Complete"), n = (0, S._)("%d% Completed").replace("%d", (100 * t).toFixed(2));
|
|
else if ("earliest_time" === e) {
|
|
a = (0, S._)("Earliest Time");
|
|
var o = b.default.unix(t);
|
|
n = o.splunkFormat("lls")
|
|
} else if ("is_inprogress" === e) a = (0, S._)("In Progress");
|
|
else if ("last_error" === e) a = (0, S._)("Last Error");
|
|
else if ("latest_time" === e) {
|
|
a = (0, S._)("Latest Time");
|
|
var i = b.default.unix(t);
|
|
n = i.splunkFormat("lls")
|
|
} else if ("mod_time" === e) {
|
|
a = (0, S._)("Last Modified");
|
|
var s = b.default.unix(t);
|
|
n = s.splunkFormat("lls")
|
|
} else if ("size" === e) a = (0, S._)("Size on Disk"), n = (0, _.bytesToFileSize)(t);
|
|
else if ("time_range" === e) a = (0, S._)("Summary Range"), n = b.default.duration(t, "seconds").humanize();
|
|
else {
|
|
if ("update_time" !== e) return r(e, t);
|
|
a = (0, S._)("Update Time");
|
|
var u = b.default.unix(t);
|
|
n = u.splunkFormat("lls")
|
|
}
|
|
return {
|
|
label: a,
|
|
value: n
|
|
}
|
|
}
|
|
|
|
function i(e, t, a, n) {
|
|
var l = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {
|
|
output_mode: "json",
|
|
count: -1
|
|
},
|
|
r = void 0 !== t ? "/" + encodeURIComponent(t) : "";
|
|
return (0, k.fetchRESTURL)("contentinfo/" + encodeURIComponent(e) + r, {
|
|
owner: a,
|
|
app: n
|
|
}, l)
|
|
}
|
|
|
|
function s(e) {
|
|
return new Map(Object.keys(e).sort().map(function(t) {
|
|
return [t, e[t].map(function(e) {
|
|
return {
|
|
label: e,
|
|
id: e
|
|
}
|
|
})]
|
|
}))
|
|
}
|
|
|
|
function u(e) {
|
|
return Object.keys(e).sort().map(function(t) {
|
|
var a = e[t],
|
|
n = a.readiness,
|
|
l = a.quality;
|
|
return {
|
|
label: t,
|
|
id: t,
|
|
readiness: n,
|
|
quality: l
|
|
}
|
|
})
|
|
}
|
|
|
|
function d(e) {
|
|
return new Map(Object.keys(e).sort().map(function(t) {
|
|
return [t, u(e[t])]
|
|
}))
|
|
}
|
|
|
|
function f(e) {
|
|
return Object.keys(e).sort().map(function(t) {
|
|
return {
|
|
value: e[t],
|
|
id: t
|
|
}
|
|
})
|
|
}
|
|
|
|
function c(e) {
|
|
return e.map(function(e) {
|
|
return {
|
|
label: e,
|
|
id: e
|
|
}
|
|
})
|
|
}
|
|
|
|
function p(e) {
|
|
var t = {};
|
|
if (e && e.entry && e.entry.length > 0 && e.entry[0].content) {
|
|
var a = e.entry[0].content;
|
|
a.stats && (t.stats = f(a.stats)), a.associations && (t.associations = s(a.associations)), a.datasets && (t.datasets = d(a.datasets)), a.tags && (t.tags = c(a.tags))
|
|
}
|
|
return t
|
|
}
|
|
|
|
function m(e) {
|
|
return (0, v.default)({}, e.stats ? {
|
|
stats: e.stats
|
|
} : {}, e.associations && e.associations.has("datamodel") ? {
|
|
associationsDataModels: e.associations.get("datamodel")
|
|
} : {}, e.associations && e.associations.has("panel") ? {
|
|
associationsPanels: e.associations.get("panel")
|
|
} : {}, e.associations && e.associations.has("savedsearch") ? {
|
|
associationsSavedsearches: e.associations.get("savedsearch")
|
|
} : {}, e.associations && e.associations.has("view") ? {
|
|
associationsViews: e.associations.get("view")
|
|
} : {}, e.datasets && e.datasets.has("datamodel") ? {
|
|
datasetsDataModels: e.datasets.get("datamodel")
|
|
} : {}, e.datasets && e.datasets.has("index") ? {
|
|
datasetsIndexes: e.datasets.get("index")
|
|
} : {}, e.datasets && e.datasets.has("lookup") ? {
|
|
datasetsLookups: e.datasets.get("lookup")
|
|
} : {}, e.datasets && e.datasets.has("savedsearch") ? {
|
|
datasetsSavedSearches: e.datasets.get("savedsearch")
|
|
} : {}, e.datasets && e.datasets.has("sourcetype") ? {
|
|
datasetsSourcetypes: e.datasets.get("sourcetype")
|
|
} : {}, e.tags ? {
|
|
tags: e.tags
|
|
} : {})
|
|
}
|
|
|
|
function h(e, t, a, n) {
|
|
return i(e, t, a, n).then(function(e) {
|
|
return m(p(e))
|
|
})
|
|
}
|
|
|
|
function g(e, t) {
|
|
if (0 === t) {
|
|
if ("datamodel" === e) return (0, S._)("The datamodel's datasets are not ingesting enough data for this content to report accurately.");
|
|
if ("index" === e) return (0, S._)("The index has no events from the past 24 hours.");
|
|
if ("lookup" === e) return (0, S._)("Lookup file is not populated.");
|
|
if ("savedsearch" === e) return (0, S._)("The savedsearch's datasets are not ingesting enough data for this content to report accurately.");
|
|
if ("sourcetype" === e) return (0, S._)("The sourcetype has no events from the past 24 hours.")
|
|
} else if (1 === t) {
|
|
if ("datamodel" === e) return (0, S._)("The datamodel's datasets are ingesting enough data for this content to report accurately.");
|
|
if ("index" === e) return (0, S._)("The index has events from the past 24 hours.");
|
|
if ("lookup" === e) return (0, S._)("Lookup file is populated.");
|
|
if ("savedsearch" === e) return (0, S._)("The savedsearch's datasets are ingesting enough data for this content to report accurately.");
|
|
if ("sourcetype" === e) return (0, S._)("The sourcetype has events from the past 24 hours.")
|
|
}
|
|
return null
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var y = a(1353),
|
|
v = n(y);
|
|
t.getSearchLabelAndNormalizedValue = r, t.getDataModelLabelAndNormalizedValue = o, t.fetchContentInfo = i, t.parseAssociations = s, t.parseDataset = u, t.parseDatasets = d, t.parseStats = f, t.parseTags = c, t.handleContentInfoResponse = p, t.flattenContentInfo = m, t.fetchParseFlattenContentInfo = h, t.getReasonForReadiness = g;
|
|
var k = a(886),
|
|
S = a(1),
|
|
_ = a(1699),
|
|
C = a(1701),
|
|
b = n(C);
|
|
a(57)
|
|
},
|
|
2203: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1461),
|
|
h = n(m),
|
|
g = a(1621),
|
|
y = n(g),
|
|
v = a(1620),
|
|
k = n(v),
|
|
S = a(2204),
|
|
_ = n(S),
|
|
C = a(2205),
|
|
b = n(C);
|
|
a(57);
|
|
var E = function(e) {
|
|
function t() {
|
|
return (0, r.default)(this, t), (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "getTruncatedListItems",
|
|
value: function(e, t) {
|
|
var a = Math.max(0, t);
|
|
return e.slice(0, a).map(function(e) {
|
|
return p.default.createElement(k.default, {
|
|
key: e.id,
|
|
"data-test-value": e.label
|
|
}, p.default.createElement(b.default, {
|
|
readiness: e.readiness,
|
|
reason: e.reason
|
|
}), "" === e.url || void 0 === e.url ? e.label : p.default.createElement(y.default, {
|
|
to: e.url,
|
|
openInNewContext: !0
|
|
}, e.label))
|
|
})
|
|
}
|
|
}, {
|
|
key: "getListModal",
|
|
value: function(e, t, a, n) {
|
|
var l = Math.max(0, t);
|
|
return e.length > l ? p.default.createElement(_.default, {
|
|
"data-test": "list-modal",
|
|
items: e,
|
|
anchorLabel: a,
|
|
titleText: n
|
|
}) : null
|
|
}
|
|
}, {
|
|
key: "render",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.items,
|
|
a = e.maxItemsShown,
|
|
n = e.anchorButtonLabel,
|
|
l = e.modalTitle;
|
|
return p.default.createElement(p.default.Fragment, null, this.getTruncatedListItems(t, a), this.getListModal(t, a, n, l))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
E.propTypes = {
|
|
items: h.default.arrayOf(h.default.shape({
|
|
label: h.default.string.isRequired,
|
|
url: h.default.string,
|
|
id: h.default.string.isRequired,
|
|
readiness: h.default.number,
|
|
reason: h.default.string,
|
|
quality: h.default.number
|
|
})).isRequired,
|
|
maxItemsShown: h.default.number,
|
|
anchorButtonLabel: h.default.string.isRequired,
|
|
modalTitle: h.default.string.isRequired
|
|
}, E.defaultProps = {
|
|
maxItemsShown: 5
|
|
}, t.default = E, e.exports = t.default
|
|
},
|
|
2204: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1),
|
|
h = a(1633),
|
|
g = n(h),
|
|
y = a(1628),
|
|
v = n(y),
|
|
k = a(1621),
|
|
S = n(k),
|
|
_ = a(1620),
|
|
C = n(_),
|
|
b = a(1461),
|
|
E = n(b),
|
|
R = a(2205),
|
|
M = n(R);
|
|
a(57);
|
|
var q = function(e) {
|
|
function t(e, a) {
|
|
(0, r.default)(this, t);
|
|
var n = (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, a));
|
|
return n.state = {
|
|
open: !1
|
|
}, n.handleRequestClose = n.handleRequestClose.bind(n), n.handleRequestOpen = n.handleRequestOpen.bind(n), n
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "handleRequestOpen",
|
|
value: function() {
|
|
this.setState({
|
|
open: !0
|
|
})
|
|
}
|
|
}, {
|
|
key: "handleRequestClose",
|
|
value: function() {
|
|
this.setState({
|
|
open: !1
|
|
})
|
|
}
|
|
}, {
|
|
key: "render",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.items,
|
|
a = e.anchorLabel,
|
|
n = e.width,
|
|
l = e.titleText,
|
|
r = this.state.open,
|
|
o = t.map(function(e) {
|
|
return p.default.createElement(C.default, {
|
|
key: e.id,
|
|
"data-test-value": e.label
|
|
}, p.default.createElement(M.default, {
|
|
readiness: e.readiness,
|
|
reason: e.reason
|
|
}), "" === e.url || void 0 === e.url ? e.label : p.default.createElement(S.default, {
|
|
to: e.url,
|
|
openInNewContext: !0
|
|
}, e.label))
|
|
});
|
|
return p.default.createElement(p.default.Fragment, null, p.default.createElement(v.default, {
|
|
"data-test": "list-modal-anchor-button",
|
|
onClick: this.handleRequestOpen,
|
|
label: a
|
|
}), p.default.createElement(g.default, {
|
|
onRequestClose: this.handleRequestClose,
|
|
open: r,
|
|
style: {
|
|
width: n
|
|
}
|
|
}, p.default.createElement(g.default.Header, {
|
|
"data-test": "list-modal-header",
|
|
title: l,
|
|
onRequestClose: this.handleRequestClose
|
|
}), p.default.createElement(g.default.Body, {
|
|
"data-test": "list-modal-body"
|
|
}, o), p.default.createElement(g.default.Footer, null, p.default.createElement(v.default, {
|
|
"data-test": "list-modal-close-button",
|
|
appearance: "primary",
|
|
onClick: this.handleRequestClose,
|
|
label: (0, m._)("Close")
|
|
}))))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
q.propTypes = {
|
|
items: E.default.arrayOf(E.default.shape({
|
|
label: E.default.string.isRequired,
|
|
url: E.default.string,
|
|
id: E.default.string.isRequired,
|
|
readiness: E.default.number,
|
|
reason: E.default.string,
|
|
quality: E.default.number
|
|
})).isRequired,
|
|
anchorLabel: E.default.string.isRequired,
|
|
titleText: E.default.string.isRequired,
|
|
width: E.default.number
|
|
}, q.defaultProps = {
|
|
width: 600
|
|
}, t.default = q, e.exports = t.default
|
|
},
|
|
2205: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1652),
|
|
h = n(m),
|
|
g = a(1809),
|
|
y = n(g),
|
|
v = a(1877),
|
|
k = n(v),
|
|
S = a(1461),
|
|
_ = n(S);
|
|
a(57);
|
|
var C = {
|
|
color: "#53A051",
|
|
paddingRight: "4px"
|
|
},
|
|
b = {
|
|
color: "#DC4E41",
|
|
paddingRight: "4px"
|
|
},
|
|
E = function(e) {
|
|
function t() {
|
|
return (0, r.default)(this, t), (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "render",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.reason,
|
|
a = e.readiness;
|
|
if (null === a) return null;
|
|
var n = null !== t && "" !== t,
|
|
l = 1 === a ? p.default.createElement(k.default, {
|
|
screenReaderText: "",
|
|
style: C
|
|
}) : p.default.createElement(y.default, {
|
|
screenReaderText: "",
|
|
style: b
|
|
}),
|
|
r = n ? p.default.createElement(h.default, {
|
|
content: t
|
|
}, l) : l;
|
|
return r
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
E.propTypes = {
|
|
readiness: _.default.number,
|
|
reason: _.default.string
|
|
}, E.defaultProps = {
|
|
readiness: null,
|
|
reason: null
|
|
}, t.default = E, e.exports = t.default
|
|
},
|
|
2929: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(1733),
|
|
r = n(l),
|
|
o = a(3),
|
|
i = n(o),
|
|
s = a(1353),
|
|
u = n(s),
|
|
d = a(834),
|
|
f = n(d),
|
|
c = a(864),
|
|
p = n(c),
|
|
m = a(865),
|
|
h = n(m),
|
|
g = a(869),
|
|
y = n(g),
|
|
v = a(870),
|
|
k = n(v),
|
|
S = a(1453),
|
|
_ = n(S),
|
|
C = a(886),
|
|
b = a(1358),
|
|
E = a(1673),
|
|
R = n(E),
|
|
M = a(2930),
|
|
q = n(M),
|
|
O = a(2931),
|
|
w = n(O),
|
|
A = a(1619),
|
|
T = n(A),
|
|
D = a(1633),
|
|
L = n(D),
|
|
U = a(1620),
|
|
I = n(U),
|
|
B = a(1621),
|
|
x = n(B),
|
|
F = a(1628),
|
|
P = n(F),
|
|
j = a(1682),
|
|
N = n(j),
|
|
z = a(2126),
|
|
H = a(1),
|
|
K = a(889),
|
|
W = a(1684),
|
|
V = n(W),
|
|
$ = a(1688),
|
|
J = n($),
|
|
G = a(1618),
|
|
Q = n(G),
|
|
X = a(1617),
|
|
Y = n(X),
|
|
Z = a(2935),
|
|
ee = n(Z),
|
|
te = a(2936),
|
|
ae = n(te),
|
|
ne = a(1352),
|
|
le = a(1610),
|
|
re = n(le),
|
|
oe = a(888),
|
|
ie = a(2199),
|
|
se = a(1626);
|
|
a(57);
|
|
var ue = {},
|
|
de = {
|
|
output_mode: "json",
|
|
count: -1,
|
|
f: "datasets"
|
|
},
|
|
fe = {
|
|
paddingLeft: 10,
|
|
width: 190,
|
|
float: "left"
|
|
},
|
|
ce = {
|
|
marginLeft: 200
|
|
},
|
|
pe = {
|
|
padding: "0 10px"
|
|
},
|
|
me = {
|
|
paddingTop: 10,
|
|
paddingBottom: 10,
|
|
paddingRight: 10
|
|
},
|
|
he = {
|
|
marginLeft: 1,
|
|
paddingTop: 10
|
|
},
|
|
ge = function(e) {
|
|
function t(e) {
|
|
(0, p.default)(this, t);
|
|
var a = (0, y.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e));
|
|
return a.state = {
|
|
useCases: [],
|
|
analyticStories: [],
|
|
selectedCategories: [],
|
|
searchValue: "",
|
|
searchTerm: "",
|
|
errorMsg: "",
|
|
isLoading: !0,
|
|
openDiscoverRecStoriesModal: !1,
|
|
dataModels: [],
|
|
dataSources: [],
|
|
apps: [],
|
|
modal: "",
|
|
optOut: !1,
|
|
annotations: [],
|
|
filterMetadata: [],
|
|
filterApp: "",
|
|
filterDataSource: "",
|
|
filterDataModel: "",
|
|
filterInUse: "",
|
|
filterBookmarked: "",
|
|
dataModelsSearchesMap: new Map,
|
|
dataSourcesSearchesMap: new Map
|
|
}, a.handleCategoryClick = a.handleCategoryClick.bind(a), a.handleSearchChange = a.handleSearchChange.bind(a), a.handleAnnotationClick = a.handleAnnotationClick.bind(a), a.handleBookmarkClick = a.handleBookmarkClick.bind(a), a.handleFiltersChange = a.handleFiltersChange.bind(a), a.handleMetadataFilterChange = a.handleMetadataFilterChange.bind(a), a.updateMetadataState = a.updateMetadataState.bind(a), a.setSearchTerm = (0, K.debounce)(a.setSearchTerm, 300), a.fetchSearchContentInfo = a.fetchSearchContentInfo.bind(a), a.currentUser = (0, C.getCurrentUser)(), a.fetchStoryContentInfo = a.fetchStoryContentInfo.bind(a), a.handleCloseESCUModal = a.handleCloseESCUModal.bind(a), a.handleOptOutClick = a.handleOptOutClick.bind(a), a
|
|
}
|
|
return (0, k.default)(t, e), (0, h.default)(t, [{
|
|
key: "componentWillMount",
|
|
value: function() {
|
|
var e = (0, C.getURLParameter)("category");
|
|
null !== e && this.setState({
|
|
selectedCategories: [e]
|
|
})
|
|
}
|
|
}, {
|
|
key: "componentDidMount",
|
|
value: function() {
|
|
var e = this;
|
|
Promise.all([(0, z.fetchAnalyticStories)(), (0, z.fetchSavedSearches)(), (0, C.getUserPrefModel)(), (0, z.fetchUseCasesCategories)()]).then(function(t) {
|
|
var a = (0, f.default)(t, 4),
|
|
n = a[0],
|
|
l = a[1],
|
|
r = a[2],
|
|
o = a[3];
|
|
e.userPrefModel = r;
|
|
var i = (0, z.getAnalyticStoriesFromResponse)(n),
|
|
s = (0, z.getUseCasesFromResponse)(o),
|
|
u = (0, z.getSavedSearchesFromResponse)(l),
|
|
d = (0, z.mergeAnalyticStoriesWithSearches)(i, u),
|
|
c = (0, z.getMetadataInfo)(d) || {},
|
|
p = {
|
|
useCases: s,
|
|
analyticStories: d,
|
|
isLoading: !1,
|
|
annotations: c.annotations
|
|
};
|
|
return e.setState(p), d
|
|
}).catch(function() {
|
|
e.setState({
|
|
errorMsg: (0, H._)("Error fetching the analytic stories."),
|
|
isLoading: !1
|
|
})
|
|
}).then(function(t) {
|
|
return e.setSavedSearchPropertiesAndInUse(t)
|
|
}).then(function(t) {
|
|
return e.setBookmarkedStories(t)
|
|
}).then(function(e) {
|
|
var t = (0, K.uniqBy)(e, "app").map(function(e) {
|
|
return e.app
|
|
}).concat(["DA-ESS-ContentUpdate"]);
|
|
return Promise.all([e, (0, C.getApps)((0, C.getSearchStringByNames)(t))])
|
|
}).then(function(t) {
|
|
var a = (0, f.default)(t, 2),
|
|
n = a[0],
|
|
l = a[1],
|
|
r = l.find(function(e) {
|
|
return "DA-ESS-ContentUpdate" === e.name
|
|
}),
|
|
o = !1;
|
|
r || (0, b.normalizeBoolean)(e.userPrefModel.entry.content.get("dontShowESCUModal")) || (o = !0);
|
|
var i = n.map(function(e) {
|
|
var t = l.find(function(t) {
|
|
return t.name === e.app
|
|
}),
|
|
a = t && t.content && t.content.label ? t.content.label : e.app;
|
|
return Object.assign(e, {
|
|
appLabel: a
|
|
})
|
|
});
|
|
e.setState((0, u.default)({
|
|
apps: l.map(function(e) {
|
|
return {
|
|
name: e.name,
|
|
label: e.content.label
|
|
}
|
|
})
|
|
}, o && {
|
|
modal: "escu"
|
|
}, {
|
|
analyticStories: i
|
|
}))
|
|
}), this.fetchAndSetDataModelsDataSources()
|
|
}
|
|
}, {
|
|
key: "setSavedSearchPropertiesAndInUse",
|
|
value: function(e) {
|
|
var t = this;
|
|
return new Promise(function(a) {
|
|
(0, C.fetchRESTURL)("saved/searches", {
|
|
app: oe.app,
|
|
owner: "nobody"
|
|
}, {
|
|
output_mode: "json",
|
|
count: 0
|
|
}).then(function(t) {
|
|
var n = e.slice().map(function(e) {
|
|
return e.searches = e.searches.map(function(e) {
|
|
var a = t.entry.find(function(t) {
|
|
return e.name === t.name
|
|
});
|
|
return Object.assign(e, {
|
|
label: void 0 !== a ? a.content["action.correlationsearch.label"] : "",
|
|
active: void 0 !== a && a.content.is_scheduled && a.content.disabled === !1,
|
|
app: void 0 !== a ? a.acl.app : "",
|
|
uri: void 0 !== a ? a.links.edit : "",
|
|
isCorrelationSearch: void 0 !== a && (0, b.normalizeBoolean)(a.content["action.correlationsearch.enabled"]) === !0
|
|
})
|
|
}), e.in_use = e.searches.some(function(e) {
|
|
return "detection" === e.type && e.active
|
|
}), e
|
|
});
|
|
a(n)
|
|
}).catch(function(n) {
|
|
t.setState({
|
|
errorMsg: (0, H._)("Error detecting if analytic stories are in use.") + " " + n
|
|
}), a(e)
|
|
})
|
|
})
|
|
}
|
|
}, {
|
|
key: "setBookmarkedStories",
|
|
value: function(e) {
|
|
var t = this.getCurrentBookmarks();
|
|
if (t.length > 0) {
|
|
var a = e.slice().map(function(e) {
|
|
return e.bookmarked = Boolean(t.indexOf(e.name) !== -1), e
|
|
});
|
|
return a
|
|
}
|
|
return e.map(function(e) {
|
|
return e.bookmarked = !1, e
|
|
})
|
|
}
|
|
}, {
|
|
key: "getFilteredStories",
|
|
value: function(e, t, a) {
|
|
var n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
|
|
l = this.state,
|
|
r = l.dataModelsSearchesMap,
|
|
o = l.dataSourcesSearchesMap,
|
|
i = e;
|
|
if (a.length > 0) {
|
|
var s = a.map(function(e) {
|
|
return e.toLowerCase()
|
|
});
|
|
i = i.filter(function(e) {
|
|
return (0, K.includes)(s, e.category.toLowerCase())
|
|
})
|
|
}
|
|
if (t.length > 0) {
|
|
var u = t.toLowerCase();
|
|
i = i.filter(function(e) {
|
|
return e.category.toLowerCase().includes(u) || e.name.toLowerCase().includes(u) || e.narrative.toLowerCase().includes(u) || e.description.toLowerCase().includes(u) || (0, z.isAnnotationContainedInStory)(e, t)
|
|
})
|
|
}
|
|
if (void 0 !== n.filterApp && "" !== n.filterApp && (i = i.filter(function(e) {
|
|
return e.app === n.filterApp
|
|
})), void 0 !== n.filterInUse && "" !== n.filterInUse) {
|
|
var d = Splunk.util.normalizeBoolean(n.filterInUse);
|
|
i = i.filter(function(e) {
|
|
return e.in_use === d
|
|
})
|
|
}
|
|
if (void 0 !== n.filterBookmarked && "" !== n.filterBookmarked) {
|
|
var f = Splunk.util.normalizeBoolean(n.filterBookmarked);
|
|
i = i.filter(function(e) {
|
|
return e.bookmarked === f
|
|
})
|
|
}
|
|
if (void 0 !== n.filterMetadata && n.filterMetadata.length > 0 && (i = i.filter(function(e) {
|
|
return n.filterMetadata.some(function(t) {
|
|
return (0, z.isAnnotationContainedInStory)(e, t)
|
|
})
|
|
})), void 0 !== n.filterDataModel && n.filterDataModel.length > 0) {
|
|
var c = r.get(n.filterDataModel);
|
|
void 0 === c ? i = [] : c.length > 0 && (i = i.filter(function(e) {
|
|
return e.searches.some(function(e) {
|
|
return c.indexOf(e.name) !== -1
|
|
})
|
|
}))
|
|
}
|
|
if (void 0 !== n.filterDataSource && n.filterDataSource.length > 0) {
|
|
var p = o.get(n.filterDataSource);
|
|
void 0 === p ? i = [] : p.length > 0 && (i = i.filter(function(e) {
|
|
return e.searches.some(function(e) {
|
|
return p.indexOf(e.name) !== -1
|
|
})
|
|
}))
|
|
}
|
|
return i
|
|
}
|
|
}, {
|
|
key: "setSearchTerm",
|
|
value: function(e) {
|
|
this.setState({
|
|
searchTerm: e
|
|
})
|
|
}
|
|
}, {
|
|
key: "getCurrentBookmarks",
|
|
value: function() {
|
|
var e = void 0;
|
|
try {
|
|
e = this.userPrefModel.entry.content.get("analyticStoryBookmarks") || "[]", e = JSON.parse(e)
|
|
} catch (t) {
|
|
e = []
|
|
}
|
|
return e
|
|
}
|
|
}, {
|
|
key: "getAnalyticStoriesLabel",
|
|
value: function(e, t) {
|
|
if (0 === e.length) return "" + (0, H._)("0 Analytic Stories found in the selected categories");
|
|
var a = t.join(", "),
|
|
n = 1 === t.length ? (0, H._)("category") + ": " + a : (0, H._)("categories") + ": " + a,
|
|
l = 1 === e.length ? "" + (0, H._)("Analytic Story found in") : "" + (0, H._)("Analytic Stories found in");
|
|
return e.length + " " + l + " " + n
|
|
}
|
|
}, {
|
|
key: "getUseCaseCards",
|
|
value: function(e) {
|
|
var t = this,
|
|
a = this.state.selectedCategories;
|
|
return e.map(function(e) {
|
|
return _.default.createElement(q.default, {
|
|
key: e.id,
|
|
id: e.name,
|
|
name: e.name,
|
|
description: e.description,
|
|
icon: e.icon,
|
|
selected: (0, K.includes)(a, e.name),
|
|
onClick: t.handleCategoryClick
|
|
})
|
|
})
|
|
}
|
|
}, {
|
|
key: "handleAnnotationClick",
|
|
value: function(e, t) {
|
|
var a = this.state.filterMetadata,
|
|
n = a.slice();
|
|
n.indexOf(t) === -1 ? n.push(t) : n.splice(n.indexOf(t), 1), this.updateMetadataState(n)
|
|
}
|
|
}, {
|
|
key: "updateMetadataState",
|
|
value: function(e) {
|
|
this.setState({
|
|
filterMetadata: e.slice()
|
|
})
|
|
}
|
|
}, {
|
|
key: "handleCloseESCUModal",
|
|
value: function() {
|
|
var e = this.state.optOut;
|
|
this.userPrefModel.entry.content.set({
|
|
dontShowESCUModal: e
|
|
}), this.userPrefModel.save(), this.setState({
|
|
modal: ""
|
|
})
|
|
}
|
|
}, {
|
|
key: "handleOptOutClick",
|
|
value: function(e, t) {
|
|
var a = t.value;
|
|
this.setState({
|
|
optOut: !a
|
|
})
|
|
}
|
|
}, {
|
|
key: "fetchSearchContentInfo",
|
|
value: function(e) {
|
|
return ue[e] ? Promise.resolve(ue[e]) : new Promise(function(t) {
|
|
(0, ie.fetchContentInfo)("savedsearch", e, "nobody", oe.app, de).then(function(a) {
|
|
if (a && a.entry && a.entry.length > 0 && a.entry[0].content && a.entry[0].content.datasets) {
|
|
var n = (0, ie.parseDatasets)(a.entry[0].content.datasets);
|
|
ue[e] = n, t(n)
|
|
}
|
|
t({})
|
|
}).catch(function() {
|
|
t({})
|
|
})
|
|
})
|
|
}
|
|
}, {
|
|
key: "fetchStoryContentInfo",
|
|
value: function(e) {
|
|
var t = this;
|
|
return new Promise(function(a) {
|
|
var n = e.searches.filter(function(e) {
|
|
return "detection" === e.type
|
|
}).map(function(e) {
|
|
return t.fetchSearchContentInfo(e.name)
|
|
});
|
|
Promise.all(n).then(function(n) {
|
|
var l = (0, z.getMetadataInfo)([e]),
|
|
r = l.technologies.map(function(e) {
|
|
return {
|
|
label: e,
|
|
id: e
|
|
}
|
|
}),
|
|
o = n.filter(function(e) {
|
|
return e.size > 0
|
|
}),
|
|
s = o.map(function(e) {
|
|
return e.get("sourcetype")
|
|
}),
|
|
u = o.map(function(e) {
|
|
return e.get("datamodel")
|
|
}),
|
|
d = o.map(function(e) {
|
|
return e.get("lookup")
|
|
});
|
|
a({
|
|
providingTechnologies: r,
|
|
sourcetypes: t.addReadinessToItems("sourcetype", K.unionBy.apply(void 0, (0, i.default)(s).concat(["id"]))),
|
|
dataModels: t.addReadinessToItems("datamodel", K.unionBy.apply(void 0, (0, i.default)(u).concat(["id"]))),
|
|
lookups: t.addReadinessToItems("lookup", K.unionBy.apply(void 0, (0, i.default)(d).concat(["id"])))
|
|
})
|
|
})
|
|
})
|
|
}
|
|
}, {
|
|
key: "addReadinessToItems",
|
|
value: function(e, t) {
|
|
return t.map(function(t) {
|
|
return t.reason = (0, ie.getReasonForReadiness)(e, t.readiness), t
|
|
})
|
|
}
|
|
}, {
|
|
key: "fetchAndSetDataModelsDataSources",
|
|
value: function() {
|
|
var e = this;
|
|
(0, ie.fetchContentInfo)("datamodel", void 0, "nobody", oe.app).then(function(t) {
|
|
e.setState({
|
|
dataModels: t.entry.map(function(e) {
|
|
return e.name
|
|
})
|
|
})
|
|
}).catch(function() {
|
|
e.setState({
|
|
errorMsg: (0, H._)("Error fetching the data models.")
|
|
})
|
|
});
|
|
var t = {
|
|
output_mode: "json",
|
|
count: -1
|
|
};
|
|
(0, C.fetchRESTURL)("storage/collections/data/dataset_cache", {
|
|
app: "SA-Utils",
|
|
owner: "nobody"
|
|
}, t).then(function(t) {
|
|
var a = t.filter(function(e) {
|
|
return "datamodel" === e.type && e.usedby && e.usedby.savedsearch
|
|
}).map(function(e) {
|
|
return [e.name, e.usedby.savedsearch]
|
|
}),
|
|
n = new Map(a);
|
|
e.setState({
|
|
dataModelsSearchesMap: n
|
|
})
|
|
}).catch(function() {})
|
|
}
|
|
}, {
|
|
key: "handleBookmarkClick",
|
|
value: function(e, t) {
|
|
var a = t.value,
|
|
n = this.state.analyticStories,
|
|
l = this.getCurrentBookmarks();
|
|
l.indexOf(a) === -1 ? l.push(a) : l = l.filter(function(e) {
|
|
return e !== a
|
|
}), this.userPrefModel.entry.content.set({
|
|
analyticStoryBookmarks: JSON.stringify(l)
|
|
}), this.userPrefModel.save();
|
|
var r = n.slice().map(function(e) {
|
|
return e.name === a && (e.bookmarked = !e.bookmarked), e
|
|
});
|
|
this.setState({
|
|
analyticStories: r
|
|
})
|
|
}
|
|
}, {
|
|
key: "handleMetadataFilterChange",
|
|
value: function(e, t) {
|
|
var a = t.values;
|
|
this.updateMetadataState(a)
|
|
}
|
|
}, {
|
|
key: "handleFiltersChange",
|
|
value: function(e, t) {
|
|
var a = t.name,
|
|
n = t.value;
|
|
this.setState((0, r.default)({}, a, n))
|
|
}
|
|
}, {
|
|
key: "handleCategoryClick",
|
|
value: function(e, t) {
|
|
var a = t.value,
|
|
n = this.state.selectedCategories,
|
|
l = n;
|
|
(0, K.includes)(l, a) ? this.setState({
|
|
selectedCategories: (0, K.without)(l, a)
|
|
}): this.setState({
|
|
selectedCategories: l.concat(a)
|
|
})
|
|
}
|
|
}, {
|
|
key: "handleSearchChange",
|
|
value: function(e, t) {
|
|
var a = t.value;
|
|
this.setState({
|
|
searchValue: a
|
|
}), this.setSearchTerm(a)
|
|
}
|
|
}, {
|
|
key: "render",
|
|
value: function() {
|
|
var e = this,
|
|
t = this.state,
|
|
a = t.errorMsg,
|
|
n = t.isLoading,
|
|
l = t.analyticStories,
|
|
r = t.searchTerm,
|
|
o = t.selectedCategories,
|
|
i = t.filterMetadata,
|
|
s = t.filterApp,
|
|
u = t.filterDataSource,
|
|
d = t.filterDataModel,
|
|
f = t.filterInUse,
|
|
c = t.filterBookmarked,
|
|
p = t.useCases,
|
|
m = t.modal,
|
|
h = t.optOut,
|
|
g = t.apps,
|
|
y = t.annotations,
|
|
v = t.dataModels,
|
|
k = t.dataSources,
|
|
S = t.searchValue,
|
|
C = t.openDiscoverRecStoriesModal,
|
|
b = {
|
|
searchTerm: r,
|
|
metadata: i,
|
|
app: s,
|
|
dataSource: u,
|
|
dataModel: d,
|
|
inUse: f,
|
|
bookmarked: c
|
|
},
|
|
E = a.length > 0;
|
|
if (n) return _.default.createElement(Y.default, {
|
|
size: "medium",
|
|
style: se.spinnerStyle
|
|
});
|
|
var M = this.getFilteredStories(l, r, o, {
|
|
filterMetadata: i,
|
|
filterApp: s,
|
|
filterDataSource: u,
|
|
filterDataModel: d,
|
|
filterInUse: f,
|
|
filterBookmarked: c
|
|
}),
|
|
q = (0, K.uniq)(M.map(function(e) {
|
|
return e.category
|
|
})),
|
|
O = this.getAnalyticStoriesLabel(M, q),
|
|
A = (0, ne.makeURLfromArgs)("manager", oe.app, "appsremote", {
|
|
count: 1,
|
|
query: "Splunk ES Content Update"
|
|
});
|
|
return _.default.createElement(_.default.Fragment, null, _.default.createElement(Q.default, {
|
|
pageTitle: (0, H._)("Use Case Library"),
|
|
pageDescr: (0, H._)("Explore the Analytic Stories included with Enterprise Security that provide analysis guidance on how to investigate and take actions on threats that ES detects."),
|
|
descriptionPadding: "0 200px 0 0",
|
|
border: !0
|
|
}), E && _.default.createElement(re.default, {
|
|
fill: !0,
|
|
type: "error",
|
|
style: se.marginLeftRight20
|
|
}, a), _.default.createElement("div", null, _.default.createElement("div", {
|
|
"data-test": "use-cases-column",
|
|
style: fe
|
|
}, _.default.createElement(T.default, {
|
|
style: se.marginTop20,
|
|
level: 2
|
|
}, (0, H._)("Use Cases")), _.default.createElement(V.default, null, this.getUseCaseCards(p))), _.default.createElement("div", {
|
|
style: ce
|
|
}, _.default.createElement("div", {
|
|
style: me
|
|
}, _.default.createElement(R.default, null, _.default.createElement(R.default.Row, null, _.default.createElement(R.default.Column, null, _.default.createElement(R.default.Row, null, _.default.createElement(R.default.Column, {
|
|
style: se.noMargin,
|
|
span: 10,
|
|
"data-test": "use-case-filters"
|
|
}, _.default.createElement(ae.default, {
|
|
apps: g,
|
|
annotations: y,
|
|
dataModels: v,
|
|
dataSources: k,
|
|
onFilterChanged: this.handleFiltersChange,
|
|
onMetadataChanged: this.handleMetadataFilterChange,
|
|
filterMetadata: i,
|
|
filterInUse: f,
|
|
filterDataModel: d,
|
|
filterDataSource: u,
|
|
filterApp: s,
|
|
filterBookmarked: c
|
|
})), _.default.createElement(R.default.Column, {
|
|
style: pe,
|
|
span: 2
|
|
}, _.default.createElement(J.default, {
|
|
appearance: "search",
|
|
value: S,
|
|
placeholder: (0, H._)("filter..."),
|
|
onChange: this.handleSearchChange,
|
|
"data-test": "filterText"
|
|
}))), _.default.createElement(R.default.Row, null, _.default.createElement(R.default.Column, {
|
|
span: 12,
|
|
style: he
|
|
}, O)))))), _.default.createElement("div", null, _.default.createElement(w.default, {
|
|
filters: b,
|
|
analyticStories: M,
|
|
onAnnotationClick: this.handleAnnotationClick,
|
|
fetchStoryContentInfo: this.fetchStoryContentInfo,
|
|
handleBookmarkClick: this.handleBookmarkClick
|
|
})))), _.default.createElement(ee.default, {
|
|
open: C,
|
|
onRequestClose: function() {
|
|
return e.setState({
|
|
openDiscoverRecStoriesModal: !1
|
|
})
|
|
},
|
|
onClick: function() {
|
|
return e.setState({
|
|
openDiscoverRecStoriesModal: !1
|
|
})
|
|
}
|
|
}), _.default.createElement(L.default, {
|
|
onRequestClose: this.handleCloseESCUModal,
|
|
open: "escu" === m,
|
|
style: se.modalStyle450
|
|
}, _.default.createElement(L.default.Header, {
|
|
title: (0, H._)("ES Content Update Recommended"),
|
|
onRequestClose: this.handleCloseESCUModal
|
|
}), _.default.createElement(L.default.Body, null, _.default.createElement(I.default, null, (0, H._)("Download and install the ES Content Update add-on for access to common security analytic stories.")), _.default.createElement(I.default, null, _.default.createElement(x.default, {
|
|
to: A,
|
|
openInNewContext: !0
|
|
}, "Install ES Content Update App from Splunk")), _.default.createElement(I.default, null, _.default.createElement(x.default, {
|
|
to: "https://splunkbase.splunk.com/app/3449",
|
|
openInNewContext: !0
|
|
}, "ES Content Update App on Splunkbase"))), _.default.createElement(L.default.Footer, null, _.default.createElement(N.default, {
|
|
style: se.floatLeft,
|
|
onClick: this.handleOptOutClick,
|
|
selected: h,
|
|
value: h
|
|
}, _.default.createElement("span", {
|
|
style: se.fontSize12
|
|
}, (0, H._)("Don't show this modal again."))), _.default.createElement(P.default, {
|
|
onClick: this.handleCloseESCUModal,
|
|
label: (0, H._)("Close")
|
|
}))))
|
|
}
|
|
}]), t
|
|
}(S.Component);
|
|
t.default = ge, e.exports = t.default
|
|
},
|
|
2930: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1461),
|
|
h = n(m),
|
|
g = a(2178),
|
|
y = n(g),
|
|
v = a(1652),
|
|
k = n(v);
|
|
a(57);
|
|
var S = function(e) {
|
|
return {
|
|
width: 180,
|
|
minWidth: 100,
|
|
marginBottom: 10,
|
|
background: e ? "#ECF8FF" : "#FFF"
|
|
}
|
|
},
|
|
_ = {
|
|
fontWeight: "bold"
|
|
},
|
|
C = {
|
|
textAlign: "center"
|
|
},
|
|
b = function(e) {
|
|
function t() {
|
|
return (0, r.default)(this, t), (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "render",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.id,
|
|
a = e.description,
|
|
n = e.onClick,
|
|
l = e.selected,
|
|
r = e.name,
|
|
o = e.icon,
|
|
i = {
|
|
height: 72,
|
|
width: 72,
|
|
marginTop: -111
|
|
},
|
|
s = {
|
|
height: 76,
|
|
width: 76,
|
|
borderRadius: "50%",
|
|
display: "inline-block",
|
|
border: "solid 1px " + (l ? "#007ABD" : "#ffffff")
|
|
};
|
|
return p.default.createElement(k.default, {
|
|
content: a,
|
|
defaultPlacement: "right"
|
|
}, p.default.createElement(y.default, {
|
|
style: S(l),
|
|
value: t,
|
|
onClick: n,
|
|
selected: l
|
|
}, p.default.createElement(y.default.Header, {
|
|
title: r,
|
|
truncateTitle: !1,
|
|
style: _
|
|
}), p.default.createElement(y.default.Body, {
|
|
style: C
|
|
}, p.default.createElement("div", {
|
|
style: s
|
|
}), p.default.createElement("img", {
|
|
src: o,
|
|
style: i,
|
|
alt: r
|
|
}))))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
b.propTypes = {
|
|
name: h.default.string.isRequired,
|
|
id: h.default.string.isRequired,
|
|
description: h.default.string.isRequired,
|
|
icon: h.default.string.isRequired,
|
|
selected: h.default.bool.isRequired,
|
|
onClick: h.default.func.isRequired
|
|
}, t.default = b, e.exports = t.default
|
|
},
|
|
2931: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1),
|
|
h = a(1352),
|
|
g = a(888),
|
|
y = a(2932),
|
|
v = n(y),
|
|
k = a(1621),
|
|
S = n(k),
|
|
_ = a(1909),
|
|
C = n(_),
|
|
b = a(1461),
|
|
E = n(b),
|
|
R = a(1847),
|
|
M = n(R),
|
|
q = a(1814),
|
|
O = n(q),
|
|
w = a(1652),
|
|
A = n(w),
|
|
T = a(1859),
|
|
D = n(T),
|
|
L = a(1682),
|
|
U = n(L),
|
|
I = a(1701),
|
|
B = n(I),
|
|
x = a(1626);
|
|
a(57);
|
|
var F = function(e) {
|
|
function t(e, a) {
|
|
(0, r.default)(this, t);
|
|
var n = (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, a));
|
|
return n.handleSort = n.handleSort.bind(n), n.state = {
|
|
sortKey: "name",
|
|
sortDir: "asc"
|
|
}, n
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "getExpansionRow",
|
|
value: function(e) {
|
|
var t = this.props,
|
|
a = t.onAnnotationClick,
|
|
n = t.fetchStoryContentInfo;
|
|
return p.default.createElement(C.default.Row, {
|
|
key: e.name + "-expansion"
|
|
}, p.default.createElement(C.default.Cell, {
|
|
style: x.noBorderTop,
|
|
colSpan: 7
|
|
}, p.default.createElement(v.default, {
|
|
anStory: e,
|
|
onAnnotationClick: a,
|
|
fetchStoryContentInfo: n
|
|
})))
|
|
}
|
|
}, {
|
|
key: "getStoryInUseComponent",
|
|
value: function(e) {
|
|
return void 0 === e.in_use ? p.default.createElement(D.default, null) : p.default.createElement(A.default, {
|
|
content: e.in_use ? (0, m._)("Story is in use") : (0, m._)("No searches are active")
|
|
}, e.in_use ? p.default.createElement(O.default, {
|
|
"data-test": "in-use",
|
|
screenReaderText: ""
|
|
}) : p.default.createElement(M.default, {
|
|
"data-test": "not-in-use",
|
|
screenReaderText: ""
|
|
}))
|
|
}
|
|
}, {
|
|
key: "sortAnalyticStoriesWithKey",
|
|
value: function(e, t, a) {
|
|
var n = "asc" === a ? 1 : -1;
|
|
return e.sort(function(e, a) {
|
|
return e[t] < a[t] ? -1 * n : e[t] > a[t] ? 1 * n : 0
|
|
})
|
|
}
|
|
}, {
|
|
key: "handleSort",
|
|
value: function(e, t) {
|
|
var a = t.sortKey,
|
|
n = this.state.sortDir,
|
|
l = this.state.sortKey,
|
|
r = l === a ? n : "none",
|
|
o = "asc" === r ? "desc" : "asc";
|
|
this.setState({
|
|
sortKey: a,
|
|
sortDir: o
|
|
})
|
|
}
|
|
}, {
|
|
key: "renderAnalyticStoryRow",
|
|
value: function(e) {
|
|
var t = this.props.handleBookmarkClick,
|
|
a = e.name,
|
|
n = (0, h.makeURLfromArgs)("app", g.app, "ess_analytic_story_details", {
|
|
analytic_story: a
|
|
});
|
|
return p.default.createElement(C.default.Row, {
|
|
key: e.id,
|
|
expansionRow: this.getExpansionRow(e)
|
|
}, p.default.createElement(C.default.Cell, {
|
|
align: "center",
|
|
"data-test": "in-use-section",
|
|
"data-test-value": e.in_use
|
|
}, this.getStoryInUseComponent(e)), p.default.createElement(C.default.Cell, {
|
|
data: e,
|
|
"data-test": "analytic-story-section",
|
|
"data-test-value": a
|
|
}, p.default.createElement(S.default, {
|
|
to: n
|
|
}, a)), p.default.createElement(C.default.Cell, {
|
|
data: e,
|
|
"data-test": "use-case-section",
|
|
"data-test-value": e.category
|
|
}, e.category), p.default.createElement(C.default.Cell, {
|
|
"data-test": "description-section"
|
|
}, e.description), p.default.createElement(C.default.Cell, {
|
|
"data-test": "app-section"
|
|
}, e.appLabel), p.default.createElement(C.default.Cell, {
|
|
"data-test": "last-updated-section"
|
|
}, B.default.newSplunkTime({
|
|
time: e.last_updated
|
|
}).format("ll")), p.default.createElement(C.default.Cell, {
|
|
"data-test": "bookmarked-section",
|
|
"data-test-value": e.bookmarked
|
|
}, void 0 !== e.bookmarked && p.default.createElement(U.default, {
|
|
key: e.id,
|
|
value: e.name,
|
|
onClick: t,
|
|
selected: e.bookmarked,
|
|
selectedLabel: (0, m._)("Bookmark enabled"),
|
|
unselectedLabel: (0, m._)("Bookmark disabled"),
|
|
appearance: "toggle",
|
|
size: "small"
|
|
})))
|
|
}
|
|
}, {
|
|
key: "render",
|
|
value: function() {
|
|
var e = this,
|
|
t = this.state,
|
|
a = t.sortKey,
|
|
n = t.sortDir,
|
|
l = this.props,
|
|
r = l.analyticStories,
|
|
o = l.filters,
|
|
i = o.searchTerm,
|
|
s = o.metadata,
|
|
u = o.app,
|
|
d = o.dataSource,
|
|
f = o.dataModel,
|
|
c = o.inUse,
|
|
h = o.bookmarked,
|
|
g = this.sortAnalyticStoriesWithKey(r, a, n);
|
|
return p.default.createElement(C.default, {
|
|
stripeRows: !0,
|
|
rowExpansion: "single",
|
|
innerStyle: x.tableStyle,
|
|
"data-test-filter-metadata": s.join(","),
|
|
"data-test-filter-app": u,
|
|
"data-test-filter-datasource": d,
|
|
"data-test-filter-datamodel": f,
|
|
"data-test-filter-inuse": c,
|
|
"data-test-filter-bookmarked": h,
|
|
"data-test-search-term": i
|
|
}, p.default.createElement(C.default.Head, null, p.default.createElement(C.default.HeadCell, {
|
|
width: 30
|
|
}, (0, m._)("In use")), p.default.createElement(C.default.HeadCell, {
|
|
width: 180,
|
|
onSort: this.handleSort,
|
|
sortKey: "name",
|
|
sortDir: "name" === a ? n : "none"
|
|
}, (0, m._)("Analytic Story")), p.default.createElement(C.default.HeadCell, {
|
|
width: 140,
|
|
onSort: this.handleSort,
|
|
sortKey: "category",
|
|
sortDir: "category" === a ? n : "none"
|
|
}, (0, m._)("Use Case")), p.default.createElement(C.default.HeadCell, null, (0, m._)("Description")), p.default.createElement(C.default.HeadCell, {
|
|
width: 110,
|
|
onSort: this.handleSort,
|
|
sortKey: "app",
|
|
sortDir: "app" === a ? n : "none"
|
|
}, (0, m._)("App")), p.default.createElement(C.default.HeadCell, {
|
|
width: 90,
|
|
onSort: this.handleSort,
|
|
sortKey: "last_updated",
|
|
sortDir: "last_updated" === a ? n : "none"
|
|
}, (0, m._)("Last Updated")), p.default.createElement(C.default.HeadCell, {
|
|
width: 90,
|
|
onSort: this.handleSort,
|
|
sortKey: "bookmarked",
|
|
sortDir: "bookmarked" === a ? n : "none"
|
|
}, (0, m._)("Bookmark"))), p.default.createElement(C.default.Body, null, g.map(function(t) {
|
|
return e.renderAnalyticStoryRow(t)
|
|
})))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
F.propTypes = {
|
|
analyticStories: E.default.arrayOf(E.default.shape({
|
|
name: E.default.string.isRequired,
|
|
description: E.default.string.isRequired,
|
|
app: E.default.string.isRequired,
|
|
category: E.default.string.isRequired,
|
|
in_use: E.default.bool,
|
|
bookmarked: E.default.bool,
|
|
last_updated: E.default.string.isRequired,
|
|
annotations: E.default.arrayOf(E.default.shape({
|
|
name: E.default.string.isRequired,
|
|
items: E.default.arrayOf(E.default.string).isRequired
|
|
})).isRequired,
|
|
searches: E.default.arrayOf(E.default.shape({
|
|
type: E.default.string.isRequired,
|
|
name: E.default.string.isRequired
|
|
})).isRequired
|
|
}).isRequired).isRequired,
|
|
onAnnotationClick: E.default.func.isRequired,
|
|
fetchStoryContentInfo: E.default.func.isRequired,
|
|
handleBookmarkClick: E.default.func.isRequired,
|
|
filters: E.default.shape({
|
|
searchTerm: E.default.string.isRequired,
|
|
metadata: E.default.arrayOf(E.default.string).isRequired,
|
|
app: E.default.string.isRequired,
|
|
dataSource: E.default.string.isRequired,
|
|
dataModel: E.default.string.isRequired,
|
|
inUse: E.default.string.isRequired,
|
|
bookmarked: E.default.string.isRequired
|
|
}).isRequired
|
|
}, t.default = F, e.exports = t.default
|
|
},
|
|
2932: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1461),
|
|
h = n(m),
|
|
g = a(1673),
|
|
y = n(g),
|
|
v = a(1),
|
|
k = a(1674),
|
|
S = n(k),
|
|
_ = a(1621),
|
|
C = n(_),
|
|
b = a(1352),
|
|
E = a(888),
|
|
R = a(2933),
|
|
M = n(R),
|
|
q = a(1652),
|
|
O = n(q),
|
|
w = a(1619),
|
|
A = n(w),
|
|
T = a(1620),
|
|
D = n(T),
|
|
L = a(1847),
|
|
U = n(L),
|
|
I = a(1814),
|
|
B = n(I),
|
|
x = a(2934),
|
|
F = n(x);
|
|
a(57);
|
|
var P = function(e) {
|
|
function t(e, a) {
|
|
(0, r.default)(this, t);
|
|
var n = (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, a));
|
|
return n.state = {
|
|
dataModels: [],
|
|
providingTechnologies: [],
|
|
sourcetypes: [],
|
|
lookups: [],
|
|
loading: !1
|
|
}, n
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "componentDidMount",
|
|
value: function() {
|
|
var e = this.props.anStory;
|
|
this.fetchData(e)
|
|
}
|
|
}, {
|
|
key: "componentDidUpdate",
|
|
value: function(e) {
|
|
var t = this.props.anStory;
|
|
t.id !== e.anStory.id && this.fetchData(t)
|
|
}
|
|
}, {
|
|
key: "fetchData",
|
|
value: function(e) {
|
|
var t = this,
|
|
a = this.props.fetchStoryContentInfo;
|
|
this.setState({
|
|
loading: !0
|
|
}), a(e).then(function(e) {
|
|
t.setState({
|
|
providingTechnologies: e.providingTechnologies,
|
|
sourcetypes: e.sourcetypes,
|
|
dataModels: e.dataModels,
|
|
lookups: e.lookups,
|
|
loading: !1
|
|
})
|
|
})
|
|
}
|
|
}, {
|
|
key: "genEditLink",
|
|
value: function(e) {
|
|
if (e.isCorrelationSearch) {
|
|
var t = (0, b.makeURLfromArgs)("app", E.app, "correlation_search_edit", {
|
|
search: e.name
|
|
});
|
|
return p.default.createElement(C.default, {
|
|
to: t
|
|
}, (0, v._)("edit"), " ")
|
|
}
|
|
var a = (0, b.makeURLfromArgs)("manager", E.app, "saved", "searches", e.name, {
|
|
search: e.name,
|
|
app: e.app,
|
|
uri: e.uri,
|
|
action: "edit"
|
|
});
|
|
return p.default.createElement(C.default, {
|
|
to: a
|
|
}, (0, v._)("edit saved search"), " ")
|
|
}
|
|
}, {
|
|
key: "render",
|
|
value: function() {
|
|
var e = this,
|
|
t = this.props,
|
|
a = t.anStory,
|
|
n = t.onAnnotationClick,
|
|
l = this.state,
|
|
r = l.sourcetypes,
|
|
o = l.dataModels,
|
|
i = l.providingTechnologies,
|
|
s = l.lookups,
|
|
u = l.loading,
|
|
d = {
|
|
padding: 5
|
|
},
|
|
f = {
|
|
borderStyle: "solid",
|
|
paddingRight: 5,
|
|
paddingLeft: 5,
|
|
borderWidth: .5,
|
|
borderColor: "#C3CBD4"
|
|
},
|
|
c = (0, v._)("See all %d Lookups").replace("%d", s.length),
|
|
m = (0, v._)("See all %d Sourcetypes").replace("%d", r.length),
|
|
h = (0, v._)("See all %d Data Models").replace("%d", o.length),
|
|
g = (0, v._)("See all %d Data Sources").replace("%d", i.length),
|
|
k = a.searches.filter(function(e) {
|
|
return "detection" === e.type
|
|
}).map(function(t) {
|
|
return p.default.createElement(S.default.Item, {
|
|
"data-test-value": t.active,
|
|
"data-test-search": t.name,
|
|
key: t.name
|
|
}, p.default.createElement(O.default, {
|
|
content: t.active ? (0, v._)("Search is active") : (0, v._)("Search is not active")
|
|
}, t.active ? p.default.createElement(B.default, {
|
|
screenReaderText: ""
|
|
}) : p.default.createElement(U.default, {
|
|
screenReaderText: ""
|
|
})), " ", " ", t.name, " - ", e.genEditLink(t))
|
|
});
|
|
return p.default.createElement(y.default, {
|
|
style: f,
|
|
gutter: 0
|
|
}, p.default.createElement(y.default.Row, null, p.default.createElement(y.default.Column, {
|
|
style: d,
|
|
span: 6
|
|
}, p.default.createElement(O.default, {
|
|
content: (0, v._)("See all the searches by clicking on the Analytic Story name.")
|
|
}, p.default.createElement(A.default, null, (0, v._)("Detection Searches"))), 0 === k.length ? p.default.createElement(D.default, null, (0, v._)("No items found.")) : p.default.createElement(S.default, {
|
|
"data-test": "detection-searches-section"
|
|
}, k)), p.default.createElement(F.default, {
|
|
heading: (0, v._)("Recommended Data Sources"),
|
|
loading: u,
|
|
items: i,
|
|
anchorButtonLabel: g,
|
|
modalTitle: (0, v._)("All Data Sources"),
|
|
testString: "recommended-data-sources-section"
|
|
}), p.default.createElement(F.default, {
|
|
heading: (0, v._)("Sourcetypes"),
|
|
loading: u,
|
|
items: r,
|
|
anchorButtonLabel: m,
|
|
modalTitle: (0, v._)("All Sourcetypes"),
|
|
testString: "sourcetypes-section"
|
|
}), p.default.createElement(F.default, {
|
|
heading: (0, v._)("Data Models"),
|
|
loading: u,
|
|
items: o,
|
|
anchorButtonLabel: h,
|
|
modalTitle: (0, v._)("All Data Models"),
|
|
testString: "data-models-section"
|
|
}), p.default.createElement(F.default, {
|
|
heading: (0, v._)("Lookups"),
|
|
loading: u,
|
|
items: s,
|
|
anchorButtonLabel: c,
|
|
modalTitle: (0, v._)("All Lookups"),
|
|
testString: "lookups-section"
|
|
})), p.default.createElement(y.default.Row, null, p.default.createElement(y.default.Column, {
|
|
style: d,
|
|
span: 12,
|
|
"data-test": "framework-mapping-section"
|
|
}, p.default.createElement(A.default, null, (0, v._)("Framework Mapping")), p.default.createElement(M.default, {
|
|
data: a.annotations,
|
|
onItemClick: n
|
|
}))))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
P.propTypes = {
|
|
anStory: h.default.shape({
|
|
id: h.default.string.isRequired,
|
|
annotations: h.default.arrayOf(h.default.shape({
|
|
name: h.default.string.isRequired,
|
|
items: h.default.arrayOf(h.default.string).isRequired
|
|
})).isRequired,
|
|
searches: h.default.arrayOf(h.default.shape({
|
|
type: h.default.string.isRequired,
|
|
name: h.default.string.isRequired,
|
|
isCorrelationSearch: h.default.bool.isRequired
|
|
})).isRequired
|
|
}).isRequired,
|
|
onAnnotationClick: h.default.func.isRequired,
|
|
fetchStoryContentInfo: h.default.func.isRequired
|
|
}, t.default = P, e.exports = t.default
|
|
},
|
|
2933: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(2161),
|
|
h = n(m),
|
|
g = a(1461),
|
|
y = n(g);
|
|
a(57);
|
|
var v = function(e) {
|
|
function t() {
|
|
return (0, r.default)(this, t), (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "render",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.data,
|
|
a = e.onItemClick;
|
|
return t.map(function(e) {
|
|
return p.default.createElement(h.default, {
|
|
key: e.name,
|
|
name: e.name,
|
|
label: e.label || e.name,
|
|
color: e.color,
|
|
items: e.items,
|
|
onItemClick: a,
|
|
clickable: !0
|
|
})
|
|
})
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
v.propTypes = {
|
|
data: y.default.arrayOf(y.default.shape({
|
|
color: y.default.string,
|
|
name: y.default.string.isRequired,
|
|
label: y.default.string.isRequired,
|
|
items: y.default.arrayOf(y.default.string).isRequired
|
|
})).isRequired,
|
|
onItemClick: y.default.func.isRequired
|
|
}, t.default = v, e.exports = t.default
|
|
},
|
|
2934: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1461),
|
|
h = n(m),
|
|
g = a(1673),
|
|
y = n(g),
|
|
v = a(1),
|
|
k = a(1619),
|
|
S = n(k),
|
|
_ = a(1617),
|
|
C = n(_),
|
|
b = a(1620),
|
|
E = n(b),
|
|
R = a(2203),
|
|
M = n(R);
|
|
a(57);
|
|
var q = {
|
|
padding: 5
|
|
},
|
|
O = function(e) {
|
|
function t() {
|
|
return (0, r.default)(this, t), (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "render",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.heading,
|
|
a = e.loading,
|
|
n = e.items,
|
|
l = e.anchorButtonLabel,
|
|
r = e.modalTitle,
|
|
o = e.testString;
|
|
return p.default.createElement(y.default.Column, {
|
|
style: q,
|
|
span: 2,
|
|
"data-test": o
|
|
}, p.default.createElement(S.default, {
|
|
level: 3
|
|
}, t), a && p.default.createElement(C.default, {
|
|
size: "medium"
|
|
}), !a && 0 === n.length && p.default.createElement(E.default, null, (0, v._)("No items found.")), p.default.createElement(M.default, {
|
|
items: n,
|
|
anchorButtonLabel: l,
|
|
modalTitle: r
|
|
}))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
O.defaultProps = {
|
|
testString: "expanded-row-section"
|
|
}, O.propTypes = {
|
|
heading: h.default.string.isRequired,
|
|
loading: h.default.bool.isRequired,
|
|
anchorButtonLabel: h.default.string.isRequired,
|
|
modalTitle: h.default.string.isRequired,
|
|
items: h.default.arrayOf(h.default.shape({
|
|
id: h.default.string.isRequired,
|
|
label: h.default.string.isRequired,
|
|
readiness: h.default.number
|
|
})).isRequired,
|
|
testString: h.default.string
|
|
}, t.default = O, e.exports = t.default
|
|
},
|
|
2935: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1461),
|
|
h = n(m),
|
|
g = a(1620),
|
|
y = n(g),
|
|
v = a(1633),
|
|
k = n(v),
|
|
S = a(1628),
|
|
_ = n(S),
|
|
C = a(1),
|
|
b = a(1626);
|
|
a(57);
|
|
var E = function(e) {
|
|
function t() {
|
|
return (0, r.default)(this, t), (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "render",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.onRequestClose,
|
|
a = e.open,
|
|
n = e.onClick;
|
|
return p.default.createElement(k.default, {
|
|
onRequestClose: t,
|
|
open: a,
|
|
style: b.modalStyle750
|
|
}, p.default.createElement(k.default.Header, {
|
|
title: (0, C._)("Discover Recommended Stories Wizard"),
|
|
onRequestClose: t
|
|
}), p.default.createElement(k.default.Body, null, p.default.createElement(y.default, null, (0, C._)("ES will be able to identify your ingested data and recommend stories you should review and determine if they apply and decide if you want to monitor in your environment."))), p.default.createElement(k.default.Footer, null, p.default.createElement(_.default, {
|
|
appearance: "primary",
|
|
onClick: n,
|
|
label: (0, C._)("Close")
|
|
})))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
E.propTypes = {
|
|
open: h.default.bool.isRequired,
|
|
onClick: h.default.func.isRequired,
|
|
onRequestClose: h.default.func.isRequired
|
|
}, t.default = E, e.exports = t.default
|
|
},
|
|
2936: function(e, t, a) {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return e && e.__esModule ? e : {
|
|
default: e
|
|
}
|
|
}
|
|
Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
});
|
|
var l = a(864),
|
|
r = n(l),
|
|
o = a(865),
|
|
i = n(o),
|
|
s = a(869),
|
|
u = n(s),
|
|
d = a(870),
|
|
f = n(d),
|
|
c = a(1453),
|
|
p = n(c),
|
|
m = a(1461),
|
|
h = n(m),
|
|
g = a(1),
|
|
y = a(1703),
|
|
v = n(y),
|
|
k = a(1679),
|
|
S = n(k),
|
|
_ = a(1673),
|
|
C = n(_);
|
|
a(57);
|
|
var b = {
|
|
width: "100%"
|
|
},
|
|
E = function(e) {
|
|
function t() {
|
|
return (0, r.default)(this, t), (0, u.default)(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
|
|
}
|
|
return (0, f.default)(t, e), (0, i.default)(t, [{
|
|
key: "getMetadataFilterSelect",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.annotations,
|
|
a = e.filterMetadata,
|
|
n = e.onMetadataChanged,
|
|
l = t.reduce(function(e, t) {
|
|
return e.push(p.default.createElement(S.default.Heading, {
|
|
key: t.name,
|
|
level: 2
|
|
}, t.label)), e.push(t.items.map(function(e) {
|
|
return p.default.createElement(S.default.Option, {
|
|
key: e,
|
|
label: e,
|
|
value: e
|
|
})
|
|
})), e
|
|
}, []);
|
|
return p.default.createElement(S.default, {
|
|
style: b,
|
|
inline: !0,
|
|
values: a,
|
|
compact: !0,
|
|
name: "filterMetadata",
|
|
onChange: n,
|
|
placeholder: (0, g._)("Framework Mapping: All"),
|
|
"data-test": "filterMetadata"
|
|
}, l)
|
|
}
|
|
}, {
|
|
key: "getAppFilterSelect",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.filterApp,
|
|
a = e.onFilterChanged,
|
|
n = e.apps;
|
|
return p.default.createElement(v.default, {
|
|
style: b,
|
|
prefixLabel: (0, g._)("App"),
|
|
name: "filterApp",
|
|
value: t,
|
|
onChange: a,
|
|
"data-test": "filterApp"
|
|
}, p.default.createElement(v.default.Option, {
|
|
key: "all",
|
|
label: (0, g._)("All"),
|
|
value: ""
|
|
}), n.map(function(e) {
|
|
return p.default.createElement(v.default.Option, {
|
|
key: e.name,
|
|
label: e.label,
|
|
value: e.name
|
|
})
|
|
}))
|
|
}
|
|
}, {
|
|
key: "getDataSourceFilterSelect",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.filterDataSource,
|
|
a = e.onFilterChanged,
|
|
n = e.dataSources;
|
|
return p.default.createElement(v.default, {
|
|
style: b,
|
|
prefixLabel: (0, g._)("Data Source"),
|
|
name: "filterDataSource",
|
|
value: t,
|
|
onChange: a,
|
|
"data-test": "filterDataSource",
|
|
filter: !0
|
|
}, p.default.createElement(v.default.Option, {
|
|
key: "all",
|
|
label: (0, g._)("All"),
|
|
value: ""
|
|
}), n.map(function(e) {
|
|
return p.default.createElement(v.default.Option, {
|
|
key: e,
|
|
label: e,
|
|
value: e
|
|
})
|
|
}))
|
|
}
|
|
}, {
|
|
key: "getDataModelFilterSelect",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.filterDataModel,
|
|
a = e.onFilterChanged,
|
|
n = e.dataModels;
|
|
return p.default.createElement(v.default, {
|
|
style: b,
|
|
prefixLabel: (0, g._)("Data Model"),
|
|
name: "filterDataModel",
|
|
value: t,
|
|
onChange: a,
|
|
"data-test": "filterDataModel",
|
|
filter: !0
|
|
}, p.default.createElement(v.default.Option, {
|
|
key: "all",
|
|
label: (0, g._)("All"),
|
|
value: ""
|
|
}), n.map(function(e) {
|
|
return p.default.createElement(v.default.Option, {
|
|
key: e,
|
|
label: e,
|
|
value: e
|
|
})
|
|
}))
|
|
}
|
|
}, {
|
|
key: "getInUseFilterSelect",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.filterInUse,
|
|
a = e.onFilterChanged;
|
|
return p.default.createElement(v.default, {
|
|
style: b,
|
|
prefixLabel: (0, g._)("In Use"),
|
|
name: "filterInUse",
|
|
value: t,
|
|
onChange: a,
|
|
"data-test": "filterInUse"
|
|
}, p.default.createElement(v.default.Option, {
|
|
key: "all",
|
|
label: (0, g._)("All"),
|
|
value: ""
|
|
}), p.default.createElement(v.default.Option, {
|
|
key: "true",
|
|
label: (0, g._)("True"),
|
|
value: "true"
|
|
}), p.default.createElement(v.default.Option, {
|
|
key: "false",
|
|
label: (0, g._)("False"),
|
|
value: "false"
|
|
}))
|
|
}
|
|
}, {
|
|
key: "getBookmarkedFilterSelect",
|
|
value: function() {
|
|
var e = this.props,
|
|
t = e.filterBookmarked,
|
|
a = e.onFilterChanged;
|
|
return p.default.createElement(v.default, {
|
|
style: b,
|
|
prefixLabel: (0, g._)("Bookmarked"),
|
|
name: "filterBookmarked",
|
|
value: t,
|
|
onChange: a,
|
|
"data-test": "filterBookmarked"
|
|
}, p.default.createElement(v.default.Option, {
|
|
key: "all",
|
|
label: (0, g._)("All"),
|
|
value: ""
|
|
}), p.default.createElement(v.default.Option, {
|
|
key: "true",
|
|
label: (0, g._)("True"),
|
|
value: "true"
|
|
}), p.default.createElement(v.default.Option, {
|
|
key: "false",
|
|
label: (0, g._)("False"),
|
|
value: "false"
|
|
}))
|
|
}
|
|
}, {
|
|
key: "render",
|
|
value: function() {
|
|
return p.default.createElement(C.default, {
|
|
gutter: 8
|
|
}, p.default.createElement(C.default.Row, null, p.default.createElement(C.default.Column, {
|
|
span: 2.4
|
|
}, this.getMetadataFilterSelect()), p.default.createElement(C.default.Column, {
|
|
span: 2.4
|
|
}, this.getDataModelFilterSelect()), p.default.createElement(C.default.Column, {
|
|
span: 2.4
|
|
}, this.getAppFilterSelect()), p.default.createElement(C.default.Column, {
|
|
span: 2.4
|
|
}, this.getInUseFilterSelect()), p.default.createElement(C.default.Column, {
|
|
span: 2.4
|
|
}, this.getBookmarkedFilterSelect())))
|
|
}
|
|
}]), t
|
|
}(c.Component);
|
|
E.propTypes = {
|
|
apps: h.default.arrayOf(h.default.shape({
|
|
name: h.default.string.isRequired,
|
|
label: h.default.string.isRequired
|
|
})).isRequired,
|
|
annotations: h.default.arrayOf(h.default.shape({
|
|
name: h.default.string.isRequired,
|
|
label: h.default.string.isRequired,
|
|
items: h.default.arrayOf(h.default.string).isRequired
|
|
})).isRequired,
|
|
dataModels: h.default.arrayOf(h.default.string).isRequired,
|
|
dataSources: h.default.arrayOf(h.default.string).isRequired,
|
|
onFilterChanged: h.default.func.isRequired,
|
|
onMetadataChanged: h.default.func.isRequired,
|
|
filterMetadata: h.default.arrayOf(h.default.string).isRequired,
|
|
filterInUse: h.default.string.isRequired,
|
|
filterDataModel: h.default.string.isRequired,
|
|
filterDataSource: h.default.string.isRequired,
|
|
filterApp: h.default.string.isRequired,
|
|
filterBookmarked: h.default.string.isRequired
|
|
}, t.default = E, e.exports = t.default
|
|
}
|
|
});
|