All files / app/codeCharta/ui/legendPanel/legendMarkedPackages legendMarkedPackages.component.ts

88.23% Statements 15/17
100% Branches 0/0
66.66% Functions 4/6
86.66% Lines 13/15

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 443x 3x 3x 3x 3x 3x   3x                     3x       11x 11x 12x                       4x       1x      
import { Component } from "@angular/core"
import { map, Observable } from "rxjs"
import { KeyValue, AsyncPipe, KeyValuePipe } from "@angular/common"
import { legendMarkedPackagesSelector, MarkedPackagesMap } from "./legendMarkedPackages.selector"
import { markPackages } from "../../../state/store/fileSettings/markedPackages/markedPackages.actions"
import { Store } from "@ngrx/store"
import { CcState } from "../../../codeCharta.model"
import { LabelledColorPickerComponent } from "../../labelledColorPicker/labelledColorPicker.component"
 
type MarkedPackagesMapKeyValue = KeyValue<keyof MarkedPackagesMap, MarkedPackagesMap[keyof MarkedPackagesMap]>
 
@Component({
    selector: "cc-legend-marked-packages",
    templateUrl: "./legendMarkedPackages.component.html",
    styleUrls: ["./legendMarkedPackages.component.scss"],
    standalone: true,
    imports: [LabelledColorPickerComponent, AsyncPipe, KeyValuePipe]
})
export class LegendMarkedPackagesComponent {
    markedPackagesMap$: Observable<MarkedPackagesMap>
    hasMarkedPackages$: Observable<boolean>
 
    constructor(private store: Store<CcState>) {
        this.markedPackagesMap$ = store.select(legendMarkedPackagesSelector)
        this.hasMarkedPackages$ = this.markedPackagesMap$.pipe(map(markedPackagesMap => Object.keys(markedPackagesMap).length > 0))
    }
 
    handleColorChange(newHexColor: string, paths: string[]) {
        this.store.dispatch(
            markPackages({
                packages: paths.map(path => ({ color: newHexColor, path }))
            })
        )
    }
 
    trackMarkedPackage(_: number, { value }: { value: string[] }) {
        return value.join(",")
    }
 
    sortMarkedPackagesMap(kv1: MarkedPackagesMapKeyValue, kv2: MarkedPackagesMapKeyValue) {
        return kv1.value[0].localeCompare(kv2.value[0])
    }
}