From 2fefd0e4e319804c98e242d7fddc3368aeed0528 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Sat, 13 Jan 2024 13:03:52 +0100 Subject: [PATCH] (control) Add better timestamps for the events and message queue views Adjust display precision based on distance into the past, full ms-accurate timestamps available via hover-action. --- .../control/sys/model/EventLogEntry.java | 16 +++++++++- .../control/sys/model/MessageQueueEntry.java | 30 ++++++++++++++++++- .../control/sys/svc/EventLogService.java | 7 ++--- .../control/sys/svc/MessageQueueService.java | 4 +-- .../control/node/node-storage-list.hdb | 2 +- .../control/partials/message-queue-table.hdb | 6 ++-- 6 files changed, 52 insertions(+), 13 deletions(-) diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/EventLogEntry.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/EventLogEntry.java index 4ca34b71..48bf2a07 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/EventLogEntry.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/EventLogEntry.java @@ -1,12 +1,26 @@ package nu.marginalia.control.sys.model; +import java.sql.Timestamp; +import java.time.LocalDate; + public record EventLogEntry( long id, String serviceName, String instanceFull, - String eventTime, String eventDateTime, String eventType, String eventMessage) { + public String getEventTime() { + String retDateBase = eventDateTime.replace('T', ' '); + + // if another day, return date, hour and minute + if (!eventDateTime.startsWith(LocalDate.now().toString())) { + // return hour minute and seconds + return retDateBase.substring(0, "YYYY-MM-DDTHH:MM".length()); + } + else { // return date, hour and minute but not seconds or ms + return retDateBase.substring("YYYY-MM-DDT".length(), "YYYY-MM-DDTHH:MM:SS".length()); + } + } } diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/MessageQueueEntry.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/MessageQueueEntry.java index 1ff87387..b4158604 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/MessageQueueEntry.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/model/MessageQueueEntry.java @@ -1,5 +1,7 @@ package nu.marginalia.control.sys.model; +import java.time.LocalDate; + public record MessageQueueEntry ( long id, long relatedId, @@ -10,7 +12,7 @@ public record MessageQueueEntry ( String ownerInstanceFull, long ownerTick, String state, - String createdTime, + String updatedTimeFull, String updatedTime, int ttl ) @@ -32,4 +34,30 @@ public record MessageQueueEntry ( default -> ""; }; } + + public String getCreatedTime() { + String retDateBase = updatedTimeFull.replace('T', ' '); + + // if another day, return date, hour and minute + if (!updatedTimeFull.startsWith(LocalDate.now().toString())) { + // return hour minute and seconds + return retDateBase.substring(0, "YYYY-MM-DDTHH:MM".length()); + } + else { // return date, hour and minute but not seconds or ms + return retDateBase.substring("YYYY-MM-DDT".length(), "YYYY-MM-DDTHH:MM:SS".length()); + } + } + + public String getUpdatedTime() { + String retDateBase = updatedTimeFull.replace('T', ' '); + + // if another day, return date, hour and minute + if (!updatedTimeFull.startsWith(LocalDate.now().toString())) { + // return hour minute and seconds + return retDateBase.substring(0, "YYYY-MM-DDTHH:MM".length()); + } + else { // return date, hour and minute but not seconds or ms + return retDateBase.substring("YYYY-MM-DDT".length(), "YYYY-MM-DDTHH:MM:SS".length()); + } + } } diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/EventLogService.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/EventLogService.java index c4b42bf3..ed349ba7 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/EventLogService.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/EventLogService.java @@ -11,6 +11,7 @@ import spark.Request; import spark.Response; import java.sql.SQLException; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -108,7 +109,6 @@ public class EventLogService { rs.getLong("ID"), rs.getString("SERVICE_NAME"), rs.getString("INSTANCE"), - rs.getTimestamp("EVENT_TIME").toLocalDateTime().toLocalTime().toString(), rs.getTimestamp("EVENT_TIME").toLocalDateTime().toString(), rs.getString("EVENT_TYPE"), rs.getString("EVENT_MESSAGE") @@ -143,7 +143,6 @@ public class EventLogService { rs.getLong("ID"), rs.getString("SERVICE_NAME"), rs.getString("INSTANCE"), - rs.getTimestamp("EVENT_TIME").toLocalDateTime().toLocalTime().toString(), rs.getTimestamp("EVENT_TIME").toLocalDateTime().toString(), rs.getString("EVENT_TYPE"), rs.getString("EVENT_MESSAGE") @@ -155,6 +154,7 @@ public class EventLogService { throw new RuntimeException(ex); } } + public List getLastEntriesForTypeAndService(String typeName, String serviceName, long afterId, int n) { try (var conn = dataSource.getConnection(); var query = conn.prepareStatement(""" @@ -178,7 +178,6 @@ public class EventLogService { rs.getLong("ID"), rs.getString("SERVICE_NAME"), rs.getString("INSTANCE"), - rs.getTimestamp("EVENT_TIME").toLocalDateTime().toLocalTime().toString(), rs.getTimestamp("EVENT_TIME").toLocalDateTime().toString(), rs.getString("EVENT_TYPE"), rs.getString("EVENT_MESSAGE") @@ -214,7 +213,6 @@ public class EventLogService { rs.getLong("ID"), rs.getString("SERVICE_NAME"), rs.getString("INSTANCE"), - rs.getTimestamp("EVENT_TIME").toLocalDateTime().toLocalTime().toString(), rs.getTimestamp("EVENT_TIME").toLocalDateTime().toString(), rs.getString("EVENT_TYPE"), rs.getString("EVENT_MESSAGE") @@ -247,7 +245,6 @@ public class EventLogService { rs.getLong("ID"), rs.getString("SERVICE_NAME"), rs.getString("INSTANCE"), - rs.getTimestamp("EVENT_TIME").toLocalDateTime().toLocalTime().toString(), rs.getTimestamp("EVENT_TIME").toLocalDateTime().toString(), rs.getString("EVENT_TYPE"), rs.getString("EVENT_MESSAGE") diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/MessageQueueService.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/MessageQueueService.java index 53f46012..2f175f95 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/MessageQueueService.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/sys/svc/MessageQueueService.java @@ -364,8 +364,8 @@ public class MessageQueueService { rs.getString("OWNER_INSTANCE"), rs.getLong("OWNER_TICK"), rs.getString("STATE"), - rs.getTimestamp("CREATED_TIME").toLocalDateTime().toLocalTime().toString(), - rs.getTimestamp("UPDATED_TIME").toLocalDateTime().toLocalTime().toString(), + rs.getTimestamp("CREATED_TIME").toLocalDateTime().toString(), + rs.getTimestamp("UPDATED_TIME").toLocalDateTime().toString(), rs.getInt("TTL")); } } diff --git a/code/services-core/control-service/src/main/resources/templates/control/node/node-storage-list.hdb b/code/services-core/control-service/src/main/resources/templates/control/node/node-storage-list.hdb index 5624fa83..eb61e6e6 100644 --- a/code/services-core/control-service/src/main/resources/templates/control/node/node-storage-list.hdb +++ b/code/services-core/control-service/src/main/resources/templates/control/node/node-storage-list.hdb @@ -54,8 +54,8 @@ {{/unless}} - + {{> control/partials/foot-includes }} \ No newline at end of file diff --git a/code/services-core/control-service/src/main/resources/templates/control/partials/message-queue-table.hdb b/code/services-core/control-service/src/main/resources/templates/control/partials/message-queue-table.hdb index f4efbd1e..df36e11b 100644 --- a/code/services-core/control-service/src/main/resources/templates/control/partials/message-queue-table.hdb +++ b/code/services-core/control-service/src/main/resources/templates/control/partials/message-queue-table.hdb @@ -44,7 +44,7 @@ {{recipientInbox}} {{function}} {{{readableUUID ownerInstanceFull}}} - {{createdTime}} + {{createdTime}} {{ttl}} @@ -56,9 +56,9 @@ {{/if}} {{senderInbox}} - {{payload}} + {{payload}} {{ownerTick}} - {{updatedTime}} + {{updatedTime}} {{/each}}