From 40e2dddc00736f3a82dcc040f12720a8b041859f Mon Sep 17 00:00:00 2001 From: Donald Zou Date: Fri, 19 Dec 2025 07:04:07 +0800 Subject: [PATCH] Optimize peer tracking table counts API and UI Enhanced the /api/getPeerTrackingTableCounts endpoint to support returning counts for all configurations when no name is provided. Updated frontend components to fetch all tracking data in a single request, improving efficiency and user experience. Bumped dashboard version to 4.3.2. --- src/dashboard.py | 23 ++++++++++++++----- src/modules/DashboardConfig.py | 2 +- src/static/app/package.json | 2 +- ...ashboardWireguardConfigurationTracking.vue | 21 ++++++++++++++++- .../configurationTracking.vue | 10 ++++---- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/dashboard.py b/src/dashboard.py index ec57ef9d..4b6411cd 100644 --- a/src/dashboard.py +++ b/src/dashboard.py @@ -1109,13 +1109,24 @@ def API_GetPeerTraffics(): @app.get(f'{APP_PREFIX}/api/getPeerTrackingTableCounts') def API_GetPeerTrackingTableCounts(): configurationName = request.args.get("configurationName") - if configurationName not in WireguardConfigurations.keys(): + if configurationName and configurationName not in WireguardConfigurations.keys(): return ResponseObject(False, "Configuration does not exist") - c = WireguardConfigurations.get(configurationName) - return ResponseObject(data={ - "TrafficTrackingTableSize": c.getTransferTableSize(), - "HistoricalTrackingTableSize": c.getHistoricalEndpointTableSize() - }) + + if configurationName: + c = WireguardConfigurations.get(configurationName) + return ResponseObject(data={ + "TrafficTrackingTableSize": c.getTransferTableSize(), + "HistoricalTrackingTableSize": c.getHistoricalEndpointTableSize() + }) + + d = {} + for i in WireguardConfigurations.keys(): + c = WireguardConfigurations.get(i) + d[i] = { + "TrafficTrackingTableSize": c.getTransferTableSize(), + "HistoricalTrackingTableSize": c.getHistoricalEndpointTableSize() + } + return ResponseObject(data=d) @app.get(f'{APP_PREFIX}/api/downloadPeerTrackingTable') def API_DownloadPeerTackingTable(): diff --git a/src/modules/DashboardConfig.py b/src/modules/DashboardConfig.py index 8a910d5a..5fe28626 100644 --- a/src/modules/DashboardConfig.py +++ b/src/modules/DashboardConfig.py @@ -16,7 +16,7 @@ from .DashboardAPIKey import DashboardAPIKey class DashboardConfig: - DashboardVersion = 'v4.3.1' + DashboardVersion = 'v4.3.2' ConfigurationPath = os.getenv('CONFIGURATION_PATH', '.') ConfigurationFilePath = os.path.join(ConfigurationPath, 'wg-dashboard.ini') diff --git a/src/static/app/package.json b/src/static/app/package.json index 0c68e6a8..cd07b58b 100644 --- a/src/static/app/package.json +++ b/src/static/app/package.json @@ -1,6 +1,6 @@ { "name": "app", - "version": "4.3.1", + "version": "4.3.2", "private": true, "type": "module", "module": "es2022", diff --git a/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTracking.vue b/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTracking.vue index 03ea3846..64ed3c6d 100644 --- a/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTracking.vue +++ b/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTracking.vue @@ -4,8 +4,20 @@ import LocaleText from "@/components/text/localeText.vue"; import ConfigurationTracking from "@/components/settingsComponent/dashboardWireguardConfigurationTrackingComponents/configurationTracking.vue"; import {WireguardConfigurationsStore} from "@/stores/WireguardConfigurationsStore.js"; +import {onMounted, ref} from "vue"; +import {fetchGet} from "@/utilities/fetch.js"; const store = WireguardConfigurationsStore() +const loaded = ref(false) +const trackingData = ref({}) +onMounted(async () => { + await fetchGet("/api/getPeerTrackingTableCounts", {}, (ref) => { + if (ref.status){ + trackingData.value = ref.data + } + loaded.value = true + }) +}) diff --git a/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTrackingComponents/configurationTracking.vue b/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTrackingComponents/configurationTracking.vue index 70b574bd..7bd87438 100644 --- a/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTrackingComponents/configurationTracking.vue +++ b/src/static/app/src/components/settingsComponent/dashboardWireguardConfigurationTrackingComponents/configurationTracking.vue @@ -4,7 +4,7 @@ import {onMounted, ref, watch} from "vue"; import LocaleText from "@/components/text/localeText.vue"; import {DashboardConfigurationStore} from "@/stores/DashboardConfigurationStore.js"; -const props = defineProps(['configuration']) +const props = defineProps(['configuration', 'trackingData']) const sizes = ref({ HistoricalTrackingTableSize: 0, TrafficTrackingTableSize: 0 @@ -13,16 +13,15 @@ const sizeDataLoaded = ref(false) const toggling = ref(false) await onMounted(async () => { - await loadSizeData(); + sizes.value = props.trackingData[props.configuration.Name] }) const loadSizeData = async () => { - sizeDataLoaded.value = false; + await fetchGet("/api/getPeerTrackingTableCounts", { configurationName: props.configuration.Name }, (res) => { sizes.value = res.data; - sizeDataLoaded.value = true; }) } @@ -148,8 +147,7 @@ const deleteRecord = async (key) => {
-
-
+
{{ sizes.HistoricalTrackingTableSize }}