clqms-be/app/Views/v2/logs.php
2025-12-22 16:54:19 +07:00

52 lines
1.9 KiB
PHP

<?= $this->extend('layouts/v2') ?>
<?= $this->section('content') ?>
<div class="card bg-base-100 shadow" x-data="logsViewer">
<div class="card-body">
<div class="flex justify-between items-center mb-4">
<h2 class="card-title">Application Logs</h2>
<button @click="loadLogs" :disabled="loading" class="btn btn-sm btn-ghost gap-2">
<span class="loading loading-spinner loading-xs" x-show="loading"></span>
<i data-lucide="refresh-cw" class="w-4 h-4" x-show="!loading"></i>
Refresh
</button>
</div>
<template x-if="loading">
<div class="flex justify-center py-12">
<span class="loading loading-spinner loading-lg"></span>
</div>
</template>
<template x-if="!loading && logs.length === 0">
<div class="flex flex-col items-center justify-center py-12 text-base-content/50">
<i data-lucide="file-text" class="w-12 h-12 mb-4"></i>
<p>No logs found</p>
</div>
</template>
<template x-if="!loading && logs.length > 0">
<div class="space-y-2">
<template x-for="log in logs" :key="log.name">
<div class="collapse collapse-arrow bg-base-200">
<input type="checkbox" :checked="expandedLogs.includes(log.name)" @change="toggleLog(log.name)" />
<div class="collapse-title font-medium flex items-center gap-2">
<i data-lucide="file-text" class="w-4 h-4"></i>
<span x-text="log.name"></span>
<span class="badge badge-sm" x-text="formatSize(log.size)"></span>
</div>
<div class="collapse-content">
<pre class="text-xs font-mono whitespace-pre-wrap break-all bg-base-300 p-4 rounded-lg max-h-64 overflow-auto" x-text="log.content"></pre>
</div>
</div>
</template>
</div>
</template>
</div>
</div>
<?= $this->endSection() ?>