From 8690265fa051e5e7326b0e8339936128c1b7b9c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=97=A0=E9=97=BB=E9=A3=8E?= Date: Tue, 16 Jun 2026 20:49:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AD=BE=E5=88=B0=E6=97=A5?= =?UTF-8?q?=E5=8E=86=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude --- meshmap_frontend/src/api.ts | 5 + .../src/components/SignedPage.vue | 130 +++++++++++++++++- meshmap_frontend/src/style.css | 110 ++++++++++++++- meshmap_frontend/src/types.ts | 5 + sign_store.go | 18 +++ web.go | 12 ++ 6 files changed, 275 insertions(+), 5 deletions(-) diff --git a/meshmap_frontend/src/api.ts b/meshmap_frontend/src/api.ts index 9bacdf4..3f987a6 100644 --- a/meshmap_frontend/src/api.ts +++ b/meshmap_frontend/src/api.ts @@ -40,6 +40,7 @@ import type { PositionRecord, PublicMapTileSourceResponse, PublicMapTileSourcesResponse, + SignDayCount, SignRecord, SignRecordPayload, TelemetryRecord, @@ -173,6 +174,10 @@ export function getSignRecords(limit = 100, offset = 0, nodeIdOrOptions: string return getJSON>(listPath('/api/signs', limit, offset, nodeIdOrOptions)) } +export function getSignDailyCounts(nodeIdOrOptions: string | ListQueryOptions = ''): Promise> { + return getJSON>(listPath('/api/signs/daily', 500, 0, nodeIdOrOptions)) +} + export function getAdminSignRecords(limit = 100, offset = 0, nodeIdOrOptions: string | ListQueryOptions = ''): Promise> { return getJSON>(listPath('/api/admin/signs', limit, offset, nodeIdOrOptions)) } diff --git a/meshmap_frontend/src/components/SignedPage.vue b/meshmap_frontend/src/components/SignedPage.vue index 9cd3e79..a2e2baa 100644 --- a/meshmap_frontend/src/components/SignedPage.vue +++ b/meshmap_frontend/src/components/SignedPage.vue @@ -1,19 +1,61 @@