All files / app/codeCharta/ui/resetMapButton/confirmResetMapDialog confirmResetMapDialog.component.ts

97.29% Statements 36/37
100% Branches 2/2
100% Functions 4/4
97.22% Lines 35/36

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 684x 4x 4x 4x   4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x               4x 3x     3x 3x 3x 3x       2x 2x   2x 2x 1x 1x 1x 1x         1x     2x       2x         2x 2x            
import { HttpClient } from "@angular/common/http"
import { Component } from "@angular/core"
import { Store } from "@ngrx/store"
import { first, tap } from "rxjs"
import { CcState } from "../../../codeCharta.model"
import { LoadFileService } from "../../../services/loadFile/loadFile.service"
import { LoadInitialFileService, sampleFile1, sampleFile2 } from "../../../services/loadInitialFile/loadInitialFile.service"
import { UrlExtractor } from "../../../services/loadInitialFile/urlExtractor"
import { setDefaultMetrics } from "../../../state/effects/resetChosenMetrics/resetChosenMetrics.effect"
import { metricDataSelector } from "../../../state/selectors/accumulatedData/metricData/metricData.selector"
import { setState } from "../../../state/store/state.actions"
import { defaultState } from "../../../state/store/state.manager"
import { deleteCcState } from "../../../util/indexedDB/indexedDBWriter"
import { MatToolbar } from "@angular/material/toolbar"
import { CdkScrollable } from "@angular/cdk/scrolling"
import { MatDialogContent, MatDialogActions, MatDialogClose } from "@angular/material/dialog"
import { MatButton } from "@angular/material/button"
 
@Component({
    selector: "cc-confirm-reset-map-dialog",
    templateUrl: "./confirmResetMapDialog.component.html",
    standalone: true,
    imports: [MatToolbar, CdkScrollable, MatDialogContent, MatDialogActions, MatButton, MatDialogClose]
})
export class ConfirmResetMapDialogComponent {
    private urlUtils = new UrlExtractor(this.httpClient)
 
    constructor(
        private store: Store<CcState>,
        private httpClient: HttpClient,
        private loadFileService: LoadFileService,
        private loadInitialFileService: LoadInitialFileService
    ) {}
 
    async resetMap() {
        await deleteCcState()
        this.store.dispatch(setState({ value: defaultState }))
 
        const isFileQueryParameterPresent = this.loadInitialFileService.checkFileQueryParameterPresent()
        if (isFileQueryParameterPresent) {
            try {
                const urlNameDataPairs = await this.urlUtils.getFileDataFromQueryParam()
                this.loadFileService.loadFiles(urlNameDataPairs)
                this.loadInitialFileService.setRenderStateFromUrl()
            } catch {
                this.loadFileService.loadFiles([sampleFile1, sampleFile2])
            }
        } else {
            this.loadFileService.loadFiles([sampleFile1, sampleFile2])
        }
 
        this.resetMetrics()
    }
 
    private resetMetrics() {
        this.store
            .select(metricDataSelector)
            .pipe(
                first(),
                tap(metricData => {
                    const nodeMetricData = metricData.nodeMetricData
                    setDefaultMetrics(this.store, nodeMetricData)
                })
            )
            .subscribe()
    }
}