From 4f660ff08c1f6ac36487eee86707730c42583219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Mon, 9 Mar 2026 14:19:50 +0800 Subject: [PATCH] Add optional chaining for file.parent access across 5 files Co-Authored-By: Claude Opus 4.6 --- src/components/Discover/StatusBar.vue | 5 +++-- src/views/Compare/MapCompare.vue | 6 +++--- src/views/Discover/Map/MapPage.vue | 6 +++--- src/views/Discover/Performance/PerformancePage.vue | 2 +- src/views/Files/FilesPage.vue | 4 ++-- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/components/Discover/StatusBar.vue b/src/components/Discover/StatusBar.vue index e6a675a..7d5d7b5 100644 --- a/src/components/Discover/StatusBar.vue +++ b/src/components/Discover/StatusBar.vue @@ -184,6 +184,7 @@ function getPercentLabel(val) { /** Transforms raw stats into display-ready format with localized numbers and time labels. */ function getStatData() { + if (!stats.value) return; statData.value = { cases: { count: stats.value.cases.count.toLocaleString("en-US"), @@ -225,10 +226,10 @@ onMounted(async () => { switch (params.type) { case "log": - logId.value = isCheckPage ? file.parent.id : params.fileId; + logId.value = isCheckPage ? file.parent?.id : params.fileId; break; case "filter": - createFilterId.value = isCheckPage ? file.parent.id : params.fileId; + createFilterId.value = isCheckPage ? file.parent?.id : params.fileId; break; } await allMapDataStore.getAllMapData(); diff --git a/src/views/Compare/MapCompare.vue b/src/views/Compare/MapCompare.vue index d6a3f5d..fcf62d5 100644 --- a/src/views/Compare/MapCompare.vue +++ b/src/views/Compare/MapCompare.vue @@ -595,15 +595,15 @@ function setActivityBgImage(mapData) { logId.value = routeParams.fileId; baseLogId.value = routeParams.fileId; } else { - logId.value = file.parent.id; - baseLogId.value = file.parent.id; + logId.value = file.parent?.id; + baseLogId.value = file.parent?.id; } break; case "filter": if (!isCheckPage) { createFilterId.value = routeParams.fileId; } else { - createFilterId.value = file.parent.id; + createFilterId.value = file.parent?.id; } await allMapDataStore.fetchFunnel(createFilterId.value); isRuleData.value = Array.from(temporaryData.value); diff --git a/src/views/Discover/Map/MapPage.vue b/src/views/Discover/Map/MapPage.vue index 88da852..c6ce7c2 100644 --- a/src/views/Discover/Map/MapPage.vue +++ b/src/views/Discover/Map/MapPage.vue @@ -583,15 +583,15 @@ function setActivityBgImage(mapData) { logId.value = routeParams.fileId; baseLogId.value = routeParams.fileId; } else { - logId.value = file.parent.id; - baseLogId.value = file.parent.id; + logId.value = file.parent?.id; + baseLogId.value = file.parent?.id; } break; case "filter": if (!isCheckPage) { createFilterId.value = routeParams.fileId; } else { - createFilterId.value = file.parent.id; + createFilterId.value = file.parent?.id; } await allMapDataStore.fetchFunnel(createFilterId.value); isRuleData.value = Array.from(temporaryData.value); diff --git a/src/views/Discover/Performance/PerformancePage.vue b/src/views/Discover/Performance/PerformancePage.vue index 9216dda..ab75c81 100644 --- a/src/views/Discover/Performance/PerformancePage.vue +++ b/src/views/Discover/Performance/PerformancePage.vue @@ -1062,7 +1062,7 @@ function getAvgWaitingTimeLineChart(chartData, content, yUnit) { if (!isCheckPage) { id = routeParams.fileId; } else { - id = file.parent.id; + id = file.parent?.id; } // Fetch Performance Data diff --git a/src/views/Files/FilesPage.vue b/src/views/Files/FilesPage.vue index e19a07a..67b2e2a 100644 --- a/src/views/Files/FilesPage.vue +++ b/src/views/Files/FilesPage.vue @@ -657,7 +657,7 @@ function enterDiscover(file) { break; case "filter": createFilterId.value = file.id; - baseLogId.value = file.parent.id; + baseLogId.value = file.parent?.id; fileId = file.id; type = file.type; params = { type: type, fileId: fileId }; @@ -666,7 +666,7 @@ function enterDiscover(file) { case "log-check": case "filter-check": fileId = file.id; - type = file.parent.type; + type = file.parent?.type; params = { type: type, fileId: fileId }; router.push({ name: "CheckConformance", params: params }); break;