olivetin/frontend/resources/vue/utils/executionLogEvents.js

55 lines
1.2 KiB
JavaScript

export function cloneLogEntry (logEntry) {
if (!logEntry) {
return null
}
return {
...logEntry,
tags: Array.isArray(logEntry.tags) ? [...logEntry.tags] : logEntry.tags
}
}
export function getExecutionLogEntry (evt) {
const logEntry = evt?.payload?.logEntry ?? evt?.detail?.logEntry ?? null
return cloneLogEntry(logEntry)
}
export function updateLogEntryInList (entries, logEntry) {
if (!logEntry?.executionTrackingId || !entries) {
return false
}
const index = entries.findIndex(
item => item.executionTrackingId === logEntry.executionTrackingId
)
if (index < 0) {
return false
}
entries[index] = logEntry
return true
}
export function updateLogEntryInGroups (groups, logEntry) {
const entry = cloneLogEntry(logEntry)
if (!entry?.executionTrackingId || !groups) {
return null
}
for (const group of groups) {
const entries = group.entries || []
const index = entries.findIndex(
item => item.executionTrackingId === entry.executionTrackingId
)
if (index < 0) {
continue
}
const previous = entries[index]
entries[index] = entry
return { group, index, previous }
}
return null
}