Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 139x 139x 139x 139x 139x 31x 23x 8x 8x 8x 8x 8x 26x 14x 42x 42x 42x 24x 42x 42x 30x 42x 34x 8x 8x 8x 8x 31x 8x 8x | import { hierarchy } from "d3-hierarchy"
import { BlacklistItem, NodeMetricData } from "../../../../codeCharta.model"
import { FileState } from "../../../../model/files/files"
import { isLeaf, isPathBlacklisted } from "../../../../util/codeMapHelper"
import { sortByMetricName } from "./sortByMetricName"
export const UNARY_METRIC = "unary"
export const calculateNodeMetricData = (visibleFileStates: FileState[], blacklist: BlacklistItem[]) => {
if (visibleFileStates.length === 0) {
return []
}
const metricValues: Map<string, number[]> = new Map()
const metricMaxValues: Map<string, number> = new Map()
const metricMinValues: Map<string, number> = new Map()
for (const { file } of visibleFileStates) {
for (const node of hierarchy(file.map)) {
if (isLeaf(node) && node.data.path && !isPathBlacklisted(node.data.path, blacklist, "exclude")) {
for (const metric of Object.keys(node.data.attributes)) {
const maxValue = metricMaxValues.get(metric)
const minValue = metricMinValues.get(metric)
if (!metricValues.get(metric)) {
metricValues.set(metric, [])
}
metricValues.get(metric).push(node.data.attributes[metric])
if (minValue === undefined || minValue >= node.data.attributes[metric]) {
metricMinValues.set(metric, node.data.attributes[metric])
}
if (maxValue === undefined || maxValue <= node.data.attributes[metric]) {
metricMaxValues.set(metric, node.data.attributes[metric])
}
}
}
}
}
const metricData: NodeMetricData[] = []
// TODO: Remove the unary metric.
metricMaxValues.set(UNARY_METRIC, 1)
metricMinValues.set(UNARY_METRIC, 1)
for (const [key, value] of metricMaxValues) {
metricData.push({
name: key,
values: metricValues.get(key),
maxValue: value,
minValue: metricMinValues.get(key)
})
}
sortByMetricName(metricData)
return metricData
}
|