Skip to content

Commit 1d8954a

Browse files
rafaellehmkuhlArturoManzoli
authored andcommitted
system-logging: Allow deleting individual or multiple (old) logs
By old we mean any log older than yesterday.
1 parent b61dc53 commit 1d8954a

File tree

1 file changed

+43
-2
lines changed

1 file changed

+43
-2
lines changed

src/views/ConfigurationDevelopmentView.vue

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,18 @@
5555
/>
5656
</div>
5757
<ExpansiblePanel :is-expanded="!interfaceStore.isOnPhoneScreen">
58-
<template #title>System logs</template>
58+
<template #title>
59+
<div class="flex justify-between">
60+
<span>System logs</span>
61+
<span class="text-sm text-gray-300 cursor-pointer" @click.stop="deleteOldLogs">
62+
<v-tooltip text="Delete old logs">
63+
<template #activator="{ props }">
64+
<v-icon left class="mr-2" v-bind="props">mdi-delete-sweep</v-icon>
65+
</template>
66+
</v-tooltip>
67+
</span>
68+
</div>
69+
</template>
5970
<template #content>
6071
<v-data-table
6172
:items="systemLogsData"
@@ -65,7 +76,10 @@
6576
class="w-full max-h-[60%] rounded-md bg-[#FFFFFF11]"
6677
>
6778
<template #item.actions="{ item }">
68-
<div class="text-center cursor-pointer icon-btn mdi mdi-download" @click="downloadLog(item.name)" />
79+
<div class="flex justify-center space-x-2">
80+
<div class="cursor-pointer icon-btn mdi mdi-download" @click="downloadLog(item.name)" />
81+
<div class="cursor-pointer icon-btn mdi mdi-delete" @click="deleteLog(item.name)" />
82+
</div>
6983
</template>
7084
</v-data-table>
7185
</template>
@@ -129,6 +143,33 @@ const downloadLog = async (logName: string): Promise<void> => {
129143
const logBlob = new Blob([logParts], { type: 'application/json' })
130144
saveAs(logBlob, logName)
131145
}
146+
147+
const deleteLog = async (logName: string): Promise<void> => {
148+
await cockpitSytemLogsDB.removeItem(logName)
149+
systemLogsData.value = systemLogsData.value.filter((log) => log.name !== logName)
150+
}
151+
152+
const deleteOldLogs = async (): Promise<void> => {
153+
const yesterday = new Date()
154+
yesterday.setDate(yesterday.getDate() - 1)
155+
156+
const logsToDelete: string[] = []
157+
await cockpitSytemLogsDB.iterate((log: SystemLog, logName: string) => {
158+
const logDate = new Date(log.initialDate)
159+
if (logDate < yesterday) {
160+
logsToDelete.push(logName)
161+
}
162+
})
163+
164+
for (const logName of logsToDelete) {
165+
await cockpitSytemLogsDB.removeItem(logName)
166+
}
167+
168+
systemLogsData.value = systemLogsData.value.filter((log) => {
169+
const logDate = new Date(log.initialDate)
170+
return logDate >= yesterday
171+
})
172+
}
132173
</script>
133174
<style scoped>
134175
.custom-header {

0 commit comments

Comments
 (0)