@splunk/visualizations 25.9.1 → 25.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Area.js +2 -2
- package/Area.js.map +1 -1
- package/Bar.js +2 -2
- package/Bar.js.map +1 -1
- package/Bubble.js +2 -2
- package/Bubble.js.map +1 -1
- package/ChoroplethSvg.js +2 -2
- package/ChoroplethSvg.js.map +1 -1
- package/Column.js +2 -2
- package/Column.js.map +1 -1
- package/Ellipse.js +2 -2
- package/Ellipse.js.map +1 -1
- package/Events.js +2 -2
- package/Events.js.map +1 -1
- package/FillerGauge.js +2 -2
- package/FillerGauge.js.map +1 -1
- package/Image.js +2 -2
- package/Image.js.map +1 -1
- package/Line.js +2 -2
- package/Line.js.map +1 -1
- package/LinkGraph.js +118 -86
- package/LinkGraph.js.map +1 -1
- package/Map.js +6 -4
- package/Map.js.map +1 -1
- package/Markdown.js +2 -2
- package/Markdown.js.map +1 -1
- package/MarkerGauge.js +2 -2
- package/MarkerGauge.js.map +1 -1
- package/ParallelCoordinates.js +2 -2
- package/ParallelCoordinates.js.map +1 -1
- package/Pie.js +2 -2
- package/Pie.js.map +1 -1
- package/Punchcard.js +2 -2
- package/Punchcard.js.map +1 -1
- package/Rectangle.js +2 -2
- package/Rectangle.js.map +1 -1
- package/Sankey.js +2 -2
- package/Sankey.js.map +1 -1
- package/Scatter.js +2 -2
- package/Scatter.js.map +1 -1
- package/SingleValue.js +2 -2
- package/SingleValue.js.map +1 -1
- package/SingleValueIcon.js +2 -2
- package/SingleValueIcon.js.map +1 -1
- package/SingleValueRadial.js +2 -2
- package/SingleValueRadial.js.map +1 -1
- package/Table.js +21 -17
- package/Table.js.map +1 -1
- package/common/utils/mapUtils.js +3 -1
- package/common/utils/mapUtils.js.map +1 -1
- package/common/withDashboardViz.js +2 -2
- package/common/withDashboardViz.js.map +1 -1
- package/package.json +20 -20
package/LinkGraph.js
CHANGED
|
@@ -265,7 +265,7 @@ var withFixedSizeContainer = function withFixedSizeContainer(Viz) {
|
|
|
265
265
|
}
|
|
266
266
|
return React.createElement(FixSizeItem, {
|
|
267
267
|
"data-test": "fix-size-item",
|
|
268
|
-
"data-splunk-visualization-version": "25.
|
|
268
|
+
"data-splunk-visualization-version": "25.10.0 - 8d01deb08",
|
|
269
269
|
width: width,
|
|
270
270
|
height: height,
|
|
271
271
|
backgroundColor: backgroundColor
|
|
@@ -1409,7 +1409,7 @@ var Cover = styled_components_1.default.div.withConfig({
|
|
|
1409
1409
|
componentId: "sc-1gsbnxb-0"
|
|
1410
1410
|
})(["position:absolute;left:0;right:0;top:0;bottom:0;"]);
|
|
1411
1411
|
var Blocker = styled_components_1.default.div.attrs({
|
|
1412
|
-
'data-splunk-visualization-version': "25.
|
|
1412
|
+
'data-splunk-visualization-version': "25.10.0 - 8d01deb08"
|
|
1413
1413
|
}).withConfig({
|
|
1414
1414
|
displayName: "withEditModeCover__Blocker",
|
|
1415
1415
|
componentId: "sc-1gsbnxb-1"
|
|
@@ -1630,8 +1630,6 @@ module.exports = require("@splunk/react-ui/Button");
|
|
|
1630
1630
|
|
|
1631
1631
|
|
|
1632
1632
|
var _toConsumableArray = __webpack_require__(7);
|
|
1633
|
-
var _classCallCheck = __webpack_require__(11);
|
|
1634
|
-
var _createClass = __webpack_require__(22);
|
|
1635
1633
|
Object.defineProperty(exports, "__esModule", {
|
|
1636
1634
|
value: true
|
|
1637
1635
|
});
|
|
@@ -1639,13 +1637,18 @@ exports.getSecondaryColumnByField = exports.sortGraphColumn = exports.getNodesTo
|
|
|
1639
1637
|
var lodash_1 = __webpack_require__(3);
|
|
1640
1638
|
var hashString = function hashString() {
|
|
1641
1639
|
var stringIn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
1642
|
-
|
|
1640
|
+
var returnStringArray = stringIn.toString().split('').map(function (v) {
|
|
1643
1641
|
return v.charCodeAt(0);
|
|
1644
|
-
})
|
|
1642
|
+
});
|
|
1643
|
+
if (returnStringArray.length === 0) {
|
|
1644
|
+
return '-1';
|
|
1645
|
+
}
|
|
1646
|
+
var returnValue =
|
|
1645
1647
|
// eslint-disable-next-line no-bitwise
|
|
1646
|
-
.reduce(function (a, v) {
|
|
1648
|
+
returnStringArray.reduce(function (a, v) {
|
|
1647
1649
|
return a + ((a << 7) + (a << 3)) ^ v;
|
|
1648
1650
|
}).toString(16);
|
|
1651
|
+
return returnValue;
|
|
1649
1652
|
};
|
|
1650
1653
|
exports.hashString = hashString;
|
|
1651
1654
|
var createNode = function createNode(graphDataModelIn, nodesIn, column, field, fieldIndex, nodeWidth, nodeHeight, nodeSpacingX, nodeSpacingY, shouldAddToGraphDataModel) {
|
|
@@ -1672,6 +1675,9 @@ var createNode = function createNode(graphDataModelIn, nodesIn, column, field, f
|
|
|
1672
1675
|
} else {
|
|
1673
1676
|
node.data.count += 1;
|
|
1674
1677
|
}
|
|
1678
|
+
if (column.toString().length === 0) {
|
|
1679
|
+
node.data.isHidden = true;
|
|
1680
|
+
}
|
|
1675
1681
|
var key = "".concat(fieldIndex, "-").concat(fieldHash, "-").concat(columnHash);
|
|
1676
1682
|
if (shouldAddToGraphDataModel && !graphDataModel.nodes[key]) {
|
|
1677
1683
|
nodes[columnHash] = node;
|
|
@@ -1693,7 +1699,7 @@ var createEdge = function createEdge(graphDataModelIn, nodesIn, edgesIn, nodeIn,
|
|
|
1693
1699
|
var fieldHash = exports.hashString(field);
|
|
1694
1700
|
var columnHash = exports.hashString(column);
|
|
1695
1701
|
var graphDataModel = graphDataModelIn;
|
|
1696
|
-
if (columns[fieldIndex + 1]
|
|
1702
|
+
if (columns[fieldIndex + 1]) {
|
|
1697
1703
|
var sourceNode = "".concat(fieldIndex, "-").concat(fieldHash, "-").concat(columnHash);
|
|
1698
1704
|
var nextColumnOverContent = columns[fieldIndex + 1][columnIndex];
|
|
1699
1705
|
var targetNode = "".concat(fieldIndex + 1, "-").concat(exports.hashString(fields[fieldIndex + 1]), "-").concat(exports.hashString(nextColumnOverContent));
|
|
@@ -1771,83 +1777,103 @@ var createLinkGraphFromTable = function createLinkGraphFromTable(fieldsIn, colum
|
|
|
1771
1777
|
});
|
|
1772
1778
|
});
|
|
1773
1779
|
graphDataModel.edges = Object.values(edges);
|
|
1780
|
+
graphDataModel.columns = columns;
|
|
1781
|
+
// hide all edges that go to or from a hidden node
|
|
1782
|
+
var edgeTemp;
|
|
1783
|
+
graphDataModel.edges.forEach(function (edge) {
|
|
1784
|
+
var _a, _b, _c, _d;
|
|
1785
|
+
if (((_b = (_a = graphDataModel.nodes[edge.sourceNode]) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.isHidden) || ((_d = (_c = graphDataModel.nodes[edge.targetNode]) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.isHidden)) {
|
|
1786
|
+
edgeTemp = edge;
|
|
1787
|
+
edgeTemp.isHidden = true;
|
|
1788
|
+
// show all paths from hidden nodes across the real data
|
|
1789
|
+
getAllPathsFromNodeID(graphDataModel, graphDataModel.nodes[edge.sourceNode]).edges.forEach(function (edgeToShowTemp) {
|
|
1790
|
+
var edgeToShow = edgeToShowTemp;
|
|
1791
|
+
edgeToShow.isHidden = false;
|
|
1792
|
+
});
|
|
1793
|
+
}
|
|
1794
|
+
});
|
|
1774
1795
|
return graphDataModel;
|
|
1775
1796
|
};
|
|
1776
1797
|
exports.createLinkGraphFromTable = createLinkGraphFromTable;
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1798
|
+
/* getAllPathsFromNodeID gets paths from a node via the data and not the graph
|
|
1799
|
+
|
|
1800
|
+
Given
|
|
1801
|
+
|
|
1802
|
+
a, b, c
|
|
1803
|
+
a, , c
|
|
1804
|
+
, , d
|
|
1805
|
+
|
|
1806
|
+
From a graph context a connects to d ( a to '', '' to d)
|
|
1807
|
+
From a data ROW context a does not connect to d
|
|
1808
|
+
|
|
1809
|
+
getAllPathsFromNodeID(graph, a) would return nodes a,b,'',c and edges a-b, b-c, a-'', ''-c
|
|
1810
|
+
*/
|
|
1811
|
+
var getAllPathsFromNodeID = function getAllPathsFromNodeID(graphDataModel, node) {
|
|
1812
|
+
var newEdges = [];
|
|
1813
|
+
var nodes = [];
|
|
1814
|
+
if (!node) {
|
|
1815
|
+
return {
|
|
1816
|
+
nodes: [],
|
|
1817
|
+
edges: []
|
|
1818
|
+
};
|
|
1781
1819
|
}
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1820
|
+
graphDataModel.columns[node.data.fieldIndex].forEach(function (value, index) {
|
|
1821
|
+
if (value === node.data.value) {
|
|
1822
|
+
var row = graphDataModel.columns.map(function (column) {
|
|
1823
|
+
return column[index];
|
|
1824
|
+
});
|
|
1825
|
+
// remove blank spaces from the start of the array
|
|
1826
|
+
var offset = 0;
|
|
1827
|
+
while (row[0] === '') {
|
|
1828
|
+
row.shift();
|
|
1829
|
+
offset += 1;
|
|
1792
1830
|
}
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1831
|
+
// remove blank spaces from the end of the array
|
|
1832
|
+
while (row[row.length - 1] === '') {
|
|
1833
|
+
row.pop();
|
|
1834
|
+
}
|
|
1835
|
+
for (var i = 0; i < row.length - 1; i += 1) {
|
|
1836
|
+
if (graphDataModel.fields[i + 1]) {
|
|
1837
|
+
var fieldIndexStart = offset + i; // this is field.index not i
|
|
1838
|
+
var fieldHashStart = exports.hashString(graphDataModel.fields[offset + i].value);
|
|
1839
|
+
var columnHashStart = exports.hashString(row[i]);
|
|
1840
|
+
var fieldIndexEnd = offset + i + 1;
|
|
1841
|
+
var fieldHashEnd = exports.hashString(graphDataModel.fields[offset + i + 1].value);
|
|
1842
|
+
var columnHashEnd = exports.hashString(row[i + 1]);
|
|
1843
|
+
newEdges.push({
|
|
1844
|
+
sourceNode: "".concat(fieldIndexStart, "-").concat(fieldHashStart, "-").concat(columnHashStart),
|
|
1845
|
+
targetNode: "".concat(fieldIndexEnd, "-").concat(fieldHashEnd, "-").concat(columnHashEnd)
|
|
1846
|
+
});
|
|
1847
|
+
}
|
|
1800
1848
|
}
|
|
1801
|
-
return this.store[source];
|
|
1802
1849
|
}
|
|
1803
|
-
}]);
|
|
1804
|
-
return Edges;
|
|
1805
|
-
}();
|
|
1806
|
-
var getNodesToHighlight = function getNodesToHighlight(graph, sourceNodeID) {
|
|
1807
|
-
var edges = {
|
|
1808
|
-
reverse: new Edges(),
|
|
1809
|
-
forward: new Edges()
|
|
1810
|
-
};
|
|
1811
|
-
graph.edges.forEach(function (edge) {
|
|
1812
|
-
edges.forward.addEdge(edge.sourceNode, edge.targetNode);
|
|
1813
|
-
edges.reverse.addEdge(edge.targetNode, edge.sourceNode);
|
|
1814
1850
|
});
|
|
1815
|
-
var
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
return Object.keys(edges.forward.getNeighbors(v)).filter(function (u) {
|
|
1824
|
-
return vertices.has(u);
|
|
1825
|
-
}).map(function (u) {
|
|
1826
|
-
return "".concat(v, "-").concat(u);
|
|
1851
|
+
var edges = [];
|
|
1852
|
+
newEdges.forEach(function (newEdge) {
|
|
1853
|
+
graphDataModel.edges.forEach(function (liveEdge) {
|
|
1854
|
+
if (liveEdge.sourceNode === newEdge.sourceNode && liveEdge.targetNode === newEdge.targetNode) {
|
|
1855
|
+
edges.push(liveEdge);
|
|
1856
|
+
nodes.push(newEdge.sourceNode);
|
|
1857
|
+
nodes.push(newEdge.targetNode);
|
|
1858
|
+
}
|
|
1827
1859
|
});
|
|
1828
1860
|
});
|
|
1829
|
-
return
|
|
1861
|
+
return {
|
|
1862
|
+
nodes: _toConsumableArray(new Set(nodes)),
|
|
1863
|
+
edges: edges
|
|
1864
|
+
};
|
|
1830
1865
|
};
|
|
1831
|
-
|
|
1832
|
-
var
|
|
1833
|
-
var
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
var neighbors = edges.getNeighbors(node);
|
|
1840
|
-
Object.keys(neighbors).forEach(function (n) {
|
|
1841
|
-
return nextNodesToTraverse.push(n);
|
|
1842
|
-
});
|
|
1843
|
-
});
|
|
1844
|
-
currentNodesToTraverse = nextNodesToTraverse;
|
|
1866
|
+
var getNodesToHighlight = function getNodesToHighlight(graph, sourceNodeID) {
|
|
1867
|
+
var paths = getAllPathsFromNodeID(graph, graph.nodes[sourceNodeID]);
|
|
1868
|
+
var newEdges = paths.edges.map(function (edge) {
|
|
1869
|
+
return "".concat(edge.sourceNode, "-").concat(edge.targetNode);
|
|
1870
|
+
});
|
|
1871
|
+
return {
|
|
1872
|
+
nodes: paths.nodes,
|
|
1873
|
+
edges: newEdges
|
|
1845
1874
|
};
|
|
1846
|
-
while (currentNodesToTraverse.length) {
|
|
1847
|
-
_loop();
|
|
1848
|
-
}
|
|
1849
|
-
return visited;
|
|
1850
1875
|
};
|
|
1876
|
+
exports.getNodesToHighlight = getNodesToHighlight;
|
|
1851
1877
|
// TODO: write tests once all sorting options are supported
|
|
1852
1878
|
var sortGraphColumn = function sortGraphColumn(graph, field, sortKey, nodeHeight, nodeSpacingY) {
|
|
1853
1879
|
var nodesToSort = Object.values(graph.nodes).filter(function (node) {
|
|
@@ -2415,13 +2441,13 @@ var Graph = /*#__PURE__*/function (_React$Component) {
|
|
|
2415
2441
|
var _this3 = this;
|
|
2416
2442
|
this.unhighlightAllEdges();
|
|
2417
2443
|
var _PureLinkGraphUtils_ = PureLinkGraphUtils_1.getNodesToHighlight(this.props.graphDataModel, nodeID),
|
|
2418
|
-
|
|
2444
|
+
nodes = _PureLinkGraphUtils_.nodes,
|
|
2419
2445
|
edges = _PureLinkGraphUtils_.edges;
|
|
2420
2446
|
edges.forEach(function (e) {
|
|
2421
2447
|
var element = _this3.viewport.querySelector("[data-test=\"edge-".concat(e, "\"]"));
|
|
2422
2448
|
element.classList.add('hovering');
|
|
2423
2449
|
});
|
|
2424
|
-
|
|
2450
|
+
nodes.forEach(function (uuid) {
|
|
2425
2451
|
var element = _this3.viewport.querySelector("[data-test=\"node-".concat(uuid, "\"]"));
|
|
2426
2452
|
element.classList.add('hovering');
|
|
2427
2453
|
});
|
|
@@ -2475,16 +2501,16 @@ var Graph = /*#__PURE__*/function (_React$Component) {
|
|
|
2475
2501
|
value: value,
|
|
2476
2502
|
state: selectedOption
|
|
2477
2503
|
};
|
|
2478
|
-
|
|
2479
|
-
vertices = _PureLinkGraphUtils_2.vertices;
|
|
2480
|
-
vertices.map(function (k) {
|
|
2504
|
+
PureLinkGraphUtils_1.getNodesToHighlight(this.props.graphDataModel, key).nodes.map(function (k) {
|
|
2481
2505
|
return nodes[k];
|
|
2482
2506
|
}).forEach(function (node) {
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
payload[row]
|
|
2507
|
+
if (node.data.isHidden !== true) {
|
|
2508
|
+
var row = "row.".concat(node.data.field, ".value");
|
|
2509
|
+
if (!payload[row]) {
|
|
2510
|
+
payload[row] = [];
|
|
2511
|
+
}
|
|
2512
|
+
payload[row].push(node.data.value);
|
|
2486
2513
|
}
|
|
2487
|
-
payload[row].push(node.data.value);
|
|
2488
2514
|
});
|
|
2489
2515
|
onNodeClick({
|
|
2490
2516
|
payload: payload
|
|
@@ -2587,7 +2613,7 @@ var Graph = /*#__PURE__*/function (_React$Component) {
|
|
|
2587
2613
|
};
|
|
2588
2614
|
middle.currentX = start.currentX + start.currentW + (end.currentX - (start.currentX + start.currentW)) / 2;
|
|
2589
2615
|
middle.currentY = start.currentY + start.currentH / 2 + (end.currentY - start.currentY - start.currentH / 2) / 2;
|
|
2590
|
-
var svgData = "\n M".concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n L").concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n C").concat(middle.currentX, ",").concat(start.currentY + start.currentH / 2, "\n ").concat(middle.currentX, ",").concat(end.currentY + end.currentH / 2, "\n ").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2, "\n L").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2);
|
|
2616
|
+
var svgData = "\n M".concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n L").concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n C").concat(middle.currentX, ",").concat(start.currentY + start.currentH / 2, "\n ").concat(middle.currentX, ",").concat(end.currentY + end.currentH / 2, "\n ").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2, "\n L").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2, "\n L").concat(end.currentX + wIn, ",").concat(end.currentY + end.currentH / 2);
|
|
2591
2617
|
edgeElement.setAttribute('d', svgData);
|
|
2592
2618
|
}
|
|
2593
2619
|
}
|
|
@@ -2622,7 +2648,10 @@ var Graph = /*#__PURE__*/function (_React$Component) {
|
|
|
2622
2648
|
ref: function ref(c) {
|
|
2623
2649
|
_this8.viewport = c;
|
|
2624
2650
|
}
|
|
2625
|
-
}, React.createElement(
|
|
2651
|
+
}, React.createElement(Edges_1.default, {
|
|
2652
|
+
edges: newEdges,
|
|
2653
|
+
linkWidth: linkWidth
|
|
2654
|
+
}), React.createElement(Nodes_1.default, {
|
|
2626
2655
|
nodes: nodes,
|
|
2627
2656
|
onNodeClick: function onNodeClick(k) {
|
|
2628
2657
|
return _this8.handleMouseClick(k);
|
|
@@ -2637,9 +2666,6 @@ var Graph = /*#__PURE__*/function (_React$Component) {
|
|
|
2637
2666
|
showValueCounts: showValueCounts,
|
|
2638
2667
|
metadataFields: metadataFields,
|
|
2639
2668
|
metadataColumns: metadataColumns
|
|
2640
|
-
}), React.createElement(Edges_1.default, {
|
|
2641
|
-
edges: newEdges,
|
|
2642
|
-
linkWidth: linkWidth
|
|
2643
2669
|
}));
|
|
2644
2670
|
}
|
|
2645
2671
|
}], [{
|
|
@@ -2707,6 +2733,9 @@ var Edges = function Edges(props) {
|
|
|
2707
2733
|
}, edges.map(function (edge) {
|
|
2708
2734
|
key = "edge-".concat(edge.sourceNode, "-").concat(edge.targetNode);
|
|
2709
2735
|
return [React.createElement(GraphStyles_1.StyledEdgesPath, {
|
|
2736
|
+
style: {
|
|
2737
|
+
visibility: edge.isHidden ? 'hidden' : 'visible'
|
|
2738
|
+
},
|
|
2710
2739
|
className: "edge",
|
|
2711
2740
|
key: key,
|
|
2712
2741
|
"data-test": key,
|
|
@@ -2740,6 +2769,9 @@ var Nodes = function Nodes(props) {
|
|
|
2740
2769
|
"data-test": "node-".concat(key),
|
|
2741
2770
|
"data-test-y-index": props.nodes[key].yIndex,
|
|
2742
2771
|
key: key,
|
|
2772
|
+
style: {
|
|
2773
|
+
visibility: props.nodes[key].data.isHidden ? 'hidden' : 'visible'
|
|
2774
|
+
},
|
|
2743
2775
|
onClick: function onClick() {
|
|
2744
2776
|
return props.onNodeClick(key);
|
|
2745
2777
|
},
|