From 413ff8faf465c8e3d294db571c843c1913d84ea1 Mon Sep 17 00:00:00 2001 From: Benedikt Mehl Date: Thu, 30 Jan 2025 13:16:03 +0100 Subject: [PATCH] Fix bug #3900 --- .../visibleFileStates.selector.ts | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/visualization/app/codeCharta/state/selectors/visibleFileStates/visibleFileStates.selector.ts b/visualization/app/codeCharta/state/selectors/visibleFileStates/visibleFileStates.selector.ts index ca5bfa49e3..a85dee7afb 100644 --- a/visualization/app/codeCharta/state/selectors/visibleFileStates/visibleFileStates.selector.ts +++ b/visualization/app/codeCharta/state/selectors/visibleFileStates/visibleFileStates.selector.ts @@ -3,8 +3,7 @@ import { createSelectorFactory, defaultMemoize } from "@ngrx/store" import { filesSelector } from "../../store/files/files.selector" import { getVisibleFileStates, isDeltaState } from "../../../model/files/files.helper" -function removeMatch(array: string[], target: string): string[] { - const matchIndex = array.indexOf(target) +function removeMatch(array: T[], matchIndex: number): T[] { return [...array.slice(0, matchIndex), ...array.slice(matchIndex + 1)] } @@ -21,12 +20,29 @@ export function onlyVisibleFilesMatterComparer(fileStates1: FileState[], fileSta return false } + if (isDeltaState(fileStates1) || isDeltaState(fileStates2)) { + const referenceFile1 = fileStates1.find(file => file.selectedAs === FileSelectionState.Reference) + const referenceFile2 = fileStates2.find(file => file.selectedAs === FileSelectionState.Reference) + console.log(referenceFile1, referenceFile2) + if (referenceFile1.file.fileMeta.fileChecksum !== referenceFile2.file.fileMeta.fileChecksum) { + return false + } + + const comparisonFile1 = fileStates1.find(file => file.selectedAs === FileSelectionState.Comparison) + const comparisonFile2 = fileStates2.find(file => file.selectedAs === FileSelectionState.Comparison) + console.log(comparisonFile1, comparisonFile2) + if (comparisonFile1.file.fileMeta.fileChecksum !== comparisonFile2.file.fileMeta.fileChecksum) { + return false + } + return true + } + const visibleFileStates1 = fileStates1 - .filter(file => file.selectedAs !== FileSelectionState.None) - .map(file => file.file.fileMeta.fileName) + .filter(file => file.selectedAs === FileSelectionState.Partial) + .map(file => file.file.fileMeta.fileChecksum) let visibleFileStates2 = fileStates2 - .filter(file => file.selectedAs !== FileSelectionState.None) - .map(file => file.file.fileMeta.fileName) + .filter(file => file.selectedAs === FileSelectionState.Partial) + .map(file => file.file.fileMeta.fileChecksum) if (visibleFileStates1.length !== visibleFileStates2.length) { return false @@ -37,8 +53,9 @@ export function onlyVisibleFilesMatterComparer(fileStates1: FileState[], fileSta return false } - if (visibleFileStates2.includes(arrayMember)) { - visibleFileStates2 = removeMatch(visibleFileStates2, arrayMember) + const matchIndex = visibleFileStates2.indexOf(arrayMember) + if (matchIndex >= 0) { + visibleFileStates2 = removeMatch(visibleFileStates2, matchIndex) return true }