index.php
- Pfad:
src/View/contracts/index.php - Namespace: -
- Zeilen: 97 | Größe: 3,395 Bytes
- Geändert: 2025-12-20 11:37:03 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Code
<?php ob_start(); ?>
<h1>Contracts</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--success">
<span class="stat-card__value"><?= $stats['active'] ?? 0 ?></span>
<span class="stat-card__label">Aktiv</span>
</div>
<div class="stat-card stat-card--warning">
<span class="stat-card__value"><?= $stats['draft'] ?? 0 ?></span>
<span class="stat-card__label">Entwurf</span>
</div>
<div class="stat-card stat-card--muted">
<span class="stat-card__value"><?= $stats['deprecated'] ?? 0 ?></span>
<span class="stat-card__label">Deprecated</span>
</div>
</div>
<div class="page-actions">
<a href="/contracts/new" class="btn btn--primary">Neuer Contract</a>
</div>
<h2>Contracts</h2>
<div class="filters">
<input type="search" id="contract-search" class="form-input" placeholder="Durchsuchen...">
<select id="filter-status" class="form-select--inline">
<option value="">Alle Status</option>
<option value="active">Aktiv</option>
<option value="draft">Entwurf</option>
<option value="deprecated">Deprecated</option>
</select>
</div>
<table id="contract-table" data-sortable>
<thead>
<tr>
<th data-sort="id">ID</th>
<th data-sort="name">Name</th>
<th data-sort="version">Version</th>
<th data-sort="status">Status</th>
<th data-sort="scope">Scope</th>
<th data-sort="updated_at">Aktualisiert</th>
</tr>
</thead>
<tbody>
<?php if (!empty($contracts)): ?>
<?php foreach ($contracts as $contract): ?>
<tr>
<td><a href="/contracts/<?= $contract['id'] ?>"><?= $contract['id'] ?></a></td>
<td><a href="/contracts/<?= $contract['id'] ?>"><?= htmlspecialchars($contract['name']) ?></a></td>
<td><?= htmlspecialchars($contract['version']) ?></td>
<td><span class="badge badge--<?= $contract['status'] ?>"><?= $contract['status'] ?></span></td>
<td><?= htmlspecialchars(substr($contract['scope_description'] ?? '', 0, 50)) ?><?= strlen($contract['scope_description'] ?? '') > 50 ? '...' : '' ?></td>
<td><?= substr($contract['updated_at'], 0, 16) ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr><td colspan="6" class="empty-state empty-state--small">Keine Contracts vorhanden</td></tr>
<?php endif; ?>
</tbody>
</table>
<p class="links-bar">
<a href="/docs/modul/contracts">Dokumentation</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('contract-table', {
searchInput: 'contract-search',
pageSize: 10,
filters: {
'filter-status': 3
}
});
</script>
<?php $content = ob_get_clean(); ?>
<?php require VIEW_PATH . '/layout.php'; ?>