All files / app/codeCharta/ui/ribbonBar/artificialIntelligence/suspiciousMetrics/suspiciousMetricsMenu/suspiciousMetricsList suspiciousMetricsList.component.ts

97.05% Statements 33/34
100% Branches 10/10
80% Functions 4/5
96.96% Lines 32/33

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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 833x 3x   3x 3x 3x 3x 3x 3x 3x   3x 3x   3x 3x 3x                 3x           14x     14x 14x               2x 2x 2x 2x               2x                 2x       84x 84x 62x   22x       146x 146x 124x   22x      
import { Component, Input } from "@angular/core"
import { metricTitles } from "../../../../../../util/metric/metricTitles"
import { MetricSuggestionParameters } from "../../../selectors/util/suspiciousMetricsHelper"
import { setAreaMetric } from "../../../../../../state/store/dynamicSettings/areaMetric/areaMetric.actions"
import { AREA_METRIC } from "../../../selectors/util/riskProfileHelper"
import { setHeightMetric } from "../../../../../../state/store/dynamicSettings/heightMetric/heightMetric.actions"
import { setColorMetric } from "../../../../../../state/store/dynamicSettings/colorMetric/colorMetric.actions"
import { setColorRange } from "../../../../../../state/store/dynamicSettings/colorRange/colorRange.actions"
import { setMapColors } from "../../../../../../state/store/appSettings/mapColors/mapColors.actions"
import { defaultMapColors } from "../../../../../../state/store/appSettings/mapColors/mapColors.reducer"
import { ArtificialIntelligenceData } from "../../../selectors/artificialIntelligence.selector"
import { Store } from "@ngrx/store"
import { MatDialog } from "@angular/material/dialog"
import { MatMenuTrigger } from "@angular/material/menu"
import { NgClass } from "@angular/common"
import { MatButtonToggleGroup, MatButtonToggle } from "@angular/material/button-toggle"
import { TruncateTextPipe } from "../../../../../../util/pipes/truncateText.pipe"
 
@Component({
    selector: "cc-suspicious-metrics-list",
    templateUrl: "./suspiciousMetricsList.component.html",
    styleUrls: ["./suspiciousMetricsList.component.scss"],
    standalone: true,
    imports: [NgClass, MatButtonToggleGroup, MatButtonToggle, TruncateTextPipe]
})
export class SuspiciousMetricsListComponent {
    @Input() matMenuTriggerReference: MatMenuTrigger
    @Input() data: Pick<
        ArtificialIntelligenceData,
        "analyzedProgrammingLanguage" | "unsuspiciousMetrics" | "suspiciousMetricSuggestionLinks" | "untrackedMetrics"
    >
    isSuspiciuosMetricsVisible = true
 
    constructor(
        private store: Store,
        public dialog: MatDialog
    ) {}
 
    toggleSuspiciousMetricsVisibility(): void {
        this.isSuspiciuosMetricsVisible = !this.isSuspiciuosMetricsVisible
    }
 
    applySuspiciousMetric(metric: MetricSuggestionParameters, markOutlier: boolean) {
        this.store.dispatch(setAreaMetric({ value: AREA_METRIC }))
        this.store.dispatch(setHeightMetric({ value: metric.metric }))
        this.store.dispatch(setColorMetric({ value: metric.metric }))
        this.store.dispatch(
            setColorRange({
                value: {
                    from: metric.from,
                    to: markOutlier ? metric.outlierThreshold : metric.to
                }
            })
        )
        this.store.dispatch(
            setMapColors({
                value: {
                    positive: markOutlier ? "#ffffff" : defaultMapColors.positive,
                    neutral: markOutlier ? "#ffffff" : defaultMapColors.neutral,
                    negative: markOutlier ? "#A900C0" : defaultMapColors.negative
                }
            })
        )
        this.matMenuTriggerReference.closeMenu()
    }
 
    getNameAndDescriptionOfMetric(metricName: string): string {
        const metricDescription = metricTitles.get(metricName)
        if (metricDescription) {
            return `${metricName.toUpperCase()} (${metricDescription.toLowerCase()})`
        }
        return metricName.toUpperCase()
    }
 
    getDescriptionOfMetric(metricName: string): string {
        const metricDescription = metricTitles.get(metricName)
        if (metricDescription) {
            return `${metricDescription.toLowerCase()}`
        }
        return ""
    }
}