mirror of
https://github.com/kubeshark/kubeshark.git
synced 2026-05-05 16:57:48 +00:00
Co-authored-by: Amit Fainholts <amit@up9.com> Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com> Co-authored-by: Igor Gov <iggvrv@gmail.com>
174 lines
4.1 KiB
TypeScript
174 lines
4.1 KiB
TypeScript
|
|
const minNodeScaling = 10
|
|
const maxNodeScaling = 30
|
|
|
|
const minEdgeScaling = 1
|
|
const maxEdgeScaling = maxNodeScaling / 2
|
|
|
|
const minLabelScaling = 11
|
|
const maxLabelScaling = 16
|
|
const selectedNodeColor = "#0C0B1A"
|
|
const selectedNodeBorderColor = "#205CF5"
|
|
const selectedNodeLabelColor = "#205CF5"
|
|
const selectedEdgeLabelColor = "#205CF5"
|
|
|
|
const customScaling = (min, max, total, value) => {
|
|
if (max === min) {
|
|
return 0.5;
|
|
}
|
|
else {
|
|
const scale = 1 / (max - min);
|
|
return Math.max(0, (value - min) * scale);
|
|
}
|
|
}
|
|
|
|
const nodeSelected = (values, id, selected, hovering) => {
|
|
values.color = selectedNodeColor;
|
|
values.borderColor = selectedNodeBorderColor;
|
|
values.borderWidth = 4;
|
|
}
|
|
|
|
const nodeLabelSelected = (values, id, selected, hovering) => {
|
|
values.size = values.size + 1;
|
|
values.color = selectedNodeLabelColor;
|
|
values.strokeColor = selectedNodeLabelColor;
|
|
values.strokeWidth = 0.2
|
|
}
|
|
|
|
const edgeSelected = (values, id, selected, hovering) => {
|
|
values.opacity = 0.4;
|
|
values.width = values.width + 1;
|
|
}
|
|
|
|
const edgeLabelSelected = (values, id, selected, hovering) => {
|
|
values.size = values.size + 1;
|
|
values.color = selectedEdgeLabelColor;
|
|
values.strokeColor = selectedEdgeLabelColor;
|
|
values.strokeWidth = 0.2
|
|
}
|
|
|
|
const nodeOptions = {
|
|
shape: 'dot',
|
|
chosen: {
|
|
node: nodeSelected,
|
|
label: nodeLabelSelected,
|
|
},
|
|
color: {
|
|
background: '#494677',
|
|
border: selectedNodeColor,
|
|
},
|
|
font: {
|
|
color: selectedNodeColor,
|
|
size: 11, // px
|
|
face: 'Roboto',
|
|
background: '#FFFFFFBF',
|
|
strokeWidth: 0.2, // px
|
|
strokeColor: selectedNodeColor,
|
|
align: 'center',
|
|
multi: false,
|
|
},
|
|
// defines the node min and max sizes when zoom in/out, based on the node value
|
|
scaling: {
|
|
min: minNodeScaling,
|
|
max: maxNodeScaling,
|
|
// defines the label scaling size in px
|
|
label: {
|
|
enabled: true,
|
|
min: minLabelScaling,
|
|
max: maxLabelScaling,
|
|
maxVisible: maxLabelScaling,
|
|
drawThreshold: 5,
|
|
},
|
|
customScalingFunction: customScaling,
|
|
},
|
|
borderWidth: 2,
|
|
labelHighlightBold: true,
|
|
opacity: 1,
|
|
shadow: true,
|
|
}
|
|
|
|
const edgeOptions = {
|
|
chosen: {
|
|
edge: edgeSelected,
|
|
label: edgeLabelSelected,
|
|
},
|
|
dashes: false,
|
|
arrowStrikethrough: false,
|
|
arrows: {
|
|
to: {
|
|
enabled: true,
|
|
},
|
|
middle: {
|
|
enabled: false,
|
|
},
|
|
from: {
|
|
enabled: false,
|
|
}
|
|
},
|
|
smooth: {
|
|
enabled: true,
|
|
type: 'dynamic',
|
|
roundness: 1.0
|
|
},
|
|
font: {
|
|
color: '#000000',
|
|
size: 11, // px
|
|
face: 'Roboto',
|
|
background: '#FFFFFFCC',
|
|
strokeWidth: 0.2, // px
|
|
strokeColor: '#000000',
|
|
align: 'horizontal',
|
|
multi: false,
|
|
},
|
|
scaling: {
|
|
min: minEdgeScaling,
|
|
max: maxEdgeScaling,
|
|
label: {
|
|
enabled: true,
|
|
min: minLabelScaling,
|
|
max: maxLabelScaling,
|
|
maxVisible: maxLabelScaling,
|
|
drawThreshold: 5
|
|
},
|
|
customScalingFunction: customScaling,
|
|
},
|
|
labelHighlightBold: true,
|
|
selectionWidth: 1,
|
|
shadow: true,
|
|
}
|
|
|
|
const ServiceMapOptions = {
|
|
physics: {
|
|
enabled: true,
|
|
solver: 'barnesHut',
|
|
barnesHut: {
|
|
theta: 0.5,
|
|
gravitationalConstant: -2000,
|
|
centralGravity: 0.4,
|
|
springLength: 180,
|
|
springConstant: 0.04,
|
|
damping: 0.2,
|
|
avoidOverlap: 1
|
|
},
|
|
},
|
|
layout: {
|
|
hierarchical: false,
|
|
randomSeed: 1 // always on node 1
|
|
},
|
|
nodes: nodeOptions,
|
|
edges: edgeOptions,
|
|
autoResize: true,
|
|
interaction: {
|
|
selectable: true,
|
|
selectConnectedEdges: true,
|
|
multiselect: true,
|
|
dragNodes: true,
|
|
dragView: true,
|
|
hover: true,
|
|
hoverConnectedEdges: true,
|
|
zoomView: true,
|
|
zoomSpeed: 1,
|
|
},
|
|
};
|
|
|
|
export default ServiceMapOptions |