Преглед на файлове

fix: Logs were being displayed in the wrong order

jamesread преди 7 месеца
родител
ревизия
5b57cf2480
променени са 2 файла, в които са добавени 21 реда и са изтрити 11 реда
  1. 14 6
      frontend/resources/vue/views/LogsListView.vue
  2. 7 5
      service/internal/executor/executor.go

+ 14 - 6
frontend/resources/vue/views/LogsListView.vue

@@ -81,13 +81,21 @@ const totalCount = ref(0)
 const { t } = useI18n()
 const { t } = useI18n()
 
 
 const filteredLogs = computed(() => {
 const filteredLogs = computed(() => {
-  if (!searchText.value) {
-    return logs.value
+  let result = logs.value
+  
+  if (searchText.value) {
+    const searchLower = searchText.value.toLowerCase()
+    result = logs.value.filter(log =>
+      log.actionTitle.toLowerCase().includes(searchLower)
+    )
   }
   }
-  const searchLower = searchText.value.toLowerCase()
-  return logs.value.filter(log =>
-    log.actionTitle.toLowerCase().includes(searchLower)
-  )
+  
+  // Sort by timestamp with most recent first
+  return [...result].sort((a, b) => {
+    const dateA = a.datetimeStarted ? new Date(a.datetimeStarted).getTime() : 0
+    const dateB = b.datetimeStarted ? new Date(b.datetimeStarted).getTime() : 0
+    return dateB - dateA // Descending order (most recent first)
+  })
 })
 })
 
 
 async function fetchLogs() {
 async function fetchLogs() {

+ 7 - 5
service/internal/executor/executor.go

@@ -237,11 +237,14 @@ func isLogEntryAllowedByACL(cfg *config.Config, user *acl.AuthenticatedUser, ent
 // filterLogsByACL builds a filtered list of logs in reverse-chronological order
 // filterLogsByACL builds a filtered list of logs in reverse-chronological order
 // that are visible to the user based on ACL rules.
 // that are visible to the user based on ACL rules.
 func (e *Executor) filterLogsByACL(cfg *config.Config, user *acl.AuthenticatedUser) []*InternalLogEntry {
 func (e *Executor) filterLogsByACL(cfg *config.Config, user *acl.AuthenticatedUser) []*InternalLogEntry {
-	filtered := make([]*InternalLogEntry, 0)
-
 	e.logmutex.RLock()
 	e.logmutex.RLock()
-	for i := len(e.logsTrackingIdsByDate) - 1; i >= 0; i-- {
-		entry := e.logs[e.logsTrackingIdsByDate[i]]
+	defer e.logmutex.RUnlock()
+
+	filtered := make([]*InternalLogEntry, 0, len(e.logsTrackingIdsByDate))
+
+	for _, trackingId := range e.logsTrackingIdsByDate {
+		entry := e.logs[trackingId]
+
 		if !isValidLogEntryForACL(entry) {
 		if !isValidLogEntryForACL(entry) {
 			continue
 			continue
 		}
 		}
@@ -249,7 +252,6 @@ func (e *Executor) filterLogsByACL(cfg *config.Config, user *acl.AuthenticatedUs
 			filtered = append(filtered, entry)
 			filtered = append(filtered, entry)
 		}
 		}
 	}
 	}
-	e.logmutex.RUnlock()
 
 
 	return filtered
 	return filtered
 }
 }