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 | 82x 82x 82x 82x 82x 82x 82x 82x 82x 82x 82x 82x 82x 82x 19x 19x 82x 4x 2x 2x 2x 2x 1x 1x | import { CodeMapNode, FileMeta } from "../../../codeCharta.model"
import { FileState } from "../../../model/files/files"
import { fileStatesAvailable, isDeltaState, isPartialState } from "../../../model/files/files.helper"
import { AggregationGenerator } from "../../../util/aggregationGenerator"
import { NodeDecorator } from "../../../util/nodeDecorator"
import { metricNamesSelector } from "./metricData/metricNames.selector"
import { getDeltaFile } from "./utils/getDeltaFile"
import { addEdgeMetricsForLeaves } from "./utils/addEdgeMetricsForLeaves"
import { blacklistSelector } from "../../store/fileSettings/blacklist/blacklist.selector"
import { attributeTypesSelector } from "../../store/fileSettings/attributeTypes/attributeTypes.selector"
import { visibleFileStatesSelector } from "../visibleFileStates/visibleFileStates.selector"
import { metricDataSelector } from "./metricData/metricData.selector"
import { createSelector } from "@ngrx/store"
import { clone } from "../../../util/clone"
const accumulatedDataFallback: AccumulatedData = Object.freeze({
unifiedMapNode: undefined,
unifiedFileMeta: undefined
})
export type AccumulatedData = { unifiedMapNode: CodeMapNode | undefined; unifiedFileMeta: FileMeta | undefined }
export const accumulatedDataSelector = createSelector(
metricDataSelector,
visibleFileStatesSelector,
attributeTypesSelector,
blacklistSelector,
metricNamesSelector,
(metricData, fileStates, attributeTypes, blacklist, metricNames) => {
if (!fileStatesAvailable(fileStates) || !metricData.nodeMetricData) {
return accumulatedDataFallback
}
const data = _getUndecoratedAccumulatedData(clone(fileStates))
Iif (!data?.map) {
return accumulatedDataFallback
}
NodeDecorator.decorateMap(data.map, metricData, blacklist)
addEdgeMetricsForLeaves(metricData.nodeEdgeMetricsMap, data.map, metricNames)
NodeDecorator.decorateParentNodesWithAggregatedAttributes(data.map, isDeltaState(fileStates), attributeTypes)
return {
unifiedMapNode: data.map,
unifiedFileMeta: data.fileMeta
}
}
)
export const _getUndecoratedAccumulatedData = (fileStates: FileState[]) => {
if (isPartialState(fileStates)) {
return AggregationGenerator.calculateAggregationFile(fileStates)
}
if (isDeltaState(fileStates)) {
const [reference, comparison] = fileStates
if (comparison && reference.file.map.name !== comparison.file.map.name) {
return AggregationGenerator.calculateAggregationFile(fileStates)
}
return getDeltaFile(fileStates)
}
}
|