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 | 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 4x 4x 4x 7x 3x 2x 5x 2x 2x 2x 1x 2x 2x 2x | import { Injectable } from "@angular/core"
import { createEffect } from "@ngrx/effects"
import { Store } from "@ngrx/store"
import { filter, map, tap, withLatestFrom } from "rxjs"
import { CcState, NodeMetricData } from "../../../codeCharta.model"
import { metricDataSelector } from "../../selectors/accumulatedData/metricData/metricData.selector"
import { areChosenMetricsAvailableSelector } from "../../selectors/allNecessaryRenderDataAvailable/areAllNecessaryRenderDataAvailable.selector"
import { setAreaMetric } from "../../store/dynamicSettings/areaMetric/areaMetric.actions"
import { setColorMetric } from "../../store/dynamicSettings/colorMetric/colorMetric.actions"
import { setDistributionMetric } from "../../store/dynamicSettings/distributionMetric/distributionMetric.actions"
import { setHeightMetric } from "../../store/dynamicSettings/heightMetric/heightMetric.actions"
import { getDefaultDistribution } from "./utils/getDefaultDistributionMetric"
import { defaultNMetrics, isAnyMetricAvailable, preselectCombination } from "./utils/metricHelper"
@Injectable()
export class ResetChosenMetricsEffect {
constructor(private store: Store<CcState>) {}
resetChosenDistributionMetric$ = createEffect(
() =>
this.store.select(metricDataSelector).pipe(
map(metricData => metricData.nodeMetricData),
filter(isAnyMetricAvailable),
withLatestFrom(this.store.select(areChosenMetricsAvailableSelector)),
filter(([, areChosenMetricsAvailable]) => !areChosenMetricsAvailable),
tap(([nodeMetricData]) => {
setDefaultMetrics(this.store, nodeMetricData)
})
),
{ dispatch: false }
)
}
export function setDefaultMetrics(store: Store<CcState>, nodeMetricData: NodeMetricData[]) {
store.dispatch(setDistributionMetric({ value: getDefaultDistribution(nodeMetricData) }))
let [defaultedAreaMetric, defaultedHeightMetric, defaultedColorMetric] = preselectCombination(nodeMetricData)
if (!defaultedAreaMetric || !defaultedHeightMetric || !defaultedColorMetric) {
;[defaultedAreaMetric, defaultedHeightMetric, defaultedColorMetric] = defaultNMetrics(nodeMetricData, 3)
}
store.dispatch(setAreaMetric({ value: defaultedAreaMetric }))
store.dispatch(setHeightMetric({ value: defaultedHeightMetric }))
store.dispatch(setColorMetric({ value: defaultedColorMetric }))
}
|