index.php

Code Hygiene Score: 100

Keine Issues gefunden.

Versionen 1

Code

<?php ob_start(); ?>

<h1>Tasks</h1>

<div class="stats-grid">
    <div class="stat-card">
        <span class="stat-card__value"><?= $stats['total'] ?? 0 ?></span>
        <span class="stat-card__label">Gesamt</span>
    </div>
    <div class="stat-card stat-card--warning">
        <span class="stat-card__value"><?= $stats['pending'] ?? 0 ?></span>
        <span class="stat-card__label">Offen</span>
    </div>
    <div class="stat-card stat-card--info">
        <span class="stat-card__value"><?= $stats['in_progress'] ?? 0 ?></span>
        <span class="stat-card__label">In Arbeit</span>
    </div>
    <div class="stat-card stat-card--success">
        <span class="stat-card__value"><?= $stats['completed'] ?? 0 ?></span>
        <span class="stat-card__label">Fertig</span>
    </div>
</div>

<div class="page-actions">
    <a href="/tasks/new" class="btn btn--primary">Neuer Task</a>
</div>

<h2>Tasks</h2>
<div class="filters">
    <input type="search" id="task-search" class="form-input" placeholder="Durchsuchen...">
    <select id="filter-status" class="form-select--inline">
        <option value="">Alle Status</option>
        <option value="pending">Offen</option>
        <option value="in_progress">In Arbeit</option>
        <option value="completed">Abgeschlossen</option>
        <option value="failed">Fehlgeschlagen</option>
        <option value="cancelled">Abgebrochen</option>
    </select>
    <select id="filter-type" class="form-select--inline">
        <option value="">Alle Typen</option>
        <option value="human_task">Mensch</option>
        <option value="ai_task">KI</option>
        <option value="mixed">Gemischt</option>
    </select>
</div>

<table id="task-table" data-sortable>
    <thead>
        <tr>
            <th data-sort="id">ID</th>
            <th data-sort="title">Titel</th>
            <th data-sort="type">Typ</th>
            <th data-sort="status">Status</th>
            <th data-sort="created_at">Erstellt</th>
        </tr>
    </thead>
    <tbody>
        <?php if (!empty($tasks)): ?>
        <?php foreach ($tasks as $task): ?>
        <tr>
            <td><a href="/tasks/<?= $task['id'] ?>"><?= $task['id'] ?></a></td>
            <td><a href="/tasks/<?= $task['id'] ?>"><?= htmlspecialchars($task['title']) ?></a></td>
            <td><?= $task['type'] ?></td>
            <td><?php include VIEW_PATH . '/tasks/partials/status-select.php'; ?></td>
            <td><?= substr($task['created_at'], 0, 16) ?></td>
        </tr>
        <?php endforeach; ?>
        <?php else: ?>
        <tr><td colspan="5" class="empty-state empty-state--small">Keine Tasks vorhanden</td></tr>
        <?php endif; ?>
    </tbody>
</table>

<p class="links-bar">
    <a href="/docs/ki-tasks">Dokumentation</a> |
    <a href="/docs/modul/ki-tasks-api">API</a> |
    <a href="/docs/modul/ki-tasks-cli">CLI</a>
</p>

<script type="module">
import { init } from '/js/components/data-table.js';

const dataTable = init({
    clock: { now_epoch_ms_utc: () => Date.now() },
    logger: console,
    ui: {
        showMessage: (msg) => { console.log(msg.type + ': ' + msg.text); },
        disableFeature: (key) => { console.warn('Feature disabled: ' + key); },
        offerRetry: () => Promise.resolve(false)
    },
    runId: crypto.randomUUID()
});

dataTable.create('task-table', {
    searchInput: 'task-search',
    pageSize: 10,
    filters: {
        'filter-status': 3,
        'filter-type': 2
    }
});
</script>

<?php $content = ob_get_clean(); ?>
<?php require VIEW_PATH . '/layout.php'; ?>
← Übersicht