All files / app/codeCharta/ui/fileExtensionBar fileExtensionBar.component.ts

96.29% Statements 26/27
66.66% Branches 4/6
83.33% Functions 5/6
96.15% Lines 25/26

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 652x 2x 2x 2x 2x   2x                 2x 3x 3x       3x 3x   3x 3x         2x 2x 2x 2x       2x 2x 2x 2x       2x         2x               1x       1x      
import { Component } from "@angular/core"
import { MetricDistribution, FileExtensionCalculator } from "./selectors/fileExtensionCalculator"
import { metricDistributionSelector } from "./selectors/metricDistribution.selector"
import { ThreeSceneService } from "../codeMap/threeViewer/threeSceneService"
import { Store } from "@ngrx/store"
import { CcState } from "../../codeCharta.model"
import { DistributionMetricChooserComponent } from "./distributionMetricChooser/distributionMetricChooser.component"
 
@Component({
    selector: "cc-file-extension-bar",
    templateUrl: "./fileExtensionBar.component.html",
    styleUrls: ["./fileExtensionBar.component.scss"],
    standalone: true,
    imports: [DistributionMetricChooserComponent]
})
export class FileExtensionBarComponent {
    showAbsoluteValues = false
    showDetails = false
    metricDistribution: MetricDistribution[]
 
    constructor(
        private store: Store<CcState>,
        private threeSceneService: ThreeSceneService
    ) {
        this.store.select(metricDistributionSelector).subscribe(metricDistribution => {
            this.metricDistribution = metricDistribution
        })
    }
 
    onHoverFileExtensionBar(hoveredExtension: string) {
        const visibleFileExtensions = new Set()
        for (const metric of this.metricDistribution) {
            if (metric.fileExtension !== "other") {
                visibleFileExtensions.add(metric.fileExtension)
            }
        }
 
        for (const building of this.threeSceneService.getMapMesh().getMeshDescription().buildings) {
            if (building.node.isLeaf) {
                const buildingExtension = FileExtensionCalculator.estimateFileExtension(building.node.name)
                if (
                    buildingExtension === hoveredExtension ||
                    (hoveredExtension === "other" && !visibleFileExtensions.has(buildingExtension))
                ) {
                    this.threeSceneService.addBuildingToHighlightingList(building)
                }
            }
        }
 
        this.threeSceneService.highlightBuildings()
    }
 
    onUnhoverFileExtensionBar() {
        this.threeSceneService.clearHighlight()
    }
 
    toggleShowDetails() {
        this.showDetails = !this.showDetails
    }
 
    toggleShowAbsoluteValues() {
        this.showAbsoluteValues = !this.showAbsoluteValues
    }
}