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 62 63 64 | 6x 6x 6x 9x 6x 2x 2x 2x 6x 6x 4x 4x 8x 4x 4x 4x 4x 1x 3x 1x 2x 2x 2x 6x 4x 4x 8x 4x 12x 32x 10x 10x 4x | import { NodeMetricData, RecursivePartial, Settings } from "../../../../codeCharta.model" const sizeMetrics = ["rloc", "real_lines_of_code", "loc", "lines_of_code", "lines", "statements", "functions"] const complexityMetrics = [ "complexity", "mcc", "cognitive_complexity", "sonar_complexity", "sonar_cognitive_complexity", "max_nesting_level", "indentation_level" ] export function isAnyMetricAvailable<T extends Pick<NodeMetricData, "maxValue">[]>(metricData: T) { return metricData.some(x => x.maxValue > 0) } export function areScenarioSettingsApplicable(scenario: RecursivePartial<Settings>, nodeMetricData: Pick<NodeMetricData, "name">[]) { const { areaMetric, heightMetric, colorMetric } = scenario.dynamicSettings const relevantMetrics = [areaMetric, heightMetric, colorMetric] const existingMetrics = new Set(nodeMetricData.map(x => x.name)) return relevantMetrics.every(relevantMetric => existingMetrics.has(relevantMetric)) } export function defaultNMetrics<T extends Pick<NodeMetricData, "maxValue" | "name">>(metricData: T[], n: number) { const defaultedMetrics: string[] = [] let lastMetricNameWithValue: string for (const metric of metricData) { if (!metric.maxValue) { continue } defaultedMetrics.push(metric.name) lastMetricNameWithValue = metric.name if (--n === 0) { return defaultedMetrics } } if (!lastMetricNameWithValue) { throw new Error("there are no metrics available") } while (n-- > 0) { defaultedMetrics.push(lastMetricNameWithValue) } return defaultedMetrics } export function preselectCombination(nodeMetricData: Pick<NodeMetricData, "name">[]) { const preselectCombinationMetrics: string[] = [] // combinations might be a parameter for this function for different scenarios const combination = { AreaMetric: sizeMetrics, HeightMetric: complexityMetrics, ColorMetric: complexityMetrics } const nodeMetricSet = new Set(nodeMetricData.map(data => data.name)) for (const key in combination) { for (const metric of combination[key]) { if (nodeMetricSet.has(metric)) { preselectCombinationMetrics.push(metric) break } } } return preselectCombinationMetrics } |